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 3d75fda..c643214 100755 Binary files a/test/wine/wcc.exe and b/test/wine/wcc.exe differ diff --git a/test/wine/wcsc.exe b/test/wine/wcsc.exe index 2427f6a..d7abc52 100755 Binary files a/test/wine/wcsc.exe and b/test/wine/wcsc.exe differ