From 63f774dfef3001625b6f6b41f51a57cbc33f52ec Mon Sep 17 00:00:00 2001 From: Ben Lubar Date: Thu, 26 Mar 2020 13:38:37 -0500 Subject: [PATCH] reversing scripts moved to df_misc --- reversing/buildings_d19_lin.txt | 75 - .../doc/building-facing/bridge/facings.txt | 5 - .../doc/building-facing/bridge/linux1.png | Bin 12132 -> 0 bytes .../doc/building-facing/bridge/windows.png | Bin 14034 -> 0 bytes .../doc/building-facing/horizontal_axle/1.png | Bin 1658 -> 0 bytes .../horizontal_axle/2-windows.png | Bin 13191 -> 0 bytes .../doc/building-facing/horizontal_axle/2.png | Bin 1699 -> 0 bytes reversing/doc/building-facing/screw/1.png | Bin 1593 -> 0 bytes .../doc/building-facing/screw/2-windows.png | Bin 2606 -> 0 bytes reversing/doc/building-facing/screw/2.png | Bin 1562 -> 0 bytes reversing/doc/building-facing/screw/3.png | Bin 1516 -> 0 bytes reversing/doc/building-facing/screw/4.png | Bin 1492 -> 0 bytes .../doc/building-facing/waterwheel/linux.png | Bin 2831 -> 0 bytes .../building-facing/waterwheel/windows.png | Bin 15829 -> 0 bytes reversing/doc/state/lever/linux/lever_off | 81 - reversing/doc/state/lever/linux/lever_on | 81 - reversing/doc/state/lever/windows-d16/diff | 23 - reversing/doc/vtables-win-40d19.txt | 5702 ----------------- reversing/find_df_globals.java | 75 - reversing/import_df_structures.java | 1533 ----- reversing/linux-wagon-d19.txt | 1 - reversing/ms_ehseh.idc | 816 --- reversing/ms_rtti.idc | 1007 --- reversing/ms_rtti4.idc | 660 -- reversing/ms_rtti64.idc | 1086 ---- reversing/parseVTableLinux.pl | 8 - reversing/vtable-linux-gcc.idc | 43 - reversing/vtable.idc | 114 - 28 files changed, 11310 deletions(-) delete mode 100644 reversing/buildings_d19_lin.txt delete mode 100644 reversing/doc/building-facing/bridge/facings.txt delete mode 100644 reversing/doc/building-facing/bridge/linux1.png delete mode 100644 reversing/doc/building-facing/bridge/windows.png delete mode 100644 reversing/doc/building-facing/horizontal_axle/1.png delete mode 100644 reversing/doc/building-facing/horizontal_axle/2-windows.png delete mode 100644 reversing/doc/building-facing/horizontal_axle/2.png delete mode 100644 reversing/doc/building-facing/screw/1.png delete mode 100644 reversing/doc/building-facing/screw/2-windows.png delete mode 100644 reversing/doc/building-facing/screw/2.png delete mode 100644 reversing/doc/building-facing/screw/3.png delete mode 100644 reversing/doc/building-facing/screw/4.png delete mode 100644 reversing/doc/building-facing/waterwheel/linux.png delete mode 100644 reversing/doc/building-facing/waterwheel/windows.png delete mode 100644 reversing/doc/state/lever/linux/lever_off delete mode 100644 reversing/doc/state/lever/linux/lever_on delete mode 100644 reversing/doc/state/lever/windows-d16/diff delete mode 100644 reversing/doc/vtables-win-40d19.txt delete mode 100644 reversing/find_df_globals.java delete mode 100644 reversing/import_df_structures.java delete mode 100644 reversing/linux-wagon-d19.txt delete mode 100644 reversing/ms_ehseh.idc delete mode 100644 reversing/ms_rtti.idc delete mode 100644 reversing/ms_rtti4.idc delete mode 100644 reversing/ms_rtti64.idc delete mode 100644 reversing/parseVTableLinux.pl delete mode 100644 reversing/vtable-linux-gcc.idc delete mode 100644 reversing/vtable.idc diff --git a/reversing/buildings_d19_lin.txt b/reversing/buildings_d19_lin.txt deleted file mode 100644 index 6148196ea..000000000 --- a/reversing/buildings_d19_lin.txt +++ /dev/null @@ -1,75 +0,0 @@ -.rodata:08773064 t_building_templest -.rodata:08772FE4 t_building_dark_towerst -.rodata:08772EE4 t_building_home_apartment_roomst -.rodata:08772F24 t_building_home_apartmentst -.rodata:08772F64 t_building_home_singlest -.rodata:08773024 t_building_keepst -.rodata:08772FA4 t_building_mead_hallst -.rodata:087730A4 t_building_storest -.rodata:08776784 23building_constructionst -.rodata:087771E4 21building_road_pavedst -.rodata:08777064 20building_road_dirtst -.rodata:08777AC4 15building_roadst -.rodata:08779424 16building_wagonst -.rodata:087792A4 21building_tradedepotst -.rodata:087789C4 19building_workshopst -.rodata:08778E44 18building_furnacest -.rodata:08778244 21building_animaltrapst -.rodata:08778FC4 19building_farmplotst -.rodata:08777644 17building_windowst -.rodata:087777C4 17building_statuest -.rodata:08777944 15building_wellst -.rodata:08777364 17building_coffinst -.rodata:087795A4 15building_shopst -.rodata:087783C4 16building_chairst -.rodata:08777C44 16building_tablest -.rodata:08777C44 14building_bedst -.rodata:08778B44 22building_siegeenginest -.rodata:08776D64 15building_cagest -.rodata:08776EE4 16building_chainst -.rodata:08776184 19building_windmillst -.rodata:08776304 22building_water_wheelst -.rodata:08776004 21building_screw_pumpst -.rodata:08778844 24building_archerytargetst -.rodata:08778544 17building_weaponst -.rodata:087786C4 18building_supportst -.rodata:08776604 24building_axle_verticalst -.rodata:08776484 26building_axle_horizontalst -.rodata:08776BE4 24building_gear_assemblyst -.rodata:08778CC4 15building_trapst -.rodata:08779EA4 21building_bars_floorst -.rodata:0877A024 24building_bars_verticalst -.rodata:0877A324 22building_grate_floorst -.rodata:0877A1A4 21building_grate_wallst -.rodata:0877A4A4 20building_floodgatest -.rodata:08779D24 17building_bridgest -.rodata:08779A24 16building_hatchst -.rodata:08779BA4 15building_doorst -.rodata:08777DC4 21building_armorstandst -.rodata:08777F44 21building_weaponrackst -.rodata:087798A4 18building_cabinetst -.rodata:08779724 14building_boxst -.rodata:08776A64 17building_actualst -.rodata:08779144 18building_civzonest -.rodata:087774E4 20building_stockpilest -0:FFFFFFFF 21building_window_gemst -0:FFFFFFFF 23building_window_glassst -.rodata:08787664 t_building_interactst -.rodata:08788DE4 n_building_selectorst -.rodata:08788E44 n_building_permit_foreign_armorst -.rodata:08788E24 n_building_permit_itemst -.rodata:08788E64 n_building_permit_foreign_siegeammost -.rodata:08788E84 n_building_permit_foreign_weaponst -.rodata:08788EA4 n_building_permit_trapcompst -.rodata:08788F04 n_building_new_jobst -.rodata:08788EC4 n_building_category_selectorst -.rodata:08788EE4 n_building_material_selectorst -0:FFFFFFFF f_building_well_tagst -0:FFFFFFFF E_BUILDING_TEMPLE -0:FFFFFFFF E_BUILDING_KEEP -0:FFFFFFFF f_building_civzone_assignedst -0:FFFFFFFF f_building_triggerst -0:FFFFFFFF f_building_triggertargetst -0:FFFFFFFF f_building_chainst -0:FFFFFFFF f_building_cagedst -0:FFFFFFFF f_building_holderst diff --git a/reversing/doc/building-facing/bridge/facings.txt b/reversing/doc/building-facing/bridge/facings.txt deleted file mode 100644 index 0ebd016d3..000000000 --- a/reversing/doc/building-facing/bridge/facings.txt +++ /dev/null @@ -1,5 +0,0 @@ -FF - retractable -00 - west -01 - east -02 - north -03 - south \ No newline at end of file diff --git a/reversing/doc/building-facing/bridge/linux1.png b/reversing/doc/building-facing/bridge/linux1.png deleted file mode 100644 index 0bf3b669b25012ed2a49cc5e849e027d3e3f1eab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12132 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 diff --git a/reversing/doc/building-facing/bridge/windows.png b/reversing/doc/building-facing/bridge/windows.png deleted file mode 100644 index 916e5e21cb4c8b8377630d72808db2e4e08d2351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14034 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

mvR=u@ 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 diff --git a/reversing/doc/building-facing/horizontal_axle/1.png b/reversing/doc/building-facing/horizontal_axle/1.png deleted file mode 100644 index 5710650ffe7449b20af93ee20dc96bbc2f0b57b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1658 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 diff --git a/reversing/doc/building-facing/horizontal_axle/2.png b/reversing/doc/building-facing/horizontal_axle/2.png deleted file mode 100644 index c96239844d32f9d1d1dd0d1396997bfaa6d455b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1699 zcmZ`(eK^x=AOCI4%N%jEap>5rLsp_8(Ks?qtc)LLc}eqLqsyfHcAkScHd_x8o+zBC z9~C>ryex04&LPFQh=}aUA(6#4sYNAvd465zujh~FzOMWJd_SN2`rP;Te$4{|d=0S{ zSO5SF8GiI&06D$XyM2>|I^03cfk0BeYp zy#N3_3IM300f1T#0A?wbvLFwn!vyqa`2c2SNcaUAsY`(%QiAuboJ1s4>;YdoX7#wT z4`aAfhhBVEX9J>JfCl-EywIdJ_O((in6a>z9d_mF#4-m9Z$0 zzo^xWw%*m%v)yXP(=Q=QTG4SA|9ocs_F&&JpJRBn!LF23Iywo&Jsr!Mb!eY~Az*Bg zJ)*G|qOt%E$yO+KKw0i|pRnc%B_uh2HeqGF)xm)6^@stmaElAD&nj^jUP$Qs;6NH?n% zqat0Di(x#&@9Yau1^S}XjxQ!TRibZ*RnkYhGpZk+cI-OKnja}wmKQ2NcL=-_cY2z( z&fpg8$UAjXr$azv@?dxdxG_%9rbh7N~$ z9}2MxewECcQv8^rO`U+#pPzsTJPc3MxhWW|n%}^~*c5a=;^c`N;iN0FP`ZbOv*oCx zrJcBceNoa><{_R-yw5N5XbMSxlC$lB)HKvX>{j+W+{#)jkCIAYII33bqZ+Dic!n~* z7K^#`6L^Fwk}Gq8)m-g-+3>4{A?*I=Z`+p36K{>ZP?tp<|5s1W-FvC7jJgzf*=sb% z0tA=HeB6jSGei_|ojf@X8mGO3k!6<`;>Q@Y`+KRk{wS86ay#qG@}8@1n^{rFW9|v| z;aN5A0sd-wg)neSZZD^0Z?SKKGy!kd+a(?|Y(ZmidL^YcNy`H~n@9 z(bK?O`L%=k+~q}~;YLD1tu8OYeG}TZlUdTvF7I$9i9&bw^BuN%iY^GY-Q!5r{i!S8 zaY!yaj=aw-C&**|``8`K6RRF?B)PZuSGkx4|CAYmS9GIT4%}~aQ#cdl@ zVt8@)@WJ=5+9;Fm3qxwSU^iLZY!#DFvLUUZWRHm#^JYaiBx{SR)X)&{?jpX_T{v@H z4WBb*#&n#?yx<%6HI4P>gt2Qb_|T^uUtH0g&3!x^7Hc@A80M9zEk6BlC>MvF<`@w5tG+R-X7sfWX8n#0|Ye;@P(q3!SBWakpY z`W#u6t|%h|T^_YWFKJ9Jtf?Wk9syg3yZcUj)f}yXdgi1lp!+^1Yh)Ew@nWRzV5dZa+7D~ z%j7it=wY&IlzoVimFK|yymBW==kh!FO}t*r)b9V-))Y$wQgg~b7Z&pT`;4vqvtWx8 z^V=sKY|{>)2W{Rj4<_l%G;()b8g$aG{Q11A_3#Qk_bBe+;=9>!12Y4I$^{FP1Shsw z*X7DDX#pqg8tDE%ILL|eQm^GF-^AAF93zXTB5!}%a@#NT_D2SKaFm%2YDo2U-Cajy z5`hyn6x_P86B@cpa4x=SJn1bVw2GkVjtS0XFO{?|UQf&P z!e+wRib7>rW{WQGHJsdTX4F1(6x0MIx0o5tj;rAmH4ki$WMq|15s^nfB`^9lP+zg9 zV)6lq{L40wPZ$&*10A8pojig7;6!nBv!}S(J5yMcT~tR`sc+Va|6|}D ak54?B_WupzXC9wJ3;@F?fG+Wl7W^0YnfWdN diff --git a/reversing/doc/building-facing/screw/1.png b/reversing/doc/building-facing/screw/1.png deleted file mode 100644 index 3d7dac56d2ccd0f6ca4db5b9516b00f271ec537b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1593 zcmZ`(dpML?82=QxOhRf!M7tSs$y~@Jaw)g%Gc|)0LufvhTqZ*@R90pr>4J&TplNFC zxQ*OrM7nLo#%4;TaVygxm#s!6m)WoSYya5iocH~m-+SKQbIy6+=Q-JX@t&F*1{weW zXnK3?A_9PtJ-n`0UJm;WfgY(aC`Y>bxB|e9^N58o6_}eG@*?^G01XKM>6rlV6%M73 z0YDN80472Kz@Z2L^eAi*!4clj+6(%*XJye93I)u*8KAiTx99?lO5wXbcPS~BSr5WQ zo#J(X3g037nEN3t)eWl^U^Z+OAhm{+)C zszFty`>LV2YI^;Zm=s-Iae+s=mZ+gEOF!1?vIJ{R(bIOsjap` zJSYXWtNOL3`Orr6@$>3sMGMNKTn)VI*IEt88Zk3-*9SDn{meJAyJnANCzuyf3hrCv z6bq;y8<1{ivnaS^WEx{)NqAW9` z3{`+9%E8CMJt-f|7YZ=+8q9b##t7V5GH3Qr15NW6X)CND^TJ}U*;!fil0jT^}Z%}gQ=%VdJ^>{^7 zYtYI88{99@8FUf(4n_^Z?oelwS*zHQc51T1+0afGR&S3_aRq3y#SE+Tdd|xC(AT5BOhQXB#GuUOOXLB;J=&IG*f*=R<`&U!fMO&3so?rIN9+T{Er{e6=8Hl9J{pQ^Lkf z%MRamDux_z+as9MX*zLih!}UP?(L*&GNK@cFmY2byH7t;1wX8euLH{#2Wf6B+d}ED zc=P;Qnv$hYGwT~Ac-HiaW+Jb(!>JYZ`Qo6(sam)T9mmTsQDvTQFI$M|mbm4RNM91j zYLJCc8ZiSk(r8GeBMD)}Jq?1if5QE)+hXI7+|(s6zzkRh)Dd{|5v;i93F{$I{3Y+y z1~QAx(1w$6k1&g=2Y9yiXE072P&c_7lMN5}D0l{61COqkf{`V&}VhCDy?#Hi@9$}O81v1B!!wgG%i*tIMdQ`xk z1*qnTbicI^ZPbw}w!gE-kF}Lj1^Q~1$5d$XuN2hPRJw01DYvL?Lm2zB7@^>pq^p65 zWb!5xi83$UW}|I;SYMh)t{31+Xy-Uo8}am?DY9NtY~jSvav7&7&;N^8bW@!$xQI)5 z>hxT|t~{y5j#Oz@4|qeoWCZoTv&!enu^)7)m7ON W<^KhJInVN70pRV9-&Nxln(;3nW!|a) diff --git a/reversing/doc/building-facing/screw/2-windows.png b/reversing/doc/building-facing/screw/2-windows.png deleted file mode 100644 index ff24bc91d820559166ef67eb22089e7f2a46a9b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2606 zcmZ`*c{tQtAOE@6(u9O0!d0$4j6nu1)@);miI^#2#u|nZsbmQ?vW^C0E2TjgF3Jqq zFVom6YDlh(vQCVP3M1a1``&-vKi=~^-{-rZ=X*ZqIiKecoE@!2_si}F06^5%#?l1< z_zXcg%Ks}EaqyW$fQsMW%)tx*{>T*G_7(trMPC~i2LQOC0s!$z0I&sy;^zV28WaE) zuK<8?J^)DLiki=#0uvI>2&5GtEe)Ex;7%Pgpaz%Ax%CJz#OGsgZ7Hx3w!i=#2+qa> z4~{|D6F%n$iOOJ5DALx!N@#kYf}pqxv8nVZSjKN_X@@-R9PKd3tDpC4~K=&T2= z{fpj}ps(N9Ql7%oc@~{_csO?RxZJ%7_pc`($|24g9-N(SqUilP!`g< zN->Es9z2u-?bem+{^`I(79~BokCS+2eBXSWf(aU83)WGNktxHg&)fC$bn@4T5W%_=kTJR0WCicX`0*s3mJWJ5PEi^E_k)lq%H;$7KW$Le7OjL$u?G+ip6gEy!IH$ zL3kx`P~>hhY%6AC6KP{` z^EO-k2CHsI!sJt43nAqV!>v6LqtPkO2m0Ebn_Rhf$zn_iAbV|mena~X?k2M=t81QrzXdt9R-mghrnUzmeeWFe)!nU=vxh zok139lSb9?LZ9ep81@M%AYDVa#9)}j_PY`?Rng< z_khzf%7j?i@L6pCe5rh#HB7YQ(mlyGHS)Qs^}ACrramw#+TSj$orAF8P6$n<5(9%! zWb`50?c0s3zYpL<7`Urg4KhL7PG!O$+c#h-tvqsltsY}8*Z+V_2#r7LivE?Tt|v)% zqVbnovm==L3>=v}pHc!Qq%=n^!<79VqbBL%G(IL+|7R5O?}32Rk7(B={NO3R@LYtU zrSOFw9b85;Uwh`2sr>JqxePh2wq(#Z@5mna?X@BsFe{Mb$CwY@_33CdG=jvV+~w3Sq&5S zYOtK~A>(DS3wlrzuMCecPtuQ+J-#&5QfLsEDe`d0c(y=w7D?pelkIBxtZ2H>xAZyJ zBEGI)FuX^1)L1vqgKU0vE6Cq|s!RG?mPO|CoY1OppHOX~Ax;5#AF3YE+a4veaA2T-LrD52Dvp1)1x}w90rHcgm z>rUm={(LIQcJSeykLuJcLGPQ@#gcfj?xjQSaNG|g2D&_^n&!j)2HCS7(_Wyj{`YB2 zc##mUIwSoRZHR59&7kV~pNCsweq#ia;Mktf%=NaF@ep zlkdsn_rPP|RORrQ$#E9zg@s|sabg(hMffabuB*K#%9L}MF;T<*H2(JclxzllfxZ&v zRk?ht^MPu2`{|_*$lTW{aXcT*qCVmtVH^oX!sw!rZ%&o!bJH{EC>M{Ek@FjV8_`;% zr>J`I#i?nN7;=<23#DP-glyhjzeP;wccVmT*hji}+&;F=v(f0!{DSRbB6H<-2KVL? ziM|A52c*;Ope__zQg4A9?G&W@!ftazFIxGCx;uKj=I#4FS&8%Xx_aMbn{@iABM=#M z8Lc8PBR(^sl9lh;ku8glfl9C#p3dkuJ}6W_u3mm8wyYPekoMr)#N}`UVG0K4Uyb%Vs2nALU%Nomm+}f;95K^s7x2rhG^&m&d9JE|a{GjTV+SgU{OP^-B zCw^%g-!lsv7M)q)8eQHHNXDco?w^}GIVed=&N*3OMHldtDi97hAFQBB%}!K5zdpR! zma6ng$*Ul|Dhdr%4r>!w|1#K6!m+1ZP+I6!cTl{?zGjLnP$J;&7e?10G_DP7>Tq&2 zW(cHPULKPCNVRZeU{GgzsR>bzVLwIWgAwbT3?5JD!}YIB7QC(DDFHDvCY3XTe`d0Ms(CgtKW={Z_Qr3qFel99Q2!2_ZiAiM9z;dc3A#e!~N-jP^i-v}(I02ovkt_6i_=|Pdulg7G+#(Ho~DAX7VEoX&j|4&0m7$(p! X=KnXa?!PC34S=ncqb1e+O5%S2iO$`W diff --git a/reversing/doc/building-facing/screw/2.png b/reversing/doc/building-facing/screw/2.png deleted file mode 100644 index fe33f93745b18b77d18ab975892a4c37fcd5d2d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1562 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 BlHULT diff --git a/reversing/doc/building-facing/screw/4.png b/reversing/doc/building-facing/screw/4.png deleted file mode 100644 index bb7f9d94261dc1b16b91056b1a8c410e5f30be63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1492 zcmZ`(dpMH|82{2H+v=p5Th5`D%jDA7IjkYRve-n+WtbQ zsD>h9=`I}Ql4=~665W)Hgp^#)*PrK)^T+%Ce((D}zvulu?;md-!^340dMg?LfK4=4 zXHNiFM~3+|mGyA0cDI{@0l@>^K>(;P#w>>*;d)!BtEW2vBpU-jS|$K2!L79S0FX!o zfXQG0pqv2!ZNa&gL-z1sBjbQKb!}}8rauB$v!d_c2;(}An~O7$i~PkEE>Hqj|9IFy z-j7(v5J5(8b3+2nox0(bn!f55__f+Q1@2NnAssvIJ6hLZ(L1{n+})X)+b2I^t9n-L&>M zLRQlaAat3z|IixJMw=eVkC%#6j(zRXnUTsyGnz#c+tfyr&s92Sv2xAGsp!S6HO$98 zKDVzjBV{5q-xT3tN40AEcJ!nMm6IcvPYY^nBbS1ZAA4dFb`xqBgbBy3DWZXWKd-#^ zE2+|~*4%K;lQn{}6pzg#CT{2OMl*U^l8>iiY*xCBMXg!XNEedX$Jy>|o5lxcdph-x z>+X^}Ix$`@cFEbY7;}QS0OH^;MX|Yo+x;DE^52w73^hRhl`*^}ijLPsM^Re1C+GNw z*;tVwhj7WX2sNEAG0c`qs>tc9xe~+kBxq+QhQIyMW|S;u#gmJfw#DR+DNjlyA5O~* zFgqL7LxHXSUT!DUar3%wI|=$j{acT7aGSEl9_F`IlEM1j1;1aIlQYGGyuddPvr#+A zIU|qcdmLLj1)huyk5qne-z2yE$qp z4qO;PMV(GbQdeByk5-g z;Hj$1o|9$mTJ*?rwJ-8Pp6#nDDEaC37boUsbrps3atZW8x~0jR{*fCjs)>p1P-1b~ zh^)IxPBFq~*jaP~!~dWP$r|`6UEP+{rZIhf!Q%aisYviexr#9)M#5%B%;l+&n3uq7 z7A}riM$b;49jffqdOo9x`%nXkUDl<5NSLrH8_-d=&-ySb8ql&~bBHBiJA(XhP49cR zAPy5mxWI!GuC(i86{&JUb$~%gQIoJgm7LKwR@@{sNOdeDM{xE2 zski+~g%6kh)5ADPD?Sc|=InAfQxlV#k)Eku7Z%joSUyuB>HDNu_-vnUC46sJ7*)qi ztFzG-7=a75FDc_DXuk3w@m;&^)8IjR)BV?s7a{YYd78B>tS-qde;-b&(}zFJzHVkNxixoY6Wd55odU*=PV+t6^)S1 zWVE{C@dr!@b!dn7#K6mcqhzkpkS1>B`%p_|iSxB-mZ0mFx`&i%b>5%WfE$9o<6~#{ zX0G2(Kd;(F&KBRq;^-g&@rA(+g2pQ(y<>yp=NZzK4p+u1+kfqo1{i4HUldl{6~~$& zOgS;Eo)kRXBT&6=Q0`=Or7=oaA7EP6JCgKE>5jh8!#G`%mf~s|*4s}_yQQxP*}wX% zX?3%P;)Gf5^byv}o*$pjD1qvizzs0SOCzd9?nAh?cB diff --git a/reversing/doc/building-facing/waterwheel/linux.png b/reversing/doc/building-facing/waterwheel/linux.png deleted file mode 100644 index f923f7b8c34ac294e23a3998b424efeae6b20dd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2831 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 VJ3LS8zYID6&JO#C9K!L0e*lh+{Gb2; diff --git a/reversing/doc/building-facing/waterwheel/windows.png b/reversing/doc/building-facing/waterwheel/windows.png deleted file mode 100644 index c29c082c54c379398ec41455e97d5adca5cf590a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15829 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 j$nNg{xWLZA%*x#Bf4^WTYVaj+0hYo8RoNnG ON - - - -20c20 -< 15 0x003c 1c 53 01 00 ---- -> 15 0x003c 39 55 01 00 -28,30c28,30 -< 21 0x0054 00 00 00 00 -< 22 0x0058 00 00 00 00 -< 23 0x005c 00 00 00 00 ---- -> 21 0x0054 e0 53 a1 01 -> 22 0x0058 e0 53 a1 01 -> 23 0x005c e4 53 a1 01 - -this is a good candidate for lever state -82c82 -< 64 0x0100 00 00 00 00 ---- -> 64 0x0100 00 00 01 00 diff --git a/reversing/doc/vtables-win-40d19.txt b/reversing/doc/vtables-win-40d19.txt deleted file mode 100644 index 5d1e24235..000000000 --- a/reversing/doc/vtables-win-40d19.txt +++ /dev/null @@ -1,5702 +0,0 @@ -008F8594h: possible vtable (1 methods) -(SI) -0000: type_info - type_info::`vftable' - referencing functions: - -008F8644h: possible vtable (2 methods) -(SI) -0000: std::bad_alloc -0000: std::exception - std::bad_alloc::`vftable' - referencing functions: - .text:00401000 - .text:00401010 - .text:004045D0 - .text:00404620 - .text:00450A70 - .text:005368F0 - .text:00536950 - .text:00536A20 - .text:00536AC0 - .text:00536B70 - .text:00536BC0 - .text:00536C10 - .text:00536C60 - .text:005408C0 - .text:00540970 - .text:00658770 - .text:006687F0 - .text:006E3790 - .text:006E37E0 - -008F8650h: possible vtable (2 methods) -(SI) -0000: std::logic_error -0000: std::exception - std::logic_error::`vftable' - referencing functions: - .text:00401040 - .text:004010B0 - .text:00529550 - .text:00529570 - -008F865Ch: possible vtable (2 methods) -(SI) -0000: std::length_error -0000: std::logic_error -0000: std::exception - std::length_error::`vftable' - referencing functions: - .text:004044E0 - .text:00418040 - .text:0046B9C0 - .text:0052FBE0 - .text:00530030 - .text:00531210 - .text:00531930 - .text:00531C90 - .text:00531FB0 - .text:005328D0 - .text:00532CF0 - .text:00533090 - .text:00533570 - .text:005337E0 - .text:005343B0 - .text:00534520 - .text:005347D0 - .text:00534F60 - .text:0053F770 - .text:00540690 - .text:006585C0 - .text:00668250 - .text:006DC3A0 - .text:006E21E0 - .text:006E2780 - .text:006E2A30 - -008F8668h: possible vtable (11 methods) -(SI) -0000: abstract_buildingst - abstract_buildingst::`vftable' - referencing functions: - .text:00401610 (abstract_building_home_apartment_roomst::~abstract_building_home_apartment_roomst) - .text:004016C0 (abstract_buildingst::abstract_buildingst) - scalar deleting destructor: 00401750h - destructor: 00401610h - constructor: 004016C0h - -008F8698h: possible vtable (11 methods) -(SI) -0000: abstract_building_storest -0000: abstract_buildingst - abstract_building_storest::`vftable' - referencing functions: - .text:004017E0 - -008F86C8h: possible vtable (11 methods) -(SI) -0000: abstract_building_mead_hallst -0000: abstract_buildingst - abstract_building_mead_hallst::`vftable' - referencing functions: - .text:004018C0 - -008F86F8h: possible vtable (11 methods) -(SI) -0000: abstract_building_keepst -0000: abstract_buildingst - abstract_building_keepst::`vftable' - referencing functions: - .text:00401990 - -008F8728h: possible vtable (11 methods) -(SI) -0000: abstract_building_home_singlest -0000: abstract_buildingst - abstract_building_home_singlest::`vftable' - referencing functions: - .text:00401D70 - .text:004ABBE0 - .text:00544770 - scalar deleting destructor: 00401750h - destructor: 00401610h - -008F8758h: possible vtable (11 methods) -(SI) -0000: abstract_building_home_apartmentst -0000: abstract_buildingst - abstract_building_home_apartmentst::`vftable' - referencing functions: - .text:00401D70 - .text:004ABBE0 - .text:005447D0 - scalar deleting destructor: 00401750h - destructor: 00401610h - -008F8788h: possible vtable (11 methods) -(SI) -0000: abstract_building_home_apartment_roomst -0000: abstract_buildingst - abstract_building_home_apartment_roomst::`vftable' - referencing functions: - .text:00401D70 - .text:004ABBE0 - .text:0056E0B0 - scalar deleting destructor: 00401750h - destructor: 00401610h - -008F87B8h: possible vtable (11 methods) -(SI) -0000: abstract_building_dark_towerst -0000: abstract_buildingst - abstract_building_dark_towerst::`vftable' - referencing functions: - .text:00401A10 - -008F87E8h: possible vtable (11 methods) -(SI) -0000: abstract_building_templest -0000: abstract_buildingst - abstract_building_templest::`vftable' - referencing functions: - .text:00401A70 - -008F8D48h: possible vtable (10 methods) -(SI) -0000: art_image_elementst - art_image_elementst::`vftable' - referencing functions: - .text:00406CE0 (art_image_element_shapest::`scalar deleting destructor') - scalar deleting destructor: 00406CE0h - -008F8D74h: possible vtable (10 methods) -(SI) -0000: art_image_element_creaturest -0000: art_image_elementst - art_image_element_creaturest::`vftable' - referencing functions: - .text:00406A00 - .text:00407B60 - .text:00407C40 - .text:00409DE0 (4 times) - .text:00681F40 - .text:00682060 - .text:00682180 - .text:00682320 - .text:00682440 - .text:00682560 - .text:006826D0 (2 times) - .text:00682890 (2 times) - .text:00682A50 - .text:00682B80 (2 times) - .text:00682D50 (2 times) - .text:00682F60 (2 times) - .text:00683130 - .text:00683290 - .text:006833B0 - .text:006834D0 - .text:00683630 - .text:00683770 (2 times) - .text:00683970 (2 times) - .text:00683B30 - .text:00683CA0 - .text:00683E60 (2 times) - .text:00684070 (2 times) - .text:006842F0 (2 times) - .text:006844B0 (2 times) - .text:00684660 (2 times) - .text:00684820 (2 times) - .text:006849E0 (2 times) - .text:00684BA0 (2 times) - .text:00684D70 (2 times) - .text:00684F40 (3 times) - .text:00685470 (2 times) - .text:00685640 (2 times) - .text:00685800 (2 times) - .text:00685BF0 - .text:00685DD0 - .text:00685FC0 - .text:00686300 - .text:006864C0 - .text:006866A0 - .text:006867D0 (2 times) - .text:00686990 - .text:00686AB0 (2 times) - .text:00686CA0 (2 times) - .text:00686F70 - .text:00687110 - .text:0068746F (2 times) - .text:00687580 (2 times) - .text:006877D0 - .text:00687930 (6 times) - .text:00687D80 (6 times) - .text:00688890 (2 times) - .text:00688BD0 (2 times) - .text:0085FDA0 (3 times) - .text:00887180 - scalar deleting destructor: 00406CE0h - -008F8DA0h: possible vtable (10 methods) -(SI) -0000: art_image_element_itemst -0000: art_image_elementst - art_image_element_itemst::`vftable' - referencing functions: - .text:00406BA0 - .text:00406C10 - .text:00682180 - .text:006861A0 - .text:00686300 - .text:00887180 - scalar deleting destructor: 00406CE0h - -008F8DCCh: possible vtable (10 methods) -(SI) -0000: art_image_element_plantst -0000: art_image_elementst - art_image_element_plantst::`vftable' - referencing functions: - .text:00406C80 - .text:00407B60 - .text:00407C40 - .text:0085FDA0 (2 times) - scalar deleting destructor: 00406CE0h - -008F8DF8h: possible vtable (10 methods) -(SI) -0000: art_image_element_treest -0000: art_image_elementst - art_image_element_treest::`vftable' - referencing functions: - .text:00406CB0 - .text:00407B60 - .text:00407C40 - .text:00684F40 - .text:0085FDA0 - scalar deleting destructor: 00406CE0h - -008F8E24h: possible vtable (10 methods) -(SI) -0000: art_image_element_shapest -0000: art_image_elementst - art_image_element_shapest::`vftable' - referencing functions: - .text:00406DB0 - .text:00407B60 - .text:00407C40 - .text:00887180 - scalar deleting destructor: 00406CE0h - -008F8E50h: possible vtable (6 methods) -(SI) -0000: art_image_propertyst - art_image_propertyst::`vftable' - referencing functions: - .text:00406E00 - .text:00407000 - -008F8E6Ch: possible vtable (6 methods) -(SI) -0000: art_image_property_transitive_verbst -0000: art_image_propertyst - art_image_property_transitive_verbst::`vftable' - referencing functions: - .text:00406F70 - .text:00407D00 - .text:00409DE0 - .text:00682180 - .text:006826D0 - .text:00682890 - .text:00682B80 - .text:00682D50 - .text:00682F60 - .text:00683770 - .text:00683970 - .text:00683E60 - .text:00684070 - .text:006842F0 - .text:006844B0 - .text:00684660 - .text:00684820 - .text:006849E0 - .text:00684BA0 - .text:00684D70 - .text:00684F40 (4 times) - .text:00685470 - .text:00685640 - .text:00685800 - .text:00685BF0 - .text:00685DD0 - .text:00685FC0 - .text:00686300 - .text:006864C0 - .text:006867D0 - .text:00686AB0 - .text:00686CA0 - .text:0068746F - .text:00687930 - .text:00687D80 (3 times) - .text:00688890 - .text:00688BD0 - .text:0085FDA0 (9 times) - -008F8E88h: possible vtable (6 methods) -(SI) -0000: art_image_property_intransitive_verbst -0000: art_image_propertyst - art_image_property_intransitive_verbst::`vftable' - referencing functions: - .text:004070D0 - .text:00407D00 - .text:00409DE0 (3 times) - .text:00681F40 - .text:00682060 - .text:00682320 - .text:00682440 - .text:00682560 - .text:00682A50 - .text:00683130 - .text:00683290 - .text:006833B0 - .text:006834D0 - .text:00683630 - .text:00683B30 - .text:00683CA0 - .text:00684070 - .text:00684F40 (3 times) - .text:00685800 (6 times) - .text:006861A0 - .text:006866A0 - .text:00686990 - .text:00686CA0 (3 times) - .text:00686F70 (2 times) - .text:00687110 - .text:00687580 (2 times) - .text:006877D0 - .text:00687930 (2 times) - .text:00687D80 (16 times) - .text:00688890 (2 times) - .text:0085FDA0 - -008F8EF4h: possible vtable (1 methods) - referencing functions: - .text:0040BC50 - -008F9198h: possible vtable (5 methods) -(SI) -0000: block_square_eventst - block_square_eventst::`vftable' - referencing functions: - .text:0040CCA0 (block_square_event_world_constructionst::`scalar deleting destructor') - scalar deleting destructor: 0040CCA0h - -008F91B0h: possible vtable (5 methods) -(SI) -0000: block_square_event_mineralst -0000: block_square_eventst - block_square_event_mineralst::`vftable' - referencing functions: - .text:00417430 - .text:007CC3C0 (4 times) - .text:0087CC60 - scalar deleting destructor: 0040CCA0h - -008F91C8h: possible vtable (5 methods) -(SI) -0000: block_square_event_frozen_liquidst -0000: block_square_eventst - block_square_event_frozen_liquidst::`vftable' - referencing functions: - .text:0040CB00 - .text:0087CC60 - scalar deleting destructor: 0040CCA0h - -008F91E0h: possible vtable (5 methods) -(SI) -0000: block_square_event_world_constructionst -0000: block_square_eventst - block_square_event_world_constructionst::`vftable' - referencing functions: - .text:004175A0 - .text:0087CC60 - scalar deleting destructor: 0040CCA0h - -008F91F8h: possible vtable (2 methods) -(SI) -0000: cave_columnst - cave_columnst::`vftable' - referencing functions: - .text:00415B20 (2 times) - .text:0087D4C0 - -008F9204h: possible vtable (3 methods) -(SI) -0000: cave_column_rectanglest - cave_column_rectanglest::`vftable' - referencing functions: - .text:0040CE70 - -008F9214h: possible vtable (31 methods) -(SI) -0000: history_event_masterpiece_lostst -0000: history_eventst - history_event_masterpiece_lostst::`vftable' - referencing functions: - .text:0040D340 - .text:0066EF80 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -008F9BA8h: possible vtable (8 methods) -(SI) -0000: projst - projst::`vftable' - referencing functions: - .text:004190B0 - .text:004191A0 (proj_itemst::~proj_itemst) - .text:0042E450 - .text:0042EEB0 (2 times) - .text:00451AC0 - .text:007707D0 - .text:00770890 - .text:00770950 - .text:00770A10 - -008F9BCCh: possible vtable (85 methods) -(SI) -0000: buildingst - buildingst::`vftable' - referencing functions: - .text:004202D0 (buildingst::buildingst) - .text:0043A790 (buildingst::~buildingst) - scalar deleting destructor: 004203C0h - destructor: 0043A790h - constructor: 004202D0h - -008F9D24h: possible vtable (89 methods) -(SI) -0000: building_actualst -0000: buildingst - building_actualst::`vftable' - referencing functions: - .text:0041B510 (building_actualst::building_actualst) - .text:0043A680 (building_constructionst::~building_constructionst) - scalar deleting destructor: 0041E150h - destructor: 0043A680h - constructor: 0041B510h - -008F9E8Ch: possible vtable (85 methods) -(SI) -0000: building_civzonest -0000: buildingst - building_civzonest::`vftable' - referencing functions: - .text:0041B2E0 - scalar deleting destructor: 0041B380h - destructor: 0041B3A0h - -008F9FE4h: possible vtable (89 methods) -(SI) -0000: building_wellst -0000: building_actualst -0000: buildingst - building_wellst::`vftable' - referencing functions: - .text:0041E6A0 - .text:0041E740 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FA14Ch: possible vtable (85 methods) -(SI) -0000: building_stockpilest -0000: buildingst - building_stockpilest::`vftable' - referencing functions: - .text:0041AF20 - -008FA2A4h: possible vtable (181 methods) -(SI) -0000: item_actualst -0000: itemst - item_actualst::`vftable' - referencing functions: - .text:006A78C0 (item_cheesest::~item_cheesest) - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -008FA57Ch: possible vtable (181 methods) -(SI) -0000: item_liquid_miscst -0000: item_liquidst -0000: item_liquipowderst -0000: item_actualst -0000: itemst - item_liquid_miscst::`vftable' - referencing functions: - .text:00418A70 - .text:0070A800 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -008FA854h: possible vtable (181 methods) -(SI) -0000: item_remainsst -0000: item_actualst -0000: itemst - item_remainsst::`vftable' - referencing functions: - .text:00418BE0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -008FAB2Ch: possible vtable (181 methods) -(SI) -0000: item_verminst -0000: item_critterst -0000: item_actualst -0000: itemst - item_verminst::`vftable' - referencing functions: - .text:00418D40 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -008FAE04h: possible vtable (180 methods) -(SI) -0000: item_plantst -0000: item_actualst -0000: itemst - item_plantst::`vftable' - referencing functions: - .text:00418E40 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -008FB0D8h: possible vtable (8 methods) -(SI) -0000: proj_itemst -0000: projst - proj_itemst::`vftable' - referencing functions: - .text:00419140 - .text:004191A0 (proj_itemst::~proj_itemst) - .text:0042E450 - .text:0042EEB0 (2 times) - .text:007707D0 - scalar deleting destructor: 00419240h - destructor: 004191A0h - -008FB0FCh: possible vtable (89 methods) -(SI) -0000: building_boxst -0000: building_actualst -0000: buildingst - building_boxst::`vftable' - referencing functions: - .text:0041B580 - .text:0041B5F0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FB264h: possible vtable (89 methods) -(SI) -0000: building_cabinetst -0000: building_actualst -0000: buildingst - building_cabinetst::`vftable' - referencing functions: - .text:0041B670 - .text:0041B6E0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FB3CCh: possible vtable (89 methods) -(SI) -0000: building_weaponrackst -0000: building_actualst -0000: buildingst - building_weaponrackst::`vftable' - referencing functions: - .text:0043B5E0 - -008FB534h: possible vtable (89 methods) -(SI) -0000: building_armorstandst -0000: building_actualst -0000: buildingst - building_armorstandst::`vftable' - referencing functions: - .text:0043B720 - -008FB69Ch: possible vtable (89 methods) -(SI) -0000: building_doorst -0000: building_actualst -0000: buildingst - building_doorst::`vftable' - referencing functions: - .text:0041BBD0 - .text:0041BC50 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FB804h: possible vtable (89 methods) -(SI) -0000: building_hatchst -0000: building_actualst -0000: buildingst - building_hatchst::`vftable' - referencing functions: - .text:0041BCE0 - .text:0041BD60 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FB96Ch: possible vtable (89 methods) -(SI) -0000: building_bridgest -0000: building_actualst -0000: buildingst - building_bridgest::`vftable' - referencing functions: - .text:0041BDE0 - .text:0041BE70 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FBAD4h: possible vtable (89 methods) -(SI) -0000: building_floodgatest -0000: building_actualst -0000: buildingst - building_floodgatest::`vftable' - referencing functions: - .text:0041C040 - .text:0041C0D0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FBC3Ch: possible vtable (89 methods) -(SI) -0000: building_grate_wallst -0000: building_actualst -0000: buildingst - building_grate_wallst::`vftable' - referencing functions: - .text:0041C160 - .text:0041C1F0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FBDA4h: possible vtable (89 methods) -(SI) -0000: building_grate_floorst -0000: building_actualst -0000: buildingst - building_grate_floorst::`vftable' - referencing functions: - .text:0041C280 - .text:0041C310 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FBF0Ch: possible vtable (89 methods) -(SI) -0000: building_bars_verticalst -0000: building_actualst -0000: buildingst - building_bars_verticalst::`vftable' - referencing functions: - .text:0041C3F0 - .text:0041C480 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FC074h: possible vtable (89 methods) -(SI) -0000: building_bars_floorst -0000: building_actualst -0000: buildingst - building_bars_floorst::`vftable' - referencing functions: - .text:0041C510 - .text:0041C5A0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FC1DCh: possible vtable (89 methods) -(SI) -0000: building_trapst -0000: building_actualst -0000: buildingst - building_trapst::`vftable' - referencing functions: - .text:0041C760 - scalar deleting destructor: 0041C850h - destructor: 0041C870h - -008FC344h: possible vtable (89 methods) -(SI) -0000: building_gear_assemblyst -0000: building_actualst -0000: buildingst - building_gear_assemblyst::`vftable' - referencing functions: - .text:0041C920 - .text:0041C9C0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FC4ACh: possible vtable (89 methods) -(SI) -0000: building_axle_horizontalst -0000: building_actualst -0000: buildingst - building_axle_horizontalst::`vftable' - referencing functions: - .text:0041CB50 - .text:0041CBE0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FC614h: possible vtable (89 methods) -(SI) -0000: building_axle_verticalst -0000: building_actualst -0000: buildingst - building_axle_verticalst::`vftable' - referencing functions: - .text:0041CD80 - .text:0041CE10 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FC77Ch: possible vtable (89 methods) -(SI) -0000: building_supportst -0000: building_actualst -0000: buildingst - building_supportst::`vftable' - referencing functions: - .text:0041CF50 - .text:0041CFC0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FC8E4h: possible vtable (89 methods) -(SI) -0000: building_weaponst -0000: building_actualst -0000: buildingst - building_weaponst::`vftable' - referencing functions: - .text:0041D030 - .text:0041D0C0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FCA4Ch: possible vtable (89 methods) -(SI) -0000: building_archerytargetst -0000: building_actualst -0000: buildingst - building_archerytargetst::`vftable' - referencing functions: - .text:0041D1A0 - .text:0041D210 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FCBB4h: possible vtable (89 methods) -(SI) -0000: building_screw_pumpst -0000: building_actualst -0000: buildingst - building_screw_pumpst::`vftable' - referencing functions: - .text:0041D2F0 - .text:0041D390 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FCD1Ch: possible vtable (89 methods) -(SI) -0000: building_water_wheelst -0000: building_actualst -0000: buildingst - building_water_wheelst::`vftable' - referencing functions: - .text:0041D5D0 - .text:0041D670 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FCE84h: possible vtable (89 methods) -(SI) -0000: building_windmillst -0000: building_actualst -0000: buildingst - building_windmillst::`vftable' - referencing functions: - .text:0041DAD0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FCFECh: possible vtable (89 methods) -(SI) -0000: building_chainst -0000: building_actualst -0000: buildingst - building_chainst::`vftable' - referencing functions: - .text:0041DB30 - .text:0041DBD0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FD154h: possible vtable (89 methods) -(SI) -0000: building_cagest -0000: building_actualst -0000: buildingst - building_cagest::`vftable' - referencing functions: - .text:0041DD90 - scalar deleting destructor: 0041DE20h - destructor: 0041DE40h - -008FD2BCh: possible vtable (89 methods) -(SI) -0000: building_siegeenginest -0000: building_actualst -0000: buildingst - building_siegeenginest::`vftable' - referencing functions: - .text:0041DEC0 - .text:0041DF50 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FD424h: possible vtable (89 methods) -(SI) -0000: building_bedst -0000: building_actualst -0000: buildingst - building_bedst::`vftable' - referencing functions: - .text:0041E170 - .text:0041E1E0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FD58Ch: possible vtable (89 methods) -(SI) -0000: building_tablest -0000: building_actualst -0000: buildingst - building_tablest::`vftable' - referencing functions: - .text:0041E250 - .text:0041E2C0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FD6F4h: possible vtable (89 methods) -(SI) -0000: building_chairst -0000: building_actualst -0000: buildingst - building_chairst::`vftable' - referencing functions: - .text:0041E330 - .text:0041E3A0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FD85Ch: possible vtable (89 methods) -(SI) -0000: building_shopst -0000: building_actualst -0000: buildingst - building_shopst::`vftable' - referencing functions: - .text:0041E410 - .text:0041E4B0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FD9C4h: possible vtable (89 methods) -(SI) -0000: building_coffinst -0000: building_actualst -0000: buildingst - building_coffinst::`vftable' - referencing functions: - .text:0041E570 - .text:0041E5E0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FDB2Ch: possible vtable (89 methods) -(SI) -0000: building_statuest -0000: building_actualst -0000: buildingst - building_statuest::`vftable' - referencing functions: - .text:0041E920 - .text:0041E990 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FDC94h: possible vtable (89 methods) -(SI) -0000: building_window_gemst -0000: building_windowst -0000: building_actualst -0000: buildingst - building_window_gemst::`vftable' - referencing functions: - .text:0041EA40 - .text:0041EAB0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FDDFCh: possible vtable (89 methods) -(SI) -0000: building_window_glassst -0000: building_windowst -0000: building_actualst -0000: buildingst - building_window_glassst::`vftable' - referencing functions: - .text:0041EB20 - .text:0041EB90 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FDF64h: possible vtable (89 methods) -(SI) -0000: building_farmplotst -0000: building_actualst -0000: buildingst - building_farmplotst::`vftable' - referencing functions: - .text:0041EC00 - .text:0041ECA0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FE0CCh: possible vtable (89 methods) -(SI) -0000: building_animaltrapst -0000: building_actualst -0000: buildingst - building_animaltrapst::`vftable' - referencing functions: - .text:0041EF00 - .text:0041EF80 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FE234h: possible vtable (89 methods) -(SI) -0000: building_furnacest -0000: building_actualst -0000: buildingst - building_furnacest::`vftable' - referencing functions: - .text:0041F2E0 - scalar deleting destructor: 0041F380h - destructor: 0041F3A0h - -008FE39Ch: possible vtable (89 methods) -(SI) -0000: building_workshopst -0000: building_actualst -0000: buildingst - building_workshopst::`vftable' - referencing functions: - .text:0041F6A0 - scalar deleting destructor: 0041F730h - destructor: 0041F750h - -008FE504h: possible vtable (89 methods) -(SI) -0000: building_tradedepotst -0000: building_actualst -0000: buildingst - building_tradedepotst::`vftable' - referencing functions: - .text:0041F7A0 - .text:0041F830 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FE66Ch: possible vtable (89 methods) -(SI) -0000: building_wagonst -0000: building_actualst -0000: buildingst - building_wagonst::`vftable' - referencing functions: - .text:0041F8C0 - .text:0041F930 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FE7D4h: possible vtable (89 methods) -(SI) -0000: building_road_dirtst -0000: building_roadst -0000: building_actualst -0000: buildingst - building_road_dirtst::`vftable' - referencing functions: - .text:0041FA90 - .text:0041FB00 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FE93Ch: possible vtable (89 methods) -(SI) -0000: building_road_pavedst -0000: building_roadst -0000: building_actualst -0000: buildingst - building_road_pavedst::`vftable' - referencing functions: - .text:0041FB70 - .text:0041FBE0 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FEAA4h: possible vtable (89 methods) -(SI) -0000: building_constructionst -0000: building_actualst -0000: buildingst - building_constructionst::`vftable' - referencing functions: - .text:0041FCE0 - .text:0041FD50 - scalar deleting destructor: 0041E150h - destructor: 0043A680h - -008FEC0Ch: possible vtable (31 methods) -(SI) -0000: history_event_masterpiece_created_arch_designst -0000: history_event_masterpiece_createdst -0000: history_eventst - history_event_masterpiece_created_arch_designst::`vftable' - referencing functions: - .text:00420080 - .text:0066E5B0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -008FEC8Ch: possible vtable (31 methods) -(SI) -0000: history_event_masterpiece_created_arch_constructst -0000: history_event_masterpiece_createdst -0000: history_eventst - history_event_masterpiece_created_arch_constructst::`vftable' - referencing functions: - .text:004201C0 - .text:0066E640 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -008FF520h: possible vtable (8 methods) -(SI) -0000: proj_unitst -0000: projst - proj_unitst::`vftable' - referencing functions: - .text:00451A50 - .text:00770890 - -00900620h: possible vtable (8 methods) -(SI) -0000: viewscreenst - viewscreenst::`vftable' - referencing functions: - .text:0045D3A0 - .text:004647A0 (viewscreen_requestagreementst::`scalar deleting destructor') - .text:00491BF0 (viewscreen_customize_unitst::~viewscreen_customize_unitst) - .text:00491C80 - .text:004A43E0 - .text:004AABF0 (viewscreen_loadgamest::~viewscreen_loadgamest) - .text:004B9E90 (viewscreen_layerst::~viewscreen_layerst) - .text:004C6AE0 (viewscreen_dungeon_wrestlest::~viewscreen_dungeon_wrestlest) - .text:004C6BD0 (viewscreen_dungeon_monsterstatusst::~viewscreen_dungeon_monsterstatusst) - .text:004D7B30 (viewscreen_adventure_logst::~viewscreen_adventure_logst) - .text:004EF8D0 - .text:005086E0 (viewscreen_selectitemst::~viewscreen_selectitemst) - .text:005088A0 (viewscreen_dwarfmodest::~viewscreen_dwarfmodest) - .text:005DC660 (viewscreen_titlest::~viewscreen_titlest) - .text:005F1520 - .text:005F1550 (viewscreen_export_graphical_mapst::~viewscreen_export_graphical_mapst) - .text:005F1B60 (viewscreen_new_regionst::~viewscreen_new_regionst) - .text:005F1F20 (viewscreen_legendsst::~viewscreen_legendsst) - .text:00611950 - .text:00613450 - .text:00619490 (viewscreen_createquotast::~viewscreen_createquotast) - .text:0061AE00 (viewscreen_unitjobsst::~viewscreen_unitjobsst) - .text:0061CDA0 - .text:0061F4F0 - .text:00621230 (viewscreen_commandchainst::~viewscreen_commandchainst) - .text:00636C40 (viewscreen_buildinglistst::~viewscreen_buildinglistst) - .text:0064F240 - .text:00652820 - .text:00699A50 (viewscreen_movieplayerst::~viewscreen_movieplayerst) - .text:0069A680 - .text:0069A730 - .text:006DD4F0 - .text:006DEA40 - .text:006DED20 - .text:007122B0 (viewscreen_textviewerst::~viewscreen_textviewerst) - .text:0071F270 - .text:0071F810 - .text:00724020 - .text:0072DF00 - .text:0072E560 - .text:0072E7C0 (viewscreen_topicmeeting_takerequestsst::~viewscreen_topicmeeting_takerequestsst) - .text:00808B70 (viewscreen_choose_start_sitest::~viewscreen_choose_start_sitest) - .text:00808DB0 (viewscreen_setupdwarfgamest::~viewscreen_setupdwarfgamest) - scalar deleting destructor: 004647A0h - -00900644h: possible vtable (8 methods) -(SI) -0000: viewscreen_conversationst -0000: viewscreenst - viewscreen_conversationst::`vftable' - referencing functions: - .text:00464700 - scalar deleting destructor: 004647A0h - -00900668h: possible vtable (9 methods) -(SI) -0000: taskst - taskst::`vftable' - referencing functions: - .text:0045DD10 - .text:0080D940 - .text:0080DA10 - -00900690h: possible vtable (9 methods) -(SI) -0000: task_kill_nemesisst -0000: taskst - task_kill_nemesisst::`vftable' - referencing functions: - .text:0045DD60 - .text:0080D940 - -00901DB8h: possible vtable (1 methods) - referencing functions: - .text:0047AE60 - -0090216Ch: possible vtable (1 methods) - referencing functions: - .text:0047AE60 - -0090438Ch: possible vtable (1 methods) - referencing functions: - .text:00483BB0 - .text:006CF980 - -009044F8h: possible vtable (1 methods) - referencing functions: - .text:00487C20 - -00904940h: possible vtable (1 methods) - referencing functions: - .text:00487C20 - .text:00814140 - -0090516Ch: possible vtable (1 methods) - referencing functions: - .text:00489CB0 - .text:00850E60 - -00906108h: possible vtable (1 methods) - referencing functions: - .text:004A4970 (2 times) - -009078BCh: possible vtable (7 methods) -(SI) -0000: active_script_varst - active_script_varst::`vftable' - referencing functions: - .text:0048FB10 - .text:0048FBC0 - .text:007EB8A0 - .text:007EB980 - -009078DCh: possible vtable (7 methods) -(SI) -0000: active_script_var_unitst -0000: active_script_varst - active_script_var_unitst::`vftable' - referencing functions: - .text:0048FB10 - .text:007EB8A0 - -009078FCh: possible vtable (7 methods) -(SI) -0000: active_script_var_longst -0000: active_script_varst - active_script_var_longst::`vftable' - referencing functions: - .text:0048FBC0 - .text:007EB980 - -0090791Ch: possible vtable (5 methods) -(SI) -0000: interface_buttonst - interface_buttonst::`vftable' - referencing functions: - .text:004915C0 - .text:004919D0 - .text:004AC780 (interface_button_building_permit_foreign_armorst::`scalar deleting destructor') - .text:004C3250 - .text:00508570 - scalar deleting destructor: 004AC780h - -00907934h: possible vtable (5 methods) -(SI) -0000: interface_button_buildingst -0000: interface_buttonst - interface_button_buildingst::`vftable' - referencing functions: - .text:004AC680 - scalar deleting destructor: 004AC780h - -0090794Ch: possible vtable (5 methods) -(SI) -0000: interface_button_constructionst -0000: interface_buttonst - interface_button_constructionst::`vftable' - referencing functions: - .text:004AC700 - scalar deleting destructor: 004AC780h - -00907964h: possible vtable (5 methods) -(SI) -0000: interface_button_construction_category_selectorst -0000: interface_button_constructionst -0000: interface_buttonst - interface_button_construction_category_selectorst::`vftable' - referencing functions: - .text:004916E0 - scalar deleting destructor: 004AC780h - -0090797Ch: possible vtable (5 methods) -(SI) -0000: interface_button_construction_building_selectorst -0000: interface_button_constructionst -0000: interface_buttonst - interface_button_construction_building_selectorst::`vftable' - referencing functions: - .text:00491740 - scalar deleting destructor: 004AC780h - -00907994h: possible vtable (5 methods) -(SI) -0000: interface_button_construction_donest -0000: interface_button_constructionst -0000: interface_buttonst - interface_button_construction_donest::`vftable' - referencing functions: - .text:004917D0 - scalar deleting destructor: 004AC780h - -009079ACh: possible vtable (5 methods) -(SI) -0000: interface_button_buttonst -0000: interface_buttonst - interface_button_buttonst::`vftable' - referencing functions: - .text:004AC7A0 - scalar deleting destructor: 004AC780h - -009079C4h: possible vtable (5 methods) -(SI) -0000: interface_button_button_designate_selectst -0000: interface_button_buttonst -0000: interface_buttonst - interface_button_button_designate_selectst::`vftable' - referencing functions: - .text:004919D0 - scalar deleting destructor: 004AC780h - -009079DCh: possible vtable (5 methods) -(SI) -0000: interface_button_button_donest -0000: interface_button_buttonst -0000: interface_buttonst - interface_button_button_donest::`vftable' - referencing functions: - .text:00491A40 - scalar deleting destructor: 004AC780h - -009079F4h: possible vtable (5 methods) -(SI) -0000: interface_button_button_open_bitem_designationst -0000: interface_button_buttonst -0000: interface_buttonst - interface_button_button_open_bitem_designationst::`vftable' - referencing functions: - .text:00491AA0 - scalar deleting destructor: 004AC780h - -00907A0Ch: possible vtable (5 methods) -(SI) -0000: interface_button_button_open_traffic_designationst -0000: interface_button_buttonst -0000: interface_buttonst - interface_button_button_open_traffic_designationst::`vftable' - referencing functions: - .text:00491B20 - scalar deleting destructor: 004AC780h - -00907A24h: possible vtable (8 methods) -(SI) -0000: viewscreen_optionst -0000: viewscreenst - viewscreen_optionst::`vftable' - referencing functions: - .text:00492540 - scalar deleting destructor: 004647A0h - -00907A48h: possible vtable (8 methods) -(SI) -0000: viewscreen_loadgamest -0000: viewscreenst - viewscreen_loadgamest::`vftable' - referencing functions: - .text:004AAB50 (viewscreen_loadgamest::viewscreen_loadgamest) - .text:004AABF0 (viewscreen_loadgamest::~viewscreen_loadgamest) - scalar deleting destructor: 004AABD0h - destructor: 004AABF0h - constructor: 004AAB50h - -00907A6Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_savegamest -0000: viewscreenst - viewscreen_savegamest::`vftable' - referencing functions: - .text:004A4340 - -00907A90h: possible vtable (8 methods) -(SI) -0000: viewscreen_customize_unitst -0000: viewscreenst - viewscreen_customize_unitst::`vftable' - referencing functions: - .text:00491BF0 (viewscreen_customize_unitst::~viewscreen_customize_unitst) - .text:004A48E0 (viewscreen_customize_unitst::viewscreen_customize_unitst) - scalar deleting destructor: 00491C60h - destructor: 00491BF0h - constructor: 004A48E0h - -00907AB4h: possible vtable (9 methods) -(SI) -0000: viewscreen_unitst -0000: viewscreenst - viewscreen_unitst::`vftable' - referencing functions: - .text:00491C80 - .text:004A47F0 - -00907ADCh: possible vtable (23 methods) -(SI) -0000: layer_object_buttonst -0000: layer_objectst - layer_object_buttonst::`vftable' - referencing functions: - .text:004AD980 (8 times) (viewscreen_layer_stockpilest::viewscreen_layer_stockpilest) - .text:004B3660 (5 times) (viewscreen_layer_unit_relationshipst::viewscreen_layer_unit_relationshipst) - .text:004B4D50 (3 times) - .text:004B51B0 (3 times) - .text:004B53B0 (7 times) (viewscreen_layer_world_gen_param_presetst::viewscreen_layer_world_gen_param_presetst) - .text:004B5A40 (8 times) (viewscreen_layer_world_gen_paramst::viewscreen_layer_world_gen_paramst) - .text:004B9540 (7 times) (viewscreen_layer_export_play_mapst::viewscreen_layer_export_play_mapst) - .text:006389A0 (4 times) (viewscreen_layer_stone_restrictionst::viewscreen_layer_stone_restrictionst) - .text:00639070 (6 times) - .text:00639400 (2 times) (viewscreen_layer_currencyst::viewscreen_layer_currencyst) - .text:00639B80 (6 times) (viewscreen_layer_noblelistst::viewscreen_layer_noblelistst) - .text:0071B2F0 (9 times) (viewscreen_layer_assigntradest::viewscreen_layer_assigntradest) - .text:00804260 (7 times) (viewscreen_layer_choose_language_namest::viewscreen_layer_choose_language_namest) - -00907B3Ch: possible vtable (23 methods) -(SI) -0000: layer_object_listst -0000: layer_objectst - layer_object_listst::`vftable' - referencing functions: - .text:004AD980 (3 times) (viewscreen_layer_stockpilest::viewscreen_layer_stockpilest) - .text:004B3660 (viewscreen_layer_unit_relationshipst::viewscreen_layer_unit_relationshipst) - .text:004B4D50 - .text:004B5A40 (viewscreen_layer_world_gen_paramst::viewscreen_layer_world_gen_paramst) - .text:004B9540 (viewscreen_layer_export_play_mapst::viewscreen_layer_export_play_mapst) - .text:006389A0 (2 times) (viewscreen_layer_stone_restrictionst::viewscreen_layer_stone_restrictionst) - .text:00639070 (2 times) - .text:00639400 (viewscreen_layer_currencyst::viewscreen_layer_currencyst) - .text:00639B80 (3 times) (viewscreen_layer_noblelistst::viewscreen_layer_noblelistst) - .text:0071B2F0 (2 times) (viewscreen_layer_assigntradest::viewscreen_layer_assigntradest) - .text:00804260 (2 times) (viewscreen_layer_choose_language_namest::viewscreen_layer_choose_language_namest) - -00907B9Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layerst::`vftable' - referencing functions: - .text:00491EF0 (viewscreen_layerst::viewscreen_layerst) - .text:004B9E90 (viewscreen_layerst::~viewscreen_layerst) - scalar deleting destructor: 00491F50h - destructor: 004B9E90h - constructor: 00491EF0h - -00907BC0h: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_workshop_profilest -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_workshop_profilest::`vftable' - referencing functions: - .text:00491F70 - .text:004B4D50 - -00907BE4h: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_unit_relationshipst -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_unit_relationshipst::`vftable' - referencing functions: - .text:00491FD0 (viewscreen_layer_unit_relationshipst::~viewscreen_layer_unit_relationshipst) - .text:004B3660 (viewscreen_layer_unit_relationshipst::viewscreen_layer_unit_relationshipst) - scalar deleting destructor: 00492110h - destructor: 00491FD0h - constructor: 004B3660h - -00907C08h: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_musicsoundst -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_musicsoundst::`vftable' - referencing functions: - .text:00492130 (viewscreen_layer_musicsoundst::`scalar deleting destructor') - .text:004B51B0 - scalar deleting destructor: 00492130h - -00907C2Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_export_play_mapst -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_export_play_mapst::`vftable' - referencing functions: - .text:00492160 (viewscreen_layer_export_play_mapst::~viewscreen_layer_export_play_mapst) - .text:004B9540 (viewscreen_layer_export_play_mapst::viewscreen_layer_export_play_mapst) - scalar deleting destructor: 00492230h - destructor: 00492160h - constructor: 004B9540h - -00907C50h: possible vtable (9 methods) -(SI) -0000: world_gen_param_basest - world_gen_param_basest::`vftable' - referencing functions: - .text:004B5A40 (3 times) (viewscreen_layer_world_gen_paramst::viewscreen_layer_world_gen_paramst) - .text:004B93F0 - -00907C78h: possible vtable (9 methods) -(SI) -0000: world_gen_param_valuest -0000: world_gen_param_basest - world_gen_param_valuest::`vftable' - referencing functions: - .text:004B93F0 - -00907CA0h: possible vtable (9 methods) -(SI) -0000: world_gen_param_memberst -0000: world_gen_param_valuest -0000: world_gen_param_basest - world_gen_param_memberst::`vftable' - referencing functions: - .text:004B9390 - -00907CC8h: possible vtable (9 methods) -(SI) -0000: world_gen_param_charst -0000: world_gen_param_valuest -0000: world_gen_param_basest - world_gen_param_charst::`vftable' - referencing functions: - .text:004B9330 - -00907CF0h: possible vtable (9 methods) -(SI) -0000: world_gen_param_seedst -0000: world_gen_param_basest - world_gen_param_seedst::`vftable' - referencing functions: - .text:004B5A40 (3 times) (viewscreen_layer_world_gen_paramst::viewscreen_layer_world_gen_paramst) - -00907D18h: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_world_gen_paramst -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_world_gen_paramst::`vftable' - referencing functions: - .text:004922E0 (viewscreen_layer_world_gen_paramst::~viewscreen_layer_world_gen_paramst) - .text:004B5A40 (viewscreen_layer_world_gen_paramst::viewscreen_layer_world_gen_paramst) - scalar deleting destructor: 00492380h - destructor: 004922E0h - constructor: 004B5A40h - -00907D3Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_world_gen_param_presetst -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_world_gen_param_presetst::`vftable' - referencing functions: - .text:004923A0 (viewscreen_layer_world_gen_param_presetst::~viewscreen_layer_world_gen_param_presetst) - .text:004B53B0 (viewscreen_layer_world_gen_param_presetst::viewscreen_layer_world_gen_param_presetst) - scalar deleting destructor: 00492400h - destructor: 004923A0h - constructor: 004B53B0h - -00907D60h: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_stockpilest -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_stockpilest::`vftable' - referencing functions: - .text:00492420 (viewscreen_layer_stockpilest::~viewscreen_layer_stockpilest) - .text:004AD980 (viewscreen_layer_stockpilest::viewscreen_layer_stockpilest) - scalar deleting destructor: 00492520h - destructor: 00492420h - constructor: 004AD980h - -00907D84h: possible vtable (5 methods) -(SI) -0000: interface_button_button_light_up_selectorst -0000: interface_button_buttonst -0000: interface_buttonst - interface_button_button_light_up_selectorst::`vftable' - referencing functions: - .text:004C31D0 - -00909E00h: possible vtable (1 methods) - referencing functions: - .text:004EDBF0 - .text:007FDD50 - -0090A0B4h: possible vtable (1 methods) - referencing functions: - .text:00504F80 - -0090A0BCh: possible vtable (1 methods) - referencing functions: - .text:00504F80 - -0090A0D8h: possible vtable (1 methods) - referencing functions: - .text:00504F80 - .text:0074A9A0 - -0090A0FCh: possible vtable (181 methods) -(SI) -0000: item_globst -0000: item_actualst -0000: itemst - item_globst::`vftable' - referencing functions: - .text:004C5EC0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0090A3D4h: possible vtable (31 methods) -(SI) -0000: history_event_hist_figure_reach_summitst -0000: history_eventst - history_event_hist_figure_reach_summitst::`vftable' - referencing functions: - .text:004C64A0 - -0090A454h: possible vtable (3 methods) -(SI) -0000: adventure_item_interact_choicest - adventure_item_interact_choicest::`vftable' - referencing functions: - .text:004E5880 (adventure_item_interact_fill_with_slimest::`scalar deleting destructor') - scalar deleting destructor: 004E5880h - -0090A464h: possible vtable (3 methods) -(SI) -0000: adventure_item_interact_strugglest -0000: adventure_item_interact_choicest - adventure_item_interact_strugglest::`vftable' - referencing functions: - .text:004E06B0 - scalar deleting destructor: 004E5880h - -0090A474h: possible vtable (3 methods) -(SI) -0000: adventure_item_interact_pull_outst -0000: adventure_item_interact_choicest - adventure_item_interact_pull_outst::`vftable' - referencing functions: - .text:004E06B0 - scalar deleting destructor: 004E5880h - -0090A484h: possible vtable (3 methods) -(SI) -0000: adventure_item_interact_fill_with_waterst -0000: adventure_item_interact_fillst -0000: adventure_item_interact_choicest - adventure_item_interact_fill_with_waterst::`vftable' - referencing functions: - .text:004E06B0 (2 times) - scalar deleting destructor: 004E5880h - -0090A494h: possible vtable (3 methods) -(SI) -0000: adventure_item_interact_fill_with_bloodst -0000: adventure_item_interact_fillst -0000: adventure_item_interact_choicest - adventure_item_interact_fill_with_bloodst::`vftable' - referencing functions: - .text:004E06B0 - scalar deleting destructor: 004E5880h - -0090A4A4h: possible vtable (3 methods) -(SI) -0000: adventure_item_interact_fill_with_vomitst -0000: adventure_item_interact_fillst -0000: adventure_item_interact_choicest - adventure_item_interact_fill_with_vomitst::`vftable' - referencing functions: - .text:004E06B0 - scalar deleting destructor: 004E5880h - -0090A4B4h: possible vtable (3 methods) -(SI) -0000: adventure_item_interact_fill_with_mudst -0000: adventure_item_interact_fillst -0000: adventure_item_interact_choicest - adventure_item_interact_fill_with_mudst::`vftable' - referencing functions: - .text:004E06B0 - scalar deleting destructor: 004E5880h - -0090A4C4h: possible vtable (3 methods) -(SI) -0000: adventure_item_interact_fill_with_slimest -0000: adventure_item_interact_fillst -0000: adventure_item_interact_choicest - adventure_item_interact_fill_with_slimest::`vftable' - referencing functions: - .text:004E06B0 - scalar deleting destructor: 004E5880h - -0090A4D4h: possible vtable (11 methods) -(SI) -0000: adventure_optionst - adventure_optionst::`vftable' - referencing functions: - .text:004C6A60 (adventure_environment_pickup_ignite_vegst::`scalar deleting destructor') - scalar deleting destructor: 004C6A60h - -0090A504h: possible vtable (11 methods) -(SI) -0000: adventure_option_eat_unit_contaminantst -0000: adventure_optionst - adventure_option_eat_unit_contaminantst::`vftable' - referencing functions: - .text:004E5920 - scalar deleting destructor: 004C6A60h - -0090A534h: possible vtable (11 methods) -(SI) -0000: adventure_option_eat_item_contaminantst -0000: adventure_optionst - adventure_option_eat_item_contaminantst::`vftable' - referencing functions: - .text:004E5920 - scalar deleting destructor: 004C6A60h - -0090A564h: possible vtable (11 methods) -(SI) -0000: adventure_option_view_contaminantst -0000: adventure_optionst - adventure_option_view_contaminantst::`vftable' - referencing functions: - .text:004E5920 - scalar deleting destructor: 004C6A60h - -0090A594h: possible vtable (11 methods) -(SI) -0000: adventure_environment_eat_mudst -0000: adventure_environment_optionst -0000: adventure_optionst - adventure_environment_eat_mudst::`vftable' - referencing functions: - .text:004E5920 - scalar deleting destructor: 004C6A60h - -0090A5C4h: possible vtable (11 methods) -(SI) -0000: adventure_environment_drink_waterst -0000: adventure_environment_optionst -0000: adventure_optionst - adventure_environment_drink_waterst::`vftable' - referencing functions: - .text:004E5920 (2 times) - scalar deleting destructor: 004C6A60h - -0090A5F4h: possible vtable (11 methods) -(SI) -0000: adventure_environment_eat_slimest -0000: adventure_environment_optionst -0000: adventure_optionst - adventure_environment_eat_slimest::`vftable' - referencing functions: - .text:004E5920 - scalar deleting destructor: 004C6A60h - -0090A624h: possible vtable (11 methods) -(SI) -0000: adventure_environment_drink_bloodst -0000: adventure_environment_optionst -0000: adventure_optionst - adventure_environment_drink_bloodst::`vftable' - referencing functions: - .text:004E5920 - scalar deleting destructor: 004C6A60h - -0090A654h: possible vtable (11 methods) -(SI) -0000: adventure_environment_eat_vomitst -0000: adventure_environment_optionst -0000: adventure_optionst - adventure_environment_eat_vomitst::`vftable' - referencing functions: - .text:004E5920 - scalar deleting destructor: 004C6A60h - -0090A684h: possible vtable (11 methods) -(SI) -0000: adventure_environment_pickup_vermin_eventst -0000: adventure_environment_optionst -0000: adventure_optionst - adventure_environment_pickup_vermin_eventst::`vftable' - referencing functions: - .text:004E9B50 - scalar deleting destructor: 004C6A60h - -0090A6B4h: possible vtable (11 methods) -(SI) -0000: adventure_environment_pickup_ignite_vegst -0000: adventure_environment_optionst -0000: adventure_optionst - adventure_environment_pickup_ignite_vegst::`vftable' - referencing functions: - .text:004E9B50 - scalar deleting destructor: 004C6A60h - -0090A6E4h: possible vtable (2 methods) -(SI) -0000: adventure_movement_attack_creaturest -0000: adventure_movement_optionst - adventure_movement_attack_creaturest::`vftable' - referencing functions: - .text:00503070 - -0090A6F0h: possible vtable (2 methods) -(SI) -0000: adventure_movement_building_interactst -0000: adventure_movement_optionst - adventure_movement_building_interactst::`vftable' - referencing functions: - .text:00503070 - -0090A6FCh: possible vtable (2 methods) -(SI) -0000: adventure_movement_movest -0000: adventure_movement_optionst - adventure_movement_movest::`vftable' - referencing functions: - .text:00503070 (2 times) - -0090A708h: possible vtable (8 methods) -(SI) -0000: viewscreen_dungeonmodest -0000: viewscreenst - viewscreen_dungeonmodest::`vftable' - referencing functions: - .text:004C7020 - scalar deleting destructor: 004647A0h - -0090A72Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_adventure_travelst -0000: viewscreenst - viewscreen_adventure_travelst::`vftable' - referencing functions: - .text:004C6D80 - scalar deleting destructor: 0061ADE0h - destructor: 0061AE00h - -0090A750h: possible vtable (8 methods) -(SI) -0000: viewscreen_adventure_logst -0000: viewscreenst - viewscreen_adventure_logst::`vftable' - referencing functions: - .text:004D7710 - scalar deleting destructor: 004D7B10h - destructor: 004D7B30h - -0090A774h: possible vtable (8 methods) -(SI) -0000: viewscreen_dungeon_wrestlest -0000: viewscreenst - viewscreen_dungeon_wrestlest::`vftable' - referencing functions: - .text:004C6AE0 (viewscreen_dungeon_wrestlest::~viewscreen_dungeon_wrestlest) - .text:004D8100 (viewscreen_dungeon_wrestlest::viewscreen_dungeon_wrestlest) - scalar deleting destructor: 004C6BB0h - destructor: 004C6AE0h - constructor: 004D8100h - -0090A798h: possible vtable (8 methods) -(SI) -0000: viewscreen_dungeon_monsterstatusst -0000: viewscreenst - viewscreen_dungeon_monsterstatusst::`vftable' - referencing functions: - .text:004C6BD0 (viewscreen_dungeon_monsterstatusst::~viewscreen_dungeon_monsterstatusst) - .text:00504930 (viewscreen_dungeon_monsterstatusst::viewscreen_dungeon_monsterstatusst) - scalar deleting destructor: 004C6C70h - destructor: 004C6BD0h - constructor: 00504930h - -0090A7BCh: possible vtable (8 methods) -(SI) -0000: viewscreen_dungeon_announcest -0000: viewscreenst - viewscreen_dungeon_announcest::`vftable' - referencing functions: - .text:004D6550 - scalar deleting destructor: 004647A0h - -0090A7E0h: possible vtable (8 methods) -(SI) -0000: viewscreen_setupadventurest -0000: viewscreenst - viewscreen_setupadventurest::`vftable' - referencing functions: - .text:004EF320 - -0090A9F8h: possible vtable (8 methods) -(SI) -0000: build_req_choice_genst -0000: build_req_choicest - build_req_choice_genst::`vftable' - referencing functions: - .text:00507FD0 - -0090AA1Ch: possible vtable (9 methods) -(SI) -0000: build_req_choice_specst -0000: build_req_choicest - build_req_choice_specst::`vftable' - referencing functions: - .text:00524F50 (2 times) - -0090AA44h: possible vtable (21 methods) -(SI) -0000: history_event_hist_figure_diedst -0000: history_eventst - history_event_hist_figure_diedst::`vftable' - referencing functions: - .text:00508180 - .text:0066C150 - -0090AAC4h: possible vtable (5 methods) -(SI) -0000: interface_button_building_material_selectorst -0000: interface_button_buildingst -0000: interface_buttonst - interface_button_building_material_selectorst::`vftable' - referencing functions: - .text:00508350 - scalar deleting destructor: 004AC780h - -0090AADCh: possible vtable (5 methods) -(SI) -0000: interface_button_building_category_selectorst -0000: interface_button_buildingst -0000: interface_buttonst - interface_button_building_category_selectorst::`vftable' - referencing functions: - .text:005083E0 - scalar deleting destructor: 004AC780h - -0090AAF4h: possible vtable (5 methods) -(SI) -0000: interface_button_building_new_jobst -0000: interface_button_buildingst -0000: interface_buttonst - interface_button_building_new_jobst::`vftable' - referencing functions: - .text:005084D0 - -0090AB0Ch: possible vtable (5 methods) -(SI) -0000: interface_button_building_permit_trapcompst -0000: interface_button_buildingst -0000: interface_buttonst - interface_button_building_permit_trapcompst::`vftable' - referencing functions: - .text:0051CAE0 - scalar deleting destructor: 004AC780h - -0090AB24h: possible vtable (5 methods) -(SI) -0000: interface_button_building_permit_foreign_weaponst -0000: interface_button_buildingst -0000: interface_buttonst - interface_button_building_permit_foreign_weaponst::`vftable' - referencing functions: - .text:0051CAE0 - scalar deleting destructor: 004AC780h - -0090AB3Ch: possible vtable (5 methods) -(SI) -0000: interface_button_building_permit_foreign_siegeammost -0000: interface_button_buildingst -0000: interface_buttonst - interface_button_building_permit_foreign_siegeammost::`vftable' - referencing functions: - .text:0051CAE0 - scalar deleting destructor: 004AC780h - -0090AB54h: possible vtable (5 methods) -(SI) -0000: interface_button_building_permit_itemst -0000: interface_button_buildingst -0000: interface_buttonst - interface_button_building_permit_itemst::`vftable' - referencing functions: - .text:005085C0 - .text:0051CAE0 (2 times) - .text:0051CE90 (5 times) - scalar deleting destructor: 004AC780h - -0090AB6Ch: possible vtable (5 methods) -(SI) -0000: interface_button_building_permit_foreign_armorst -0000: interface_button_buildingst -0000: interface_buttonst - interface_button_building_permit_foreign_armorst::`vftable' - referencing functions: - .text:0051CE90 - scalar deleting destructor: 004AC780h - -0090AB84h: possible vtable (9 methods) -(SI) -0000: viewscreen_dwarfmodest -0000: viewscreenst - viewscreen_dwarfmodest::`vftable' - referencing functions: - .text:005087A0 - scalar deleting destructor: 00508880h - destructor: 005088A0h - -0090ABACh: possible vtable (8 methods) -(SI) -0000: viewscreen_selectitemst -0000: viewscreenst - viewscreen_selectitemst::`vftable' - referencing functions: - .text:005086E0 (viewscreen_selectitemst::~viewscreen_selectitemst) - .text:0051A520 (viewscreen_selectitemst::viewscreen_selectitemst) - scalar deleting destructor: 00508780h - destructor: 005086E0h - constructor: 0051A520h - -0090AED4h: possible vtable (2 methods) -(SI) -0000: std::out_of_range -0000: std::logic_error -0000: std::exception - std::out_of_range::`vftable' - referencing functions: - .text:005295A0 - .text:0052DB70 - .text:0052E0C0 - .text:0052EA10 - .text:005322B0 - .text:00533920 - .text:005348D0 - .text:005352B0 - .text:005356F0 - .text:00535D90 - .text:00540320 - .text:006683B0 - .text:006DC620 - .text:006DC940 - .text:006DCC30 - .text:006E0DE0 - .text:006E2490 - .text:006E2BE0 - -0090B74Ch: possible vtable (3 methods) -(SI) -0000: text_info_elementst - text_info_elementst::`vftable' - referencing functions: - .text:00537380 - .text:00537730 - .text:00537780 (text_info_element_longst::`scalar deleting destructor') - scalar deleting destructor: 00537780h - -0090B75Ch: possible vtable (3 methods) -(SI) -0000: text_info_element_stringst -0000: text_info_elementst - text_info_element_stringst::`vftable' - referencing functions: - .text:005376A0 - -0090B76Ch: possible vtable (3 methods) -(SI) -0000: text_info_element_longst -0000: text_info_elementst - text_info_element_longst::`vftable' - referencing functions: - .text:0053CB50 - scalar deleting destructor: 00537780h - -0090BD64h: possible vtable (1 methods) - referencing functions: - .text:00561740 (3 times) - -0090BDF4h: possible vtable (1 methods) - referencing functions: - .text:00565650 - -0090BE00h: possible vtable (1 methods) - referencing functions: - .text:00565650 - -0090BE18h: possible vtable (1 methods) - referencing functions: - .text:00565650 - -0090BE1Ch: possible vtable (1 methods) - referencing functions: - .text:00565650 - -0090BE24h: possible vtable (1 methods) - referencing functions: - .text:00565650 - -0090C038h: possible vtable (12 methods) -(SI) -0000: history_event_collection_warst -0000: history_event_collectionst - history_event_collection_warst::`vftable' - referencing functions: - .text:00545A80 - -0090C06Ch: possible vtable (12 methods) -(SI) -0000: history_event_collection_abductionst -0000: history_event_collectionst - history_event_collection_abductionst::`vftable' - referencing functions: - .text:00546080 - scalar deleting destructor: 00546130h - destructor: 00546150h - -0090C0A0h: possible vtable (12 methods) -(SI) -0000: history_event_collection_theftst -0000: history_event_collectionst - history_event_collection_theftst::`vftable' - referencing functions: - .text:00546530 - scalar deleting destructor: 00546680h - destructor: 005466A0h - -0090C0D4h: possible vtable (14 methods) -(SI) -0000: general_refst - general_refst::`vftable' - referencing functions: - .text:00777450 (general_ref_entity_itemownerst::`scalar deleting destructor') - scalar deleting destructor: 00777450h - -0090C110h: possible vtable (14 methods) -(SI) -0000: general_ref_mapsquarest -0000: general_refst - general_ref_mapsquarest::`vftable' - referencing functions: - .text:00541470 - .text:0056C640 - .text:00777A20 - .text:00777EB0 - .text:0089D9C0 - .text:008BA570 - scalar deleting destructor: 00777450h - -0090C14Ch: possible vtable (15 methods) -(SI) -0000: general_ref_entity_art_imagest -0000: general_refst - general_ref_entity_art_imagest::`vftable' - referencing functions: - .text:005414E0 - .text:00577AC0 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -0090C18Ch: possible vtable (181 methods) -(SI) -0000: item_meatst -0000: item_actualst -0000: itemst - item_meatst::`vftable' - referencing functions: - .text:005427B0 - .text:0056FCB0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0090C464h: possible vtable (181 methods) -(SI) -0000: item_fishst -0000: item_actualst -0000: itemst - item_fishst::`vftable' - referencing functions: - .text:005428C0 - .text:0056FCB0 - .text:00709E20 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0090C73Ch: possible vtable (181 methods) -(SI) -0000: item_craftedst -0000: item_actualst -0000: itemst - item_craftedst::`vftable' - referencing functions: - .text:005429B0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0090CA14h: possible vtable (181 methods) -(SI) -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_constructedst::`vftable' - referencing functions: - .text:00542C70 (item_constructedst::item_constructedst) - .text:006A7710 (item_trapcompst::~item_trapcompst) - scalar deleting destructor: 00543D40h - destructor: 006A7710h - constructor: 00542C70h - -0090CCECh: possible vtable (181 methods) -(SI) -0000: item_doorst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_doorst::`vftable' - referencing functions: - .text:00542CD0 - .text:006A1320 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090CFC4h: possible vtable (181 methods) -(SI) -0000: item_bedst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_bedst::`vftable' - referencing functions: - .text:00542D70 - .text:006A16E0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090D29Ch: possible vtable (181 methods) -(SI) -0000: item_chairst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_chairst::`vftable' - referencing functions: - .text:00542E10 - .text:006A1750 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090D574h: possible vtable (181 methods) -(SI) -0000: item_flaskst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_flaskst::`vftable' - referencing functions: - .text:00542EC0 - .text:006A1830 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090D84Ch: possible vtable (181 methods) -(SI) -0000: item_barrelst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_barrelst::`vftable' - referencing functions: - .text:00542F60 - .text:006A1DE0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090DB24h: possible vtable (181 methods) -(SI) -0000: item_tablest -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_tablest::`vftable' - referencing functions: - .text:00543050 - .text:006A2090 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090DDFCh: possible vtable (181 methods) -(SI) -0000: item_weaponst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_weaponst::`vftable' - referencing functions: - .text:005430F0 - .text:006A2580 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090E0D4h: possible vtable (181 methods) -(SI) -0000: item_armorst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_armorst::`vftable' - referencing functions: - .text:00543290 - .text:006A2610 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090E3ACh: possible vtable (181 methods) -(SI) -0000: item_shoesst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_shoesst::`vftable' - referencing functions: - .text:00543370 - .text:006A26A0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090E684h: possible vtable (181 methods) -(SI) -0000: item_shieldst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_shieldst::`vftable' - referencing functions: - .text:00543440 - .text:006A2730 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090E95Ch: possible vtable (181 methods) -(SI) -0000: item_helmst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_helmst::`vftable' - referencing functions: - .text:00543520 - .text:006A27C0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090EC34h: possible vtable (181 methods) -(SI) -0000: item_glovesst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_glovesst::`vftable' - referencing functions: - .text:005437A0 - .text:006A2850 - -0090EF0Ch: possible vtable (181 methods) -(SI) -0000: item_boxst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_boxst::`vftable' - referencing functions: - .text:00543890 - .text:006A28E0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090F1E4h: possible vtable (181 methods) -(SI) -0000: item_ammost -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_ammost::`vftable' - referencing functions: - .text:00543950 - .text:006A3150 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090F4BCh: possible vtable (181 methods) -(SI) -0000: item_pantsst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_pantsst::`vftable' - referencing functions: - .text:00543AB0 - .text:006A3980 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090F794h: possible vtable (181 methods) -(SI) -0000: item_backpackst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_backpackst::`vftable' - referencing functions: - .text:00543BE0 - .text:006A3A10 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090FA6Ch: possible vtable (181 methods) -(SI) -0000: item_quiverst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_quiverst::`vftable' - referencing functions: - .text:00543C90 - .text:006A3A80 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0090FD44h: possible vtable (181 methods) -(SI) -0000: item_coinst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_coinst::`vftable' - referencing functions: - .text:00543D60 - .text:006A4320 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0091001Ch: possible vtable (31 methods) -(SI) -0000: history_event_created_sitest -0000: history_eventst - history_event_created_sitest::`vftable' - referencing functions: - .text:00544F20 - .text:0066B1B0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091009Ch: possible vtable (31 methods) -(SI) -0000: history_event_created_buildingst -0000: history_eventst - history_event_created_buildingst::`vftable' - referencing functions: - .text:00544F90 - .text:0066B230 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091011Ch: possible vtable (31 methods) -(SI) -0000: history_event_replaced_buildingst -0000: history_eventst - history_event_replaced_buildingst::`vftable' - referencing functions: - .text:00545060 - .text:0066B2B0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091019Ch: possible vtable (11 methods) -(SI) -0000: history_event_entity_razed_buildingst -0000: history_eventst - history_event_entity_razed_buildingst::`vftable' - referencing functions: - .text:005451D0 - .text:0066B330 - -0091021Ch: possible vtable (27 methods) -(SI) -0000: history_event_created_world_constructionst -0000: history_eventst - history_event_created_world_constructionst::`vftable' - referencing functions: - .text:005452A0 - .text:0066B440 - -0091029Ch: possible vtable (31 methods) -(SI) -0000: history_event_reclaim_sitest -0000: history_eventst - history_event_reclaim_sitest::`vftable' - referencing functions: - .text:00545470 - .text:0066B4C0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091031Ch: possible vtable (31 methods) -(SI) -0000: history_event_war_peace_acceptedst -0000: history_eventst - history_event_war_peace_acceptedst::`vftable' - referencing functions: - .text:00545530 - .text:0066D080 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091039Ch: possible vtable (31 methods) -(SI) -0000: history_event_war_peace_rejectedst -0000: history_eventst - history_event_war_peace_rejectedst::`vftable' - referencing functions: - .text:00545620 - .text:0066D100 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091041Ch: possible vtable (31 methods) -(SI) -0000: history_event_entity_createdst -0000: history_eventst - history_event_entity_createdst::`vftable' - referencing functions: - .text:00545770 - .text:0066E4B0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091049Ch: possible vtable (31 methods) -(SI) -0000: history_event_entity_incorporatedst -0000: history_eventst - history_event_entity_incorporatedst::`vftable' - referencing functions: - .text:00545800 - .text:0066E530 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -00910930h: possible vtable (14 methods) -(SI) -0000: general_ref_buildingst -0000: general_refst - general_ref_buildingst::`vftable' - referencing functions: - .text:00596CF0 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -0091096Ch: possible vtable (15 methods) -(SI) -0000: general_ref_building_well_tagst -0000: general_ref_buildingst -0000: general_refst - general_ref_building_well_tagst::`vftable' - referencing functions: - .text:00596DA0 - .text:005BE6E0 - .text:00777A20 - .text:00777EB0 - .text:00847D30 - scalar deleting destructor: 00777450h - -009109ACh: possible vtable (180 methods) -(SI) -0000: item_powder_miscst -0000: item_powderst -0000: item_liquipowderst -0000: item_actualst -0000: itemst - item_powder_miscst::`vftable' - referencing functions: - .text:00596ED0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -00910C84h: possible vtable (1 methods) - referencing functions: - .text:005C4010 - -00910CC4h: possible vtable (181 methods) -(SI) -0000: item_corpsest -0000: item_actualst -0000: itemst - item_corpsest::`vftable' - referencing functions: - .text:005C5AE0 - .text:005FDFC0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -00910F9Ch: possible vtable (181 methods) -(SI) -0000: item_corpsepiecest -0000: item_actualst -0000: itemst - item_corpsepiecest::`vftable' - referencing functions: - .text:005C5E00 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -00911274h: possible vtable (181 methods) -(SI) -0000: item_chainst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_chainst::`vftable' - referencing functions: - .text:005C5E60 - .text:006A17C0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0091154Ch: possible vtable (180 methods) -(SI) -0000: item_cagest -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_cagest::`vftable' - referencing functions: - .text:005C5F00 - .text:006A1D70 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00911820h: possible vtable (3 methods) -(SI) -0000: feature_alteration_spec_infost - feature_alteration_spec_infost::`vftable' - referencing functions: - .text:005C6090 - .text:005C6310 (feature_alteration_spec_infost::`scalar deleting destructor') - .text:005C63C0 (feature_alteration_spec_info_underworld_spike_level_infost::~feature_alteration_spec_info_underworld_spike_level_infost) - scalar deleting destructor: 005C6310h - -00911830h: possible vtable (3 methods) -(SI) -0000: feature_alteration_spec_info_underworld_spike_level_infost -0000: feature_alteration_spec_infost - feature_alteration_spec_info_underworld_spike_level_infost::`vftable' - referencing functions: - .text:005C63C0 (feature_alteration_spec_info_underworld_spike_level_infost::~feature_alteration_spec_info_underworld_spike_level_infost) - .text:005CA790 (feature_alteration_spec_info_underworld_spike_level_infost::feature_alteration_spec_info_underworld_spike_level_infost) - scalar deleting destructor: 005C6450h - destructor: 005C63C0h - constructor: 005CA790h - -00911840h: possible vtable (6 methods) -(SI) -0000: feature_specinfost - feature_specinfost::`vftable' - referencing functions: - .text:005C6470 () - .text:005C6550 (feature_specinfo_cave_underworld_spikest::~feature_specinfo_cave_underworld_spikest) - .text:005C7140 (feature_specinfo_cave_lava_shaftst::`scalar deleting destructor') - scalar deleting destructor: 005C7140h - -0091185Ch: possible vtable (6 methods) -(SI) -0000: feature_specinfo_cave_underworld_spikest -0000: feature_specinfost - feature_specinfo_cave_underworld_spikest::`vftable' - referencing functions: - .text:005C6550 (feature_specinfo_cave_underworld_spikest::~feature_specinfo_cave_underworld_spikest) - .text:005C6C90 (feature_specinfo_cave_underworld_spikest::feature_specinfo_cave_underworld_spikest) - scalar deleting destructor: 005C6620h - destructor: 005C6550h - constructor: 005C6C90h - -00911878h: possible vtable (6 methods) -(SI) -0000: feature_specinfo_cave_lava_shaftst -0000: feature_specinfost - feature_specinfo_cave_lava_shaftst::`vftable' - referencing functions: - .text:004A83D0 - .text:005C6870 - .text:007B9670 - scalar deleting destructor: 005C7140h - -00911894h: possible vtable (31 methods) -(SI) -0000: history_event_demon_releasedst -0000: history_eventst - history_event_demon_releasedst::`vftable' - referencing functions: - .text:005C6A50 - .text:0066E430 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -009161DCh: possible vtable (1 methods) - referencing functions: - .text:005F8AA0 - -009162D0h: possible vtable (1 methods) - referencing functions: - .text:005F8AA0 - -00916B58h: possible vtable (1 methods) - referencing functions: - .text:00613510 - .text:007F52E0 - -00916E70h: possible vtable (1 methods) - referencing functions: - .text:006163F0 - -00916EB0h: possible vtable (1 methods) - referencing functions: - .text:006163F0 - -009180BCh: possible vtable (1 methods) - referencing functions: - .text:006212A0 - -009180CCh: possible vtable (1 methods) - referencing functions: - .text:006212A0 - -009180DCh: possible vtable (1 methods) - referencing functions: - .text:006212A0 - -009180E8h: possible vtable (1 methods) - referencing functions: - .text:006212A0 - -00918220h: possible vtable (1 methods) - referencing functions: - .text:00463670 - .text:0068A6D0 - .text:00867F70 - .text:00874420 - -00918224h: possible vtable (1 methods) - referencing functions: - .text:00458F20 (2 times) - .text:00463670 (2 times) - .text:004647C0 - .text:004E7900 (2 times) - .text:006248C0 - .text:0068A6D0 (2 times) - .text:00760050 - .text:00867F70 (2 times) - .text:00874420 (2 times) - -00918240h: possible vtable (1 methods) - referencing functions: - .text:00458F20 (2 times) - .text:00463670 - .text:004647C0 - .text:004E7900 (2 times) - .text:006248C0 - .text:0068A6D0 - .text:00760050 - .text:00867F70 - .text:00874420 - -00919764h: possible vtable (181 methods) -(SI) -0000: item_seedsst -0000: item_actualst -0000: itemst - item_seedsst::`vftable' - referencing functions: - .text:005D1B10 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -00919A3Ch: possible vtable (181 methods) -(SI) -0000: item_skin_rawst -0000: item_actualst -0000: itemst - item_skin_rawst::`vftable' - referencing functions: - .text:005D1C10 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -00919D14h: possible vtable (181 methods) -(SI) -0000: item_bonesst -0000: item_actualst -0000: itemst - item_bonesst::`vftable' - referencing functions: - .text:005D1C50 - .text:006A0630 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -00919FECh: possible vtable (181 methods) -(SI) -0000: item_skullst -0000: item_actualst -0000: itemst - item_skullst::`vftable' - referencing functions: - .text:005D1D20 - .text:006A06D0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0091A2C4h: possible vtable (175 methods) -(SI) -0000: item_threadst -0000: item_actualst -0000: itemst - item_threadst::`vftable' - referencing functions: - .text:005D20D0 - .text:008C6860 - -0091A59Ch: possible vtable (31 methods) -(SI) -0000: history_event_hist_figure_abductedst -0000: history_eventst - history_event_hist_figure_abductedst::`vftable' - referencing functions: - .text:005D6770 - .text:0066C1D0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091A61Ch: possible vtable (31 methods) -(SI) -0000: history_event_first_contactst -0000: history_eventst - history_event_first_contactst::`vftable' - referencing functions: - .text:005D67E0 - .text:0066CDF0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091A69Ch: possible vtable (31 methods) -(SI) -0000: history_event_first_contact_failedst -0000: history_eventst - history_event_first_contact_failedst::`vftable' - referencing functions: - .text:005D6880 - .text:0066CE70 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091A71Ch: possible vtable (31 methods) -(SI) -0000: history_event_topicagreement_concludedst -0000: history_eventst - history_event_topicagreement_concludedst::`vftable' - referencing functions: - .text:005D6910 - .text:0066CEF0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091A79Ch: possible vtable (31 methods) -(SI) -0000: history_event_topicagreement_rejectedst -0000: history_eventst - history_event_topicagreement_rejectedst::`vftable' - referencing functions: - .text:005D6BD0 - .text:0066CF80 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091A81Ch: possible vtable (31 methods) -(SI) -0000: history_event_topicagreement_madest -0000: history_eventst - history_event_topicagreement_madest::`vftable' - referencing functions: - .text:005D6D00 - .text:0066D000 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091A89Ch: possible vtable (31 methods) -(SI) -0000: history_event_diplomat_lostst -0000: history_eventst - history_event_diplomat_lostst::`vftable' - referencing functions: - .text:005D6E10 - .text:0066D180 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091A91Ch: possible vtable (31 methods) -(SI) -0000: history_event_agreements_voidedst -0000: history_eventst - history_event_agreements_voidedst::`vftable' - referencing functions: - .text:005D6EE0 - .text:0066D770 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091A99Ch: possible vtable (31 methods) -(SI) -0000: history_event_artifact_createdst -0000: history_eventst - history_event_artifact_createdst::`vftable' - referencing functions: - .text:005D6F90 - .text:0066DD50 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091AA1Ch: possible vtable (31 methods) -(SI) -0000: history_event_artifact_lostst -0000: history_eventst - history_event_artifact_lostst::`vftable' - referencing functions: - .text:005D7010 - .text:0066DDD0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091AA9Ch: possible vtable (31 methods) -(SI) -0000: history_event_item_stolenst -0000: history_eventst - history_event_item_stolenst::`vftable' - referencing functions: - .text:005D7420 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0091AB1Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_export_graphical_mapst -0000: viewscreenst - viewscreen_export_graphical_mapst::`vftable' - referencing functions: - .text:005F1360 (viewscreen_export_graphical_mapst::viewscreen_export_graphical_mapst) - .text:005F1550 (viewscreen_export_graphical_mapst::~viewscreen_export_graphical_mapst) - scalar deleting destructor: 005F1470h - destructor: 005F1550h - constructor: 005F1360h - -0091AB40h: possible vtable (8 methods) -(SI) -0000: viewscreen_export_regionst -0000: viewscreenst - viewscreen_export_regionst::`vftable' - referencing functions: - .text:005F1490 - .text:005F1520 - -0091AB64h: possible vtable (8 methods) -(SI) -0000: viewscreen_new_regionst -0000: viewscreenst - viewscreen_new_regionst::`vftable' - referencing functions: - .text:005F1760 (viewscreen_new_regionst::viewscreen_new_regionst) - .text:005F1B60 (viewscreen_new_regionst::~viewscreen_new_regionst) - scalar deleting destructor: 005F1B40h - destructor: 005F1B60h - constructor: 005F1760h - -0091AB88h: possible vtable (8 methods) -(SI) -0000: viewscreen_legendsst -0000: viewscreenst - viewscreen_legendsst::`vftable' - referencing functions: - .text:005F1CD0 (viewscreen_legendsst::viewscreen_legendsst) - .text:005F1F20 (viewscreen_legendsst::~viewscreen_legendsst) - scalar deleting destructor: 005F1F00h - destructor: 005F1F20h - constructor: 005F1CD0h - -0091ABACh: possible vtable (8 methods) -(SI) -0000: viewscreen_titlest -0000: viewscreenst - viewscreen_titlest::`vftable' - referencing functions: - .text:005DC660 (viewscreen_titlest::~viewscreen_titlest) - .text:005F25C0 (viewscreen_titlest::viewscreen_titlest) - scalar deleting destructor: 005DC900h - destructor: 005DC660h - constructor: 005F25C0h - -0091ABD0h: possible vtable (8 methods) -(SI) -0000: viewscreen_game_cleanerst -0000: viewscreenst - viewscreen_game_cleanerst::`vftable' - referencing functions: - .text:0051BFC0 - .text:005F2500 - scalar deleting destructor: 004647A0h - -0091ABF4h: possible vtable (8 methods) -(SI) -0000: viewscreen_announcelistst -0000: viewscreenst - viewscreen_announcelistst::`vftable' - referencing functions: - .text:00609360 - scalar deleting destructor: 004647A0h - -0091AC18h: possible vtable (8 methods) -(SI) -0000: viewscreen_kitchenprefst -0000: viewscreenst - viewscreen_kitchenprefst::`vftable' - referencing functions: - .text:00611650 - -0091AC3Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_petst -0000: viewscreenst - viewscreen_petst::`vftable' - referencing functions: - .text:00612430 - -0091AC60h: possible vtable (8 methods) -(SI) -0000: viewscreen_pricest -0000: viewscreenst - viewscreen_pricest::`vftable' - referencing functions: - .text:00614440 - scalar deleting destructor: 004647A0h - -0091AC84h: possible vtable (8 methods) -(SI) -0000: viewscreen_justicest -0000: viewscreenst - viewscreen_justicest::`vftable' - referencing functions: - .text:00614650 - scalar deleting destructor: 0061ADE0h - destructor: 0061AE00h - -0091ACA8h: possible vtable (8 methods) -(SI) -0000: viewscreen_overallstatusst -0000: viewscreenst - viewscreen_overallstatusst::`vftable' - referencing functions: - .text:0062F770 - scalar deleting destructor: 004647A0h - -0091ACCCh: possible vtable (8 methods) -(SI) -0000: viewscreen_storesst -0000: viewscreenst - viewscreen_storesst::`vftable' - referencing functions: - .text:0064E750 - -0091ACF0h: possible vtable (8 methods) -(SI) -0000: viewscreen_wagesst -0000: viewscreenst - viewscreen_wagesst::`vftable' - referencing functions: - .text:00616360 - scalar deleting destructor: 004647A0h - -0091AD14h: possible vtable (8 methods) -(SI) -0000: viewscreen_jobmanagementst -0000: viewscreenst - viewscreen_jobmanagementst::`vftable' - referencing functions: - .text:00618AE0 - scalar deleting destructor: 004647A0h - -0091AD38h: possible vtable (8 methods) -(SI) -0000: viewscreen_createquotast -0000: viewscreenst - viewscreen_createquotast::`vftable' - referencing functions: - .text:00619360 (viewscreen_createquotast::viewscreen_createquotast) - .text:00619490 (viewscreen_createquotast::~viewscreen_createquotast) - scalar deleting destructor: 00619470h - destructor: 00619490h - constructor: 00619360h - -0091AD5Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_unitjobsst -0000: viewscreenst - viewscreen_unitjobsst::`vftable' - referencing functions: - .text:0061A1E0 - scalar deleting destructor: 0061ADE0h - destructor: 0061AE00h - -0091AD80h: possible vtable (8 methods) -(SI) -0000: viewscreen_treasurelistst -0000: viewscreenst - viewscreen_treasurelistst::`vftable' - referencing functions: - .text:0061C1D0 - scalar deleting destructor: 004647A0h - -0091ADA4h: possible vtable (8 methods) -(SI) -0000: viewscreen_entityst -0000: viewscreenst - viewscreen_entityst::`vftable' - referencing functions: - .text:0061C710 - -0091ADC8h: possible vtable (8 methods) -(SI) -0000: viewscreen_civlistst -0000: viewscreenst - viewscreen_civlistst::`vftable' - referencing functions: - .text:0061F3E0 - -0091ADECh: possible vtable (8 methods) -(SI) -0000: viewscreen_squadst -0000: viewscreenst - viewscreen_squadst::`vftable' - referencing functions: - .text:00620240 - scalar deleting destructor: 004647A0h - -0091AE10h: possible vtable (8 methods) -(SI) -0000: viewscreen_commandchainst -0000: viewscreenst - viewscreen_commandchainst::`vftable' - referencing functions: - .text:00621150 - scalar deleting destructor: 00621210h - destructor: 00621230h - -0091AE34h: possible vtable (8 methods) -(SI) -0000: viewscreen_buildinglistst -0000: viewscreenst - viewscreen_buildinglistst::`vftable' - referencing functions: - .text:00636670 - scalar deleting destructor: 00636C20h - destructor: 00636C40h - -0091AE58h: possible vtable (8 methods) -(SI) -0000: viewscreen_noblest -0000: viewscreenst - viewscreen_noblest::`vftable' - referencing functions: - .text:0063E950 - scalar deleting destructor: 004647A0h - -0091AE7Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_itemst -0000: viewscreenst - viewscreen_itemst::`vftable' - referencing functions: - .text:006520F0 - -0091AEA0h: possible vtable (8 methods) -(SI) -0000: viewscreen_buildingst -0000: viewscreenst - viewscreen_buildingst::`vftable' - referencing functions: - .text:006550D0 - scalar deleting destructor: 004647A0h - -0091AEC4h: possible vtable (8 methods) -(SI) -0000: viewscreen_jobst -0000: viewscreenst - viewscreen_jobst::`vftable' - referencing functions: - .text:006554A0 - scalar deleting destructor: 004647A0h - -0091AEE8h: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_noblelistst -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_noblelistst::`vftable' - referencing functions: - .text:00638660 (viewscreen_layer_noblelistst::~viewscreen_layer_noblelistst) - .text:00639B80 (viewscreen_layer_noblelistst::viewscreen_layer_noblelistst) - scalar deleting destructor: 00638980h - destructor: 00638660h - constructor: 00639B80h - -0091AF0Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_stone_restrictionst -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_stone_restrictionst::`vftable' - referencing functions: - .text:006384C0 (viewscreen_layer_stone_restrictionst::~viewscreen_layer_stone_restrictionst) - .text:006389A0 (viewscreen_layer_stone_restrictionst::viewscreen_layer_stone_restrictionst) - scalar deleting destructor: 00638590h - destructor: 006384C0h - constructor: 006389A0h - -0091AF30h: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_reactionst -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_reactionst::`vftable' - referencing functions: - .text:006385B0 (viewscreen_layer_reactionst::`scalar deleting destructor') - .text:00639070 - scalar deleting destructor: 006385B0h - -0091AF54h: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_currencyst -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_currencyst::`vftable' - referencing functions: - .text:006385E0 (viewscreen_layer_currencyst::~viewscreen_layer_currencyst) - .text:00639400 (viewscreen_layer_currencyst::viewscreen_layer_currencyst) - scalar deleting destructor: 00638640h - destructor: 006385E0h - constructor: 00639400h - -00928770h: possible vtable (1 methods) - referencing functions: - .text:00677CD0 - .text:0067A520 (2 times) - -009299D4h: possible vtable (1 methods) - referencing functions: - .text:0067AA50 (2 times) - .text:00850E60 - -0092A0F8h: possible vtable (1 methods) - referencing functions: - .text:0067C100 (6 times) - .text:0068FB10 - .text:0074A9A0 - -0092A430h: possible vtable (1 methods) - referencing functions: - .text:0067E720 - -0092A970h: possible vtable (12 methods) -(SI) -0000: history_event_collectionst - history_event_collectionst::`vftable' - referencing functions: - .text:00690F30 (history_event_collectionst::history_event_collectionst) - .text:00691020 (history_event_collection_duelst::~history_event_collection_duelst) - scalar deleting destructor: 00691000h - destructor: 00691020h - constructor: 00690F30h - -0092A9A4h: possible vtable (12 methods) -(SI) -0000: history_event_collection_battlest -0000: history_event_collectionst - history_event_collection_battlest::`vftable' - referencing functions: - .text:0066F2F0 - -0092A9D8h: possible vtable (12 methods) -(SI) -0000: history_event_collection_duelst -0000: history_event_collectionst - history_event_collection_duelst::`vftable' - referencing functions: - .text:0066F550 - .text:007793E0 - scalar deleting destructor: 00691000h - destructor: 00691020h - -0092AA0Ch: possible vtable (12 methods) -(SI) -0000: history_event_collection_site_conqueredst -0000: history_event_collectionst - history_event_collection_site_conqueredst::`vftable' - referencing functions: - .text:0066F950 - scalar deleting destructor: 0066F9D0h - destructor: 0066F9F0h - -0092AA40h: possible vtable (12 methods) -(SI) -0000: history_event_collection_beast_attackst -0000: history_event_collectionst - history_event_collection_beast_attackst::`vftable' - referencing functions: - .text:0066FD90 - -0092AA74h: possible vtable (31 methods) -(SI) -0000: history_eventst - history_eventst::`vftable' - referencing functions: - .text:00670750 (history_eventst::history_eventst) - .text:00670850 (history_event_item_stolenst::~history_event_item_stolenst) - scalar deleting destructor: 005457E0h - destructor: 00670850h - constructor: 00670750h - -0092AAF4h: possible vtable (31 methods) -(SI) -0000: history_event_war_field_battlest -0000: history_eventst - history_event_war_field_battlest::`vftable' - referencing functions: - .text:0066A3D0 - .text:00778E40 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092AB74h: possible vtable (27 methods) -(SI) -0000: history_event_war_attacked_sitest -0000: history_eventst - history_event_war_attacked_sitest::`vftable' - referencing functions: - .text:0066A6C0 - .text:00711E60 - -0092ABF4h: possible vtable (31 methods) -(SI) -0000: history_event_war_destroyed_sitest -0000: history_eventst - history_event_war_destroyed_sitest::`vftable' - referencing functions: - .text:0066A800 - .text:00778EC0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092AC74h: possible vtable (31 methods) -(SI) -0000: history_event_war_plundered_sitest -0000: history_eventst - history_event_war_plundered_sitest::`vftable' - referencing functions: - .text:0066A920 - .text:00778F30 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092ACF4h: possible vtable (31 methods) -(SI) -0000: history_event_war_site_tribute_forcedst -0000: history_eventst - history_event_war_site_tribute_forcedst::`vftable' - referencing functions: - .text:0066AA00 - .text:00778FA0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092AD74h: possible vtable (27 methods) -(SI) -0000: history_event_war_site_new_leaderst -0000: history_eventst - history_event_war_site_new_leaderst::`vftable' - referencing functions: - .text:0066AAA0 - .text:00779010 - -0092ADF4h: possible vtable (31 methods) -(SI) -0000: history_event_war_site_taken_overst -0000: history_eventst - history_event_war_site_taken_overst::`vftable' - referencing functions: - .text:0066AD00 - .text:00779090 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092AE74h: possible vtable (31 methods) -(SI) -0000: history_event_hf_destroyed_sitest -0000: history_eventst - history_event_hf_destroyed_sitest::`vftable' - referencing functions: - .text:0066AF60 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092AEF4h: possible vtable (31 methods) -(SI) -0000: history_event_site_diedst -0000: history_eventst - history_event_site_diedst::`vftable' - referencing functions: - .text:0066B040 - .text:0087DBB0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092AF74h: possible vtable (31 methods) -(SI) -0000: history_event_site_abandonedst -0000: history_eventst - history_event_site_abandonedst::`vftable' - referencing functions: - .text:0066B110 - .text:0087DC20 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092AFF4h: possible vtable (11 methods) -(SI) -0000: history_event_hf_razed_buildingst -0000: history_eventst - history_event_hf_razed_buildingst::`vftable' - referencing functions: - .text:0066B3B0 - .text:00779100 - -0092B074h: possible vtable (31 methods) -(SI) -0000: history_event_creature_devouredst -0000: history_eventst - history_event_creature_devouredst::`vftable' - referencing functions: - .text:0066B540 - .text:00779170 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B0F4h: possible vtable (31 methods) -(SI) -0000: history_event_hist_figure_woundedst -0000: history_eventst - history_event_hist_figure_woundedst::`vftable' - referencing functions: - .text:0066B760 - .text:007791E0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B174h: possible vtable (22 methods) -(SI) -0000: history_event_hist_figure_simple_battle_eventst -0000: history_eventst - history_event_hist_figure_simple_battle_eventst::`vftable' - referencing functions: - .text:0066BD20 - -0092B1F4h: possible vtable (31 methods) -(SI) -0000: history_event_hist_figure_reunionst -0000: history_eventst - history_event_hist_figure_reunionst::`vftable' - referencing functions: - .text:0066C0D0 - scalar deleting destructor: 0066BDA0h - destructor: 0066BDC0h - -0092B274h: possible vtable (31 methods) -(SI) -0000: history_event_add_hf_entity_linkst -0000: history_eventst - history_event_add_hf_entity_linkst::`vftable' - referencing functions: - .text:0066C250 - .text:0066C2C0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B2F4h: possible vtable (31 methods) -(SI) -0000: history_event_remove_hf_entity_linkst -0000: history_eventst - history_event_remove_hf_entity_linkst::`vftable' - referencing functions: - .text:0066C360 - .text:0066C3D0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B374h: possible vtable (31 methods) -(SI) -0000: history_event_change_hf_statest -0000: history_eventst - history_event_change_hf_statest::`vftable' - referencing functions: - .text:0066C470 - .text:0066C4F0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B3F4h: possible vtable (31 methods) -(SI) -0000: history_event_change_hf_jobst -0000: history_eventst - history_event_change_hf_jobst::`vftable' - referencing functions: - .text:0066C6B0 - .text:0066C730 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B474h: possible vtable (31 methods) -(SI) -0000: history_event_add_hf_hf_linkst -0000: history_eventst - history_event_add_hf_hf_linkst::`vftable' - referencing functions: - .text:0066C8C0 - .text:0066C930 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B4F4h: possible vtable (31 methods) -(SI) -0000: history_event_remove_hf_hf_linkst -0000: history_eventst - history_event_remove_hf_hf_linkst::`vftable' - referencing functions: - .text:0066CA30 - .text:0066CAA0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B574h: possible vtable (31 methods) -(SI) -0000: history_event_add_hf_site_linkst -0000: history_eventst - history_event_add_hf_site_linkst::`vftable' - referencing functions: - .text:0066CB20 - .text:0066CB90 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B5F4h: possible vtable (31 methods) -(SI) -0000: history_event_remove_hf_site_linkst -0000: history_eventst - history_event_remove_hf_site_linkst::`vftable' - referencing functions: - .text:0066CCA0 - .text:0066CD10 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B674h: possible vtable (31 methods) -(SI) -0000: history_event_body_abusedst -0000: history_eventst - history_event_body_abusedst::`vftable' - referencing functions: - .text:0066D6E0 - -0092B6F4h: possible vtable (31 methods) -(SI) -0000: history_event_merchantst -0000: history_eventst - history_event_merchantst::`vftable' - referencing functions: - .text:0066DB70 - -0092B774h: possible vtable (31 methods) -(SI) -0000: history_event_artifact_hiddenst -0000: history_eventst - history_event_artifact_hiddenst::`vftable' - referencing functions: - .text:0066DC50 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B7F4h: possible vtable (31 methods) -(SI) -0000: history_event_artifact_possessedst -0000: history_eventst - history_event_artifact_possessedst::`vftable' - referencing functions: - .text:0066DCD0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B874h: possible vtable (31 methods) -(SI) -0000: history_event_artifact_foundst -0000: history_eventst - history_event_artifact_foundst::`vftable' - referencing functions: - .text:0066DE50 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B8F4h: possible vtable (31 methods) -(SI) -0000: history_event_artifact_recoveredst -0000: history_eventst - history_event_artifact_recoveredst::`vftable' - referencing functions: - .text:0066DFC0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092B974h: possible vtable (31 methods) -(SI) -0000: history_event_artifact_droppedst -0000: history_eventst - history_event_artifact_droppedst::`vftable' - referencing functions: - .text:0066E200 - -0092B9F4h: possible vtable (31 methods) -(SI) -0000: history_event_demon_encasedst -0000: history_eventst - history_event_demon_encasedst::`vftable' - referencing functions: - .text:0066E2E0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092BA74h: possible vtable (31 methods) -(SI) -0000: history_event_masterpiece_created_itemst -0000: history_event_masterpiece_createdst -0000: history_eventst - history_event_masterpiece_created_itemst::`vftable' - referencing functions: - .text:0066E6D0 - .text:006A4450 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092BAF4h: possible vtable (31 methods) -(SI) -0000: history_event_masterpiece_created_dye_itemst -0000: history_event_masterpiece_createdst -0000: history_eventst - history_event_masterpiece_created_dye_itemst::`vftable' - referencing functions: - .text:0066EA30 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092BB74h: possible vtable (31 methods) -(SI) -0000: history_event_masterpiece_created_item_improvementst -0000: history_event_masterpiece_createdst -0000: history_eventst - history_event_masterpiece_created_item_improvementst::`vftable' - referencing functions: - .text:0066ECE0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092BBF4h: possible vtable (31 methods) -(SI) -0000: history_event_masterpiece_created_foodst -0000: history_event_masterpiece_createdst -0000: history_eventst - history_event_masterpiece_created_foodst::`vftable' - referencing functions: - .text:0066ED40 - .text:006FAFC0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092BC74h: possible vtable (31 methods) -(SI) -0000: history_event_masterpiece_created_engravingst -0000: history_event_masterpiece_createdst -0000: history_eventst - history_event_masterpiece_created_engravingst::`vftable' - referencing functions: - .text:0066EE60 - .text:0087DCF0 - scalar deleting destructor: 005457E0h - destructor: 00670850h - -0092BEA0h: possible vtable (1 methods) - referencing functions: - .text:006978F0 - -0092C464h: possible vtable (8 methods) -(SI) -0000: viewscreen_movieplayerst -0000: viewscreenst - viewscreen_movieplayerst::`vftable' - referencing functions: - .text:00699A50 (viewscreen_movieplayerst::~viewscreen_movieplayerst) - .text:0069A560 (viewscreen_movieplayerst::viewscreen_movieplayerst) - scalar deleting destructor: 00699AF0h - destructor: 00699A50h - constructor: 0069A560h - -0092C4A0h: possible vtable (1 methods) - referencing functions: - .text:006AB1D0 - .text:00850E60 (5 times) - -0092C9D4h: possible vtable (179 methods) -(SI) -0000: itemst - itemst::`vftable' - referencing functions: - .text:006A44E0 (itemst::itemst) - .text:006A7970 (itemst::~itemst) - scalar deleting destructor: 006A4580h - destructor: 006A7970h - constructor: 006A44E0h - -0092CCA4h: possible vtable (14 methods) -(SI) -0000: general_ref_coinbatchst -0000: general_refst - general_ref_coinbatchst::`vftable' - referencing functions: - .text:0069DE10 - .text:006B36A0 (2 times) - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -0092CCE0h: possible vtable (9 methods) -(SI) -0000: itemimprovementst - itemimprovementst::`vftable' - referencing functions: - .text:0069E500 (itemimprovement_sewn_imagest::`scalar deleting destructor') - scalar deleting destructor: 0069E500h - -0092CD08h: possible vtable (9 methods) -(SI) -0000: itemimprovement_art_imagest -0000: itemimprovementst - itemimprovement_art_imagest::`vftable' - referencing functions: - .text:0069E1D0 - .text:0069E2E0 - scalar deleting destructor: 0069E500h - -0092CD30h: possible vtable (9 methods) -(SI) -0000: itemimprovement_coveredst -0000: itemimprovementst - itemimprovement_coveredst::`vftable' - referencing functions: - .text:0069E310 - .text:0069E380 - scalar deleting destructor: 0069E500h - -0092CD58h: possible vtable (9 methods) -(SI) -0000: itemimprovement_rings_hangingst -0000: itemimprovementst - itemimprovement_rings_hangingst::`vftable' - referencing functions: - .text:0069E3B0 - .text:0069E430 - scalar deleting destructor: 0069E500h - -0092CD80h: possible vtable (9 methods) -(SI) -0000: itemimprovement_bandsst -0000: itemimprovementst - itemimprovement_bandsst::`vftable' - referencing functions: - .text:0069E460 - .text:0069E4D0 - scalar deleting destructor: 0069E500h - -0092CDA8h: possible vtable (9 methods) -(SI) -0000: itemimprovement_spikesst -0000: itemimprovementst - itemimprovement_spikesst::`vftable' - referencing functions: - .text:0069E520 - .text:0069E5A0 - scalar deleting destructor: 0069E500h - -0092CDD0h: possible vtable (9 methods) -(SI) -0000: itemimprovement_itemspecificst -0000: itemimprovementst - itemimprovement_itemspecificst::`vftable' - referencing functions: - .text:0069E5D0 - .text:0069E6B0 - scalar deleting destructor: 0069E500h - -0092CDF8h: possible vtable (1 methods) -(SI) -0000: itemimprovement_threadst -0000: itemimprovementst - itemimprovement_threadst::`vftable' - referencing functions: - .text:0069E6E0 - .text:0069E8E0 - -0092CE20h: possible vtable (9 methods) -(SI) -0000: itemimprovement_clothst -0000: itemimprovementst - itemimprovement_clothst::`vftable' - referencing functions: - .text:0069E930 - .text:0069E9A0 - scalar deleting destructor: 0069E500h - -0092CE48h: possible vtable (10 methods) -(SI) -0000: itemimprovement_sewn_imagest -0000: itemimprovementst - itemimprovement_sewn_imagest::`vftable' - referencing functions: - .text:0069ECA0 - scalar deleting destructor: 0069E500h - -0092CE74h: possible vtable (181 methods) -(SI) -0000: item_barst -0000: item_actualst -0000: itemst - item_barst::`vftable' - referencing functions: - .text:0069EF20 - .text:0070AA60 - .text:0070AFF0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092D14Ch: possible vtable (181 methods) -(SI) -0000: item_smallgemst -0000: item_actualst -0000: itemst - item_smallgemst::`vftable' - referencing functions: - .text:0069F0C0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092D424h: possible vtable (181 methods) -(SI) -0000: item_blocksst -0000: item_actualst -0000: itemst - item_blocksst::`vftable' - referencing functions: - .text:0069F260 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092D6FCh: possible vtable (181 methods) -(SI) -0000: item_roughst -0000: item_actualst -0000: itemst - item_roughst::`vftable' - referencing functions: - .text:0069F3B0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092D9D4h: possible vtable (181 methods) -(SI) -0000: item_stonest -0000: item_actualst -0000: itemst - item_stonest::`vftable' - referencing functions: - .text:0069F520 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092DCACh: possible vtable (181 methods) -(SI) -0000: item_rockst -0000: item_actualst -0000: itemst - item_rockst::`vftable' - referencing functions: - .text:0069F690 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092DF84h: possible vtable (181 methods) -(SI) -0000: item_woodst -0000: item_actualst -0000: itemst - item_woodst::`vftable' - referencing functions: - .text:0069F6E0 - .text:0069F780 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092E25Ch: possible vtable (181 methods) -(SI) -0000: item_extractst -0000: item_liquidst -0000: item_liquipowderst -0000: item_actualst -0000: itemst - item_extractst::`vftable' - referencing functions: - .text:0069FAA0 - .text:00709E20 - .text:0070B2D0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092E534h: possible vtable (181 methods) -(SI) -0000: item_potionst -0000: item_liquidst -0000: item_liquipowderst -0000: item_actualst -0000: itemst - item_potionst::`vftable' - referencing functions: - .text:0069FAF0 - .text:0069FB90 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092E80Ch: possible vtable (181 methods) -(SI) -0000: item_drinkst -0000: item_liquidst -0000: item_liquipowderst -0000: item_actualst -0000: itemst - item_drinkst::`vftable' - referencing functions: - .text:0069FD90 - .text:00709AD0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092EAE4h: possible vtable (181 methods) -(SI) -0000: item_fish_rawst -0000: item_actualst -0000: itemst - item_fish_rawst::`vftable' - referencing functions: - .text:006A0180 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092EDBCh: possible vtable (181 methods) -(SI) -0000: item_petst -0000: item_critterst -0000: item_actualst -0000: itemst - item_petst::`vftable' - referencing functions: - .text:006A0330 - .text:0070A420 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092F094h: possible vtable (181 methods) -(SI) -0000: item_skin_tannedst -0000: item_actualst -0000: itemst - item_skin_tannedst::`vftable' - referencing functions: - .text:006A05F0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092F36Ch: possible vtable (181 methods) -(SI) -0000: item_shellst -0000: item_actualst -0000: itemst - item_shellst::`vftable' - referencing functions: - .text:006A0770 - .text:006A0810 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092F644h: possible vtable (181 methods) -(SI) -0000: item_leavesst -0000: item_actualst -0000: itemst - item_leavesst::`vftable' - referencing functions: - .text:006A09F0 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092F91Ch: possible vtable (181 methods) -(SI) -0000: item_ballistaarrowheadst -0000: item_actualst -0000: itemst - item_ballistaarrowheadst::`vftable' - referencing functions: - .text:006A0B40 - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092FBF4h: possible vtable (181 methods) -(SI) -0000: item_cheesest -0000: item_actualst -0000: itemst - item_cheesest::`vftable' - referencing functions: - .text:006A0D50 - .text:0070B6E0 (2 times) - scalar deleting destructor: 00542A10h - destructor: 006A78C0h - -0092FECCh: possible vtable (181 methods) -(SI) -0000: item_foodst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_foodst::`vftable' - referencing functions: - .text:006A1130 (item_foodst::item_foodst) - .text:006A77F0 (item_foodst::~item_foodst) - scalar deleting destructor: 006A11C0h - destructor: 006A77F0h - constructor: 006A1130h - -009301A4h: possible vtable (181 methods) -(SI) -0000: item_clothst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_clothst::`vftable' - referencing functions: - .text:006A11E0 - .text:006A1250 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0093047Ch: possible vtable (181 methods) -(SI) -0000: item_floodgatest -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_floodgatest::`vftable' - referencing functions: - .text:006A1390 - .text:006A1400 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00930754h: possible vtable (181 methods) -(SI) -0000: item_hatch_coverst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_hatch_coverst::`vftable' - referencing functions: - .text:006A14A0 - .text:006A1510 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00930A2Ch: possible vtable (181 methods) -(SI) -0000: item_gratest -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_gratest::`vftable' - referencing functions: - .text:006A15C0 - .text:006A1630 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00930D04h: possible vtable (181 methods) -(SI) -0000: item_gobletst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_gobletst::`vftable' - referencing functions: - .text:006A18A0 - .text:006A1910 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00930FDCh: possible vtable (181 methods) -(SI) -0000: item_instrumentst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_instrumentst::`vftable' - referencing functions: - .text:006A19C0 - .text:006A1A50 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009312B4h: possible vtable (181 methods) -(SI) -0000: item_toyst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_toyst::`vftable' - referencing functions: - .text:006A1B10 - .text:006A1BA0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0093158Ch: possible vtable (181 methods) -(SI) -0000: item_windowst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_windowst::`vftable' - referencing functions: - .text:006A1C60 - .text:006A1CD0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00931864h: possible vtable (181 methods) -(SI) -0000: item_bucketst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_bucketst::`vftable' - referencing functions: - .text:006A1E70 - .text:006A1EE0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00931B3Ch: possible vtable (181 methods) -(SI) -0000: item_animaltrapst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_animaltrapst::`vftable' - referencing functions: - .text:006A1F80 - .text:006A1FF0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00931E14h: possible vtable (181 methods) -(SI) -0000: item_coffinst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_coffinst::`vftable' - referencing functions: - .text:006A2100 - .text:006A2170 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009320ECh: possible vtable (181 methods) -(SI) -0000: item_statuest -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_statuest::`vftable' - referencing functions: - .text:006A2220 - .text:006A2290 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009323C4h: possible vtable (181 methods) -(SI) -0000: item_quernst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_quernst::`vftable' - referencing functions: - .text:006A2340 - .text:006A23B0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0093269Ch: possible vtable (181 methods) -(SI) -0000: item_millstonest -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_millstonest::`vftable' - referencing functions: - .text:006A2460 - .text:006A24D0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00932974h: possible vtable (181 methods) -(SI) -0000: item_binst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_binst::`vftable' - referencing functions: - .text:006A2950 - .text:006A29D0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00932C4Ch: possible vtable (181 methods) -(SI) -0000: item_armorstandst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_armorstandst::`vftable' - referencing functions: - .text:006A2AE0 - .text:006A2B50 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00932F24h: possible vtable (181 methods) -(SI) -0000: item_weaponrackst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_weaponrackst::`vftable' - referencing functions: - .text:006A2BF0 - .text:006A2C60 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009331FCh: possible vtable (181 methods) -(SI) -0000: item_cabinetst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_cabinetst::`vftable' - referencing functions: - .text:006A2D00 - .text:006A2D70 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009334D4h: possible vtable (181 methods) -(SI) -0000: item_figurinest -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_figurinest::`vftable' - referencing functions: - .text:006A2E10 - .text:006A2E80 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009337ACh: possible vtable (181 methods) -(SI) -0000: item_amuletst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_amuletst::`vftable' - referencing functions: - .text:006A2F20 - .text:006A2F90 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00933A84h: possible vtable (181 methods) -(SI) -0000: item_scepterst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_scepterst::`vftable' - referencing functions: - .text:006A3030 - .text:006A30A0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00933D5Ch: possible vtable (181 methods) -(SI) -0000: item_crownst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_crownst::`vftable' - referencing functions: - .text:006A31E0 - .text:006A3250 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00934034h: possible vtable (181 methods) -(SI) -0000: item_ringst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_ringst::`vftable' - referencing functions: - .text:006A32F0 - .text:006A3360 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0093430Ch: possible vtable (181 methods) -(SI) -0000: item_earringst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_earringst::`vftable' - referencing functions: - .text:006A3400 - .text:006A3470 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009345E4h: possible vtable (181 methods) -(SI) -0000: item_braceletst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_braceletst::`vftable' - referencing functions: - .text:006A3510 - .text:006A3580 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009348BCh: possible vtable (181 methods) -(SI) -0000: item_gemst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_gemst::`vftable' - referencing functions: - .text:006A3630 - .text:006A36A0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00934B94h: possible vtable (181 methods) -(SI) -0000: item_anvilst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_anvilst::`vftable' - referencing functions: - .text:006A3740 - .text:006A37B0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00934E6Ch: possible vtable (181 methods) -(SI) -0000: item_totemst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_totemst::`vftable' - referencing functions: - .text:006A3860 - .text:006A38D0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00935144h: possible vtable (181 methods) -(SI) -0000: item_catapultpartsst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_catapultpartsst::`vftable' - referencing functions: - .text:006A3AF0 - .text:006A3B60 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -0093541Ch: possible vtable (181 methods) -(SI) -0000: item_ballistapartsst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_ballistapartsst::`vftable' - referencing functions: - .text:006A3C20 - .text:006A3C90 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009356F4h: possible vtable (181 methods) -(SI) -0000: item_siegeammost -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_siegeammost::`vftable' - referencing functions: - .text:006A3D50 - .text:006A3DE0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -009359CCh: possible vtable (181 methods) -(SI) -0000: item_pipe_sectionst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_pipe_sectionst::`vftable' - referencing functions: - .text:006A3EF0 - .text:006A3F60 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00935CA4h: possible vtable (181 methods) -(SI) -0000: item_trappartsst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_trappartsst::`vftable' - referencing functions: - .text:006A4020 - .text:006A4090 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00935F7Ch: possible vtable (180 methods) -(SI) -0000: item_trapcompst -0000: item_constructedst -0000: item_craftedst -0000: item_actualst -0000: itemst - item_trapcompst::`vftable' - referencing functions: - .text:006A4140 - .text:006A41D0 - scalar deleting destructor: 00543D40h - destructor: 006A7710h - -00936768h: possible vtable (3 methods) -(SI) -0000: itemdefst - itemdefst::`vftable' - referencing functions: - .text:006CA280 (itemdefst::itemdefst) - .text:006CA310 (itemdefst::~itemdefst) - scalar deleting destructor: 006CA2F0h - destructor: 006CA310h - constructor: 006CA280h - -00936778h: possible vtable (3 methods) -(SI) -0000: itemdef_weaponst -0000: itemdefst - itemdef_weaponst::`vftable' - referencing functions: - .text:006CA370 (itemdef_weaponst::itemdef_weaponst) - .text:006CA500 (itemdef_weaponst::~itemdef_weaponst) - scalar deleting destructor: 006CA4B0h - destructor: 006CA500h - constructor: 006CA370h - -00936788h: possible vtable (3 methods) -(SI) -0000: itemdef_trapcompst -0000: itemdefst - itemdef_trapcompst::`vftable' - referencing functions: - .text:006CA600 (itemdef_trapcompst::itemdef_trapcompst) - .text:006CA730 (itemdef_trapcompst::~itemdef_trapcompst) - scalar deleting destructor: 006CA6E0h - destructor: 006CA730h - constructor: 006CA600h - -00936798h: possible vtable (3 methods) -(SI) -0000: itemdef_toyst -0000: itemdefst - itemdef_toyst::`vftable' - referencing functions: - .text:006CA800 (itemdef_toyst::itemdef_toyst) - .text:006CA910 (itemdef_toyst::~itemdef_toyst) - scalar deleting destructor: 006CA8C0h - destructor: 006CA910h - constructor: 006CA800h - -009367A8h: possible vtable (3 methods) -(SI) -0000: itemdef_instrumentst -0000: itemdefst - itemdef_instrumentst::`vftable' - referencing functions: - .text:006CA9E0 (itemdef_instrumentst::itemdef_instrumentst) - .text:006CAAF0 (itemdef_instrumentst::~itemdef_instrumentst) - scalar deleting destructor: 006CAAA0h - destructor: 006CAAF0h - constructor: 006CA9E0h - -009367B8h: possible vtable (3 methods) -(SI) -0000: itemdef_armorst -0000: itemdefst - itemdef_armorst::`vftable' - referencing functions: - .text:006CAC50 (itemdef_armorst::itemdef_armorst) - .text:006CADD0 (itemdef_armorst::~itemdef_armorst) - scalar deleting destructor: 006CAD80h - destructor: 006CADD0h - constructor: 006CAC50h - -009367C8h: possible vtable (3 methods) -(SI) -0000: itemdef_ammost -0000: itemdefst - itemdef_ammost::`vftable' - referencing functions: - .text:006CAEF0 (itemdef_ammost::itemdef_ammost) - .text:006CB020 (itemdef_ammost::~itemdef_ammost) - scalar deleting destructor: 006CAFC0h - destructor: 006CB020h - constructor: 006CAEF0h - -009367D8h: possible vtable (3 methods) -(SI) -0000: itemdef_siegeammost -0000: itemdefst - itemdef_siegeammost::`vftable' - referencing functions: - .text:006CB0F0 (itemdef_siegeammost::itemdef_siegeammost) - .text:006CB1F0 (itemdef_siegeammost::~itemdef_siegeammost) - scalar deleting destructor: 006CB1A0h - destructor: 006CB1F0h - constructor: 006CB0F0h - -009367E8h: possible vtable (3 methods) -(SI) -0000: itemdef_glovesst -0000: itemdefst - itemdef_glovesst::`vftable' - referencing functions: - .text:006CB2C0 (itemdef_glovesst::itemdef_glovesst) - .text:006CB400 (itemdef_glovesst::~itemdef_glovesst) - scalar deleting destructor: 006CB3B0h - destructor: 006CB400h - constructor: 006CB2C0h - -009367F8h: possible vtable (3 methods) -(SI) -0000: itemdef_shoesst -0000: itemdefst - itemdef_shoesst::`vftable' - referencing functions: - .text:006CB4F0 (itemdef_shoesst::itemdef_shoesst) - .text:006CB630 (itemdef_shoesst::~itemdef_shoesst) - scalar deleting destructor: 006CB5E0h - destructor: 006CB630h - constructor: 006CB4F0h - -00936808h: possible vtable (3 methods) -(SI) -0000: itemdef_shieldst -0000: itemdefst - itemdef_shieldst::`vftable' - referencing functions: - .text:006CB720 (itemdef_shieldst::itemdef_shieldst) - .text:006CB820 (itemdef_shieldst::~itemdef_shieldst) - scalar deleting destructor: 006CB7D0h - destructor: 006CB820h - constructor: 006CB720h - -00936818h: possible vtable (3 methods) -(SI) -0000: itemdef_helmst -0000: itemdefst - itemdef_helmst::`vftable' - referencing functions: - .text:006CB8E0 (itemdef_helmst::itemdef_helmst) - .text:006CBA10 (itemdef_helmst::~itemdef_helmst) - scalar deleting destructor: 006CB9C0h - destructor: 006CBA10h - constructor: 006CB8E0h - -00936828h: possible vtable (3 methods) -(SI) -0000: itemdef_pantsst -0000: itemdefst - itemdef_pantsst::`vftable' - referencing functions: - .text:006CBB00 (itemdef_pantsst::itemdef_pantsst) - .text:006CBC80 (itemdef_pantsst::~itemdef_pantsst) - scalar deleting destructor: 006CBC30h - destructor: 006CBC80h - constructor: 006CBB00h - -00936838h: possible vtable (3 methods) -(SI) -0000: itemdef_foodst -0000: itemdefst - itemdef_foodst::`vftable' - referencing functions: - .text:006CBDA0 (itemdef_foodst::itemdef_foodst) - .text:006CBE80 (itemdef_foodst::~itemdef_foodst) - scalar deleting destructor: 006CBE30h - destructor: 006CBE80h - constructor: 006CBDA0h - -0093C7B4h: possible vtable (1 methods) - referencing functions: - .text:006D6968 - -0093CA98h: possible vtable (8 methods) -(SI) -0000: KeybindingScreen -0000: viewscreenst - KeybindingScreen::`vftable' - referencing functions: - .text:006DD370 - -0093CABCh: possible vtable (8 methods) -(SI) -0000: MacroScreenLoad -0000: viewscreenst - MacroScreenLoad::`vftable' - referencing functions: - .text:006DE830 - -0093CAE0h: possible vtable (8 methods) -(SI) -0000: MacroScreenSave -0000: viewscreenst - MacroScreenSave::`vftable' - referencing functions: - .text:006DECA0 - -0093CEB8h: possible vtable (5 methods) -(SI) -0000: machinest - machinest::`vftable' - referencing functions: - .text:006EE720 - .text:006EEB70 - .text:006EEBF0 (machine_standardst::~machine_standardst) - .text:006EF420 - scalar deleting destructor: 006EE7B0h - destructor: 006EEBF0h - -0093CED0h: possible vtable (5 methods) -(SI) -0000: machine_standardst -0000: machinest - machine_standardst::`vftable' - referencing functions: - .text:006EE6C0 - .text:006EE720 - .text:006EF420 (5 times) - scalar deleting destructor: 006EE7B0h - destructor: 006EEBF0h - -0093CFD8h: possible vtable (1 methods) - referencing functions: - .text:006F0BA0 - -0093D7D4h: possible vtable (14 methods) -(SI) -0000: general_ref_artifactst -0000: general_refst - general_ref_artifactst::`vftable' - referencing functions: - .text:006FAB80 - .text:0070BC10 - .text:00777A20 - .text:00777EB0 - .text:008866E0 - scalar deleting destructor: 00777450h - -0093D810h: possible vtable (14 methods) -(SI) -0000: general_ref_item_typest -0000: general_refst - general_ref_item_typest::`vftable' - referencing functions: - .text:006FAC80 - .text:0070BC10 - .text:00777A20 - .text:00777EB0 - .text:008866E0 - scalar deleting destructor: 00777450h - -009412A4h: possible vtable (8 methods) -(SI) -0000: viewscreen_textviewerst -0000: viewscreenst - viewscreen_textviewerst::`vftable' - referencing functions: - .text:00712190 (viewscreen_textviewerst::viewscreen_textviewerst) - .text:007122B0 (viewscreen_textviewerst::~viewscreen_textviewerst) - scalar deleting destructor: 00712400h - destructor: 007122B0h - constructor: 00712190h - -009412C8h: possible vtable (8 methods) -(SI) -0000: viewscreen_tradelistst -0000: viewscreenst - viewscreen_tradelistst::`vftable' - referencing functions: - .text:0071F130 - -009412ECh: possible vtable (8 methods) -(SI) -0000: viewscreen_tradegoodsst -0000: viewscreenst - viewscreen_tradegoodsst::`vftable' - referencing functions: - .text:00723B30 - -00941310h: possible vtable (8 methods) -(SI) -0000: viewscreen_barterst -0000: viewscreenst - viewscreen_barterst::`vftable' - referencing functions: - .text:0071F720 - -00941334h: possible vtable (8 methods) -(SI) -0000: viewscreen_meetingst -0000: viewscreenst - viewscreen_meetingst::`vftable' - referencing functions: - .text:0072DEA0 - .text:0072DF00 - -00941358h: possible vtable (8 methods) -(SI) -0000: viewscreen_topicmeetingst -0000: viewscreenst - viewscreen_topicmeetingst::`vftable' - referencing functions: - .text:0072DF50 - scalar deleting destructor: 004647A0h - -0094137Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_topicmeeting_takerequestsst -0000: viewscreenst - viewscreen_topicmeeting_takerequestsst::`vftable' - referencing functions: - .text:0072E030 (viewscreen_topicmeeting_takerequestsst::viewscreen_topicmeeting_takerequestsst) - .text:0072E7C0 (viewscreen_topicmeeting_takerequestsst::~viewscreen_topicmeeting_takerequestsst) - scalar deleting destructor: 0072E2F0h - destructor: 0072E7C0h - constructor: 0072E030h - -009413A0h: possible vtable (8 methods) -(SI) -0000: viewscreen_tradeagreementst -0000: viewscreenst - viewscreen_tradeagreementst::`vftable' - referencing functions: - .text:0072E390 - .text:0072E560 - -009413C4h: possible vtable (8 methods) -(SI) -0000: viewscreen_requestagreementst -0000: viewscreenst - viewscreen_requestagreementst::`vftable' - referencing functions: - .text:0072E640 - scalar deleting destructor: 004647A0h - -009413E8h: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_assigntradest -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_assigntradest::`vftable' - referencing functions: - .text:0071B2F0 (viewscreen_layer_assigntradest::viewscreen_layer_assigntradest) - .text:0071C0B0 (viewscreen_layer_assigntradest::~viewscreen_layer_assigntradest) - scalar deleting destructor: 0071C090h - destructor: 0071C0B0h - constructor: 0071B2F0h - -00942658h: possible vtable (1 methods) - referencing functions: - .text:0074A9A0 - -0094382Ch: possible vtable (1 methods) - referencing functions: - .text:0074A9A0 (2 times) - .text:007F52E0 - -00944AC8h: possible vtable (8 methods) -(SI) -0000: proj_magicst -0000: projst - proj_magicst::`vftable' - referencing functions: - .text:00770950 - .text:00810100 - -00944B84h: possible vtable (4 methods) -(SI) -0000: reaction_reagent_itemst -0000: reaction_reagentst - reaction_reagent_itemst::`vftable' - referencing functions: - .text:00775950 - -00944B98h: possible vtable (1 methods) -(SI) -0000: reaction_reagent_metal_orest -0000: reaction_reagentst - reaction_reagent_metal_orest::`vftable' - referencing functions: - .text:00775950 - -00944BACh: possible vtable (4 methods) -(SI) -0000: reaction_reagent_classst -0000: reaction_reagentst - reaction_reagent_classst::`vftable' - referencing functions: - .text:00775950 - -00944BC0h: possible vtable (3 methods) -(SI) -0000: reaction_product_itemst -0000: reaction_productst - reaction_product_itemst::`vftable' - referencing functions: - .text:00775950 - -00944BD0h: possible vtable (14 methods) -(SI) -0000: general_ref_is_artifactst -0000: general_ref_artifactst -0000: general_refst - general_ref_is_artifactst::`vftable' - referencing functions: - .text:00606BF0 - .text:00777390 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944C0Ch: possible vtable (14 methods) -(SI) -0000: general_ref_nemesisst -0000: general_refst - general_ref_nemesisst::`vftable' - referencing functions: - .text:007773C0 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944C48h: possible vtable (14 methods) -(SI) -0000: general_ref_is_nemesisst -0000: general_ref_nemesisst -0000: general_refst - general_ref_is_nemesisst::`vftable' - referencing functions: - .text:004C7020 - .text:0070FA50 - .text:007773F0 - .text:00777A20 - .text:00777EB0 - .text:0085A420 - scalar deleting destructor: 00777450h - -00944C84h: possible vtable (14 methods) -(SI) -0000: general_ref_unitst -0000: general_refst - general_ref_unitst::`vftable' - referencing functions: - .text:00777420 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944CC0h: possible vtable (14 methods) -(SI) -0000: general_ref_contains_unitst -0000: general_ref_unitst -0000: general_refst - general_ref_contains_unitst::`vftable' - referencing functions: - .text:00777480 - .text:00777A20 - .text:00777EB0 - .text:0083CE70 - scalar deleting destructor: 00777450h - -00944CFCh: possible vtable (14 methods) -(SI) -0000: general_ref_unit_traineest -0000: general_ref_unitst -0000: general_refst - general_ref_unit_traineest::`vftable' - referencing functions: - .text:005B16D0 - .text:007774C0 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944D38h: possible vtable (14 methods) -(SI) -0000: general_ref_unit_cageest -0000: general_ref_unitst -0000: general_refst - general_ref_unit_cageest::`vftable' - referencing functions: - .text:0042B9E0 (2 times) - .text:00430F40 - .text:007774F0 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944D74h: possible vtable (14 methods) -(SI) -0000: general_ref_unit_beateest -0000: general_ref_unitst -0000: general_refst - general_ref_unit_beateest::`vftable' - referencing functions: - .text:00777520 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944DB0h: possible vtable (14 methods) -(SI) -0000: general_ref_unit_foodreceiverst -0000: general_ref_unitst -0000: general_refst - general_ref_unit_foodreceiverst::`vftable' - referencing functions: - .text:00777560 - .text:00777A20 - .text:00777EB0 - .text:00842780 - scalar deleting destructor: 00777450h - -00944DECh: possible vtable (14 methods) -(SI) -0000: general_ref_unit_kidnapeest -0000: general_ref_unitst -0000: general_refst - general_ref_unit_kidnapeest::`vftable' - referencing functions: - .text:00777590 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944E28h: possible vtable (14 methods) -(SI) -0000: general_ref_unit_patientst -0000: general_ref_unitst -0000: general_refst - general_ref_unit_patientst::`vftable' - referencing functions: - .text:007775D0 - .text:00777A20 - .text:00777EB0 - .text:00841D20 - scalar deleting destructor: 00777450h - -00944E64h: possible vtable (14 methods) -(SI) -0000: general_ref_unit_infantst -0000: general_ref_unitst -0000: general_refst - general_ref_unit_infantst::`vftable' - referencing functions: - .text:00777600 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944EA0h: possible vtable (14 methods) -(SI) -0000: general_ref_unit_slaughtereest -0000: general_ref_unitst -0000: general_refst - general_ref_unit_slaughtereest::`vftable' - referencing functions: - .text:00777630 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944EDCh: possible vtable (14 methods) -(SI) -0000: general_ref_unit_itemownerst -0000: general_ref_unitst -0000: general_refst - general_ref_unit_itemownerst::`vftable' - referencing functions: - .text:00575D30 - .text:005FB590 - .text:006B1F40 - .text:006BCB90 - .text:006C4A90 - .text:0072B680 (2 times) - .text:00777660 - .text:00777A20 - .text:00777EB0 - .text:00869930 - scalar deleting destructor: 00777450h - -00944F18h: possible vtable (14 methods) -(SI) -0000: general_ref_unit_tradebringerst -0000: general_ref_unitst -0000: general_refst - general_ref_unit_tradebringerst::`vftable' - referencing functions: - .text:006B1FA0 - .text:007776A0 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00944F54h: possible vtable (14 methods) -(SI) -0000: general_ref_unit_holderst -0000: general_ref_unitst -0000: general_refst - general_ref_unit_holderst::`vftable' - referencing functions: - .text:007776E0 - .text:00777A20 - .text:00777EB0 - .text:00811FC0 - scalar deleting destructor: 00777450h - -00944F90h: possible vtable (14 methods) -(SI) -0000: general_ref_unit_workerst -0000: general_ref_unitst -0000: general_refst - general_ref_unit_workerst::`vftable' - referencing functions: - .text:00777710 - .text:00777A20 - .text:00777EB0 - .text:00811D80 - scalar deleting destructor: 00777450h - -00944FCCh: possible vtable (14 methods) -(SI) -0000: general_ref_itemst -0000: general_refst - general_ref_itemst::`vftable' - referencing functions: - .text:00777750 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00945008h: possible vtable (14 methods) -(SI) -0000: general_ref_contains_itemst -0000: general_ref_itemst -0000: general_refst - general_ref_contains_itemst::`vftable' - referencing functions: - .text:006AF750 - .text:00777780 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00945044h: possible vtable (14 methods) -(SI) -0000: general_ref_contained_in_itemst -0000: general_ref_itemst -0000: general_refst - general_ref_contained_in_itemst::`vftable' - referencing functions: - .text:006AF750 - .text:007777C0 - .text:00777A20 - .text:00777EB0 - .text:0083CE70 - scalar deleting destructor: 00777450h - -00945080h: possible vtable (14 methods) -(SI) -0000: general_ref_projectilest -0000: general_refst - general_ref_projectilest::`vftable' - referencing functions: - .text:0042E450 - .text:0042EEB0 (2 times) - .text:0062AB40 - .text:007777F0 - .text:00777A20 - .text:00777EB0 - .text:00812DE0 - .text:00831DC0 - .text:00832360 - scalar deleting destructor: 00777450h - -009450BCh: possible vtable (14 methods) -(SI) -0000: general_ref_building_civzone_assignedst -0000: general_ref_buildingst -0000: general_refst - general_ref_building_civzone_assignedst::`vftable' - referencing functions: - .text:0043AA70 - .text:0043AAD0 - .text:00777820 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -009450F8h: possible vtable (14 methods) -(SI) -0000: general_ref_building_triggerst -0000: general_ref_buildingst -0000: general_refst - general_ref_building_triggerst::`vftable' - referencing functions: - .text:005B8D50 - .text:00777850 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00945134h: possible vtable (14 methods) -(SI) -0000: general_ref_building_triggertargetst -0000: general_ref_buildingst -0000: general_refst - general_ref_building_triggertargetst::`vftable' - referencing functions: - .text:005B8D50 - .text:00777880 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00945170h: possible vtable (14 methods) -(SI) -0000: general_ref_building_chainst -0000: general_ref_buildingst -0000: general_refst - general_ref_building_chainst::`vftable' - referencing functions: - .text:007778C0 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -009451ACh: possible vtable (14 methods) -(SI) -0000: general_ref_building_cagedst -0000: general_ref_buildingst -0000: general_refst - general_ref_building_cagedst::`vftable' - referencing functions: - .text:00434940 - .text:007778F0 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -009451E8h: possible vtable (14 methods) -(SI) -0000: general_ref_building_holderst -0000: general_ref_buildingst -0000: general_refst - general_ref_building_holderst::`vftable' - referencing functions: - .text:00420460 - .text:004204F0 - .text:00420820 - .text:004316E0 - .text:0043DC00 - .text:00497690 - .text:00527490 - .text:005B16D0 (2 times) - .text:00647C80 - .text:00777920 - .text:00777A20 - .text:00777EB0 - .text:00841D20 - scalar deleting destructor: 00777450h - -00945224h: possible vtable (14 methods) -(SI) -0000: general_ref_entityst -0000: general_refst - general_ref_entityst::`vftable' - referencing functions: - .text:00777950 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00945260h: possible vtable (14 methods) -(SI) -0000: general_ref_entity_stolenst -0000: general_ref_entityst -0000: general_refst - general_ref_entity_stolenst::`vftable' - referencing functions: - .text:006BCB90 - .text:006C4A90 - .text:00726BC0 - .text:00777980 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -0094529Ch: possible vtable (14 methods) -(SI) -0000: general_ref_entity_offeredst -0000: general_ref_entityst -0000: general_refst - general_ref_entity_offeredst::`vftable' - referencing functions: - .text:006BCB90 - .text:006C4A90 - .text:00726BC0 - .text:007779C0 - .text:00777A20 - .text:00777EB0 - .text:0084A4A0 (2 times) - .text:0084A860 - scalar deleting destructor: 00777450h - -009452D8h: possible vtable (14 methods) -(SI) -0000: general_ref_entity_itemownerst -0000: general_ref_entityst -0000: general_refst - general_ref_entity_itemownerst::`vftable' - referencing functions: - .text:006B8F90 (2 times) - .text:006BCB90 - .text:006C4A90 - .text:007779F0 - .text:00777A20 - .text:00777EB0 - scalar deleting destructor: 00777450h - -00946D54h: possible vtable (1 methods) -(SI) -0000: script_varst - script_varst::`vftable' - referencing functions: - .text:007EBA70 - .text:007EBB60 - -00946D5Ch: possible vtable (1 methods) -(SI) -0000: script_var_unitst -0000: script_varst - script_var_unitst::`vftable' - referencing functions: - .text:007EBA70 - -00946D64h: possible vtable (1 methods) -(SI) -0000: script_var_longst -0000: script_varst - script_var_longst::`vftable' - referencing functions: - .text:007EBB60 - -00946D6Ch: possible vtable (4 methods) -(SI) -0000: script_stepst - script_stepst::`vftable' - referencing functions: - .text:007EBBD0 - .text:007EBE00 - .text:007EBFB0 - .text:007EC180 - .text:007EC200 (script_step_diphistoryst::`scalar deleting destructor') - .text:007EC490 - .text:007EC4C0 - .text:007EC650 - .text:007ECDF0 - scalar deleting destructor: 007EC200h - -00946D80h: possible vtable (4 methods) -(SI) -0000: script_step_conditionalst -0000: script_stepst - script_step_conditionalst::`vftable' - referencing functions: - .text:007EBC60 - -00946D94h: possible vtable (4 methods) -(SI) -0000: script_step_simpleactionst -0000: script_stepst - script_step_simpleactionst::`vftable' - referencing functions: - .text:007EBF00 - -00946DA8h: possible vtable (4 methods) -(SI) -0000: script_step_setvarst -0000: script_stepst - script_step_setvarst::`vftable' - referencing functions: - .text:007EC090 - -00946DBCh: possible vtable (4 methods) -(SI) -0000: script_step_topicdiscussionst -0000: script_stepst - script_step_topicdiscussionst::`vftable' - referencing functions: - .text:007ECDF0 - scalar deleting destructor: 007EC200h - -00946DD0h: possible vtable (4 methods) -(SI) -0000: script_step_constructtopiclistst -0000: script_stepst - script_step_constructtopiclistst::`vftable' - referencing functions: - .text:007ECDF0 - scalar deleting destructor: 007EC200h - -00946DE4h: possible vtable (4 methods) -(SI) -0000: script_step_discussst -0000: script_stepst - script_step_discussst::`vftable' - referencing functions: - .text:007ECDF0 - scalar deleting destructor: 007EC200h - -00946DF8h: possible vtable (4 methods) -(SI) -0000: script_step_textviewerst -0000: script_stepst - script_step_textviewerst::`vftable' - referencing functions: - .text:007EC290 - -00946E0Ch: possible vtable (4 methods) -(SI) -0000: script_step_diphistoryst -0000: script_stepst - script_step_diphistoryst::`vftable' - referencing functions: - .text:007ECDF0 - scalar deleting destructor: 007EC200h - -00946E20h: possible vtable (4 methods) -(SI) -0000: script_step_dipeventst -0000: script_step_eventst -0000: script_stepst - script_step_dipeventst::`vftable' - referencing functions: - .text:007EC3A0 - -00946E34h: possible vtable (4 methods) -(SI) -0000: script_step_invasionst -0000: script_step_eventst -0000: script_stepst - script_step_invasionst::`vftable' - referencing functions: - .text:007EC5C0 - -00947A44h: possible vtable (8 methods) -(SI) -0000: viewscreen_choose_start_sitest -0000: viewscreenst - viewscreen_choose_start_sitest::`vftable' - referencing functions: - .text:00803200 (viewscreen_choose_start_sitest::viewscreen_choose_start_sitest) - .text:00808B70 (viewscreen_choose_start_sitest::~viewscreen_choose_start_sitest) - scalar deleting destructor: 008041F0h - destructor: 00808B70h - constructor: 00803200h - -00947A68h: possible vtable (8 methods) -(SI) -0000: viewscreen_setupdwarfgamest -0000: viewscreenst - viewscreen_setupdwarfgamest::`vftable' - referencing functions: - .text:00806D90 (viewscreen_setupdwarfgamest::viewscreen_setupdwarfgamest) - .text:00808DB0 (viewscreen_setupdwarfgamest::~viewscreen_setupdwarfgamest) - scalar deleting destructor: 00808830h - destructor: 00808DB0h - constructor: 00806D90h - -00947A8Ch: possible vtable (8 methods) -(SI) -0000: viewscreen_layer_choose_language_namest -0000: viewscreen_layerst -0000: viewscreenst - viewscreen_layer_choose_language_namest::`vftable' - referencing functions: - .text:00804260 (viewscreen_layer_choose_language_namest::viewscreen_layer_choose_language_namest) - .text:00808CD0 (viewscreen_layer_choose_language_namest::~viewscreen_layer_choose_language_namest) - scalar deleting destructor: 00804760h - destructor: 00808CD0h - constructor: 00804260h - -0094947Ch: possible vtable (1 methods) - referencing functions: - .text:00833820 - -0094965Ch: possible vtable (1 methods) - referencing functions: - .text:00834F70 - .text:00837BA0 - -0094966Ch: possible vtable (1 methods) - referencing functions: - .text:00834F70 - .text:00837BA0 - -00949C0Ch: possible vtable (1 methods) - referencing functions: - .text:00837BA0 (2 times) - -0094F500h: possible vtable (3 methods) -(SI) -0000: vegst - vegst::`vftable' - referencing functions: - .text:00879700 - .text:008797B0 - -00951184h: possible vtable (5 methods) -(SI) -0000: world_construction_squarest - world_construction_squarest::`vftable' - referencing functions: - .text:008CF1B0 (world_construction_squarest::~world_construction_squarest) - .text:008CF260 (world_construction_squarest::world_construction_squarest) - scalar deleting destructor: 008CF2E0h - destructor: 008CF1B0h - constructor: 008CF260h - -0095119Ch: possible vtable (5 methods) -(SI) -0000: world_construction_square_roadst -0000: world_construction_squarest - world_construction_square_roadst::`vftable' - referencing functions: - .text:00544910 - .text:008CF300 (world_construction_square_roadst::`scalar deleting destructor') - scalar deleting destructor: 008CF300h - -009511B4h: possible vtable (5 methods) -(SI) -0000: world_construction_square_tunnelst -0000: world_construction_squarest - world_construction_square_tunnelst::`vftable' - referencing functions: - .text:00544990 - .text:0058F8F0 - .text:008CF330 (world_construction_square_tunnelst::`scalar deleting destructor') - scalar deleting destructor: 008CF330h - -009511CCh: possible vtable (5 methods) -(SI) -0000: world_construction_square_bridgest -0000: world_construction_squarest - world_construction_square_bridgest::`vftable' - referencing functions: - .text:005449F0 - .text:008CF360 (world_construction_square_bridgest::`scalar deleting destructor') - scalar deleting destructor: 008CF360h - -009511E4h: possible vtable (5 methods) -(SI) -0000: world_construction_square_wallst -0000: world_construction_squarest - world_construction_square_wallst::`vftable' - referencing functions: - .text:008CF390 - .text:008CF410 (world_construction_square_wallst::`scalar deleting destructor') - scalar deleting destructor: 008CF410h - -009511FCh: possible vtable (5 methods) -(SI) -0000: world_constructionst - world_constructionst::`vftable' - referencing functions: - .text:008CF4B0 (world_constructionst::~world_constructionst) - .text:008CF510 (world_constructionst::world_constructionst) - scalar deleting destructor: 008CF570h - destructor: 008CF4B0h - constructor: 008CF510h - -00951214h: possible vtable (5 methods) -(SI) -0000: world_construction_roadst -0000: world_constructionst - world_construction_roadst::`vftable' - referencing functions: - .text:008CF590 (world_construction_roadst::~world_construction_roadst) - .text:008CFBB0 (world_construction_roadst::world_construction_roadst) - scalar deleting destructor: 008CF5F0h - destructor: 008CF590h - constructor: 008CFBB0h - -0095122Ch: possible vtable (5 methods) -(SI) -0000: world_construction_tunnelst -0000: world_constructionst - world_construction_tunnelst::`vftable' - referencing functions: - .text:008CF610 (world_construction_tunnelst::~world_construction_tunnelst) - .text:008CFC10 (world_construction_tunnelst::world_construction_tunnelst) - scalar deleting destructor: 008CF670h - destructor: 008CF610h - constructor: 008CFC10h - -00951244h: possible vtable (5 methods) -(SI) -0000: world_construction_wallst -0000: world_constructionst - world_construction_wallst::`vftable' - referencing functions: - .text:008CF710 (world_construction_wallst::~world_construction_wallst) - .text:008CFD60 (world_construction_wallst::world_construction_wallst) - scalar deleting destructor: 008CF770h - destructor: 008CF710h - constructor: 008CFD60h - -0095125Ch: possible vtable (5 methods) -(SI) -0000: world_construction_bridgest -0000: world_constructionst - world_construction_bridgest::`vftable' - referencing functions: - .text:008CF790 (world_construction_bridgest::~world_construction_bridgest) - .text:008CFD00 (world_construction_bridgest::world_construction_bridgest) - scalar deleting destructor: 008CF7F0h - destructor: 008CF790h - constructor: 008CFD00h - diff --git a/reversing/find_df_globals.java b/reversing/find_df_globals.java deleted file mode 100644 index 95c8e9159..000000000 --- a/reversing/find_df_globals.java +++ /dev/null @@ -1,75 +0,0 @@ -import ghidra.app.script.*; -import ghidra.program.model.address.*; -import ghidra.program.model.data.*; -import ghidra.program.model.mem.*; - -public class find_df_globals extends GhidraScript { - public void run() throws Exception { - int ptrSize = currentProgram.getDefaultPointerSize(); - byte[] dfInit = new byte[ptrSize * 2]; - int i = 0; - dfInit[i++] = 0x78; - dfInit[i++] = 0x56; - dfInit[i++] = 0x34; - dfInit[i++] = 0x12; - if (ptrSize >= 8) { - dfInit[i++] = 0x78; - dfInit[i++] = 0x56; - dfInit[i++] = 0x34; - dfInit[i++] = 0x12; - dfInit[i++] = 0x21; - dfInit[i++] = 0x43; - dfInit[i++] = 0x65; - dfInit[i++] = (byte)0x87; - } - dfInit[i++] = 0x21; - dfInit[i++] = 0x43; - dfInit[i++] = 0x65; - dfInit[i++] = (byte)0x87; - byte[] mask = new byte[ptrSize * 2]; - for (i = 0; i < ptrSize * 2; i++) { - mask[i] = (byte)0xff; - } - - DataTypeManager dtm = currentProgram.getDataTypeManager(); - StructureDataType dfGlobalsMapElement = new StructureDataType("df_globals_map_element", 0); - dfGlobalsMapElement.add(new PointerDataType(CharDataType.dataType, ptrSize), "name", null); - dfGlobalsMapElement.add(new PointerDataType(DataType.DEFAULT, ptrSize), "addr", null); - StructureDataType dfGlobalsMap = new StructureDataType("df_globals_map", 0); - dfGlobalsMap.add(DWordDataType.dataType, "magic0", "12345678"); - if (ptrSize < 8) { - dfGlobalsMap.add(DWordDataType.dataType, "magic1", "87654321"); - } else { - dfGlobalsMap.add(DWordDataType.dataType, "magic1", "12345678"); - dfGlobalsMap.add(DWordDataType.dataType, "magic2", "87654321"); - dfGlobalsMap.add(DWordDataType.dataType, "magic3", "87654321"); - } - - Memory mem = currentProgram.getMemory(); - Address globalAddr = mem.findBytes(currentProgram.getMinAddress(), dfInit, mask, true, monitor); - - int globalCount = 0; - while (mem.getLong(globalAddr.add((globalCount + 1) * ptrSize * 2)) != 0) { - globalCount++; - Address nameAddr; - Address dataAddr; - if (ptrSize >= 8) { - nameAddr = globalAddr.getNewAddress(mem.getLong(globalAddr.add(globalCount * ptrSize * 2))); - dataAddr = globalAddr.getNewAddress(mem.getLong(globalAddr.add(globalCount * ptrSize * 2 + ptrSize))); - } else { - nameAddr = globalAddr.getNewAddress(mem.getInt(globalAddr.add(globalCount * ptrSize * 2))); - dataAddr = globalAddr.getNewAddress(mem.getInt(globalAddr.add(globalCount * ptrSize * 2 + ptrSize))); - } - - String name = StringDataInstance.getStringDataInstance(DataUtilities.createData(currentProgram, nameAddr, TerminatedStringDataType.dataType, 0, false, DataUtilities.ClearDataMode.CLEAR_ALL_CONFLICT_DATA)).getStringValue(); - - createLabel(dataAddr, name, true); - } - dfGlobalsMap.add(new ArrayDataType(dfGlobalsMapElement, globalCount, ptrSize * 2), "globals", null); - - dtm.addDataType(dfGlobalsMapElement, DataTypeConflictHandler.DEFAULT_HANDLER); - dtm.addDataType(dfGlobalsMap, DataTypeConflictHandler.DEFAULT_HANDLER); - - currentProgram.getListing().createData(globalAddr, dfGlobalsMap); - } -} diff --git a/reversing/import_df_structures.java b/reversing/import_df_structures.java deleted file mode 100644 index 5d3a9771e..000000000 --- a/reversing/import_df_structures.java +++ /dev/null @@ -1,1533 +0,0 @@ -import java.io.File; -import java.io.FileInputStream; -import java.util.*; - -import javax.xml.stream.*; - -import ghidra.app.cmd.function.CreateFunctionCmd; -import ghidra.app.script.*; -import ghidra.program.model.address.*; -import ghidra.program.model.data.*; -import ghidra.program.model.listing.*; -import ghidra.program.model.symbol.*; -import ghidra.program.model.util.*; -import ghidra.util.task.*; - -public class import_df_structures extends GhidraScript -{ - private static final String xmlnsLD = "http://github.com/peterix/dfhack/lowered-data-definition"; - - @Override - public AnalysisMode getScriptAnalysisMode() - { - return AnalysisMode.SUSPENDED; - } - - private File codegenFile, symbolsFile; - private CodeGen codegen; - private Symbols symbols; - private SymbolTable symbolTable; - private ghidra.program.model.symbol.SymbolTable symtab; - private DataTypeManager dtm; - private Category dtc, dtcStd, dtcEnums, dtcVTables, dtcVMethods; - private DataType dtUint8, dtUint16, dtUint32, dtUint64; - private DataType dtInt8, dtInt16, dtInt32, dtInt64; - private DataType dtInt, dtLong, dtSizeT; - private DataType dtString, dtFStream, dtVectorBool, dtBitArray, dtDeque; - private int baseClassPadding; - - @Override - protected void run() throws Exception - { - this.codegenFile = askFile("Select codegen.out.xml", "Select"); - this.symbolsFile = askFile("Select symbols.xml", "Select"); - - createStdDataTypes(); - processXMLInputs(); - this.symbolTable = symbols.findTable(currentProgram); - println("selected symbol table: " + symbolTable.name); - preprocessTypes(); - createDataTypes(); - labelVTables(); - labelGlobals(); - } - - private void updateProgressMajor(String message) throws Exception - { - monitor.checkCanceled(); - - monitor.initialize(TaskMonitor.NO_PROGRESS_VALUE); - monitor.setMessage(message); - println(message); - } - - private DataType createDataType(Category category, DataType dt) throws Exception - { - monitor.checkCanceled(); - - dt = category.addDataType(dt, DataTypeConflictHandler.REPLACE_HANDLER); - println("created data type " + category.getName() + "::" + dt.getName()); - return dt; - } - - private DataType createDataType(Category category, String name, DataType dt) throws Exception - { - return createDataType(category, new TypedefDataType(name, dt)); - } - private DataType createVectorType(DataType target) throws Exception - { - if (target == null) - target = DataType.DEFAULT; - if (BooleanDataType.dataType.isEquivalent(target)) - target = dtInt8; - var ptr = dtm.getPointer(target, currentProgram.getDefaultPointerSize()); - var name = "vector<" + target.getName() + ">"; - - var existing = dtcStd.getDataType(name); - if (existing != null) - return existing; - - var vec = new StructureDataType(name, 0); - vec.setToDefaultAlignment(); - vec.add(ptr, "_M_start", null); - vec.add(ptr, "_M_finish", null); - vec.add(ptr, "_M_end_of_storage", null); - - return createDataType(dtcStd, vec); - } - private DataType createSetType(DataType target) throws Exception - { - if (target == null) - target = DataType.DEFAULT; - - var name = "set<" + target.getName() + ">"; - var existing = dtcStd.getDataType(name); - if (existing != null) - return existing; - - Structure node = new StructureDataType("_Rb_tree_node<" + target.getName() + ">", 0); - node.setToDefaultAlignment(); - node = (Structure)createDataType(dtcStd, node); - - var set = new StructureDataType(name, 0); - set.setToDefaultAlignment(); - - if (baseClassPadding == 1) - { - // GCC - - Structure nodeBase = new StructureDataType("_Rb_tree_node_base<" + target.getName() + ">", 0); - nodeBase.setToDefaultAlignment(); - nodeBase = (Structure)createDataType(dtcStd, nodeBase); - nodeBase.add(BooleanDataType.dataType, "_M_color", null); - nodeBase.add(dtm.getPointer(node, currentProgram.getDefaultPointerSize()), "_M_parent", null); - nodeBase.add(dtm.getPointer(node, currentProgram.getDefaultPointerSize()), "_M_left", null); - nodeBase.add(dtm.getPointer(node, currentProgram.getDefaultPointerSize()), "_M_right", null); - node.add(nodeBase, "_M_base", null); - - set.add(nodeBase, "_M_header", null); - } - else - { - // MSVC - - node.add(dtm.getPointer(node, currentProgram.getDefaultPointerSize()), "_Left", null); - node.add(dtm.getPointer(node, currentProgram.getDefaultPointerSize()), "_Parent", null); - node.add(dtm.getPointer(node, currentProgram.getDefaultPointerSize()), "_Right", null); - node.add(BooleanDataType.dataType, "_Color", null); - node.add(BooleanDataType.dataType, "_Isnil", null); - - set.add(dtm.getPointer(node, currentProgram.getDefaultPointerSize()), "_Myhead", null); - } - - node.add(target, "_M_value_field", null); - - set.add(dtSizeT, "_M_node_count", null); - - return createDataType(dtcStd, set); - } - private DataType createDfArrayType(DataType target) throws Exception - { - if (target == null) - target = DataType.DEFAULT; - var ptr = dtm.getPointer(target, currentProgram.getDefaultPointerSize()); - var name = "DfArray<" + target.getName() + ">"; - - var existing = dtc.getDataType(name); - if (existing != null) - return existing; - - var arr = new StructureDataType(name, 0); - arr.setToDefaultAlignment(); - arr.add(ptr, "ptr", null); - arr.add(dtInt, "length", null); - - return createDataType(dtc, arr); - } - - private void createStdDataTypes() throws Exception - { - updateProgressMajor("erasing existing data types..."); - symtab = currentProgram.getSymbolTable(); - var dfNamespace = symtab.getNamespace("df", currentProgram.getGlobalNamespace()); - if (dfNamespace != null) - { - dfNamespace.getSymbol().delete(); - } - dtm = currentProgram.getDataTypeManager(); - dtm.getRootCategory().removeCategory("df", monitor); - dtc = dtm.createCategory(new CategoryPath("/df")); - - updateProgressMajor("creating stdlib types..."); - dtcStd = dtc.createCategory("std"); - this.dtUint8 = createDataType(dtcStd, "uint8_t", AbstractIntegerDataType.getUnsignedDataType(1, dtm)); - this.dtUint16 = createDataType(dtcStd, "uint16_t", AbstractIntegerDataType.getUnsignedDataType(2, dtm)); - this.dtUint32 = createDataType(dtcStd, "uint32_t", AbstractIntegerDataType.getUnsignedDataType(4, dtm)); - this.dtUint64 = createDataType(dtcStd, "uint64_t", AbstractIntegerDataType.getUnsignedDataType(8, dtm)); - this.dtInt8 = createDataType(dtcStd, "int8_t", AbstractIntegerDataType.getSignedDataType(1, dtm)); - this.dtInt16 = createDataType(dtcStd, "int16_t", AbstractIntegerDataType.getSignedDataType(2, dtm)); - this.dtInt32 = createDataType(dtcStd, "int32_t", AbstractIntegerDataType.getSignedDataType(4, dtm)); - this.dtInt64 = createDataType(dtcStd, "int64_t", AbstractIntegerDataType.getSignedDataType(8, dtm)); - this.dtLong = createDataType(dtcStd, "long", AbstractIntegerDataType.getSignedDataType(currentProgram.getDefaultPointerSize(), dtm)); - this.dtSizeT = createDataType(dtcStd, "size_t", AbstractIntegerDataType.getUnsignedDataType(currentProgram.getDefaultPointerSize(), dtm)); - this.dtInt = createDataType(dtcStd, "int", AbstractIntegerDataType.getSignedDataType(4, dtm)); - - var stringDataType = new StructureDataType("string", 0); - var bitVecDataType = new StructureDataType("vector", 0); - var fStreamDataType = new StructureDataType("fstream", 0); - var dequeDataType = new StructureDataType("deque", 0); - stringDataType.setToDefaultAlignment(); - bitVecDataType.setToDefaultAlignment(); - fStreamDataType.setToDefaultAlignment(); - dequeDataType.setToDefaultAlignment(); - switch (currentProgram.getExecutableFormat()) - { - case "Executable and Linking Format (ELF)": - case "Mac OS X Mach-O": - var rep = new StructureDataType("_string_rep", 0); - rep.setToDefaultAlignment(); - rep.add(dtSizeT, "_M_length", null); - rep.add(dtSizeT, "_M_capacity", null); - rep.add(dtInt, "_M_refcount", null); - createDataType(dtcStd, rep); - - var dataPlus = new UnionDataType("_string_dataplus"); - dataPlus.setToDefaultAlignment(); - dataPlus.add(dtm.getPointer(rep, currentProgram.getDefaultPointerSize())); - dataPlus.add(dtm.getPointer(new TerminatedStringDataType(), currentProgram.getDefaultPointerSize())); - createDataType(dtcStd, dataPlus); - - stringDataType.add(dataPlus, "_M_p", null); - - var biterator = new StructureDataType("_bit_iterator", 0); - biterator.setToDefaultAlignment(); - biterator.add(dtm.getPointer(dtSizeT, currentProgram.getDefaultPointerSize()), "_M_p", null); - biterator.add(dtUint32, "_M_offset", null); - createDataType(dtcStd, biterator); - - bitVecDataType.add(biterator, "_M_start", null); - bitVecDataType.add(biterator, "_M_finish", null); - bitVecDataType.add(dtm.getPointer(dtSizeT, currentProgram.getDefaultPointerSize()), "_M_end_of_storage", null); - - fStreamDataType.setMinimumAlignment(currentProgram.getDefaultPointerSize()); - fStreamDataType.add(Undefined.getUndefinedDataType(61 * currentProgram.getDefaultPointerSize() + 40)); - - dequeDataType.setMinimumAlignment(currentProgram.getDefaultPointerSize()); - dequeDataType.add(Undefined.getUndefinedDataType(10 * currentProgram.getDefaultPointerSize())); - - this.baseClassPadding = 1; - - break; - case "Portable Executable (PE)": - var stringVal = new UnionDataType("_string_val"); - stringVal.setToDefaultAlignment(); - stringVal.add(StringDataType.dataType, 16, "_Buf", null); - stringVal.add(dtm.getPointer(TerminatedStringDataType.dataType, currentProgram.getDefaultPointerSize()), "_Ptr", null); - - stringDataType.add(createDataType(dtcStd, stringVal), "_Bx", null); - stringDataType.add(dtSizeT, "_Mysize", null); - stringDataType.add(dtSizeT, "_Myres", null); - - bitVecDataType.setMinimumAlignment(currentProgram.getDefaultPointerSize()); - bitVecDataType.add(Undefined.getUndefinedDataType(4 * currentProgram.getDefaultPointerSize())); - - fStreamDataType.setMinimumAlignment(currentProgram.getDefaultPointerSize()); - fStreamDataType.add(Undefined.getUndefinedDataType(22 * currentProgram.getDefaultPointerSize() + 96)); - - dequeDataType.setMinimumAlignment(currentProgram.getDefaultPointerSize()); - dequeDataType.add(Undefined.getUndefinedDataType(5 * currentProgram.getDefaultPointerSize())); - - this.baseClassPadding = currentProgram.getDefaultPointerSize(); - - break; - default: - throw new Exception("unexpected exe format " + currentProgram.getExecutableFormat()); - } - this.dtFStream = createDataType(dtcStd, fStreamDataType); - this.dtString = createDataType(dtcStd, stringDataType); - this.dtVectorBool = createDataType(dtcStd, bitVecDataType); - this.dtDeque = createDataType(dtcStd, dequeDataType); - - var bitArrayDataType = new StructureDataType("BitArray", 0); - bitArrayDataType.setToDefaultAlignment(); - bitArrayDataType.add(new PointerDataType(new Undefined1DataType()), "ptr", null); - bitArrayDataType.add(AbstractIntegerDataType.getUnsignedDataType(currentProgram.getDefaultPointerSize(), dtm), "count", null); - this.dtBitArray = createDataType(dtc, bitArrayDataType); - - this.dtcEnums = dtc.createCategory("enums"); - this.dtcVTables = dtc.createCategory("vtables"); - this.dtcVMethods = dtcVTables.createCategory("methods"); - } - - private void processXMLInputs() throws Exception - { - updateProgressMajor("Parsing codegen.out.xml..."); - processXMLInput(this.codegenFile); - updateProgressMajor("Parsing symbols.xml..."); - processXMLInput(this.symbolsFile); - } - - private interface IHasName - { - void setName(String name); - } - private interface IHasValue - { - void setValue(long value); - } - private interface IHasStringValue - { - void setValue(String value); - } - private interface ILoweredData - { - void setMeta(String meta); - void setSubtype(String subtype); - } - private interface IHasAnonName - { - void setAnonName(String name); - } - private interface IHasTypeName - { - void setTypeName(String name); - void setBaseType(String name); - } - private interface IOwnsType - { - TypeDef getOwnedType(); - } - private interface IHasFields - { - List getFields(); - } - - private static abstract class NameHaver implements IHasName - { - public boolean hasName; - public String name; - - @Override - public void setName(String name) - { - this.hasName = true; - this.name = name; - } - } - private static abstract class NameValueHaver extends NameHaver implements IHasValue - { - public boolean hasValue; - public long value; - - @Override - public void setValue(long value) - { - this.hasValue = true; - this.value = value; - } - } - private static abstract class AnonNameHaver extends NameHaver implements IHasAnonName - { - public boolean hasAnonName; - public String anonName; - - @Override - public void setAnonName(String name) - { - this.hasAnonName = true; - this.anonName = name; - } - } - - private static class CodeGen - { - public final Map typesByName = new HashMap<>(); - public final List types = new ArrayList<>(); - public final List globals = new ArrayList<>(); - } - private static class TypeDef implements ILoweredData, IOwnsType, IHasFields - { - public static class EnumItem extends NameValueHaver - { - } - public static class Field extends AnonNameHaver implements ILoweredData, IOwnsType, IHasTypeName - { - public String typeName; - public String baseType; - public TypeDef ownedType; - public String meta = ""; - public String subtype = ""; - public int size; - public boolean hasCount; - public int count; - public Field item; - public String indexEnum; - public boolean forceEnumSize; - - @Override - public void setMeta(String meta) - { - this.meta = meta; - } - @Override - public void setSubtype(String subtype) - { - this.subtype = subtype; - } - @Override - public void setTypeName(String name) - { - this.typeName = name; - } - @Override - public void setBaseType(String name) - { - this.baseType = name; - } - @Override - public TypeDef getOwnedType() - { - if (this.ownedType == null) - this.ownedType = new TypeDef(); - return this.ownedType; - } - } - public static class VMethod extends AnonNameHaver implements IHasFields - { - public final List arguments = new ArrayList<>(); - public Field returnType; - public boolean isDestructor; - - @Override - public List getFields() - { - return arguments; - } - } - - public String typeName; - public String originalName; - public String inheritsFrom; - public String baseType; - public String meta = ""; - @SuppressWarnings("unused") - public String subtype = ""; - public boolean isUnion; - public boolean hasSubClasses; - public final List fields = new ArrayList<>(); - public final List enumItems = new ArrayList<>(); - public final List vmethods = new ArrayList<>(); - - @Override - public void setMeta(String meta) - { - this.meta = meta; - } - @Override - public void setSubtype(String subtype) - { - this.subtype = subtype; - } - @Override - public TypeDef getOwnedType() - { - return this; - } - @Override - public List getFields() - { - return fields; - } - } - - private static class Symbols - { - public final List tables = new ArrayList<>(); - - public SymbolTable findTable(Program currentProgram) throws Exception - { - long actualTS = 0; - if (currentProgram.getExecutableFormat().equals("Portable Executable (PE)")) - { - // TODO: is there a *good* way to do this with Ghida APIs? - var dosHeader = currentProgram.getListing().getDataAt(currentProgram.getImageBase()); - var dosHeaderType = (Structure)dosHeader.getBaseDataType(); - DataTypeComponent ntHeaderOffsetField = null; - for (var dosHeaderField : dosHeaderType.getComponents()) - { - if (dosHeaderField.getFieldName().equals("e_lfanew")) - { - ntHeaderOffsetField = dosHeaderField; - break; - } - } - var ntHeaderOffset = dosHeader.getUnsignedInt(ntHeaderOffsetField.getOffset()); - var ntHeaderAddr = currentProgram.getImageBase().add(ntHeaderOffset); - var ntHeader = currentProgram.getListing().getDataAt(ntHeaderAddr); - var ntHeaderType = (Structure)ntHeader.getBaseDataType(); - for (var ntHeaderField : ntHeaderType.getComponents()) - { - if (ntHeaderField.getFieldName().equals("FileHeader")) - { - var fileHeader = ntHeader.getComponent(ntHeaderField.getOrdinal()); - var fileHeaderType = (Structure)fileHeader.getDataType(); - for (var fileHeaderField : fileHeaderType.getComponents()) - { - if (fileHeaderField.getFieldName().equals("TimeDateStamp")) - { - actualTS = fileHeader.getUnsignedInt(fileHeaderField.getOffset()); - break; - } - } - - break; - } - } - } - var actualMD5 = currentProgram.getExecutableMD5(); - if (actualMD5 == null) - { - actualMD5 = ""; - } - - for (var table : tables) - { - if (table.hasBinaryTimestamp) - { - if (table.binaryTimestamp != actualTS) - continue; - } - if (table.hasMD5Hash) - { - if (!table.md5Hash.equalsIgnoreCase(actualMD5)) - continue; - } - return table; - } - throw new Exception("could not find a relevant symbol table for the current program. is df-structures up to date?"); - } - } - private static class SymbolTable extends NameHaver - { - public static class VTableAddress extends NameValueHaver - { - public boolean hasMangledName; - public String mangledName; - public boolean hasOffset; - public long offset; - } - public static class GlobalAddress extends NameValueHaver - { - } - public class BinaryTimestamp implements IHasValue - { - @Override - public void setValue(long value) - { - hasBinaryTimestamp = true; - binaryTimestamp = value; - } - } - public class MD5Hash implements IHasStringValue - { - @Override - public void setValue(String value) - { - hasMD5Hash = true; - md5Hash = value; - } - } - - public boolean hasBinaryTimestamp; - public long binaryTimestamp; - public boolean hasMD5Hash; - public String md5Hash; - public final List vtables = new ArrayList<>(); - public final List globals = new ArrayList<>(); - - public BinaryTimestamp newBinaryTimestamp() - { - return new BinaryTimestamp(); - } - public MD5Hash newMD5Hash() - { - return new MD5Hash(); - } - } - - private void processXMLInput(File file) throws Exception - { - var factory = XMLInputFactory.newDefaultFactory(); - var inputStream = new FileInputStream(file); - var reader = factory.createXMLStreamReader(inputStream); - - var stack = new Stack<>(); - - while (reader.hasNext()) - { - int tag = reader.next(); - switch (tag) - { - case XMLStreamConstants.START_ELEMENT: - // shared variable namespace - SymbolTable st; - SymbolTable.VTableAddress vta; - TypeDef.VMethod vm; - - if (reader.getNamespaceURI() == null) - { - switch (reader.getLocalName()) - { - case "enum-item": - var ei = new TypeDef.EnumItem(); - ((IOwnsType)stack.peek()).getOwnedType().enumItems.add(ei); - stack.push(ei); - break; - case "virtual-methods": - stack.push(stack.peek()); - break; - case "vmethod": - vm = new TypeDef.VMethod(); - ((IOwnsType)stack.peek()).getOwnedType().vmethods.add(vm); - stack.push(vm); - break; - case "ret-type": - vm = (TypeDef.VMethod)stack.peek(); - vm.returnType = new TypeDef.Field(); - stack.push(vm.returnType); - break; - case "comment": - // ignore (for now) - stack.push(null); - break; - case "data-definition": - this.symbols = new Symbols(); - stack.push(this.symbols); - break; - case "symbol-table": - st = new SymbolTable(); - this.symbols.tables.add(st); - stack.push(st); - break; - case "binary-timestamp": - st = (SymbolTable)stack.peek(); - stack.push(st.newBinaryTimestamp()); - break; - case "md5-hash": - st = (SymbolTable)stack.peek(); - stack.push(st.newMD5Hash()); - break; - case "global-address": - st = (SymbolTable)stack.peek(); - var ga = new SymbolTable.GlobalAddress(); - st.globals.add(ga); - stack.push(ga); - break; - case "vtable-address": - st = (SymbolTable)stack.peek(); - vta = new SymbolTable.VTableAddress(); - st.vtables.add(vta); - stack.push(vta); - break; - default: - printerr("Unhandled XML element name: " + reader.getLocalName()); - // fallthrough - case "enum-attr": - case "item-attr": - case "code-helper": - case "extra-include": - case "custom-methods": - case "cmethod": - // ignore - stack.push(null); - continue; - } - } - else if (reader.getNamespaceURI().equals(xmlnsLD)) - { - switch (reader.getLocalName()) - { - case "data-definition": - this.codegen = new CodeGen(); - stack.push(this.codegen); - break; - case "global-type": - var gtype = new TypeDef(); - ((CodeGen)stack.peek()).types.add(gtype); - stack.push(gtype); - break; - case "global-object": - var gobj = new TypeDef.Field(); - ((CodeGen)stack.peek()).globals.add(gobj); - stack.push(gobj); - break; - case "field": - var field = new TypeDef.Field(); - if (stack.peek() instanceof IHasFields) - ((IHasFields)stack.peek()).getFields().add(field); - else - ((IOwnsType)stack.peek()).getOwnedType().fields.add(field); - stack.push(field); - break; - case "item": - var item = new TypeDef.Field(); - ((TypeDef.Field)stack.peek()).item = item; - stack.push(item); - break; - default: - printerr("Unhandled XML element name: ld:" + reader.getLocalName()); - stack.push(null); - continue; - } - } - else - { - printerr("Unhandled XML element namespace: " + reader.getNamespaceURI()); - stack.push(null); - continue; - } - - for (int i = 0; i < reader.getAttributeCount(); i++) - { - if (!reader.isAttributeSpecified(i)) - continue; - if (reader.getAttributeNamespace(i) == null) - { - switch (reader.getAttributeLocalName(i)) - { - case "type-name": - if (stack.peek() instanceof IHasTypeName) - ((IHasTypeName)stack.peek()).setTypeName(reader.getAttributeValue(i)); - else - ((IOwnsType)stack.peek()).getOwnedType().typeName = reader.getAttributeValue(i); - break; - case "base-type": - if (stack.peek() instanceof IHasTypeName) - ((IHasTypeName)stack.peek()).setBaseType(reader.getAttributeValue(i)); - else - ((IOwnsType)stack.peek()).getOwnedType().baseType = reader.getAttributeValue(i); - break; - case "last-value": - // ignore - break; - case "name": - ((IHasName)stack.peek()).setName(reader.getAttributeValue(i)); - break; - case "value": - if (stack.peek() instanceof IHasStringValue) - ((IHasStringValue)stack.peek()).setValue(reader.getAttributeValue(i)); - else - ((IHasValue)stack.peek()).setValue(Long.decode(reader.getAttributeValue(i))); - break; - case "ref-target": - // ignore - break; - case "pointer-type": - // ignore - break; - case "comment": - // ignore (for now) - break; - case "init-value": - // ignore - break; - case "count": - ((TypeDef.Field)stack.peek()).hasCount = true; - ((TypeDef.Field)stack.peek()).count = Integer.decode(reader.getAttributeValue(i)); - break; - case "aux-value": - // ignore - break; - case "since": - // ignore - break; - case "refers-to": - // ignore - break; - case "ret-type": - // ignore (this becomes an element) - break; - case "is-destructor": - ((TypeDef.VMethod)stack.peek()).isDestructor = true; - break; - case "inherits-from": - ((IOwnsType)stack.peek()).getOwnedType().inheritsFrom = reader.getAttributeValue(i); - break; - case "index-enum": - ((TypeDef.Field)stack.peek()).indexEnum = reader.getAttributeValue(i); - break; - case "instance-vector": - // ignore - break; - case "key-field": - // ignore - break; - case "original-name": - ((IOwnsType)stack.peek()).getOwnedType().originalName = reader.getAttributeValue(i); - break; - case "is-union": - ((IOwnsType)stack.peek()).getOwnedType().isUnion = Boolean.parseBoolean(reader.getAttributeValue(i)); - break; - case "is-array": - // ignore - break; - case "is-list": - // ignore - break; - case "default-value": - // ignore - break; - case "use-key-name": - // ignore - break; - case "index-refers-to": - // ignore - break; - case "size": - ((TypeDef.Field)stack.peek()).size = Integer.decode(reader.getAttributeValue(i)); - break; - case "has-bad-pointers": - // ignore - break; - case "custom-methods": - // ignore - break; - case "filename": - // ignore - break; - case "item-type": - // ignore (becomes an element) - break; - case "df-list-link-type": - // ignore - break; - case "df-list-link-field": - // ignore - break; - case "os-type": - // ignore (symbols) - break; - case "offset": - vta = (SymbolTable.VTableAddress)stack.peek(); - vta.hasOffset = true; - vta.offset = Long.decode(reader.getAttributeValue(i)); - break; - case "mangled": - vta = (SymbolTable.VTableAddress)stack.peek(); - vta.hasMangledName = true; - vta.mangledName = reader.getAttributeValue(i); - break; - default: - printerr("Unhandled XML attribute name: " + reader.getAttributeLocalName(i)); - continue; - } - } - else if (reader.getAttributeNamespace(i).equals(xmlnsLD)) - { - switch (reader.getAttributeLocalName(i)) - { - case "meta": - ((ILoweredData)stack.peek()).setMeta(reader.getAttributeValue(i)); - break; - case "level": - // ignore - break; - case "subtype": - ((ILoweredData)stack.peek()).setSubtype(reader.getAttributeValue(i)); - break; - case "typedef-name": - ((IOwnsType)stack.peek()).getOwnedType().typeName = reader.getAttributeValue(i); - break; - case "is-container": - // ignore - break; - case "bits": - // ignore - break; - case "unsigned": - // ignore - break; - case "anon-name": - ((IHasAnonName)stack.peek()).setAnonName(reader.getAttributeValue(i)); - break; - case "enum-size-forced": - ((TypeDef.Field)stack.peek()).forceEnumSize = true; - break; - case "in-union": - // ignore - break; - case "anon-compound": - ((IOwnsType)stack.peek()).getOwnedType().typeName = "(anon compound)"; - break; - default: - printerr("Unhandled XML attribute name: ld:" + reader.getAttributeLocalName(i)); - continue; - } - } - else - { - printerr("Unhandled XML attribute namespace: " + reader.getAttributeNamespace(i)); - continue; - } - } - break; - case XMLStreamConstants.END_ELEMENT: - stack.pop(); - break; - case XMLStreamConstants.CHARACTERS: - // ignore (for now) - break; - case XMLStreamConstants.COMMENT: - // ignore - break; - case XMLStreamConstants.END_DOCUMENT: - // ignore - break; - case XMLStreamConstants.CDATA: - // ignore - break; - default: - throw new Exception("Unhandled XML type: " + tag); - } - } - } - - private void preprocessTypes() throws Exception - { - var toAdd = new ArrayList(); - for (var gobj : codegen.globals) - { - findAnonymousTypes(toAdd, "", gobj); - } - for (var gtype : codegen.types) - { - findAnonymousTypes(toAdd, gtype); - } - codegen.types.addAll(toAdd); - - for (var t : codegen.types) - { - codegen.typesByName.put(t.typeName, t); - if (t.originalName != null) - codegen.typesByName.put(t.originalName, t); - } - - boolean foundAny = true; - while (foundAny) - { - foundAny = false; - - for (var t : codegen.types) - { - if (!"class-type".equals(t.meta)) - continue; - - var parent = codegen.typesByName.get(t.inheritsFrom); - if (parent != null && !parent.hasSubClasses) - { - parent.hasSubClasses = true; - foundAny = true; - } - } - } - } - - private void createDataTypes() throws Exception - { - updateProgressMajor("Creating data types..."); - monitor.initialize(codegen.types.size()); - int i = 0; - for (var t : codegen.types) - { - monitor.checkCanceled(); - createDataType(t); - i++; - monitor.setProgress(i); - } - } - - private void findAnonymousTypes(List toAdd, TypeDef parent) throws Exception - { - var prefix = parent.typeName + "::"; - for (var field : parent.fields) - { - findAnonymousTypes(toAdd, prefix, field); - } - } - - private void findAnonymousTypes(List toAdd, String prefix, TypeDef.Field field) throws Exception - { - for (var f = field; f != null; f = f.item) - { - if (f.ownedType != null) - { - if (f.ownedType.typeName == null) - throw new Exception("unnamed typed field " + prefix + f.name); - if (f.meta.equals("compound")) - { - if (f.subtype.isEmpty()) - f.ownedType.meta = "struct-type"; - else - f.ownedType.meta = f.subtype + "-type"; - } - else if (f.meta.equals("static-array")) - { - f.ownedType.meta = f.meta; - var af = new TypeDef.Field(); - af.meta = f.meta; - af.indexEnum = f.indexEnum; - af.hasCount = f.hasCount; - af.count = f.count; - af.item = f.item; - f.ownedType.fields.add(af); - } - f.ownedType.typeName = prefix + f.ownedType.typeName; - f.typeName = f.ownedType.typeName; - toAdd.add(f.ownedType); - findAnonymousTypes(toAdd, f.ownedType); - } - } - } - - private DataType createDataType(TypeDef t) throws Exception - { - DataType existing; - if (t.meta.equals("enum-type")) - existing = dtcEnums.getDataType(t.typeName); - else - existing = dtc.getDataType(t.typeName); - if (existing != null) - return existing; - - switch (t.meta) - { - case "enum-type": - return createEnumDataType(t); - case "bitfield-type": - return createBitfieldDataType(t); - case "struct-type": - return createStructDataType(t); - case "class-type": - return createClassDataType(t); - case "static-array": - return createDataType(dtc, t.typeName, getDataType(t.fields.get(0))); - default: - throw new Exception("Unhandled type meta for " + t.typeName + ": " + t.meta); - } - } - - private DataType getDataType(String name) throws Exception - { - if (name == null) - return null; - - return createDataType(codegen.typesByName.get(name)); - } - - private DataType getDataType(TypeDef.Field f) throws Exception - { - switch (f.meta) - { - case "primitive": - switch (f.subtype) - { - case "stl-string": - return dtString; - case "stl-fstream": - return dtFStream; - } - break; - case "container": - switch (f.subtype) - { - case "stl-vector": - return createVectorType(f.item == null ? null : getDataType(f.item)); - case "stl-bit-vector": - return dtVectorBool; - case "stl-set": - return createSetType(f.item == null ? null : getDataType(f.item)); - case "stl-deque": - return dtcStd.addDataType(new TypedefDataType("deque<" + (f.item == null ? DataType.DEFAULT : getDataType(f.item)).getName() + ">", dtDeque), DataTypeConflictHandler.REPLACE_HANDLER); - case "df-flagarray": - return dtBitArray; - case "df-array": - return createDfArrayType(f.item == null ? null : getDataType(f.item)); - case "df-linked-list": - return getDataType(f.typeName); - } - break; - case "number": - switch (f.subtype) - { - case "bool": - return BooleanDataType.dataType; - case "s-float": - return Float4DataType.dataType; - case "d-float": - return Float8DataType.dataType; - case "int8_t": - return dtInt8; - case "int16_t": - return dtInt16; - case "int32_t": - return dtInt32; - case "int64_t": - return dtInt64; - case "uint8_t": - return dtUint8; - case "uint16_t": - return dtUint16; - case "uint32_t": - return dtUint32; - case "uint64_t": - return dtUint64; - case "long": - return dtLong; - } - break; - case "pointer": - if (f.item == null) - return dtm.getPointer(DataType.DEFAULT, currentProgram.getDefaultPointerSize()); - - if ("global".equals(f.item.meta) || "compound".equals(f.item.meta)) - { - /* - var t = codegen.typesByName.get(f.item.typeName); - if (t != null && t.hasSubClasses) - return dtm.getPointer(findOrCreateBaseClassUnion(t), currentProgram.getDefaultPointerSize()); - */ - } - - return dtm.getPointer(getDataType(f.item), currentProgram.getDefaultPointerSize()); - case "global": - case "compound": - if (f.forceEnumSize) - { - return dtcStd.getDataType(f.baseType); - } - return getDataType(f.typeName); - case "static-array": - if (f.hasCount) - return new ArrayDataType(getDataType(f.item), f.count, 0); - var enumItems = codegen.typesByName.get(f.indexEnum).enumItems; - return new ArrayDataType(getDataType(f.item), enumItems.size() + (int)enumItems.get(0).value, 0); - case "bytes": - switch (f.subtype) - { - case "padding": - return new ArrayDataType(Undefined1DataType.dataType, f.size, 1); - case "static-string": - return StringDataType.dataType; - } - break; - } - throw new Exception("Unhandled field meta/subtype: " + f.meta + "/" + f.subtype); - } - - private DataType createEnumDataType(TypeDef t) throws Exception - { - var et = new EnumDataType(t.typeName, t.baseType == null || t.baseType.isEmpty() ? 4 : dtcStd.getDataType(t.baseType).getLength()); - - long prevValue = -1; - for (var ei : t.enumItems) - { - long value = ei.hasValue ? ei.value : prevValue + 1; - String name = ei.hasName ? ei.name : "_unk_" + value; - et.add(name, value); - prevValue = value; - } - - return createDataType(dtcEnums, et); - } - - private void addStructField(Composite st, TypeDef t, TypeDef.Field f) throws Exception - { - String name = null; - if (f.hasName) - name = f.name; - else if (f.hasAnonName) - name = t.typeName + "_" + f.anonName; - - st.add(getDataType(f), f.size, name, null); - } - - private void addStructFields(Composite st, TypeDef t) throws Exception - { - if (t.inheritsFrom != null) - { - addStructFields(st, codegen.typesByName.get(t.inheritsFrom)); - - int pastAlignment = st.getLength() % this.baseClassPadding; - if (pastAlignment != 0) - { - st.add(new ArrayDataType(Undefined1DataType.dataType, this.baseClassPadding - pastAlignment, 1), null, "base class padding for " + t.typeName); - } - } - - for (var f : t.fields) - { - addStructField(st, t, f); - } - } - - private DataType createStructDataType(TypeDef t) throws Exception - { - Composite st = t.isUnion ? new UnionDataType(t.typeName) : new StructureDataType(t.typeName, 0); - // add early to avoid recursion - st = (Composite)dtc.addDataType(st, DataTypeConflictHandler.REPLACE_HANDLER); - st.setToDefaultAlignment(); - - addStructFields(st, t); - - if (t.originalName != null) - throw new Exception("original name"); - - return createDataType(dtc, st); - } - - private DataType createMethodDataType(String name, TypeDef t, TypeDef.VMethod vm) throws Exception - { - var ft = new FunctionDefinitionDataType(name); - ft.setGenericCallingConvention(GenericCallingConvention.thiscall); - - if (vm.returnType != null) - ft.setReturnType(getDataType(vm.returnType)); - else if (!vm.hasAnonName) - ft.setReturnType(DataType.VOID); - - var args = new ParameterDefinition[vm.arguments.size() + 1]; - args[0] = new ParameterDefinitionImpl("this", dtm.getPointer(createDataType(t), currentProgram.getDefaultPointerSize()), null); - for (int i = 0; i < vm.arguments.size(); i++) - { - var arg = vm.arguments.get(i); - String aname = null; - if (arg.hasName) - aname = arg.name; - else if (arg.hasAnonName) - aname = arg.anonName; - args[i + 1] = new ParameterDefinitionImpl(aname, getDataType(arg), null); - } - ft.setArguments(args); - - return createDataType(dtcVMethods, ft); - } - - private DataType createVTableDataType(TypeDef t) throws Exception - { - var name = t.originalName != null ? t.originalName : t.typeName; - var existing = dtcVTables.getDataType("vtable_" + name); - if (existing != null) - return existing; - - Structure st = new StructureDataType("vtable_" + name, 0); - // add early to avoid recursion - st = (Structure)dtcVTables.addDataType(st, DataTypeConflictHandler.REPLACE_HANDLER); - st.setToDefaultAlignment(); - - if (t.inheritsFrom != null) - { - st.add(createVTableDataType(codegen.typesByName.get(t.inheritsFrom)), "_super", null); - } - - for (var vm : t.vmethods) - { - String mname = null; - if (vm.isDestructor) - { - mname = "~" + name; - if (baseClassPadding == 1) - { - // GCC - var mt = dtm.getPointer(createMethodDataType(name + "::" + mname, t, vm), currentProgram.getDefaultPointerSize()); - st.add(mt, mname, null); - st.add(mt, mname + "(deleting)", null); - } - else - { - // MSVC - if (vm.arguments.isEmpty()) - { - var arg = new TypeDef.Field(); - arg.meta = "number"; - arg.subtype = "bool"; - arg.hasName = true; - arg.name = "deleting"; - vm.arguments.add(arg); - } - var mt = dtm.getPointer(createMethodDataType(name + "::" + mname, t, vm), currentProgram.getDefaultPointerSize()); - st.add(mt, mname, null); - } - continue; - } - - if (vm.hasName) - mname = vm.name; - else if (vm.hasAnonName) - mname = name + "_" + vm.anonName; - st.add(dtm.getPointer(createMethodDataType(name + "::" + mname, t, vm), currentProgram.getDefaultPointerSize()), mname, null); - } - - return createDataType(dtcVTables, st); - } - - private Union findOrCreateBaseClassUnion(TypeDef t) throws Exception - { - var typeName = "virtual_" + (t.originalName == null ? t.typeName : t.originalName); - var existing = (Union)dtc.getDataType(typeName); - if (existing != null) - return existing; - - var ut = new UnionDataType(typeName); - dtc.addDataType(ut, DataTypeConflictHandler.REPLACE_HANDLER); - ut.add(createDataType(t), t.typeName, null); - return (Union)createDataType(dtc, ut); - } - - private void addToBaseClassUnion(TypeDef t, Structure st) throws Exception - { - if (t.inheritsFrom == null) - return; - - var self = t.hasSubClasses ? findOrCreateBaseClassUnion(t) : st; - var parent = findOrCreateBaseClassUnion(codegen.typesByName.get(t.inheritsFrom)); - parent.add(self); - } - - private DataType createClassDataType(TypeDef t) throws Exception - { - Structure st = new StructureDataType(t.originalName != null ? t.originalName : t.typeName, 0); - // add early to avoid recursion - st = (Structure)dtc.addDataType(st, DataTypeConflictHandler.REPLACE_HANDLER); - if (t.originalName != null) - dtc.addDataType(new TypedefDataType(t.typeName, st), DataTypeConflictHandler.REPLACE_HANDLER); - st.setToDefaultAlignment(); - st.add(dtm.getPointer(createVTableDataType(t), currentProgram.getDefaultPointerSize()), "_vtable", null); - - addStructFields(st, t); - - st = (Structure)createDataType(dtc, st); - - addToBaseClassUnion(t, st); - - if (t.originalName != null) - return createDataType(dtc, t.typeName, st); - return st; - } - - private DataType createBitfieldDataType(TypeDef t) throws Exception - { - var st = new StructureDataType(t.typeName, 0); - st.setToDefaultAlignment(); - st.setMinimumAlignment(4); - - for (var f : t.fields) - { - String name = null; - if (f.hasName) - name = f.name; - else if (f.hasAnonName) - name = t.typeName + "_" + f.anonName; - int count = f.hasCount ? f.count : 1; - st.addBitField(dtUint32, count, name, null); - } - - return createDataType(dtc, st); - } - - private void labelData(Address addr, DataType dt, String name, int size) throws Exception - { - println("labelling " + addr + " as " + name + " (" + dt.getCategoryPath().getName() + "::" + dt.getName() + ") "); - var listing = currentProgram.getListing(); - var existing = listing.getData(new AddressSet(new AddressRangeImpl(addr, dt.getLength() == -1 ? size : dt.getLength())), true); - for (var e : existing) - { - if (!e.isDefined() || Undefined.isUndefined(e.getDataType())) - { - listing.clearCodeUnits(e.getMinAddress(), e.getMaxAddress(), false, monitor); - } - else - { - var st = currentProgram.getSymbolTable(); - var syms = st.getSymbols(e.getAddress()); - printerr("overlapping " + e.getDataType().getName() + " " + (syms.length > 0 ? syms[0].getName() : "(unnamed)")); - } - } - - try - { - listing.createData(addr, dt, size); - } - catch (CodeUnitInsertionException ex) - { - printerr(ex.getMessage()); - } - createLabel(addr, name, true, SourceType.IMPORTED); - } - - private void labelVMethods(Address addr, GhidraClass cls, Structure st) throws Exception - { - for (var field : st.getComponents()) - { - if ("_super".equals(field.getFieldName())) - { - labelVMethods(addr, cls, (Structure)field.getDataType()); - continue; - } - - Address fnaddr; - if (currentProgram.getDefaultPointerSize() == 4) - { - fnaddr = toAddr(currentProgram.getMemory().getInt(addr.add(field.getOffset()))); - } - else - { - fnaddr = toAddr(currentProgram.getMemory().getLong(addr.add(field.getOffset()))); - } - - var funcType = (FunctionDefinition)((Pointer)field.getDataType()).getDataType(); - var cmd = new CreateFunctionCmd(field.getFieldName(), fnaddr, null, SourceType.IMPORTED); - Function func; - if (cmd.applyTo(currentProgram)) - { - func = cmd.getFunction(); - } - else - { - func = currentProgram.getListing().getFunctionAt(fnaddr); - if (func != null && !func.getSignatureSource().isLowerPriorityThan(SourceType.IMPORTED)) - { - func = null; - } - } - if (func != null) - { - func.setName(field.getFieldName(), SourceType.IMPORTED); - func.setParentNamespace(cls); - var ret = new ReturnParameterImpl(funcType.getReturnType(), currentProgram); - var params = new ArrayList(); - boolean first = true; - for (var arg : funcType.getArguments()) - { - if (first) - { - first = false; - continue; - } - params.add(new ParameterImpl(arg.getName(), arg.getDataType(), currentProgram)); - } - - func.updateFunction("__thiscall", ret, params, Function.FunctionUpdateType.DYNAMIC_STORAGE_FORMAL_PARAMS, true, SourceType.IMPORTED); - } - else - { - symtab.createLabel(fnaddr, field.getFieldName(), cls, SourceType.IMPORTED); - } - } - } - - private void labelVTable(Namespace ns, Address addr, GhidraClass cls, DataType dt) throws Exception - { - labelData(addr, dt, dt.getName(), 0); - labelVMethods(addr, cls, (Structure)dt); - } - - private void labelVTables() throws Exception - { - updateProgressMajor("Labelling vtables..."); - monitor.initialize(symbolTable.vtables.size()); - - var symtab = currentProgram.getSymbolTable(); - var ns = symtab.getNamespace("df", null); - if (ns == null) - ns = symtab.createNameSpace(null, "df", SourceType.IMPORTED); - - int i = 0; - for (var vt : symbolTable.vtables) - { - monitor.setProgress(i++); - - if (!vt.hasName) - continue; - - var dt = dtcVTables.getDataType("vtable_" + vt.name); - if (dt == null) - continue; - - var cls = symtab.createClass(ns, vt.name, SourceType.IMPORTED); - - long offset = vt.hasOffset ? vt.offset : 0; - - if (vt.hasValue) - { - labelVTable(ns, toAddr(vt.value + offset), cls, dt); - } - - if (vt.hasMangledName) - { - var syms = symtab.getGlobalSymbols(vt.mangledName); - if (syms.isEmpty()) - continue; - - for (var s : syms) - { - labelVTable(ns, s.getAddress().add(offset), cls, dt); - } - } - } - } - - private void labelGlobals() throws Exception - { - updateProgressMajor("Labelling globals..."); - monitor.initialize(codegen.globals.size()); - - var addrs = new HashMap(); - - for (var g : symbolTable.globals) - { - if (!g.hasName) - continue; - if (!g.hasValue) - continue; - - addrs.put(g.name, toAddr(g.value)); - } - - int i = 0; - for (var gobj : codegen.globals) - { - monitor.setProgress(i++); - - if (!gobj.hasName) - continue; - if (!addrs.containsKey(gobj.name)) - continue; - - var dt = getDataType(gobj.item); - if (dt == null) - throw new Exception("missing data type for global " + gobj.name); - - labelData(addrs.get(gobj.name), dt, gobj.name, gobj.item.size); - } - } -} diff --git a/reversing/linux-wagon-d19.txt b/reversing/linux-wagon-d19.txt deleted file mode 100644 index bc2e6ed2a..000000000 --- a/reversing/linux-wagon-d19.txt +++ /dev/null @@ -1 +0,0 @@ -.rodata:08779424 16building_wagonst diff --git a/reversing/ms_ehseh.idc b/reversing/ms_ehseh.idc deleted file mode 100644 index 1d25e1369..000000000 --- a/reversing/ms_ehseh.idc +++ /dev/null @@ -1,816 +0,0 @@ -//Microsoft Visual C++ Win32 SEH/C++ EH info parser -//Version 3.0 2006.03.02 Igor Skochinsky - -#include -#define __INCLUDED -#include - -static getEHRec() -{ - auto id; - id = GetStrucIdByName("EHRegistrationNode"); - if (id==-1) - { - id = AddStruc(-1,"EHRegistrationNode"); - ForceDWMember(id, 0, "pNext"); - ForceDWMember(id, 4, "frameHandler"); - ForceDWMember(id, 8, "state"); - } - return id; -} - -static getEHRecCatch() -{ - auto id; - id = GetStrucIdByName("EHRegistrationNodeCatch"); - if (id==-1) - { - id = AddStruc(-1,"EHRegistrationNodeCatch"); - ForceDWMember(id, 0, "SavedESP"); - ForceDWMember(id, 4, "pNext"); - ForceDWMember(id, 8, "frameHandler"); - ForceDWMember(id, 12, "state"); - } - return id; -} - -static CommentStackEH(start, hasESP, EHCookie, GSCookie) -{ - if (hasESP) - CommentStack(start,-16, "__$EHRec$", getEHRecCatch()); - else - CommentStack(start,-12, "__$EHRec$", getEHRec()); - if (GSCookie) - CommentStack(start,-GSCookie, "__$GSCookie$",-1); - if (EHCookie) - CommentStack(start,-EHCookie, "__$EHCookie$",-1); -} - -/* from frame.obj -typedef struct _s_FuncInfo { - unsigned int magicNumber; - int maxState; - const struct _s_UnwindMapEntry * pUnwindMap; - unsigned int nTryBlocks; - const struct _s_TryBlockMapEntry * pTryBlockMap; - unsigned int nIPMapEntries; - void * pIPtoStateMap; - const struct _s_ESTypeList * pESTypeList; -} FuncInfo; -*/ - -//handler: -// mov eax, offset funcInfo -// jmp ___CxxFrameHandler -static ParseCxxHandler(func, handler, fixFunc) -{ - auto x, start, y, z, end, i, count, t, u, i2, cnt2, a, hasESP; - auto EHCookieOffset, GSCookieOffset; - start = func; - x = handler; - y = x; - z = x; - EHCookieOffset=0; GSCookieOffset=0; - // 8B 54 24 08 mov edx, [esp+8] - if (matchBytes(x,"8B5424088D02")) - x = x+6; - // 8D 02 lea eax, [edx] - else if (matchBytes(x,"8B5424088D42")) - x = x+7; - // 8D 42 xx lea eax, [edx+XXh] - else if (matchBytes(x,"8B5424088D82")) - x = x+10; - // 8D 82 xx xx xx xx lea eax, [edx+XXh] - else { - Message("Function at %08X not recognized as exception handler!\n",x); - return; - } - //EH cookie check: - // 8B 4A xx mov ecx, [edx-XXh] - // OR - // 8B 8A xx xx xx xx mov ecx, [edx-XXh] - // 33 C8 xor ecx, eax - // E8 xx xx xx xx call __security_check_cookie - if (matchBytes(x,"8B4A??33C8E8")) - { - //byte argument - EHCookieOffset = (~Byte(x+2)+1)&0xFF; - EHCookieOffset = 12 + EHCookieOffset; - x = x+10; - } - else if (matchBytes(x,"8B8A????????33C8E8")) - { - //dword argument - EHCookieOffset = (~Dword(x+2)+1); - EHCookieOffset = 12 + EHCookieOffset; - x = x+13; - } - if (matchBytes(x,"83C0")) - x = x + 3; - // 8B 4A xx add eax, XXh - if (matchBytes(x,"8B4A??33C8E8")) - { - // 8B 4A xx mov ecx, [edx-XXh] - // 33 C8 xor ecx, eax - // E8 xx xx xx xx call __security_check_cookie - GSCookieOffset = (~Byte(x+2)+1)&0xFF; - GSCookieOffset = 12 + GSCookieOffset; - x = x+10; - } - else if (matchBytes(x,"8B8A????????33C8E8")) - { - //dword argument - GSCookieOffset = (~Dword(x+9)+1); - GSCookieOffset = 12 + GSCookieOffset; - x = x+13; - } - - //Message("EH3: EH Cookie=%02X, GSCookie=%02X\n",EHCookieOffset, GSCookieOffset); - - if (Byte(x)==0xB8) { - // 8B 4A xx xx xx mov eax, offset FuncInfo - x = Dword(x+1); - } - else { - Message("\"mov eax, offset FuncInfo\" not found at offset %08X!\n",x); - return; - } - if (Dword(x)-0x19930520>0xF) { - Message("Magic is not 1993052Xh!\n"); - return; - } - Message(form("Detected function start at %08X\n",start)); - u = x; //FuncInfo; - - //parse unwind handlers - count = Dword(u+4); //maxState - i=0; - x = Dword(u+8); //pUnwindMap - while (iy) y=t; //find lowest - if (t!=0 && ty) - { - Message("Something's very wrong!\n"); - return; - } - - end = FindFuncEnd(y); - if (end==BADADDR) { - if (fixFunc) MakeUnkn(y, 1); - if (BADADDR == FindFuncEnd(y)) - { - Message(form("Can't find function end at 0x%08X\n",y)); - return; - } - } - Message(form("Handlers block: %08X-%08X\n", z, y)); - if (GetFunctionFlags(start) == -1) - { - if (fixFunc) - { - MakeUnkn(start, 1); - MakeCode(start); - MakeFunction(start, BADADDR); - } - else - { - Message("There is no function defined at 0x%08X!\n", start); - return; - } - } - a = FindFuncEnd(start); - Message("Function end: %08X\n", a); - if (fixFunc) AnalyseArea(start,a); - if (1)//(z>a) && ((z-a)>0x20)) - { - //the handlers block is too far from the function end, make it a separate chunk - if (fixFunc) - { - Message("Making separate handlers block\n"); - Unknown(z, y-z); - MakeCode(z); - MakeFunction(z,y); - AnalyseArea(z,y); - MakeCode(y); - MakeFunction(y,BADADDR); - } - SetFunctionFlags(z, GetFunctionFlags(start) | FUNC_FRAME); - SetFunctionCmt(z, form("Unwind handlers of %08X", start), 0); - } - else if (fixFunc) - { - Message("Merging handlers block with main function.\n"); - Unknown(start, y-start); - MakeCode(start); - MakeFunction(start,y); - AnalyseArea(start,y); - } -/* -typedef const struct _s_TryBlockMapEntry { - int tryLow; //00 - int tryHigh; //04 - int catchHigh; //08 - int nCatches; //0C - const struct _s_HandlerType * pHandlerArray; //10 -} TryBlockMapEntry; - -typedef const struct _s_HandlerType { - unsigned int adjectives; //00 - struct TypeDescriptor * pType; //04 - int dispCatchObj; //08 - void * addressOfHandler; //0C -} -*/ - - //parse catch blocks - y = 0; - z = 0x7FFFFFFF; - i=0; - count = Dword(u+12); //nTryBlocks - x = Dword(u+16); //pTryBlocksMap - Message("%d try blocks\n",count); - while (iy) - y=t; //find lowest - if (z>t) - z=t; //find highest - a = a+16; - i2 = i2+1; - } - x = x+20; - i = i+1; - } - hasESP = 0; - if (count>0) - { - hasESP = 1; - //Message("y=0x%08.8X, z=0x%08.8X\n",y,z); - end = FindFuncEnd(y); - if (end==BADADDR) { - if (fixFunc) - { - MakeUnkn(y, 1); - MakeCode(y); - } - if (BADADDR == FindFuncEnd(y)) - { - Message(form("Can't find function end at 0x%08X\n",y)); - return; - } - } - Message(form("Catch blocks: %08X-%08X\n", z, end)); - y = FindFuncEnd(start); - if (y ==-1 || end > y) - { - if (fixFunc) - { - Message("Merging catch blocks with main function.\n"); - Unknown(start, end-start); - MakeCode(start); - MakeFunction(start,end); - AnalyseArea(start,end); - } - else - Message("Catch blocks are not inside the function!\n"); - } - } - - //comment unwind handlers - i=0; - count = Dword(u+4); //maxState - x = Dword(u+8); //pUnwindMap - while (i %d",i, Dword(x))); - x = x+8; - i = i+1; - } - Parse_FuncInfo(u, 0); - CommentStackEH(func, hasESP, EHCookieOffset, GSCookieOffset); -} - -static fixCxx(s, doSEH, fixFunc) { - auto x, start; - start = s; - if ((Word(start) != 0xA164) || (Dword(start+2)!=0)) { - Message("Should start with \"move eax, large fs:0\"!\n"); - return; - } - if ( !doSEH && (Byte(start-10) == 0x55) && (Dword(start-9) == 0xFF6AEC8B)) - { - //(ebp frame) - //00: 55 push ebp - //01: 8B EC mov ebp, esp - //03: 6A FF push 0FFFFFFFFh - //05: 68 xx xx xx xx push loc_xxxxxxxx - //0A: 64 A1 00 00 00 00 mov eax, large fs:0 - //10: 50 push eax - //11: 64 89 25 00 00 00 00 mov large fs:0, esp - start = start - 10; - x = Dword(start+6); - //Message("Match 1\n"); - } - else if (!doSEH && (Word(start+9) == 0xFF6A) && (Byte(start+11)==0x68)) - { - //00: 64 A1 00 00 00 00 mov eax, large fs:0 - //06: xx xx xx - //09: 6A FF push 0FFFFFFFFh - //0B: 68 xx xx xx xx push loc_xxxxxxxx - //10: 50 push eax - // - x = Dword(start+12); - //Message("Match 2\n"); - } - else if (!doSEH && (Word(start-7) == 0xFF6A) && (Byte(start-5)==0x68)) - { - //-7: 6A FF push 0FFFFFFFFh - //-5: 68 xx xx xx xx push loc_xxxxxxxx - //00: 64 A1 00 00 00 00 mov eax, large fs:0 - //06: 50 push eax - //07: 64 89 25 00 00 00 00 mov large fs:0, esp - // - x = Dword(start-4); - start = start-7; - //Message("Match 3\n"); - } - else if (!doSEH && (Word(start+6) == 0xFF6A) && (Byte(start+8)==0x68)) - { - //00: 64 A1 00 00 00 00 mov eax, large fs:0 - //06: 6A FF push 0FFFFFFFFh - //08: 68 xx xx xx xx push loc_xxxxxxxx - //0D: 50 push eax - //0E: 64 89 25 00 00 00 00 mov large fs:0, esp - x = Dword(start+9); - //Message("Match 4\n"); - } - else if (doSEH && (Byte(start-5)==0x68) && (Byte(start-10)==0x68) && (Dword(start-15)==0x6AEC8B55)) - { - //-15: 55 push ebp - //-14: 8B EC mov ebp, esp - //-12: 6A F? push 0FFFFFFF?h - //-10: 68 xx xx xx xx push offset __sehtable$_func1 - //-5 : 68 xx xx xx xx push offset _except_handlerx - //00 : 64 A1 00 00 00 00 mov eax, large fs:0 - x = Dword(start-9); - //Message("Match 5\n"); - if (Byte(start-11) == 0xFF) //-1 = SEH3 - fixSEHFunc(start-15,x, 3, fixFunc); - else if (Byte(start-11) == 0xFE) //-2 = SEH4 - fixSEHFunc(start-15,x, 4, fixFunc); - else - Message("Unknown SEH handler!\n"); - return; - } - else { - //probably a custom handler - //Message("\"push 0FFFFFFFFh; push offset loc\" not found!\n"); - return; - } - Message(form("Fixing function at 0x%08X\n",start)); - ParseCxxHandler(start, x, fixFunc); -} - -static doEHProlog(name,fixFunc) -{ - auto i,s,a; - a=LocByName(name); - if (a==BADADDR) - return; - Message("%s = %08X\n",name,a); - i=RfirstB(a); - while(i!=BADADDR) - { - Message("- %08X - ",i); - - // -5: mov eax, offset loc_XXXXXX - // 0: call __EH_prolog - if (Byte(i-5)==0xB8) - ParseCxxHandler(i-5, Dword(i-4),fixFunc); - else - { - Message(form("No mov eax, offset loc_XXXXXX at %08X!!!\n",i-5)); - return; - } - - if (SetFunctionFlags(i,GetFunctionFlags(i) | FUNC_FRAME)) - { - MakeFrame(i,GetFrameLvarSize(i), 4, GetFrameArgsSize(i)); - if (fixFunc) AnalyseArea(i, FindFuncEnd(i)+1); - Message("OK\n"); - } - else - Message("Error\n"); - i=RnextB(a,i); - } -} - -static doEHPrologs(name, fixFunc) -{ - doEHProlog("j"+name,fixFunc); - doEHProlog("j_"+name,fixFunc); - doEHProlog(name,fixFunc); - doEHProlog("_"+name,fixFunc); -} - -static fixEHPrologs(fixFunc) -{ - doEHPrologs("_EH_prolog",fixFunc); - doEHPrologs("_EH_prolog3",fixFunc); - doEHPrologs("_EH_prolog3_catch",fixFunc); - doEHPrologs("_EH_prolog3_GS",fixFunc); - doEHPrologs("_EH_prolog3_catch_GS",fixFunc); -} - -static isInCodeSeg(a) -{ - if (SegName(a)==".text") - return 1; - else - return 0; -} - -//check a scopetable entry -static checkEntry(a,i,ver) -{ - auto x; - x = Dword(a); - //EnclosingLevel should be negative or less than i - if (x&0x80000000) - { - if (ver==3 && x!=0xFFFFFFFF) - return 0; - if (ver==4 && x!=0xFFFFFFFE) - return 0; - } - else if (x>=i) - return 0; - - x = Dword(a+4); - if ((x!=0) && !isInCodeSeg(x)) //filter should be zero or point to the code - return 0; - x = Dword(a+8); - if (!isInCodeSeg(x)) //handler should point to the code - return 0; - - //check if there are xref to fields (i.e. after the end of the scopetable) - if (((ver!=3)||(i>0)) && isRef(GetFlags(a))) - return 0; - if (isRef(GetFlags(a+4)) || isRef(GetFlags(a+8))) - return 0; - return 1; -} - -//check if there's a valid scopetable and calculate number of entries in it -static checkScopeTable(a, ver) -{ - auto i,k; - if (ver==4) - { - k = Dword(a); - if ((k&0x80000000)==0) //first field should be negative - return 0; - if ((k!=0xFFFFFFFE) && (k&3)!=0) //GS cookie offset should be -2 or dword-aligned - return 0; - k = Dword(a+8); - if ((k&0x80000000)==0) //offset should be negative - return 0; - if ((k&3)!=0) //EH cookie offset should be dword-aligned - return 0; - a = a+16; //move to the scope entries list - } - - i = 0; - while (checkEntry(a,i,ver)) - { - i = i+1; - a = a+12; - } - return i; -} - -/* -struct _EH4_EXCEPTION_REGISTRATION_RECORD { - void* SavedESP; - _EXCEPTION_POINTERS* ExceptionPointers; - _EXCEPTION_REGISTRATION_RECORD* Next; - enum _EXCEPTION_DISPOSITION (*Handler)(_EXCEPTION_RECORD*, void*, _CONTEXT*, void*); - DWORD EncodedScopeTable; - unsigned long TryLevel; -}; -*/ - -static getSEHRec() -{ - auto id; - id = GetStrucIdByName("SEHRegistrationNode"); - if (id==-1) - { - id = AddStruc(-1,"SEHRegistrationNode"); - ForceDWMember(id, 0, "SavedESP"); - ForceDWMember(id, 4, "ExceptionPointers"); - ForceDWMember(id, 8, "Next"); - ForceDWMember(id, 12, "Handler"); - ForceDWMember(id, 16, "EncodedScopeTable"); - ForceDWMember(id, 20, "TryLevel"); - } - return id; -} - -static CommentStackSEH(start, scopetable) -{ - auto x; - CommentStack(start,-24, "__$SEHRec$", getSEHRec()); - if (scopetable) - { - x = Dword(scopetable); - if (x!=-2) - CommentStack(start,x, "__$GSCookie$", -1); - x = Dword(scopetable+8); - CommentStack(start,x, "__$EHCookie$", -1); - } -} - -static fixSEHFunc(func, scopetable, ver, fixFunc) -{ - auto k,i,t,u,x,y,z,hasESP,end; - k = checkScopeTable(scopetable, ver); - if (k==0) - { - Message("Bad scopetable\n"); - return; - } - Message("function: %08X, scopetable: %08X (%d entries)\n", func, scopetable, k); - x = scopetable; - if (ver==4) x = x+16; - - //parse the scopetable! - y = 0; - z = 0x7FFFFFFF; - i = 0; - hasESP = 0; - while (iy) y=t; //find lowest - if (z>t) z=t; //find highest - //Message("t=0x%08.8X\n",t); - //check the code just before, it could be jump to the end of try - if (Byte(t-2)==0xEB) - t = getRelJmpTarget(t-2); - else if (Byte(t-5)==0xE9) - t = getRelJmpTarget(t-5); - //Message("t=0x%08.8X\n",t); - if (t>y) y=t; //find lowest - if (z>t) z=t; //find highest - } - t = Dword(x+8); - //check the code just before, it could be jump to the end of try - if (t>y) y=t; //find lowest - if (z>t) z=t; //find highest - //Message("t=0x%08.8X\n",t); - if (Byte(t-2)==0xEB) - t = getRelJmpTarget(t-2); - else if (Byte(t-5)==0xE9) - t = getRelJmpTarget(t-5); - //Message("t=0x%08.8X\n",t); - if (t>y) y=t; //find lowest - if (z>t) z=t; //find highest - x = x+12; - i = i+1; - } - - - //Message("y=0x%08.8X, z=0x%08.8X\n",y,z); - if (1) - { - end = FindFuncEnd(y); - if (end==BADADDR) { - if (fixFunc) - { - MakeUnkn(y, 1); - MakeCode(y); - } - if (BADADDR == FindFuncEnd(y)) - { - Message(form("Can't find function end at 0x%08X\n",y)); - return; - } - } - //Message(form("Except blocks: %08X-%08X\n", z, end)); - z = FindFuncEnd(func); - if (z ==-1 || end > z && fixFunc) - { - //Message("Merging except blocks with main function.\n"); - Unknown(func, end-func); - MakeCode(func); - MakeFunction(func,end); - AnalyseArea(func,end); - } - } - - //walk once more and fix finally entries - x = scopetable; - if (ver==4) x = x+16; - i = 0; - while (fixFunc && i -//Microsoft C++ RTTI support for IDA -//Version 3.0 2006.01.20 Igor Skochinsky - -//#define DEBUG - -////////////////////////////////////// -// Unknown(long ea, long length) -////////////////////////////////////// -// Mark the ea as unknown for a length -// of length, but don't propagate. -static Unknown( ea, length ) -{ - auto i; - if (ea==BADADDR) - return; -// Message("Unknown(%x,%d)\n",ea, length); - for(i=0; i < length; i++) - { - MakeUnkn(ea+i,0); - } -} - -static ForceQword( x ) { //Make dword, undefine as needed - if (x==BADADDR || x==0) - return; - if (!MakeQword( x )) - { - Unknown(x,8); - MakeQword(x); - } -} - -static ForceDword( x ) { //Make dword, undefine as needed - if (x==BADADDR || x==0) - return; - if (!MakeDword( x )) - { - Unknown(x,4); - MakeDword(x); - } -} - -static ForceWord( x ) { //Make word, undefine as needed - if (x==BADADDR || x==0) - return; - if (!MakeWord( x )) - { - Unknown(x,2); - MakeWord( x ); - } -} - -static ForceByte( x ) { //Make byte, undefine as needed - if (x==BADADDR || x==0) - return; - if (!MakeByte( x )) - { - MakeUnkn(x,0); - MakeByte( x ); - } -} - -static SoftOff ( x ) { //Make offset if !=0 - if (x==BADADDR || x==0) - return; - ForceDword(x); - if (Dword(x)>0 && Dword(x)<=MaxEA()) OpOff(x,0,0); -} - -static GetAsciizStr(x) -{ - auto s,c; - if (x==BADADDR || x==0) - return ""; - s = ""; - while (c=Byte(x)) - { - s = form("%s%c",s,c); - x = x+1; - } - return s; -} - -//check if Dword(vtbl-4) points to typeinfo record and extract the type name from it -static GetTypeName(vtbl) -{ - auto x, s, c; - if (vtbl==BADADDR) - return; - x = Dword(vtbl-4); - if ((!x) || (x==BADADDR)) return ""; -// if (Dword(x)||Dword(x+4)||Dword(x+8)) return ""; - x = Dword(x+12); - if ((!x) || (x==BADADDR)) return ""; - s = ""; - x = x+8; - while (c=Byte(x)) - { - s = form("%s%c",s,c); - x = x+1; - } - return s; -} - -static DwordCmt(x, cmt) -{ - if (x==BADADDR || x==0) - return; - ForceDword(x); - MakeComm(x, cmt); -} -static OffCmt(x, cmt) -{ - if (x==BADADDR || x==0) - return; - SoftOff(x); - MakeComm(x, cmt); -} -static StrCmt(x, cmt) -{ - auto save_str; - if (x==BADADDR || x==0) - return; - MakeUnkn(x, 0); - save_str = GetLongPrm(INF_STRTYPE); - SetLongPrm(INF_STRTYPE,0); - MakeStr(x, BADADDR); - MakeName(x, ""); - MakeComm(x, cmt); - SetLongPrm(INF_STRTYPE,save_str); -} -static DwordArrayCmt(x, n, cmt) -{ - if (x==BADADDR || x==0) - return; - Unknown(x,4*n); - ForceDword(x); - MakeArray(x,n); - MakeComm(x, cmt); -} - -//check if values match a pattern -static matchBytes(addr,match) -{ - auto i,len,s; - len = strlen(match); - if (len%2) - { - Warning("Bad match string in matchBytes: %s",match); - return 0; - } - i=0; - while (i0) - { - s = form("%c%s",'A'+x%16,s); - x = x / 16; - } - return sign?"?":""+s+"@"; - } -} -static Parse_BCD(x, indent) -{ - auto indent_str,i,a,s; - if (x==BADADDR || x==0) - return; - indent_str="";i=0; - while(i0) //check numContainedBases - DumpNestedClass(a+4, indent+1, n); //nested classes following - a=a+4*(n+1); - i=i+n+1; - } -} - -static Parse_CHD(x, indent) -{ - auto indent_str,i,a,n,p,s; - if (x==BADADDR || x==0) - return; - indent_str="";i=0; - while(i ??0exception@@QAE@ABV0@@Z = exception::exception(exception const &) - MakeName(Dword(x+24),"??0"+substr(s,4,-1)+"QAE@ABV0@@Z"); - return s; -} - -static Parse_CTA(x, indent) -{ -/* -typedef const struct _s__CatchableTypeArray { - int nCatchableTypes; - _CatchableType *arrayOfCatchableTypes[]; -} _CatchableTypeArray; -*/ - - auto indent_str,i,a,n,p,s; - if (x==BADADDR || x==0) - return; - indent_str="";i=0; - while(i ??1exception@@UAE@XZ = exception::~exception(void) - MakeName(Dword(x+4),"??1"+substr(s,4,-1)+"UAE@XZ"); - i = Dword(x); //attributes - a = DemangleTIName(s); - if (i&1) a = "const "+a; - if (i&2) a = "volatile "+a; - a = "throw "+a; - Message("%s\n",a); - MakeRptCmt(x, a); - } - return s; -} - -static Parse_TryBlock(x, indent) -{ -/* -typedef const struct _s_TryBlockMapEntry { - int tryLow; //00 - int tryHigh; //04 - int catchHigh; //08 - int nCatches; //0C - const struct _s_HandlerType * pHandlerArray; //10 -} TryBlockMapEntry; - -typedef const struct _s_HandlerType { - unsigned int adjectives; //00 - struct TypeDescriptor * pType; //04 - int dispCatchObj; //08 - void * addressOfHandler; //0C -} -*/ - auto indent_str,i,a,n,p,s; - if (x==BADADDR || x==0) - return; - indent_str="";i=0; - while(i0xF) { - Message("Magic is not 1993052Xh!\n"); - return; - } - indent_str="";i=0; - while(i=32 || Dword(x)>0x19930520) - { -#ifdef DEBUG - Message(indent_str+" pESTypeList: %08.8Xh\n", Dword(x+28)); -#endif - OffCmt(x+28, "pESTypeList"); - } - if ((Dword(x+8)-x)>=36 || Dword(x)>0x19930521) - { -#ifdef DEBUG - Message(indent_str+" EHFlags: %08.8Xh\n", Dword(x+32)); -#endif - OffCmt(x+32, "EHFlags"); - } - return s; -} - -//get class name for this vtable instance -static GetVtableClass(x) -{ - auto offset, n, i, s, a, p; - offset = Dword(x+4); - x = Dword(x+16); //Class Hierarchy Descriptor - - a=Dword(x+12); //pBaseClassArray - n=Dword(x+8); //numBaseClasses - i = 0; - s = ""; - while(i -#include "vtable.idc" -#include "ms_rtti.idc" - -static GetAsciizStr(x) -{ - auto s,c; - s = ""; - while (c=Byte(x)) - { - s = form("%s%c",s,c); - x = x+1; - } - return s; -} - -// ??1?$CEventingNode@VCMsgrAppInfoImpl@@PAUIMsgrUser@@ABUtagVARIANT@@@@UAE@XZ -// ??_G CWin32Heap@ATL @@UAEPAXI@Z -// ATL::CWin32Heap::`scalar deleting destructor'(uint) -// .?AV?$CEventingNode@VCMsgrAppInfoImpl@@PAUIMsgrUser@@ABUtagVARIANT@@@@ -// ??_7?$CEventingNode@VCMsgrAppInfoImpl@@PAUIMsgrUser@@ABUtagVARIANT@@@@6B@ -// ??_G?$CEventingNode@VCMsgrAppInfoImpl@@PAUIMsgrUser@@ABUtagVARIANT@@@@@@UAEPAXI@Z - -#define SN_constructor 1 -#define SN_destructor 2 -#define SN_vdestructor 3 -#define SN_scalardtr 4 -#define SN_vectordtr 5 - -static MakeSpecialName(name, type, adj) -{ - auto basename; - //.?AUA@@ = typeid(struct A) - //basename = A@@ - basename = substr(name,4,-1); - if (type==SN_constructor) - { - //??0A@@QAE@XZ = public: __thiscall A::A(void) - if (adj==0) - return "??0"+basename+"QAE@XZ"; - else - return "??0"+basename+"W"+MangleNumber(adj)+"AE@XZ"; - } - else if (type==SN_destructor) - { - //??1A@@QAE@XZ = "public: __thiscall A::~A(void)" - if (adj==0) - return "??1"+basename+"QAE@XZ"; - else - return "??1"+basename+"W"+MangleNumber(adj)+"AE@XZ"; - } - else if (type==SN_vdestructor) - { - //??1A@@UAE@XZ = public: virtual __thiscall A::~A(void) - if (adj==0) - return "??1"+basename+"UAE@XZ"; - else - return "??1"+basename+"W"+MangleNumber(adj)+"AE@XZ"; - } - else if (type==SN_scalardtr) // - { - //??_GA@@UAEPAXI@Z = public: virtual void * __thiscall A::`scalar deleting destructor'(unsigned int) - if (adj==0) - return "??_G"+basename+"UAEPAXI@Z"; - else - return "??_G"+basename+"W"+MangleNumber(adj)+"AEPAXI@Z"; - } - else if (type==SN_vectordtr) - { - //.?AUA@@ = typeid(struct A) - //??_EA@@UAEPAXI@Z = public: virtual void * __thiscall A::`vector deleting destructor'(unsigned int) - if (adj==0) - return "??_E"+basename+"QAEPAXI@Z"; - else - return "??_E"+basename+"W"+MangleNumber(adj)+"AEPAXI@Z"; - } -} - -static DumpNestedClass2(x, indent, contained, f) -{ - auto indent_str,i,a,n,p,s,off; - indent_str="";i=0; - while(i0) //check numContainedBases - DumpNestedClass2(a+4, indent+1, n, f); //nested classes following - a=a+4*(n+1); - i=i+n+1; - } -} - -static Parse_CHD2(x, indent, f) -{ - auto indent_str,i,a,n,p,s,off; - indent_str="";i=0; - while(i ea ) // InSort - { - for ( ; idx != -1; idx = GetNextIndex(AR_LONG, id, idx) ) - { - val = GetArrayElement(AR_LONG, id, idx); - SetArrayLong(id, idx, ea); - ea = val; - } - } - } - SetArrayLong(id, GetLastIndex(AR_LONG, id) + 1, ea); -} -static getArraySize(id) -{ - auto idx, count; - count = 0; - for ( idx = GetFirstIndex(AR_LONG, id); idx != -1; idx = GetNextIndex(AR_LONG, id, idx) ) - { - count++; - } - return count; -} - -static doAddrList(name,f) -{ - auto idx, id, val, ctr, dtr; - id = GetArrayId("AddrList"); - ctr = 0; dtr = 0; - if ( name!=0 && id != -1 ) - { - Message("refcount:%d\n",getArraySize(id)); - if (getArraySize(id)!=2) - return; - for ( idx = GetFirstIndex(AR_LONG, id); idx != -1; idx = GetNextIndex(AR_LONG, id, idx) ) - { - val = GetArrayElement(AR_LONG, id, idx); - if (Byte(val)==0xE9) - val = getRelJmpTarget(val); - if ((substr(Name(val),0,3)=="??1")) - dtr = val; - else - ctr = val; - } - } - if (ctr!=0 && dtr!=0) - { - Message(" constructor at %a\n",ctr); - fprintf(f, " constructor: %08.8Xh\n",ctr); - MakeName(ctr, MakeSpecialName(name,SN_constructor,0)); - } - DeleteArray(GetArrayId("AddrList")); -} - -//check if there's a vtable at a and dump into to f -//returns position after the end of vtable -static DoVtable(a,f) -{ - auto x,y,s,p,q,i,name; - - //check if it looks like a vtable - y = GetVtableSize(a); - if (y==0) - return a+4; - s = form("%08.8Xh: possible vtable (%d methods)\n", a, y); - Message(s); - fprintf(f,s); - - //check if it's named as a vtable - name = Name(a); - if (substr(name,0,4)!="??_7") name=0; - - x = Dword(a-4); - //otherwise try to get it from RTTI - if (IsValidCOL(x)) - { - Parse_Vtable(a); - if (name==0) - name = GetVtblName2(x); - //only output object tree for main vtable - if (Dword(x+4)==0) - Parse_CHD2(Dword(x+16),0,f); - MakeName(a, name); - } - if (name!=0) - { - s = Demangle(name, 0x00004006); - Message("%s\n",s); - fprintf(f, "%s\n", s); - //convert vtable name into typeinfo name - name = ".?AV"+substr(name, 4, strstr(name,"@@6B")+2); - } - { - DeleteArray(GetArrayId("AddrList")); - Message(" referencing functions: \n"); - fprintf(f," referencing functions: \n"); - q = 0; i = 1; - for ( x=DfirstB(a); x != BADADDR; x=DnextB(a,x) ) - { - p = funcStart(x); - if (p!=-1) - { - if (q==p) - i++; - else - { - if (q) { - if (i>1) s = form(" %a (%d times)",q,i); - else s = form(" %a",q); - //if (strstr(Name(p),"sub_")!=0 && strstr(Name(p),"j_sub_")!=0) - if (hasName(GetFlags(q))) - s = s+" ("+Demangle(Name(q),8)+")"; - s = s+"\n"; - Message(s);fprintf(f,s); - AddAddr(q); - } - i = 1; - q = p; - } - } - } - if (q) - { - if (i>1) s = form(" %a (%d times)",q,i); - else s = form(" %a",q); - if (hasName(GetFlags(q))) - s = s+" ("+Demangle(Name(q),8)+")"; - s = s+"\n"; - Message(s);fprintf(f,s); - AddAddr(q); - } - - x = a; - while (y>0) - { - p = Dword(x); - if (GetFunctionFlags(p) == -1) - { - MakeCode(p); - MakeFunction(p, BADADDR); - } - checkSDD(p,name,a,0,f); - y--; - x = x+4; - } - doAddrList(name,f); - Message("\n"); - fprintf(f,"\n"); - } - return x; -} - -static scan_for_vtables(void) -{ - auto rmin, rmax, cmin, cmax, s, a, x, y,f; - s = FirstSeg(); - f = fopen("objtree.txt","w"); - rmin = 0; rmax = 0; - while (s!=BADADDR) - { - if (SegName(s)==".rdata") - { - rmin = s; - rmax = NextSeg(s); - } - else if (SegName(s)==".text") - { - cmin = s; - cmax = NextSeg(s); - } - s = NextSeg(s); - } - if (rmin==0) {rmin=cmin; rmax=cmax;} - a = rmin; - Message(".rdata: %08.8Xh - %08.8Xh, .text %08.8Xh - %08.8Xh\n", rmin, rmax, cmin, cmax); - while (a=cmin && x - //74 07 jz short @@no_free - //56 push esi - //E8 CA 2D 0D 00 call operator delete(void *) - //59 pop ecx - // @@no_free: - //8B C6 mov eax, esi - //5E pop esi - //C2 04 00 retn 4 - t = SN_scalardtr; - } - else if (matchBytes(x,"538A5C2408568BF1F6C302742B8B46FC578D7EFC68????????506A??56E8") || - matchBytes(x,"538A5C2408F6C302568BF1742E8B46FC5768????????8D7EFC5068????????56E8")) - { - //53 push ebx - //8A 5C 24 08 mov bl, [esp+arg_0] - //56 push esi - //8B F1 mov esi, ecx - //F6 C3 02 test bl, 2 - //74 2B jz short loc_100037F8 - //8B 46 FC mov eax, [esi-4] - //57 push edi - //8D 7E FC lea edi, [esi-4] - //68 xx xx xx xx push offset class::~class(void) - //50 push eax - //6A xx push xxh - //56 push esi - //E8 xx xx xx xx call `eh vector destructor iterator'(void *,uint,int,void (*)(void *)) - t = SN_vectordtr; - Message(" vector deleting destructor at %a\n",x); - if (name!=0) - a = Dword(x+21); - if (gate && Byte(a)==0xE9) - { - a = getRelJmpTarget(a); - } - } - - if (t>0) - { - if (t==SN_vectordtr) - s = "vector"; - else - s = "scalar"; - Message(" %s deleting destructor at %a\n",s,x); - fprintf(f, " %s deleting destructor: %08.8Xh\n",s,x); - if (name!=0) - MakeName(x, MakeSpecialName(name,t,0)); - if (a!=BADADDR) - { - Message(" virtual destructor at %a\n",a); - fprintf(f, " destructor: %08.8Xh\n",a); - if (name!=0) - MakeName(a, MakeSpecialName(name,SN_vdestructor,0)); - } - CommentStack(x, 4, "__flags$",-1); - } - return t; -} - -static ParseVtbl2() -{ - auto a, n; - a = ScreenEA(); - if (GetVtableSize(a)==0) - { - Warning("This location doesn't look like a vtable!"); - return; - } - if (!hasName(GetFlags(a)) && !IsValidCOL(Dword(a-4))) - { - n = AskStr("","Enter class name"); - if (n!=0) - MakeName(a,"??_7"+n+"@@6B@"); - } - DoVtable(a,0); -} - -static AddHotkeys() -{ - AddHotkey("Alt-F7","ParseFI"); - AddHotkey("Alt-F8","ParseVtbl2"); - AddHotkey("Alt-F9","ParseExc"); - Message("Use Alt-F7 to parse FuncInfo\n"); - Message("Use Alt-F8 to parse vtable\n"); - Message("Use Alt-F9 to parse throw info\n"); -} - -static main(void) -{ - if(AskYN(1, "Do you wish to scan the executable for vtables/RTTI?")) - { - Message("Scanning..."); - scan_for_vtables(); - //Message("See objtree.txt for the class list/hierarchy.\n"); - Exec("objtree.txt"); - } - AddHotkeys(); -} \ No newline at end of file diff --git a/reversing/ms_rtti64.idc b/reversing/ms_rtti64.idc deleted file mode 100644 index da26ae916..000000000 --- a/reversing/ms_rtti64.idc +++ /dev/null @@ -1,1086 +0,0 @@ -#include - -#define isRef(F) ((F & FF_REF) != 0) -#define hasName(F) ((F & FF_NAME) != 0) - -static GetVtableSize(a) -{ - auto b,c,f; - b = BADADDR; - f = GetFlags(a); - do { - f = GetFlags(a); - if (b == BADADDR) //first entry - { - b=a; - if (!(isRef(f) && (hasName(f) || (f&FF_LABL)))) - { - return 0; - } - } - else if (isRef(f)) //might mean start of next vtable - break; - - if (!hasValue(f) || !isData(f)) - break; - c = Qword(a); - if (c) - { - f = GetFlags(c); - if (!hasValue(f) || !isCode(f) || Dword(c)==0) - break; - } - a = a+8; - } - while (1); - if (b!=BADADDR) - { - c = (a-b)/8; - return c; - } - else - { - return 0; - } -} - -static Unknown( ea, length ) -{ - auto i; - if (ea==BADADDR) - return; - for(i=0; i < length; i++) - { - MakeUnkn(ea+i,0); - } -} - -static DwordRel(x) -{ - x = Dword(x) + 0x140000000; - return x; -} - -static ForceQword( x ) { //Make dword, undefine as needed - if (x==BADADDR || x==0) - return; - if (!MakeQword( x )) - { - Unknown(x,8); - MakeQword(x); - } -} - -static ForceDword( x ) { //Make dword, undefine as needed - if (x==BADADDR || x==0) - return; - if (!MakeDword( x )) - { - Unknown(x,4); - MakeDword(x); - } -} - -static SoftOff64 ( x ) { //Make 64-bit offset if !=0 - if (x==BADADDR || x==0) - return; - ForceQword(x); - if (Qword(x)>0 && Qword(x)<=MaxEA()) OpOff(x, 0, 0); -} - -static SoftOff ( x ) { //Make 32-bit base-relative offset if !=0 - if (x==BADADDR || x==0) - return; - ForceDword(x); - if (Dword(x)>0 && Dword(x)<=MaxEA()) OpOffEx(x,0,REF_OFF32|REFINFO_RVA|REFINFO_SIGNEDOP, -1, 0, 0); -} - -//check if pointer is to typeinfo record and extract the type name from it -static GetTypeName(vtbl) -{ - auto x; - if (vtbl==BADADDR) - return; - x = DwordRel(vtbl+12); - if ((!x) || (x==BADADDR)) return ""; - return GetAsciizStr(x+16); -} - -static DwordCmt(x, cmt) -{ - if (x==BADADDR || x==0) - return; - ForceDword(x); - MakeComm(x, cmt); -} -static OffCmt(x, cmt) -{ - if (x==BADADDR || x==0) - return; - SoftOff(x); - if (cmt != "") - MakeComm(x, cmt); -} -static OffCmt64(x, cmt) -{ - if (x==BADADDR || x==0) - return; - SoftOff64(x); - MakeComm(x, cmt); -} -static StrCmt(x, cmt) -{ - auto save_str; - if (x==BADADDR || x==0) - return; - MakeUnkn(x, 0); - save_str = GetLongPrm(INF_STRTYPE); - SetLongPrm(INF_STRTYPE,0); - MakeStr(x, BADADDR); - MakeName(x, ""); - MakeComm(x, cmt); - SetLongPrm(INF_STRTYPE,save_str); -} -static DwordArrayCmt(x, n, cmt) -{ - if (x==BADADDR || x==0) - return; - Unknown(x,4*n); - ForceDword(x); - MakeArray(x,n); - MakeComm(x, cmt); -} - -//check if values match a pattern -static matchBytes(addr,match) -{ - auto i,len,s; - len = strlen(match); - if (len%2) - { - Warning("Bad match string in matchBytes: %s",match); - return 0; - } - i=0; - while (i 2147483647) x = x - 4294967296; - if (x<0) - { - sign = 1; - x = -x; - } - if (x==0) - return "A@"; - else if (x<=10) - return form("%s%d",sign?"?":"",x-1); - else - { - while (x>0) - { - s = form("%c%s",'A'+x%16,s); - x = x / 16; - } - return sign?"?":""+s+"@"; - } -} -static Parse_BCD(x, indent) -{ - auto indent_str,i,a,s; - if (x==BADADDR || x==0) - return; - indent_str="";i=0; - while(i0) //check numContainedBases - DumpNestedClass(a+4, indent+1, n); //nested classes following - a=a+4*(n+1); - i=i+n+1; - } -} - -static Parse_CHD(x, indent) -{ - auto indent_str,i,a,n,p,s; - if (x==BADADDR || x==0) - return; - indent_str="";i=0; - while(i ea ) // InSort - { - for ( ; idx != -1; idx = GetNextIndex(AR_LONG, id, idx) ) - { - val = GetArrayElement(AR_LONG, id, idx); - SetArrayLong(id, idx, ea); - ea = val; - } - } - } - SetArrayLong(id, GetLastIndex(AR_LONG, id) + 1, ea); -} -static getArraySize(id) -{ - auto idx, count; - count = 0; - for ( idx = GetFirstIndex(AR_LONG, id); idx != -1; idx = GetNextIndex(AR_LONG, id, idx) ) - { - count++; - } - return count; -} - -static doAddrList(name) -{ - auto idx, id, val, ctr, dtr; - id = GetArrayId("AddrList"); - ctr = 0; dtr = 0; - if ( name!=0 && id != -1 ) - { - if (getArraySize(id)!=2) - return; - for ( idx = GetFirstIndex(AR_LONG, id); idx != -1; idx = GetNextIndex(AR_LONG, id, idx) ) - { - val = GetArrayElement(AR_LONG, id, idx); - if (Byte(val)==0xE9) - val = getRelJmpTarget(val); - if ((substr(Name(val),0,3)=="??1")) - dtr = val; - else - ctr = val; - } - } - if (ctr!=0 && dtr!=0) - { - MakeName(ctr, MakeSpecialName(name,SN_constructor,0)); - } - DeleteArray(GetArrayId("AddrList")); -} - -//check if there's a vtable at a and dump into to f -//returns position after the end of vtable -static DoVtable(a) -{ - auto x,y,s,p,q,i,name; - - //check if it looks like a vtable - y = GetVtableSize(a); - if (y == 0) - return a+8; - - //check if it's named as a vtable - name = Name(a); - if (substr(name,0,4)!="??_7") name=0; - - x = Qword(a-8); - //otherwise try to get it from RTTI - if (IsValidCOL(x)) - { - Parse_Vtable(a); - if (name==0) - name = GetVtblName(x); - MakeName(a, name); - } - if (name!=0) - { - name = ".?AV"+substr(name, 4, strstr(name,"@@6B")+2); - } - { - DeleteArray(GetArrayId("AddrList")); - q = 0; i = 1; - for ( x=DfirstB(a); x != BADADDR; x=DnextB(a,x) ) - { - p = funcStart(x); - if (p!=-1) - { - if (q==p) - i++; - else - { - if (q) { - AddAddr(q); - } - i = 1; - q = p; - } - } - } - if (q) - { - AddAddr(q); - } - - x = a; - while (y>0) - { - p = Dword(x); - if (GetFunctionFlags(p) == -1) - { - MakeCode(p); - MakeFunction(p, BADADDR); - } - checkSDD(p,name,a,0); - y--; - x = x+8; - } - doAddrList(name); - } - return x; -} - -static scan_for_vtables(void) -{ - auto rmin, rmax, cmin, cmax, s, a, x, y; - s = FirstSeg(); - rmin = 0; rmax = 0; - while (s!=BADADDR) - { - if (SegName(s)==".rdata") - { - rmin = s; - rmax = NextSeg(s); - } - else if (SegName(s)==".text") - { - cmin = s; - cmax = NextSeg(s); - } - s = NextSeg(s); - } - if (rmin==0) {rmin=cmin; rmax=cmax;} - a = rmin; - while (a=cmin && x - //74 07 jz short @@no_free - //56 push esi - //E8 CA 2D 0D 00 call operator delete(void *) - //59 pop ecx - // @@no_free: - //8B C6 mov eax, esi - //5E pop esi - //C2 04 00 retn 4 - t = SN_scalardtr; - } - else if (matchBytes(x,"538A5C2408568BF1F6C302742B8B46FC578D7EFC68????????506A??56E8") || - matchBytes(x,"538A5C2408F6C302568BF1742E8B46FC5768????????8D7EFC5068????????56E8")) - { - //53 push ebx - //8A 5C 24 08 mov bl, [esp+arg_0] - //56 push esi - //8B F1 mov esi, ecx - //F6 C3 02 test bl, 2 - //74 2B jz short loc_100037F8 - //8B 46 FC mov eax, [esi-4] - //57 push edi - //8D 7E FC lea edi, [esi-4] - //68 xx xx xx xx push offset class::~class(void) - //50 push eax - //6A xx push xxh - //56 push esi - //E8 xx xx xx xx call `eh vector destructor iterator'(void *,uint,int,void (*)(void *)) - t = SN_vectordtr; - if (name!=0) - a = Dword(x+21); - if (gate && Byte(a)==0xE9) - { - a = getRelJmpTarget(a); - } - } - - if (t>0) - { - if (t==SN_vectordtr) - s = "vector"; - else - s = "scalar"; - if (name!=0) - MakeName(x, MakeSpecialName(name,t,0)); - if (a!=BADADDR) - { - if (name!=0) - MakeName(a, MakeSpecialName(name,SN_vdestructor,0)); - } - CommentStack(x, 4, "__flags$",-1); - } - return t; -} - -static main(void) -{ - scan_for_vtables(); -} \ No newline at end of file diff --git a/reversing/parseVTableLinux.pl b/reversing/parseVTableLinux.pl deleted file mode 100644 index 4f0e35569..000000000 --- a/reversing/parseVTableLinux.pl +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/perl - -#local $/ = "\n\n"; -while(<>){ - if(/([0-9A-Z]+).*?([a-z]+_.+?)st\n/s){ - print "\n"; - } -} \ No newline at end of file diff --git a/reversing/vtable-linux-gcc.idc b/reversing/vtable-linux-gcc.idc deleted file mode 100644 index 33217d68c..000000000 --- a/reversing/vtable-linux-gcc.idc +++ /dev/null @@ -1,43 +0,0 @@ -#include - -static main(void) -{ - auto SearchString; - auto searchStart; - auto searchTest; - auto occurances; - auto szFilePath,hFile; - auto strSize; - auto vTablePtr; - auto vTableLoc; - auto myString; - auto nextAddress; - auto byteVal; - occurances = 0; - searchStart = 0; - - SearchString = AskStr("", "What vtable binary to search?"); - szFilePath = AskFile(1, "*.txt", "Select output dump file:"); - hFile = fopen(szFilePath, "wb"); - Message("Scanning..."); - searchStart = FindBinary(searchStart, SEARCH_DOWN, SearchString); - while(searchStart != BADADDR){ - MakeStr(searchStart-2, BADADDR); - myString = GetString(searchStart-2,-1,GetStringType(searchStart-2)); - strSize = strlen(myString); - nextAddress = searchStart-2+strSize+1; - byteVal = Byte(nextAddress); - while(byteVal == 0){ - nextAddress++; - byteVal = Byte(nextAddress); - } - MakeDword(nextAddress); - vTableLoc = FindBinary(141301056,SEARCH_DOWN, form("%X", nextAddress)); - MakeDword(nextAddress+4); - fprintf(hFile,"%a\t%s\n",vTableLoc,myString); - searchStart = FindBinary(searchStart+1, SEARCH_DOWN, SearchString); - occurances++; - } - fclose(hFile); - Message("Found %i Occurances",occurances); -} \ No newline at end of file diff --git a/reversing/vtable.idc b/reversing/vtable.idc deleted file mode 100644 index 40bcca5ba..000000000 --- a/reversing/vtable.idc +++ /dev/null @@ -1,114 +0,0 @@ -#include -static GetVtableSize(a) -{ - auto b,c,f; - b = BADADDR; - f = GetFlags(a); - //Message("checking vtable at: %a\n",a); - do { - f = GetFlags(a); - if (b == BADADDR) //first entry - { - b=a; - if (!(isRef(f) && (hasName(f) || (f&FF_LABL)))) - { - //Message("Start of vtable should have a xref and a name (auto or manual)\n"); - return 0; - } - } - else if (isRef(f)) //might mean start of next vtable - break; - - //Message("hasValue(f):%d, isData(f):%d, isOff0(f):%d, (f & DT_TYPE) != FF_DWRD:%d\n", - // hasValue(f), isData(f), isOff0(f), (f & DT_TYPE) != FF_DWRD); - if (!hasValue(f) || !isData(f) /*|| !isOff0(f) || (f & DT_TYPE) != FF_DWRD*/) - break; - c = Dword(a); - if (c) - { - f = GetFlags(c); - if (!hasValue(f) || !isCode(f) || Dword(c)==0) - break; - } - a = a+4; - } - while (1); - if (b!=BADADDR) - { - c = (a-b)/4; - //Message("vtable: %08X-%08X, methods: %d\n",b,a,c); - return c; - } - else - { - //Message("no vtable at this EA\n"); - return 0; - } -} - -static main(void) -{ - auto a, c, k, name, i, struct_id, bNameMethods,e, methName; - a = ScreenEA(); - k = GetVtableSize(a); - if (k>100) - { - if (1!=AskYN(0,form("%08X: This vtable appears to have %d methods. Are you sure you want to continue?",a,k))) - return; - } - if (hasName(GetFlags(a))) - name = Name(a); - else - name = ""; - if (substr(name,0,4)=="??_7") - name = substr(name,4,strlen(name)-5); - name = AskStr(name,"Please enter the class name"); - if (name==0) - return; - struct_id = GetStrucIdByName(name+"_vtable"); - if (struct_id != -1) - { - i = AskYN(0,form("A vtable structure for %s already exists. Are you sure you want to remake it?",name)); - if (i==-1) - return; - if (i==1) - { - DelStruc(struct_id); - struct_id = AddStrucEx(-1,name+"_vtable",0); - } - } - else - struct_id = AddStrucEx(-1,name+"_vtable",0); - if (struct_id == -1) - Warning("Could not create the vtable structure!.\nPlease check the entered class name."); - bNameMethods = (1==AskYN(0,form("Would you like to assign auto names to the virtual methods (%s_virtXX)?",name))); - for (i=0;i %08X, args: 0x%X",c,GetFrameArgsSize(c)),1); - } - MakeName(a,"??_7"+name+"@@6B@"); -}