/* This file has been generated by the Hex-Rays decompiler. Copyright (c) 2007-2011 Hex-Rays Detected compiler: Visual C++ */ #include #include #include //------------------------------------------------------------------------- // Data declarations extern _UNKNOWN loc_44B5D0; // weak extern _UNKNOWN loc_492D0D; // weak extern _UNKNOWN loc_499BC9; // weak extern _UNKNOWN loc_49BFE4; // weak extern _UNKNOWN loc_49DD10; // weak extern _UNKNOWN loc_4A35CC; // weak // extern PFUNCTION_TABLE_ACCESS_ROUTINE64 SymFunctionTableAccess64; // extern PGET_MODULE_BASE_ROUTINE64 SymGetModuleBase64; extern char aSystemTimeUtc[18]; // weak extern char aMsg[4]; // weak extern char aSS_0[]; // idb extern char aLocalTime[18]; // weak extern char aSS[]; // idb extern char aFailedScriptor[24]; // weak extern char aFailedGetmyser[25]; // weak extern char aFatalErrorCanT[112]; // weak extern char aS[]; // idb extern char aIAmTheSSWorldn[]; // idb extern char aSuccessedScrip[27]; // weak extern char aDataserverinfo[29]; // weak extern char aFailedGlobal_7[44]; // weak extern char a__9dataShineMa[]; // idb extern char dataShi_7::a__[]; // idb extern char aErrorAttendrew[]; // idb extern char aFailedGlobal_6[58]; // weak extern char a__9dataShineTu[41]; // weak extern char dataShi_6::a__[44]; // weak extern char aFailedGlobal_5[49]; // weak extern char a__9dataShineAt[]; // idb extern char dataShi_5::a__[]; // idb extern char aErrorHoly_prom[]; // idb extern char aFailedGlobal_4[54]; // weak extern char a__9dataShineHo[]; // idb extern char dataShi_4::a__[]; // idb extern char aNotFoundHair_4[]; // idb extern char aUnichange01[12]; // weak extern char aNotFoundHair_3[]; // idb extern char aNotFoundHair_2[]; // idb extern char aNotFoundHair_1[]; // idb extern char aNotFoundHair_0[]; // idb extern char aNotFoundHairsh[]; // idb extern char aHairshop05[11]; // weak extern char aHairshop04[11]; // weak extern char aHairshop03[11]; // weak extern char aHairshop02[11]; // weak extern char aHairshop01[11]; // weak extern char aFailedGlobal_3[45]; // weak extern char a__9dataShine_0[]; // idb extern char dataShi_3::a__[]; // idb extern char aFailedGlobal_2[50]; // weak extern char a__9dataShineHa[]; // idb extern char dataShi_2::a__[]; // idb extern char aFailedGlobal_1[45]; // weak extern char a__9dataShineFa[]; // idb extern char dataShi_1::a__[]; // idb extern char aFailedGlobal_0[57]; // weak extern char a__9dataShineDe[40]; // weak extern char dataShi_0::a__[43]; // weak extern char aFailedGlobalGa[45]; // weak extern char a__9dataShineIt[]; // idb extern char dataShine::a__[]; // idb extern char aFailedSessionM[31]; // weak extern char aFailedStartLis[30]; // weak extern char aSuccessedSessi[34]; // weak extern char aFatalErrorCa_0[108]; // weak extern char aConnectToGamel[]; // idb extern _UNKNOWN unk_4ABCE0; // weak extern char aServiceUnknown[25]; // weak extern char aServiceRemoveF[23]; // weak extern char aServiceRemoveO[19]; // weak extern char aServiceUploadF[23]; // weak extern char aServiceUploadO[24]; // weak extern char aServiceStartNo[28]; // weak extern int dword_4ABDC4; // weak extern char byte_4ABDC8; // weak extern char aRemove[7]; // weak extern char aUpload[7]; // weak extern char aLaunchingTheSe[26]; // weak extern char asc_4ABEAC[56]; // weak extern char aUs2015T08[15]; // idb extern char aFailedCreateMa[29]; // weak extern char aEndOfMainD[]; // idb extern char aItemdataboxOpe[45]; // weak extern char aCpfscharact_14[50]; // idb extern char aCpfscharacterW[50]; // idb extern char aErrorGetitem_o[]; // idb extern char asc_4AC0C8[3]; // idb extern char aP_3[6]; // idb extern char aP_2[6]; // idb extern char aP_1[6]; // idb extern char aP_0[6]; // idb extern char aP[6]; // idb extern char aErrorP[15]; // idb extern char aErrorCpfscha_2[]; // idb extern char aErrorCpfscha_1[]; // idb extern char aErrorCpfscha_0[]; // idb extern char aErrorCpfschara[]; // idb extern char aDebug[16]; // idb extern char aCpfscharacterF[]; // idb extern char aFatalErrorCp_0[]; // idb extern char aFatalErrorCpfs[]; // idb extern char aErrorCgamedb_c[]; // idb extern char aErrorFc_nc_cha[]; // idb extern char aErrorFc_nc_c_0[]; // idb extern char aCharsavelocati[]; // idb extern char aCharsavelevele[]; // idb extern char aErrorCharsaveq[]; // idb extern char aErrorCharsaves[]; // idb extern char aErrorCharsav_1[]; // idb extern char aErrorCharsav_0[]; // idb extern char aCharsavestatEr[]; // idb extern char aErrorCharsav_3[]; // idb extern char aErrorCharsav_2[]; // idb extern char aErrorCharsavet[]; // idb extern char aCharsavepkcoun[]; // idb extern char aCharsaverestex[]; // idb extern char aCharsaveauto_p[]; // idb extern char aCpfscharacte_0[]; // idb extern char aErrorCharsetqu[]; // idb extern char aErrorChardelqu[]; // idb extern char aNeed[]; // idb extern char asc_4ACA20[8]; // idb extern char aErrorCpfsch_13[]; // idb extern char aErrorCpfsch_12[]; // idb extern char aErrorCpfsch_11[]; // idb extern char aErrorCpfsch_10[]; // idb extern char aErrorCpfscha_9[]; // idb extern char aErrorCpfscha_8[]; // idb extern char aErrorCpfscha_7[]; // idb extern char aErrorCpfscha_6[]; // idb extern char aErrorCpfscha_5[]; // idb extern char aErrorCpfscha_4[]; // idb extern char aErrorCpfscha_3[]; // idb extern _UNKNOWN unk_4ACEF0; // weak extern char asc_4ACF40[]; // idb extern char aCpfscharacte_1[]; // idb extern char aErrorCpfsch_14[]; // idb extern char aErrorCpfsch_15[]; // idb extern char aErrorCpfsch_17[]; // idb extern char aErrorCpfsch_16[]; // idb extern char aErrorCpfsch_18[]; // idb extern char aErrorCpfsch_19[]; // idb extern char asc_4AD260[8]; // idb extern char asc_4AD2A8[13]; // idb extern char aErrorCpfsch_20[]; // idb extern char aErrorCpfsch_22[80]; // weak extern char aErrorCpfsch_21[]; // idb extern char aFailedFc_nc_it[]; // idb extern char aNeedCen[]; // idb extern char asc_4AD490[3]; // idb extern char asc_4AD4F8[3]; // idb extern char aFatalErrorCp_2[]; // idb extern char aFailedFc_nc__1[]; // idb extern char aFatalErrorCp_1[]; // idb extern char aFailedFc_nc__0[]; // idb extern char aErrorCpfsch_23[]; // idb extern char aFatalErrorCp_4[]; // idb extern char aFailedFc_nc__2[]; // idb extern char aFatalErrorCp_3[]; // idb extern char aFailedFc_nc__3[]; // idb extern char asc_4AD870[78]; // idb extern char aErrorCpfsch_25[]; // idb extern char aErrorCpfsch_24[]; // idb extern char aErrorFc_nc_i_0[]; // idb extern char aErrorFc_nc_ite[]; // idb extern char aErrorFc_nc_i_2[]; // idb extern char aErrorFc_nc_i_1[]; // idb extern char aErrorCpfsch_27[]; // idb extern char aErrorCpfsch_26[115]; // weak extern char aErrorCpfsch_28[]; // idb extern char aErrorCpfsch_29[]; // idb extern char aErrorCpfsch_30[]; // idb extern char aErrorFc_nc__36[50]; // idb extern char aErrorFc_nc__39[61]; // idb extern char aErrorFc_nc__38[49]; // idb extern char aErrorFc_nc__37[56]; // idb extern char aCharaddexpErro[]; // idb extern char aCharsubexpErro[]; // idb extern char aAddcharfameErr[]; // idb extern char aFailedFc_nc__4[]; // idb extern char aFailedFc_nc__5[]; // idb extern char aFailedFc_nc__6[]; // idb extern char aFailedChargeit[]; // idb extern char aErrorFc_nc_i_3[]; // idb extern char aErrorFc_nc__40[43]; // idb extern char aFailedCharge_0[]; // idb extern char aErrorFc_nc_i_4[]; // idb extern char aErrorCpfsch_31[]; // idb extern char aFailedFc_nc_sk[]; // idb extern char aErrorFc_nc_s_0[]; // idb extern char aErrorFc_nc_ski[]; // idb extern char aUnuse[]; // idb extern char aFc_nc_char_cla[]; // idb extern char aErrorCpfsch_32[]; // idb extern char aErrorFc_nc_c_1[]; // idb extern char aErrorFc_nc_ct_[]; // idb extern char aErrorCpfsch_33[]; // idb extern char aErrorCpfsch_38[]; // idb extern char aPDBPDb_errorCh[]; // idb extern char aFreestatSetE_6[35]; // weak extern char aFreestatSetE_5[42]; // weak extern char aFreestatSetE_4[31]; // weak extern char aFreestatSetE_3[38]; // weak extern char aFreestatSetE_2[36]; // weak extern char aErrorCpfsch_37[]; // idb extern char aFreestatSetE_1[36]; // weak extern char aFreestatSetE_0[35]; // weak extern char aFreestatSetErr[37]; // weak extern char aErrorCpfsch_36[]; // idb extern char aErrorCpfsch_35[]; // idb extern char aErrorCpfsch_34[]; // idb extern char aErrorCpfsch_40[]; // idb extern char aErrorCpfsch_39[]; // idb extern char aErrorCpfsch_41[52]; // weak extern char aErrorCpfsch_43[]; // idb extern char aErrorCpfsch_42[]; // idb extern char aErrorCpfsch_44[]; // idb extern char aErrorCpfsch_45[]; // idb extern char aErrorCpfsch_46[]; // idb extern char aErrorCpfsch_47[]; // idb extern char aErrorCpfsch_48[]; // idb extern char aErrorCpfsch_49[]; // idb extern char aErrorCpfsch_50[]; // idb extern char aErrorFc_nc_gui[]; // idb extern char aErrorCpfsch_52[]; // idb extern char aErrorCpfsch_51[]; // idb extern char aErrorFc_nc_g_0[]; // idb extern char aErrorCpfsch_54[]; // idb extern char aErrorCpfsch_53[]; // idb extern char aErrorCpfsch_55[]; // idb extern char aFailedFc_nc__7[]; // idb extern char aFailedFc_nc_gu[]; // idb extern char aErrorCpfsch_56[]; // idb extern char aErrorFc_nc_g_1[]; // idb extern char aErrorFc_nc_g_2[]; // idb extern char aErrorFc_nc_g_3[]; // idb extern char aErrorFc_nc_g_4[]; // idb extern char aErrorFc_nc_g_5[]; // idb extern char aErrorFc_nc_g_6[]; // idb extern char aP_prison_upd_0[]; // idb extern char OutputString[]; // idb extern char aBeNonexistentR[22]; // weak extern int dword_4AF294; // weak extern int dword_4AF298; // weak extern int dword_4AF29C; // weak extern int dword_4AF2A0; // weak extern char aFailedFc_nc_ch[]; // idb extern char aFailedFc_nc__8[]; // idb extern char aFailedFc_nc_mi[]; // idb extern char aFailedFc_nc__9[]; // idb extern char aErrorCpfsch_57[]; // idb extern char aErrorCpfsch_58[]; // idb extern char aFailedFc_nc_14[]; // idb extern char aFailedFc_nc_13[67]; // weak extern char aFailedFc_nc_12[49]; // weak extern char aFailedFc_nc_11[]; // idb extern char aFailedFc_nc_10[]; // idb extern char aFailedFc_nc_15[]; // idb extern char aFailedFc_nc_16[]; // idb extern char aFailedFc_nc_17[]; // idb extern char aFailedFc_nc_18[]; // idb extern char aFailedFc_nc_19[]; // idb extern char aFailedFc_nc_20[]; // idb extern char aFailedFc_nc_21[]; // idb extern char aFailedFc_nc_22[]; // idb extern char aFailedFc_nc_23[]; // idb extern char aFailedFc_nc_24[]; // idb extern char aFailedFc_nc_25[]; // idb extern char aErrorFc_nc_i_7[]; // idb extern char aErrorFc_nc_i_6[]; // idb extern char aErrorFc_nc_i_5[]; // idb extern char aErrorFc_nc__41[43]; // idb extern char aErrorCpfsch_59[]; // idb extern char aFailedFc_nc_26[]; // idb extern char aFailedFc_nc_ho[]; // idb extern char aErrorCpfsch_60[]; // idb extern char aErrorCpfsch_61[]; // idb extern char aErrorCpfsch_62[]; // idb extern char aErrorCpfsch_63[]; // idb extern char aErrorCpfsch_64[]; // idb extern char aErrorCpfsch_65[]; // idb extern char aErrorFc_nc_g_7[]; // idb extern char aErrorCpfsch_67[]; // idb extern char aErrorCpfsch_66[]; // idb extern char aErrorFc_nc_g_8[]; // idb extern char aErrorCpfsch_69[]; // idb extern char aErrorCpfsch_68[]; // idb extern char aErrorCpfsch_71[]; // idb extern char aErrorCpfsch_70[]; // idb extern char aErrorCpfsch_72[]; // idb extern char aErrorCpfsch_73[]; // idb extern char aErrorCpfsch_74[]; // idb extern char aFatalErrorCp_6[]; // idb extern char aFailedFc_nc_27[]; // idb extern char aFatalErrorCp_5[]; // idb extern char aFailedFc_nc_28[]; // idb extern char aFailedFc_nc_29[]; // idb extern char aErrorCpfsch_76[]; // idb extern char aErrorCpfsch_75[]; // idb extern char aErrorCpfsch_78[]; // idb extern char aErrorCpfsch_77[]; // idb extern char aErrorCpfsch_80[]; // idb extern char aErrorCpfsch_79[]; // idb extern char aErrorCpfsch_82[]; // idb extern char aErrorCpfsch_81[]; // idb extern char aErrorCpfsch_83[]; // idb extern char aErrorCpfsch_84[]; // idb extern char aErrorCpfsch_85[]; // idb extern char aErrorCpfsch_86[]; // idb extern char aCpfscharact_16[62]; // idb extern char aCpfscharact_15[62]; // idb extern _UNKNOWN unk_4B09B8; // weak extern char aFailedFc_nc_30[]; // idb extern char asc_4B0A78[111]; // idb extern char aErrorCpfsch_89[]; // idb extern char aErrorCpfsch_88[]; // idb extern char asc_4B0BC8[75]; // idb extern char aErrorCpfsch_87[]; // idb extern char aErrorCpfsch_90[79]; // weak extern char aFailedFc_nc_31[]; // idb extern char aFailedFc_nc_32[]; // idb extern char aErrorSetpromot[]; // idb extern char aFailedFc_nc_33[]; // idb extern char aFailedFc_nc_pr[]; // idb extern char aErrorCpfsch_91[]; // idb extern char aErrorCpfsch_92[]; // idb extern char asc_4B0F70[13]; // idb extern char asc_4B0FD8[13]; // idb extern char asc_4B1040[13]; // idb extern char asc_4B10B8[13]; // idb extern char aErrorCpfsch_94[]; // idb extern char aErrorCpfsch_93[]; // idb extern char aErrorCpfsch_95[]; // idb extern char aErrorCpfsch_98[]; // idb extern char aErrorCpfsch_97[]; // idb extern char aErrorCpfsch_96[]; // idb extern char asc_4B1380[]; // idb extern char asc_4B13F0[]; // idb extern char asc_4B1460[]; // idb extern char asc_4B14B0[]; // idb extern char asc_4B1520[]; // idb extern char asc_4B1598[]; // idb extern char asc_4B15F8[]; // idb extern char asc_4B1640[]; // idb extern char asc_4B16B8[]; // idb extern char asc_4B1710[]; // idb extern char asc_4B1780[]; // idb extern char asc_4B17F8[]; // idb extern char asc_4B1868[]; // idb extern char asc_4B18D8[]; // idb extern char asc_4B1940[97]; // weak extern char asc_4B19A8[]; // idb extern char asc_4B1A00[]; // idb extern char asc_4B1A60[]; // idb extern char asc_4B1AC0[]; // idb extern char asc_4B1B58[]; // idb extern char asc_4B1BB8[]; // idb extern char asc_4B1C18[]; // idb extern char asc_4B1C90[77]; // weak extern char asc_4B1CE0[62]; // weak extern char asc_4B1D20[81]; // weak extern char asc_4B1D78[66]; // weak extern char aErrorFc_nc_c_2[]; // idb extern char asc_4B1E18[]; // idb extern char asc_4B1E88[65]; // weak extern char asc_4B1ED0[]; // idb extern char asc_4B1F20[78]; // weak extern char asc_4B1F70[]; // idb extern char asc_4B1FD0[65]; // weak extern char asc_4B2018[]; // idb extern char asc_4B2068[66]; // weak extern char asc_4B20B0[]; // idb extern char asc_4B2108[74]; // weak extern char asc_4B2158[]; // idb extern char asc_4B21B8[75]; // weak extern char asc_4B2208[]; // idb extern char asc_4B2270[]; // idb extern char asc_4B22D0[77]; // weak extern char asc_4B2320[]; // idb extern unsigned __int8 aSlotmachine[]; // idb extern char asc_4B2388[]; // idb extern char aErrorFc_nc_i_8[]; // idb extern char aErrorFc_nc__10[]; // idb extern char aErrorFc_nc_i_9[]; // idb extern char aErrorFc_nc__12[]; // idb extern char aErrorFc_nc__11[]; // idb extern char asc_4B25F0[]; // idb extern char asc_4B2658[]; // idb extern char aErrorFc_nc__15[50]; // weak extern char aErrorFc_nc__14[]; // idb extern char aErrorFc_nc__13[]; // idb extern char aErrorFc_nc__16[53]; // weak extern char aCpfscharacte_4[]; // idb extern char aCpfscharacte_3[]; // idb extern char aCpfscharacte_2[]; // idb extern char aErrorFc_nc_c_3[60]; // weak extern char aErrorFc_nc_col[65]; // weak extern char aCpfscharacte_5[]; // idb extern char aErrorFc_nc_c_4[44]; // weak extern char aCpfscharacte_6[]; // idb extern char aErrorFc_nc_c_5[73]; // weak extern char aCpfscharacte_7[]; // idb extern char aErrorFc_nc_c_6[67]; // weak extern char aCpfscharacte_9[]; // idb extern char aCpfscharacte_8[]; // idb extern char aCpfscharact_17[53]; // idb extern char asc_4B2CC8[97]; // weak extern char asc_4B2D30[]; // idb extern char asc_4B2D98[]; // idb extern char aCpfscharact_11[]; // idb extern char aCpfscharact_10[]; // idb extern char asc_4B2EE0[]; // idb extern char asc_4B2F48[]; // idb extern char asc_4B2FB8[82]; // weak extern char asc_4B3010[84]; // weak extern char asc_4B3068[]; // idb extern char asc_4B30D0[76]; // weak extern char aErrorPS[21]; // idb extern char aFailedFc_nc_34[]; // idb extern char asc_4B31D0[]; // idb extern char aErrorFc_nc_g_9[]; // idb extern char asc_4B3270[]; // idb extern char aCpfscharact_13[]; // idb extern char asc_4B3330[104]; // weak extern char asc_4B3398[98]; // weak extern char asc_4B3400[]; // idb extern char asc_4B3468[]; // idb extern char asc_4B34F0[]; // idb extern char aCpfscharact_12[]; // idb extern char asc_4B3600[]; // idb extern char asc_4B3670[]; // idb extern char asc_4B36E0[]; // idb extern char asc_4B3740[]; // idb extern char asc_4B3798[]; // idb extern char aErrorTutoriali[]; // idb extern char aErrorTutoria_0[]; // idb extern char asc_4B38A8[]; // idb extern char asc_4B3900[]; // idb extern char asc_4B3950[]; // idb extern char asc_4B39B0[]; // idb extern char asc_4B3A08[]; // idb extern char asc_4B3A58[]; // idb extern char asc_4B3AC0[]; // idb extern char asc_4B3B38[]; // idb extern char asc_4B3BA8[]; // idb extern char asc_4B3C08[]; // idb extern char asc_4B3C78[]; // idb extern char asc_4B3CF0[]; // idb extern char asc_4B3D60[]; // idb extern char asc_4B3DD8[]; // idb extern char asc_4B3E48[]; // idb extern char asc_4B3EC0[]; // idb extern char asc_4B3F38[]; // idb extern char asc_4B3FB8[]; // idb extern char asc_4B4020[]; // idb extern char asc_4B4090[]; // idb extern char asc_4B4100[]; // idb extern char asc_4B4170[]; // idb extern char asc_4B41F8[]; // idb extern char asc_4B4260[]; // idb extern char asc_4B42D8[]; // idb extern char asc_4B4358[]; // idb extern char asc_4B43C0[]; // idb extern char asc_4B4430[]; // idb extern char asc_4B44A0[]; // idb extern char aErrorFc_nc_pet[]; // idb extern char asc_4B4544[]; // idb extern char aErrorFc_nc_p_0[]; // idb extern char asc_4B45B8[]; // idb extern char aErrorFc_nc_p_1[]; // idb extern char asc_4B462C[]; // idb extern char byte_4B4667; // idb extern char aErrorFc_nc_p_2[]; // idb extern char asc_4B469C[]; // idb extern char aErrorFc_nc_p_3[]; // idb extern char asc_4B470C[]; // idb extern char aUsebijouh[]; // idb extern char asc_4B4758[]; // idb extern char asc_4B47F8[]; // idb extern char asc_4B4890[121]; // weak extern char asc_4B4910[]; // idb extern char asc_4B49A0[]; // idb extern char asc_4B4A28[]; // idb extern char asc_4B4AB0[]; // idb extern char asc_4B4B30[]; // idb extern char aErrorChatcolor[]; // idb extern char asc_4B4C28[]; // idb extern char asc_4B4CA8[124]; // weak extern char asc_4B4D28[]; // idb extern char asc_4B4DA8[]; // idb extern char asc_4B4E28[]; // idb extern char asc_4B4EA0[]; // idb extern char asc_4B4F10[111]; // weak extern char asc_4B4F80[]; // idb extern char asc_4B4FE8[]; // idb extern char asc_4B5050[]; // idb extern char asc_4B50C8[]; // idb extern char asc_4B5148[91]; // weak extern char asc_4B51A8[]; // idb extern char asc_4B5218[]; // idb extern char asc_4B5288[109]; // weak extern char asc_4B52F8[]; // idb extern char asc_4B5360[]; // idb extern char aErrorSend_nc_3[]; // idb extern char aErrorSend_nc_2[93]; // weak extern char aErrorSend_nc_1[]; // idb extern char aErrorSend_nc_0[90]; // weak extern char aErrorSend_nc_c[]; // idb extern char aErrorFc_nc__17[]; // idb extern char aErrorFc_nc_c_9[91]; // weak extern char aErrorFc_nc_c_8[100]; // weak extern char aErrorFc_nc_c_7[]; // idb extern char aItemRepurchase[]; // idb extern char aItemRepurcha_0[]; // idb extern char asc_4B5818[]; // idb extern char asc_4B5870[]; // idb extern char asc_4B58C8[]; // idb extern char asc_4B5940[93]; // weak extern char asc_4B59A0[]; // idb extern char asc_4B5A10[]; // idb extern char asc_4B5A78[106]; // weak extern char asc_4B5AE8[]; // idb extern char asc_4B5B50[]; // idb extern char asc_4B5BB8[]; // idb extern char asc_4B5C10[]; // idb extern char asc_4B5C78[]; // idb extern char asc_4B5CE0[]; // idb extern char asc_4B5D40[]; // idb extern char asc_4B5DA8[]; // idb extern char asc_4B5E28[]; // idb extern char asc_4B5E90[]; // idb extern char asc_4B5F00[]; // idb extern char aErrorFc_nc__18[]; // idb extern char aErrorFc_nc__19[]; // idb extern char asc_4B6020[]; // idb extern char asc_4B6098[]; // idb extern char asc_4B6118[]; // idb extern char asc_4B6190[]; // idb extern char asc_4B6200[]; // idb extern char asc_4B6278[101]; // weak extern char asc_4B62E0[]; // idb extern int (__thiscall *off_4B634C)(void *, char); // weak extern char aProtocolfunc_0[39]; // weak extern char aProtocolfuncti[64]; // weak extern char aErrorFc_nc__21[]; // idb extern char aErrorFc_nc__20[]; // idb extern char aErrorFc_nc__42[41]; // idb extern char aErrorFc_nc__43[38]; // idb extern char aErrorFc_nc_que[33]; // idb extern char aErrorFc_nc__23[]; // idb extern char aErrorFc_nc__22[]; // idb extern char aErrorCreatei_0[57]; // weak extern char aErrorCreateite[]; // idb extern char asc_4B66B0[83]; // idb extern char aErrorFc_nc__25[]; // idb extern char aErrorFc_nc__24[]; // idb extern char aErrorFc_nc__44[38]; // idb extern char asc_4B6844[]; // idb extern char asc_4B6884[47]; // weak extern char asc_4B68B8[]; // idb extern char asc_4B6908[]; // idb extern char asc_4B6958[]; // idb extern char asc_4B69A8[]; // idb extern char asc_4B6A00[]; // idb extern char aDebugFc_nc_dic[]; // idb extern char aErrorFc_nc_d_0[82]; // weak extern char aErrorFc_nc_dic[]; // idb extern char aFailedGetcha_1[]; // idb extern char aFailedGetcha_0[]; // idb extern char aFailedGetcharo[]; // idb extern char aErrorFc_nc__26[]; // idb extern char asc_4B6C38[]; // idb extern char a2[]; // idb extern char a1[]; // idb extern char asc_4B6C88[]; // idb extern char asc_4B6D08[]; // idb extern char aErrorFc_nc__27[]; // idb extern char asc_4B6DB8[]; // idb extern char asc_4B6E08[]; // idb extern char aErrorFc_nc__28[]; // idb extern char asc_4B6EB8[]; // idb extern char asc_4B6F18[]; // idb extern char asc_4B6F60[]; // idb extern char aErrorFc_nc__30[]; // idb extern char aErrorFc_nc__29[]; // idb extern char asc_4B70A8[]; // idb extern char asc_4B7108[]; // idb extern char aErrorFc_nc__31[]; // idb extern char asc_4B71D8[]; // idb extern char asc_4B7230[]; // idb extern int dword_4B727C; // weak extern char byte_4B7280; // weak extern char asc_4B7284[]; // idb extern char aErrorFc_nc__33[]; // idb extern char aErrorFc_nc__32[]; // idb extern char asc_4B7390[]; // idb extern char asc_4B73F0[]; // idb extern char asc_4B7434[]; // idb extern char aErrorPLXE[34]; // idb extern char aErrorPLX_0[27]; // idb extern char aErrorPLX[29]; // idb extern char aErrorPCI[37]; // idb extern char aErrorPDPD[31]; // idb extern char aErrorPIFO[22]; // idb extern char aErrorFc_nc__35[67]; // weak extern char aErrorFc_nc__34[69]; // weak extern _UNKNOWN unk_4B7718; // weak extern _UNKNOWN unk_4B7758; // weak extern char aErrorP_3[16]; // idb extern char aErrorPE_0[30]; // idb extern _UNKNOWN unk_4B7848; // weak extern char aErrorPE[35]; // idb extern _UNKNOWN unk_4B78E8; // weak extern char aFailedSendch_0[]; // idb extern char aFailedSendchar[49]; // weak extern char aFailedGetcha_2[]; // idb extern _UNKNOWN unk_4B79CC; // weak extern char aErrorDbBNPFc_n[]; // idb extern _UNKNOWN unk_4B7A50; // weak extern _UNKNOWN unk_4B7A94; // weak extern char aErrorDbBNPS[20]; // idb extern _UNKNOWN unk_4B7B20; // weak extern char aErrorDbBNPD[31]; // idb extern char asc_4B7BAC[]; // idb extern _UNKNOWN unk_4B7BE8; // weak extern char aFailedGethol_1[]; // idb extern char aFailedGethol_0[]; // idb extern char aFailedGetholyp[]; // idb extern _UNKNOWN unk_4B7CA4; // weak extern char aErrorP_2[16]; // idb extern _UNKNOWN unk_4B7D30; // weak extern _UNKNOWN unk_4B7D78; // weak extern _UNKNOWN unk_4B7DC0; // weak extern char aError_0[14]; // idb extern _UNKNOWN unk_4B7E40; // weak extern char aErrorPDbBN[28]; // idb extern _UNKNOWN unk_4B7ED8; // weak extern _UNKNOWN unk_4B7F20; // weak extern _UNKNOWN unk_4B7F78; // weak extern _UNKNOWN unk_4B7FC0; // weak extern char aErrorP_1[16]; // idb extern _UNKNOWN unk_4B8060; // weak extern char aErrorP_0[18]; // idb extern _UNKNOWN unk_4B8100; // weak extern char aErrorPKqmapDbB[29]; // idb extern char aErrorPFriendpo[28]; // idb extern char aErrorPDifffrie[32]; // idb extern _UNKNOWN unk_4B8238; // weak extern char aErrorPTEDbBN[34]; // idb extern char aFailedFc_nc_35[]; // idb extern int (__stdcall *off_4B8334)(int); // weak extern char aErrorV[18]; // idb extern char aFc_dummyfuncti[]; // idb extern char aConnectedFromP[]; // idb extern char aCprotocol_func[87]; // idb extern char aNc_misc_s2sc_0[]; // idb extern char aVF[12]; // idb extern char aNc_misc_s2scon[]; // idb extern char aVFN[14]; // idb extern char aVUEVFCV[60]; // idb extern char aIpSDSocketD[]; // idb extern char aConnectedToP25[]; // idb extern int (__stdcall *off_4B86CC)(int); // weak extern char asc_4B86D0[8]; // idb extern int (__stdcall *off_4B8734)(int, int); // weak extern char aErrorSocketBuf[77]; // weak extern int (__thiscall *off_4B8794)(void *, char); // weak extern char aErrorHeartbeat[]; // idb extern int (__stdcall *off_4B87E0)(int, int); // weak extern int (*off_4B87E8)(); // weak extern char aNc_misc_s2sc_1[43]; // weak extern char aAcceptSocketIo[40]; // weak extern char aGamelogServerD[54]; // weak extern char aClosedFromP25s[]; // idb extern int (__stdcall *off_4B88F8)(int, int); // weak extern int (*off_4B8908)(); // weak extern char aDb_initFailed[18]; // weak extern char aDb_initFailedS[52]; // weak extern char aSessionWorke_0[]; // idb extern char aWorkFailed25sW[]; // idb extern char aSessionWorkerD[]; // idb extern int (__thiscall *off_4B8A10)(void *, char); // weak extern char aNumberOfDSessi[]; // idb extern int (__thiscall *off_4B8A50)(void *, char); // weak extern char aStringTooLong[16]; // weak extern char aInvalidStringP[24]; // weak extern char aVectorTTooLong[19]; // weak extern int (*off_4B8A98)(); // weak extern int (*off_4B8ABC)(); // weak extern char aHttpBip_srv_gs[80]; // weak extern char aErrorCukitem_0[78]; // weak extern char aErrorCukitemsh[]; // idb extern char aD[]; // idb extern char aCukitemshopRec[62]; // weak extern int (__thiscall *off_4B8C1C)(void *, char); // weak extern int (__thiscall *off_4B8C28)(void *, char); // weak extern int (__thiscall *off_4B8C30)(void *, char); // weak extern int (__thiscall *off_4B8C38)(void *, char); // weak extern int (__stdcall *off_4B8C54)(char); // weak extern int (__stdcall *off_4B8C5C)(char); // weak extern int (__stdcall *off_4B8C64)(char); // weak extern int (__thiscall *off_4B8C6C)(void *, char); // weak extern int (__thiscall *off_4B8C94)(void *, char); // weak extern int (__thiscall *off_4B8CA0)(void *, char); // weak extern char aIos_baseEofbit[21]; // weak extern char aIos_baseFailbi[22]; // weak extern char aIos_baseBadbit[21]; // weak extern int (__thiscall *off_4B8CF4)(void *, char); // weak extern int (__thiscall *off_4B8D34)(void *, char); // weak extern char aFalse[6]; // weak extern char aTrue[]; // idb extern char aBadLocaleName[16]; // weak extern int (__stdcall *off_4B8D94)(char); // weak extern char aBadCast[9]; // weak extern int (__thiscall *off_4B8DA8)(void *, char); // weak extern char aRb[3]; // idb extern _UNKNOWN unk_4B8DC4; // weak extern _UNKNOWN unk_4B8DCC; // weak extern int dword_4B8FE4; // weak extern char byte_4B8FE8; // weak extern char asc_4B8FEC[2]; // idb extern unsigned __int8 word_4B8FF0; // idb extern unsigned __int8 byte_4B8FF4; // idb extern char aChargeddeletab[25]; // weak extern char aMinimonautouse[23]; // weak extern int dword_4B9030; // weak extern int dword_4B9034; // weak extern int dword_4B9038; // weak extern void *off_4B903C; // weak extern int dword_4B9040; // weak extern int dword_4B9044; // weak extern int dword_4B9048; // weak extern int dword_4B904C; // weak extern void *off_4B9050; // weak extern int dword_4B9054; // weak extern int dword_4B9058; // weak extern int dword_4B905C; // weak extern __int16 word_4B9060; // weak extern int dword_4B9064; // weak extern int dword_4B9068; // weak extern void *off_4B906C; // weak extern int dword_4B9070; // weak extern int dword_4B9074; // weak extern int dword_4B9078; // weak extern __int16 word_4B907C; // weak extern int dword_4B9080; // weak extern int dword_4B9084; // weak extern int dword_4B9088; // weak extern int dword_4B908C; // weak extern int dword_4B9090; // weak extern char byte_4B9094; // weak extern int dword_4B9098; // weak extern int dword_4B909C; // weak extern int dword_4B90A0; // weak extern __int16 word_4B90A4; // weak extern char byte_4B90A6; // weak extern char aItemviewequipt[26]; // weak extern int dword_4B90C4; // weak extern int dword_4B90C8; // weak extern void *off_4B90CC; // weak extern int dword_4B90D0; // weak extern int dword_4B90D4; // weak extern int dword_4B90D8; // weak extern int dword_4B90DC; // weak extern void *off_4B90E0; // weak extern int dword_4B90E4; // weak extern int dword_4B90E8; // weak extern int dword_4B90EC; // weak extern void *off_4B90F0; // weak extern int dword_4B90F4; // weak extern int dword_4B90F8; // weak extern int dword_4B90FC; // weak extern int dword_4B9100; // weak extern int dword_4B9104; // weak extern char byte_4B9108; // weak extern int dword_4B910C; // weak extern int dword_4B9110; // weak extern int dword_4B9114; // weak extern void *off_4B9118; // weak extern int dword_4B911C; // weak extern int dword_4B9120; // weak extern int dword_4B9124; // weak extern void *off_4B9128; // weak extern int dword_4B912C; // weak extern int dword_4B9130; // weak extern int dword_4B9134; // weak extern void *off_4B9138; // weak extern int dword_4B913C; // weak extern int dword_4B9140; // weak extern int dword_4B9144; // weak extern int dword_4B9148; // weak extern char byte_4B914C; // weak extern int dword_4B9150; // weak extern int dword_4B9154; // weak extern int dword_4B9158; // weak extern int dword_4B915C; // weak extern char byte_4B9160; // weak extern int dword_4B9164; // weak extern int dword_4B9168; // weak extern int dword_4B916C; // weak extern int dword_4B9170; // weak extern __int16 word_4B9174; // weak extern char byte_4B9176; // weak extern char aCharactertit_0[28]; // weak extern int dword_4B9194; // weak extern int dword_4B9198; // weak extern int dword_4B919C; // weak extern int dword_4B91A0; // weak extern void *off_4B91A4; // weak extern int dword_4B91A8; // weak extern int dword_4B91AC; // weak extern int dword_4B91B0; // weak extern void *off_4B91B4; // weak extern int dword_4B91B8; // weak extern int dword_4B91BC; // weak extern int dword_4B91C0; // weak extern void *off_4B91C4; // weak extern int dword_4B91C8; // weak extern int dword_4B91CC; // weak extern int dword_4B91D0; // weak extern int dword_4B91D4; // weak extern char byte_4B91D8; // weak extern int dword_4B91DC; // weak extern int dword_4B91E0; // weak extern int dword_4B91E4; // weak extern int dword_4B91E8; // weak extern __int16 word_4B91EC; // weak extern char byte_4B91EE; // weak extern int dword_4B91F0; // weak extern int dword_4B91F4; // weak extern int dword_4B91F8; // weak extern int dword_4B91FC; // weak extern char byte_4B9200; // weak extern int dword_4B9204; // weak extern int dword_4B9208; // weak extern int dword_4B920C; // weak extern int dword_4B9210; // weak extern void *off_4B9214; // weak extern char aMinihousefur_0[32]; // weak extern int dword_4B9238; // weak extern int dword_4B923C; // weak extern int dword_4B9240; // weak extern int dword_4B9244; // weak extern void *off_4B9248; // weak extern int dword_4B924C; // weak extern int dword_4B9250; // weak extern int dword_4B9254; // weak extern int dword_4B9258; // weak extern char byte_4B925C; // weak extern int dword_4B9260; // weak extern int dword_4B9264; // weak extern int dword_4B9268; // weak extern void *off_4B926C; // weak extern int dword_4B9270; // weak extern int dword_4B9274; // weak extern int dword_4B9278; // weak extern __int16 word_4B927C; // weak extern char byte_4B927E; // weak extern int dword_4B9280; // weak extern int dword_4B9284; // weak extern __int16 word_4B9288; // weak extern char byte_4B928A; // weak extern int dword_4B928C; // weak extern int dword_4B9290; // weak extern int dword_4B9294; // weak extern int dword_4B9298; // weak extern char byte_4B929C; // weak extern int dword_4B92A0; // weak extern int dword_4B92A4; // weak extern void *off_4B92A8; // weak extern int dword_4B92AC; // weak extern int dword_4B92B0; // weak extern int dword_4B92B4; // weak extern int dword_4B92B8; // weak extern void *off_4B92BC; // weak extern char aMinihousefurni[23]; // weak extern int dword_4B92D8; // weak extern int dword_4B92DC; // weak extern int dword_4B92E0; // weak extern __int16 word_4B92E4; // weak extern int dword_4B92E8; // weak extern int dword_4B92EC; // weak extern void *off_4B92F0; // weak extern int dword_4B92F4; // weak extern int dword_4B92F8; // weak extern int dword_4B92FC; // weak extern char byte_4B9300; // weak extern int dword_4B9304; // weak extern int dword_4B9308; // weak extern int dword_4B930C; // weak extern int dword_4B9310; // weak extern __int16 word_4B9314; // weak extern int dword_4B9318; // weak extern int dword_4B931C; // weak extern int dword_4B9320; // weak extern int dword_4B9324; // weak extern void *off_4B9328; // weak extern int dword_4B932C; // weak extern int dword_4B9330; // weak extern __int16 word_4B9334; // weak extern char byte_4B9336; // weak extern int dword_4B9338; // weak extern int dword_4B933C; // weak extern int dword_4B9340; // weak extern __int16 word_4B9344; // weak extern int dword_4B9348; // weak extern int dword_4B934C; // weak extern int dword_4B9350; // weak extern int dword_4B9354; // weak extern __int16 word_4B9358; // weak extern char aCharactertitle[23]; // weak extern int dword_4B9374; // weak extern int dword_4B9378; // weak extern int dword_4B937C; // weak extern void *off_4B9380; // weak extern int dword_4B9384; // weak extern int dword_4B9388; // weak extern void *off_4B938C; // weak extern int (__thiscall *off_4B9394)(void *, char); // weak extern char asc_4B9398[3]; // idb extern char a0X[4]; // weak extern char a00[3]; // idb extern __int16 word_4B93A8; // weak extern char byte_4B93AA; // weak extern __int16 word_4B93AC; // weak extern char byte_4B93AE; // weak extern int dword_4B93B0; // weak extern __int16 word_4B93B4; // weak extern char aFormatDefinnin[]; // idb extern char aSFormatDefinin[]; // idb extern char aDataDefinningE[]; // idb extern char aTotalDataDDefi[]; // idb extern char aTotalFormatDDe[]; // idb extern char asc_4B9464[]; // idb extern char aIncludeDataDDe[]; // idb extern char aIncludeFormatD[]; // idb extern char aSWriteDataErro[]; // idb extern char aSWriteDataOk[19]; // weak extern char aSWriteFormatEr[24]; // weak extern char aSWriteFormatOk[]; // idb extern char aSWriteOk[14]; // weak extern char aSWriteError[17]; // weak extern char aSReadError[]; // idb extern char aSReadOk[]; // idb extern char aIncludeOpenErr[]; // idb extern char aFileOpenErrorC[33]; // weak extern char aSUnknowned_[]; // idb extern char aIncludeS[]; // idb extern char asc_4B95C0[64]; // weak extern char aFileProcessing[]; // idb extern char asc_4B9618[81]; // weak extern char aIocpWorkthre_0[]; // idb extern char aIocpWorkthread[]; // idb extern char aErrorcodeD_0[]; // idb extern char aErrorcodeD[15]; // weak extern char aSS_1[]; // idb extern char a02d02d02d[]; // idb extern char a04d02d02d[]; // idb extern char Format[]; // idb extern char aA[]; // idb extern char a_DebugmessageS[]; // idb extern char a06dSS[]; // idb extern char aW[]; // idb extern char a_DebugmessageE[]; // idb extern int (__thiscall *off_4B98C0)(void *, char); // weak extern _UNKNOWN unk_4B98E4; // weak extern _UNKNOWN unk_4B98E8; // weak extern _UNKNOWN unk_4B98EC; // weak extern _UNKNOWN unk_4B98F0; // weak extern _UNKNOWN unk_4B98F4; // weak extern _UNKNOWN unk_4B98F8; // weak extern char aP_4[3]; // idb extern char aBinarydatabo_0[31]; // weak extern char aCodeXDShnXD[]; // idb extern char aBinarydataboxT[42]; // weak extern char aMapdataboxMdb_[21]; // weak extern char aMobdataboxRead[45]; // weak extern int (__thiscall *off_4B99CC)(void *, char); // weak extern int (__thiscall *off_4B99D4)(void *, char); // weak extern int (__thiscall *off_4B99E0)(void *, char); // weak extern int (__thiscall *off_4B99E8)(void *, char); // weak extern int (__thiscall *off_4B99F0)(void *, char); // weak extern int (__thiscall *off_4B99F8)(void *, char); // weak extern int (__thiscall *off_4B9A00)(void *, char); // weak extern int (__thiscall *off_4B9A08)(void *, char); // weak extern int (__thiscall *off_4B9A10)(void *, char); // weak extern char aListenSocketEr[23]; // weak extern char aAccept_process[24]; // weak extern char aSuccssedListen[]; // idb extern char aErrorFailedToG[47]; // weak extern int (__stdcall *off_4B9AB0)(SOCKET s, int); // weak extern int (__stdcall *off_4B9AB8)(int, int); // weak extern int (*off_4B9AC8)(); // weak extern char aAcceptNoSessio[37]; // weak extern char aCsocket_iocpRe[]; // idb extern char aErrorCsocket_i[]; // idb extern char aErrorCsocket_0[]; // idb extern int (__stdcall *off_4B9BF8)(int, int); // weak extern char aErrorCsocket_1[]; // idb extern char aCsocket_iocp_0[]; // idb extern char aSendIobufferFu[]; // idb extern char aCsocket_iocp_2[]; // idb extern char aCsocket_iocp_1[]; // idb extern char aCsocket_iocpWr[]; // idb extern char aMissmatchWrite[]; // idb extern char aM_pfirstbufNul[]; // idb extern char aWarningCsock_0[]; // idb extern char aWarningCsocket[]; // idb extern int (*off_4B9E8C)(); // weak extern int (__thiscall *off_4B9E98)(void *, char); // weak extern char aExceptionFaile[]; // idb extern char asc_4B9ED8[76]; // weak extern int dword_4B9F24; // weak extern int dword_4B9F28; // weak extern int dword_4B9F2C; // weak extern __int16 word_4B9F30; // weak extern char aExceptionFai_1[]; // idb extern char aExceptionFai_0[]; // idb extern char aExceptionSaved[]; // idb extern int dword_4B9FC8; // weak extern __int16 word_4B9FCC; // weak extern char aExceptionDbg_0[32]; // weak extern char ProcName[]; // idb extern char aExceptionDbghe[34]; // weak extern char LibFileName[]; // idb extern int dword_4BA02C; // weak extern void *off_4BA030; // weak extern char aAssertS02d_txt[]; // idb extern char a04d02d02d_0[]; // idb extern char aSAssertclassAc[]; // idb extern char aA_0[]; // idb extern char aSAssertclass_0[]; // idb extern char aErrorSocket__0[]; // idb extern char aErrorSocket_re[]; // idb extern int (__stdcall *off_4BA164)(int, int); // weak extern int (__stdcall *off_4BA174)(int); // weak extern int (__thiscall *off_4BA17C)(void *, char); // weak extern char aItemattributec[62]; // weak extern int (__thiscall *off_4BA1D4)(void *, char); // weak extern int (__thiscall *off_4BA2A4)(void *, char); // weak extern int (__thiscall *off_4BA374)(void *, char); // weak extern int (__thiscall *off_4BA444)(void *, char); // weak extern int (__thiscall *off_4BA514)(void *, char); // weak extern int (__thiscall *off_4BA5E4)(void *, char); // weak extern int (__thiscall *off_4BA6B4)(void *, char); // weak extern int (__thiscall *off_4BA784)(void *, char); // weak extern int (__thiscall *off_4BA854)(void *, char); // weak extern int (__thiscall *off_4BA924)(void *, char); // weak extern int (__thiscall *off_4BA9F4)(void *, char); // weak extern int (__thiscall *off_4BAAC4)(void *, char); // weak extern int (__thiscall *off_4BAB94)(void *, char); // weak extern int (__thiscall *off_4BAC64)(void *, char); // weak extern int (__thiscall *off_4BAD34)(void *, char); // weak extern int (__thiscall *off_4BAE04)(void *, char); // weak extern int (__thiscall *off_4BAED4)(void *, char); // weak extern int (__thiscall *off_4BAFA4)(void *, char); // weak extern int (__thiscall *off_4BB074)(void *, char); // weak extern int (__thiscall *off_4BB144)(void *, char); // weak extern int (__thiscall *off_4BB214)(void *, char); // weak extern int (__thiscall *off_4BB2E4)(void *, char); // weak extern int (__thiscall *off_4BB3B4)(void *, char); // weak extern int (__thiscall *off_4BB484)(void *, char); // weak extern int (__thiscall *off_4BB554)(void *, char); // weak extern int (__thiscall *off_4BB624)(void *, char); // weak extern int (__thiscall *off_4BB6F4)(void *, char); // weak extern int (__thiscall *off_4BB7C4)(void *, char); // weak extern int (__thiscall *off_4BB894)(void *, char); // weak extern int (__thiscall *off_4BB964)(void *, char); // weak extern int (__thiscall *off_4BBA34)(void *, char); // weak extern int (__thiscall *off_4BBB04)(void *, char); // weak extern int (__thiscall *off_4BBBD4)(void *, char); // weak extern int (__thiscall *off_4BBCA4)(void *, char); // weak extern int (__thiscall *off_4BBD74)(void *, char); // weak extern int (__thiscall *off_4BBE44)(void *, char); // weak extern int (__thiscall *off_4BBF14)(void *, char); // weak extern char aDD[]; // idb extern _UNKNOWN unk_4BBFF4; // weak extern _UNKNOWN unk_4BBFF8; // weak extern int (__thiscall *off_4BC004)(void *, char); // weak extern char aErrorCsendpack[]; // idb extern char aFatalErrorCsen[]; // idb extern int (__thiscall *off_4BC15C)(void *, char); // weak extern int (*off_4BC16C[4])(); // weak extern int (__thiscall *off_4BC1AC)(void *, char); // weak extern int (__thiscall *off_4BC1B4)(void *, char); // weak extern char aIobuffercontai[37]; // weak extern int dword_4BC1E0; // weak extern int dword_4BC1E4; // weak extern char byte_4BC1E8; // weak extern char aSS_04d02d02d02[]; // idb extern char aSS_04d02d02d_t[]; // idb extern char a_Log[]; // idb extern char a02d02d02d03d[]; // idb extern char a06dSSS[]; // idb extern char aSocket_iocp_wr[18]; // weak extern char aZonelinktoerro[16]; // weak extern char aMicrosoftCExce[24]; // weak extern char aException_in_1[25]; // weak extern char aException_inva[30]; // weak extern char aException_stac[25]; // weak extern char aException_nonc[35]; // weak extern char aException_ille[30]; // weak extern char aException_in_p[24]; // weak extern char aException_priv[27]; // weak extern char aException_in_0[23]; // weak extern char aException_int_[29]; // weak extern char aException_fl_5[24]; // weak extern char aException_fl_4[26]; // weak extern char aException_fl_3[23]; // weak extern char aException_fl_2[32]; // weak extern char aException_fl_1[29]; // weak extern char aException_fl_0[29]; // weak extern char aException_flt_[31]; // weak extern char aException_arra[32]; // weak extern char aException_acce[27]; // weak extern char aException_guar[21]; // weak extern char aException_sing[22]; // weak extern char aException_brea[21]; // weak extern char aException_data[32]; // weak extern char aSLine04d[]; // idb extern char aSLine04d04dByt[]; // idb extern char asc_4BC534[]; // idb extern char aS_0[]; // idb extern char aS04dByteS[]; // idb extern char asc_4BC554[]; // idb extern char a0x08x0x08x0x08[]; // idb extern char a04x08x[]; // idb extern char aAt04x08x[]; // idb extern char aUnknown[]; // idb extern char aInModule[]; // idb extern char asc_4BC5B4[]; // idb extern char ModuleName[]; // idb extern char asc_4BC5C4[]; // idb extern char aCausedAn[]; // idb extern char aBadParameterTo[]; // idb extern char aGetfirststackt[]; // idb extern char aItemoptionsd_0[69]; // weak extern char aItemoptionsdat[76]; // weak extern int (__thiscall *off_4BC6E0)(void *, char); // weak extern int (__thiscall *off_4BC6E8)(void *, char); // weak extern int (__thiscall *off_4BC6F0)(void *, char); // weak extern int (__stdcall *off_4BC6F8)(int, int); // weak extern int (__thiscall *off_4BC700)(void *, char); // weak extern int (__thiscall *off_4BC708)(void *, char); // weak extern char aItemoptionsd_4[60]; // weak extern char aItemoptionsd_3[62]; // weak extern char aItemoptionsd_2[64]; // weak extern char aItemoptionsd_1[67]; // weak extern int (__thiscall *off_4BC810)(void *, char); // weak extern int (__stdcall *off_4BC818)(int, int); // weak extern int (__thiscall *off_4BC834)(void *, char); // weak extern char aErrorSSqlerr_0[]; // idb extern char aErrorSSqlerror[]; // idb extern char aErrorSStateSEr[]; // idb extern int (__thiscall *off_4BC8D4)(void *, char); // weak extern SQLCHAR StatementText[]; // idb extern SQLCHAR aCallP_skill_se[]; // idb extern SQLCHAR aCallP_skill__0[]; // idb extern SQLCHAR aCallP_skill_de[]; // idb extern SQLCHAR aCallP_skill__1[]; // idb extern SQLCHAR aCallP_skill__2[]; // idb extern SQLCHAR aCallP_skill_re[]; // idb extern SQLCHAR aCallP_quest_se[]; // idb extern SQLCHAR aCallP_quest_de[]; // idb extern SQLCHAR aCallP_quest_ge[]; // idb extern SQLCHAR aCallP_friend_s[]; // idb extern SQLCHAR aCallP_friend_d[]; // idb extern SQLCHAR aCallP_friend_0[]; // idb extern SQLCHAR aCallP_friend_g[]; // idb extern SQLCHAR aCallP_friend_1[]; // idb extern SQLCHAR aCallP_friend_2[]; // idb extern SQLCHAR aCallP_guild_ge[]; // idb extern SQLCHAR aCallP_guild__0[]; // idb extern SQLCHAR aCallUsp_guild_[]; // idb extern SQLCHAR aCallP_guild_ma[]; // idb extern SQLCHAR aCallP_guild_de[]; // idb extern SQLCHAR aCallP_guild_mo[]; // idb extern SQLCHAR aCallP_guild__1[]; // idb extern SQLCHAR aCallP_guild_se[]; // idb extern SQLCHAR aCallP_guild__2[]; // idb extern SQLCHAR aCallP_guild__3[]; // idb extern SQLCHAR aCallP_guild__4[]; // idb extern SQLCHAR aCallP_guild__5[]; // idb extern char aErrorCsqlpgu_2[]; // idb extern char aErrorCsqlpgu_1[]; // idb extern char aErrorCsqlpgu_0[]; // idb extern char aErrorCsqlpguil[]; // idb extern SQLCHAR aCallUsp_guil_0[]; // idb extern char aErrorCsqlpgu_3[]; // idb extern SQLCHAR aCallUsp_guil_1[]; // idb extern char aErrorCsqlpgu_7[]; // idb extern char aErrorCsqlpgu_6[]; // idb extern char aErrorCsqlpgu_5[]; // idb extern char aErrorCsqlpgu_4[]; // idb extern SQLCHAR aCallUsp_guildt[]; // idb extern SQLCHAR aCallP_guild__6[]; // idb extern SQLCHAR aCallP_guild__7[]; // idb extern SQLCHAR aCallP_guild__8[]; // idb extern SQLCHAR aCallP_guild__9[]; // idb extern SQLCHAR aCallP_guild_10[]; // idb extern char aErrorCsqlpgu_8[]; // idb extern SQLCHAR aCallP_guild_11[]; // idb extern SQLCHAR aCallP_guild_me[]; // idb extern SQLCHAR aCallP_guild_12[]; // idb extern SQLCHAR aCallP_guild_13[]; // idb extern char aErrorCsqlpgu_9[]; // idb extern SQLCHAR aCallP_guild_14[]; // idb extern SQLCHAR aCallP_guild_15[]; // idb extern SQLCHAR aCallP_guildtou[]; // idb extern SQLCHAR aCallP_guildt_0[]; // idb extern char aErrorCsqlpg_13[]; // idb extern char aErrorCsqlpg_12[]; // idb extern char aErrorCsqlpg_11[]; // idb extern char aErrorCsqlpg_10[]; // idb extern SQLCHAR aCallUsp_guil_2[]; // idb extern char aCsqlpguildUsp_[42]; // weak extern char aErrorCsqlpg_14[]; // idb extern SQLCHAR aCallUsp_guil_3[]; // idb extern char aErrorCsqlpg_18[]; // idb extern char aErrorCsqlpg_17[]; // idb extern char aErrorCsqlpg_16[]; // idb extern char aErrorCsqlpg_15[]; // idb extern SQLCHAR aCallUsp_guil_4[]; // idb extern char aErrorCsqlpg_22[]; // idb extern char aErrorCsqlpg_21[]; // idb extern char aErrorCsqlpg_20[]; // idb extern char aErrorCsqlpg_19[]; // idb extern SQLCHAR aCallUsp_guil_5[]; // idb extern char aCsqlpguildUs_0[50]; // weak extern char aErrorCsqlpg_23[]; // idb extern SQLCHAR aCallUsp_guil_6[]; // idb extern char aCsqlpguildUs_1[43]; // weak extern char aErrorCsqlpg_24[]; // idb extern SQLCHAR aCallUsp_guil_7[]; // idb extern char aErrorCsqlpg_25[]; // idb extern SQLCHAR aCallUsp_guilda[]; // idb extern char aErrorCsqlpg_26[]; // idb extern SQLCHAR aCallUsp_guil_8[]; // idb extern char aErrorCsqlpg_27[]; // idb extern SQLCHAR aCallUsp_guil_9[]; // idb extern char aErrorCsqlpg_28[]; // idb extern SQLCHAR aCallUsp_gui_10[]; // idb extern char aErrorCsqlpg_29[]; // idb extern SQLCHAR aCallUsp_gui_11[]; // idb extern char aErrorCsqlpg_30[]; // idb extern SQLCHAR aCallUsp_gui_12[]; // idb extern char aErrorCsqlpg_31[]; // idb extern SQLCHAR aCallUsp_gui_13[]; // idb extern char aErrorCsqlpg_32[]; // idb extern SQLCHAR aCallUsp_gui_14[]; // idb extern char aErrorCsqlpg_33[]; // idb extern SQLCHAR aCallUsp_gui_15[]; // idb extern char aErrorCsqlpg_34[]; // idb extern SQLCHAR aCallUsp_gui_16[]; // idb extern char aErrorCsqlpg_35[]; // idb extern SQLCHAR aCallUsp_gui_17[]; // idb extern char aErrorCsqlpg_36[]; // idb extern SQLCHAR aCallUsp_gui_18[]; // idb extern char aErrorCsqlpg_37[]; // idb extern SQLCHAR aCallUsp_gui_19[]; // idb extern char aErrorCsqlpg_38[]; // idb extern SQLCHAR aCallUsp_gui_20[]; // idb extern char aErrorCsqlpg_39[]; // idb extern SQLCHAR aCallUsp_gui_21[]; // idb extern char aErrorCsqlpg_40[]; // idb extern SQLCHAR aCallUsp_gui_22[]; // idb extern char aErrorCsqlpg_41[]; // idb extern SQLCHAR aCallUsp_gui_23[]; // idb extern char aErrorCsqlpg_42[]; // idb extern SQLCHAR aCallUsp_gui_24[]; // idb extern char aErrorCsqlpg_43[]; // idb extern SQLCHAR aCallUsp_gui_25[]; // idb extern char aErrorCsqlpg_44[]; // idb extern SQLCHAR aCallUsp_gui_26[]; // idb extern char aErrorCsqlpg_45[]; // idb extern SQLCHAR aCallUsp_gui_27[]; // idb extern char aErrorCsqlpg_46[]; // idb extern SQLCHAR aCallUsp_gui_28[]; // idb extern char aCsqlpguildUs_2[37]; // weak extern char aErrorCsqlpg_47[]; // idb extern SQLCHAR aCallUsp_gui_29[]; // idb extern char aCsqlpguildUs_3[33]; // weak extern char aErrorCsqlpg_48[]; // idb extern SQLCHAR aCallUsp_gui_30[]; // idb extern char aCsqlpguildUs_4[44]; // weak extern char aErrorCsqlpg_49[]; // idb extern SQLCHAR aCallUsp_gui_31[]; // idb extern char aCsqlpguildUs_5[40]; // weak extern char aErrorCsqlpg_50[]; // idb extern SQLCHAR aCallUsp_gui_32[]; // idb extern SQLCHAR aCallUsp_guilde[]; // idb extern SQLCHAR aCallUsp_gui_33[]; // idb extern SQLCHAR aCallUsp_gui_34[]; // idb extern SQLCHAR aCallP_holyprom[]; // idb extern SQLCHAR aCallP_holypr_0[]; // idb extern SQLCHAR aCallP_holypr_1[]; // idb extern SQLCHAR aCallP_holypr_2[]; // idb extern SQLCHAR aCallP_holypr_3[]; // idb extern SQLCHAR aCallP_holypr_4[]; // idb extern char aErrorCsqlpho_2[]; // idb extern char aErrorCsqlpho_1[]; // idb extern char aErrorCsqlpho_0[]; // idb extern char aErrorCsqlpholy[]; // idb extern SQLCHAR aCallUsp_holypr[]; // idb extern char aErrorCsqlpho_6[]; // idb extern char aErrorCsqlpho_5[]; // idb extern char aErrorCsqlpho_4[]; // idb extern char aErrorCsqlpho_3[]; // idb extern SQLCHAR aCallUsp_holy_0[]; // idb extern SQLCHAR aCallUsp_holy_1[]; // idb extern SQLCHAR aCallP_char_cre[]; // idb extern SQLCHAR aCallP_char_c_0[]; // idb extern SQLCHAR aCallP_char_del[]; // idb extern SQLCHAR aCallP_char_wip[]; // idb extern SQLCHAR aCallP_char_ren[]; // idb extern SQLCHAR aCallP_char_g_0[]; // idb extern char aCallP_char_get[37]; // weak extern SQLCHAR aCallP_char_g_1[]; // idb extern SQLCHAR aCallP_char_log[]; // idb extern SQLCHAR aCallP_char_l_0[]; // idb extern SQLCHAR aCallP_char_g_2[]; // idb extern SQLCHAR aCallP_char_g_3[]; // idb extern SQLCHAR aCallP_char_g_4[]; // idb extern SQLCHAR aCallP_char_g_5[]; // idb extern SQLCHAR aCallP_char_set[]; // idb extern SQLCHAR aCallP_char_g_6[]; // idb extern SQLCHAR aCallP_char_g_7[]; // idb extern SQLCHAR aCallP_char_g_8[]; // idb extern SQLCHAR aCallP_char_g_9[]; // idb extern SQLCHAR aCallP_char__10[]; // idb extern SQLCHAR aCallP_char__11[]; // idb extern SQLCHAR aCallP_char__12[]; // idb extern SQLCHAR aCallP_char_s_0[]; // idb extern SQLCHAR aCallP_char_s_1[]; // idb extern SQLCHAR aCallP_char_s_2[]; // idb extern SQLCHAR aCallP_char_s_3[]; // idb extern SQLCHAR aCallP_char_s_4[]; // idb extern SQLCHAR aCallP_char_s_5[]; // idb extern SQLCHAR aCallP_char_s_6[]; // idb extern SQLCHAR aCallP_char_d_0[]; // idb extern SQLCHAR aCallP_char__13[]; // idb extern SQLCHAR aCallP_char_mon[]; // idb extern SQLCHAR aCallP_char_m_0[]; // idb extern SQLCHAR aCallP_char_m_1[]; // idb extern SQLCHAR aCallP_char_m_2[]; // idb extern SQLCHAR aCallP_char_fam[]; // idb extern SQLCHAR aCallP_char_f_0[]; // idb extern SQLCHAR aCallP_char_s_7[]; // idb extern SQLCHAR aCallP_char__14[]; // idb extern char aErrorCsqlpchar[]; // idb extern SQLCHAR aCallP_char_s_8[]; // idb extern SQLCHAR aCallP_char_sta[]; // idb extern SQLCHAR aCallP_char_s_9[]; // idb extern SQLCHAR aCallUsp_charac[]; // idb extern SQLCHAR aCallP_char_add[]; // idb extern SQLCHAR aCallP_char_sub[]; // idb extern SQLCHAR aCallP_char_cha[]; // idb extern SQLCHAR aCallP_char_sav[]; // idb extern SQLCHAR aCallP_char__15[]; // idb extern SQLCHAR aCallP_char__16[]; // idb extern SQLCHAR aCallP_char__17[]; // idb extern SQLCHAR aCallP_char__18[]; // idb extern char aErrorCsqlpch_3[]; // idb extern char aErrorCsqlpch_2[]; // idb extern char aErrorCsqlpch_1[]; // idb extern char aErrorCsqlpch_0[]; // idb extern SQLCHAR aCallUsp_char_0[]; // idb extern char aErrorCsqlpch_7[]; // idb extern char aErrorCsqlpch_6[]; // idb extern char aErrorCsqlpch_5[]; // idb extern char aErrorCsqlpch_4[]; // idb extern SQLCHAR aCallUsp_char_1[]; // idb extern SQLCHAR aCallUsp_char_c[]; // idb extern SQLCHAR aCallP_user_dep[]; // idb extern SQLCHAR aCallP_user_wit[]; // idb extern SQLCHAR aCallP_user_mon[]; // idb extern SQLCHAR aCallP_char__19[]; // idb extern SQLCHAR aCallP_char_d_1[]; // idb extern SQLCHAR aCallP_char__20[]; // idb extern SQLCHAR aCallP_minihous[]; // idb extern SQLCHAR aCallP_miniho_0[]; // idb extern char aErrorCsqlpch_8[]; // idb extern SQLCHAR aCallUsp_miniho[]; // idb extern char aErrorCsqlpch_9[]; // idb extern SQLCHAR aCallUsp_mini_0[]; // idb extern char aErrorCsqlpc_10[]; // idb extern SQLCHAR aCallUsp_mini_1[]; // idb extern char aErrorCsqlpc_11[]; // idb extern SQLCHAR aCallUsp_mini_2[]; // idb extern SQLCHAR aCallP_char_wed[]; // idb extern SQLCHAR aCallP_char_w_0[]; // idb extern SQLCHAR aCallP_char_w_1[]; // idb extern SQLCHAR aCallP_char_w_2[]; // idb extern SQLCHAR aCallP_char_w_3[]; // idb extern SQLCHAR aCallP_char_w_4[]; // idb extern SQLCHAR aCallP_char_w_5[]; // idb extern SQLCHAR aCallP_char_w_7[]; // idb extern char aCallP_char_w_6[48]; // weak extern SQLCHAR aCallP_char_w_8[]; // idb extern SQLCHAR aCallP_char_w_9[]; // idb extern SQLCHAR aCallP_char__21[]; // idb extern SQLCHAR aCallP_ispromot[]; // idb extern SQLCHAR aCallP_promotio[]; // idb extern SQLCHAR aCallP_promot_0[]; // idb extern char aErrorCsqlpc_15[]; // idb extern char aErrorCsqlpc_14[]; // idb extern char aErrorCsqlpc_13[]; // idb extern char aErrorCsqlpc_12[]; // idb extern SQLCHAR aCallUsp_chatbl[]; // idb extern char aErrorCsqlpc_19[]; // idb extern char aErrorCsqlpc_18[]; // idb extern char aErrorCsqlpc_17[]; // idb extern char aErrorCsqlpc_16[]; // idb extern SQLCHAR aCallUsp_chat_0[]; // idb extern char aErrorCsqlpc_23[]; // idb extern char aErrorCsqlpc_22[]; // idb extern char aErrorCsqlpc_21[]; // idb extern char aErrorCsqlpc_20[]; // idb extern SQLCHAR aCallUsp_chat_1[]; // idb extern char aErrorCsqlpc_27[]; // idb extern char aErrorCsqlpc_26[]; // idb extern char aErrorCsqlpc_25[]; // idb extern char aErrorCsqlpc_24[]; // idb extern SQLCHAR aCallUsp_chat_2[]; // idb extern char aErrorCsqlpc_31[]; // idb extern char aErrorCsqlpc_30[]; // idb extern char aErrorCsqlpc_29[]; // idb extern char aErrorCsqlpc_28[]; // idb extern SQLCHAR aCallUsp_char_2[]; // idb extern char aCsqlpcharacter[45]; // weak extern SQLCHAR aCallUsp_char_3[]; // idb extern char aErrorCsqlpc_35[]; // idb extern char aErrorCsqlpc_34[]; // idb extern char aErrorCsqlpc_33[]; // idb extern char aErrorCsqlpc_32[]; // idb extern SQLCHAR aCallUsp_char_4[]; // idb extern char aErrorCsqlpc_39[]; // idb extern char aErrorCsqlpc_38[]; // idb extern char aErrorCsqlpc_37[]; // idb extern char aErrorCsqlpc_36[]; // idb extern SQLCHAR aCallUsp_char_5[]; // idb extern char aErrorCsqlpc_43[]; // idb extern char aErrorCsqlpc_42[]; // idb extern char aErrorCsqlpc_41[]; // idb extern char aErrorCsqlpc_40[]; // idb extern SQLCHAR aCallUsp_dice_s[]; // idb extern char aErrorCsqlpc_47[]; // idb extern char aErrorCsqlpc_46[]; // idb extern char aErrorCsqlpc_45[]; // idb extern char aErrorCsqlpc_44[]; // idb extern SQLCHAR aCallUsp_dice_0[]; // idb extern char aErrorCsqlpc_51[]; // idb extern char aErrorCsqlpc_50[]; // idb extern char aErrorCsqlpc_49[]; // idb extern char aErrorCsqlpc_48[]; // idb extern SQLCHAR aCallUsp_dice_1[]; // idb extern char aErrorCsqlpc_55[]; // idb extern char aErrorCsqlpc_54[]; // idb extern char aErrorCsqlpc_53[]; // idb extern char aErrorCsqlpc_52[]; // idb extern SQLCHAR aCallUsp_dice_g[]; // idb extern char aErrorCsqlpc_59[]; // idb extern char aErrorCsqlpc_58[]; // idb extern char aErrorCsqlpc_57[]; // idb extern char aErrorCsqlpc_56[]; // idb extern SQLCHAR aCallUsp_dice_2[]; // idb extern char aErrorCsqlpc_63[]; // idb extern char aErrorCsqlpc_62[]; // idb extern char aErrorCsqlpc_61[]; // idb extern char aErrorCsqlpc_60[]; // idb extern SQLCHAR aCallUsp_dice_3[]; // idb extern char aErrorCsqlpc_67[]; // idb extern char aErrorCsqlpc_66[]; // idb extern char aErrorCsqlpc_65[]; // idb extern char aErrorCsqlpc_64[]; // idb extern SQLCHAR aCallUsp_dice_c[]; // idb extern char aCsqlpcharact_0[47]; // weak extern char aErrorCsqlpc_68[]; // idb extern SQLCHAR aCallUsp_char_6[]; // idb extern char aCsqlpcharact_1[57]; // weak extern char aErrorCsqlpc_69[]; // idb extern SQLCHAR aCallUsp_char_7[]; // idb extern char aCsqlpcharact_2[57]; // weak extern char aErrorCsqlpc_70[]; // idb extern SQLCHAR aCallUsp_char_8[]; // idb extern char aCsqlpcharact_3[56]; // weak extern char aErrorCsqlpc_71[]; // idb extern SQLCHAR aCallUsp_char_9[]; // idb extern char aCsqlpcharact_4[55]; // weak extern char aErrorCsqlpc_72[]; // idb extern SQLCHAR aCallUsp_cha_10[]; // idb extern char aCsqlpcharact_5[55]; // weak extern char aErrorCsqlpc_73[]; // idb extern SQLCHAR aCallUsp_cha_11[]; // idb extern char aCsqlpcharact_6[60]; // weak extern char aErrorCsqlpc_74[]; // idb extern SQLCHAR aCallUsp_cha_12[]; // idb extern char aCsqlpcharact_7[59]; // weak extern char aErrorCsqlpc_75[]; // idb extern SQLCHAR aCallUsp_cha_13[]; // idb extern char aCsqlpcharact_8[59]; // weak extern char aErrorCsqlpc_76[]; // idb extern SQLCHAR aCallUsp_cha_14[]; // idb extern char aCsqlpcharact_9[35]; // weak extern char aErrorCsqlpc_77[]; // idb extern SQLCHAR aCallUsp_spamfi[]; // idb extern char aCsqlpcharac_10[35]; // weak extern char aErrorCsqlpc_78[]; // idb extern SQLCHAR aCallUsp_spam_0[]; // idb extern char aCsqlpcharac_11[38]; // weak extern char aErrorCsqlpc_79[]; // idb extern SQLCHAR aCallUsp_spambl[]; // idb extern char aCsqlpcharac_12[38]; // weak extern char aErrorCsqlpc_80[]; // idb extern SQLCHAR aCallUsp_spam_1[]; // idb extern char aErrorCsqlpc_81[]; // idb extern SQLCHAR aCallUsp_cha_15[]; // idb extern char aCsqlpcharac_13[50]; // weak extern char aErrorCsqlpc_82[]; // idb extern SQLCHAR aCallUsp_cha_16[]; // idb extern char aErrorCsqlpc_83[]; // idb extern SQLCHAR aCallUsp_cha_17[]; // idb extern char aCsqlpcharac_14[41]; // weak extern char aErrorCsqlpc_84[]; // idb extern SQLCHAR aCallUsp_cha_18[]; // idb extern char aCsqlpcharac_15[44]; // weak extern SQLCHAR aCallUsp_ingame[]; // idb extern char aCsqlpcharac_16[43]; // weak extern SQLCHAR aCallUsp_inga_0[]; // idb extern char aErrorCsqlpc_88[]; // idb extern char aErrorCsqlpc_87[]; // idb extern char aErrorCsqlpc_86[]; // idb extern char aErrorCsqlpc_85[]; // idb extern SQLCHAR aCallUsp_gamble[]; // idb extern char aErrorCsqlpc_92[]; // idb extern char aErrorCsqlpc_91[]; // idb extern char aErrorCsqlpc_90[]; // idb extern char aErrorCsqlpc_89[]; // idb extern SQLCHAR aCallUsp_gamb_0[]; // idb extern char aErrorCsqlpc_96[]; // idb extern char aErrorCsqlpc_95[]; // idb extern char aErrorCsqlpc_94[]; // idb extern char aErrorCsqlpc_93[]; // idb extern SQLCHAR aCallUsp_gamb_1[]; // idb extern char asc_4C2100[]; // idb extern char asc_4C2158[]; // idb extern char aErrorCsqlpc_98[]; // idb extern char aErrorCsqlpc_97[]; // idb extern SQLCHAR aCallUsp_gamb_2[]; // idb extern char aCsqlpcharac_17[47]; // weak extern char asc_4C22D0[]; // idb extern SQLCHAR aCallUsp_attend[]; // idb extern char aCsqlpcharac_18[39]; // weak extern char asc_4C2378[]; // idb extern SQLCHAR aCallUsp_atte_0[]; // idb extern char aCsqlpcharac_19[40]; // weak extern char asc_4C2410[]; // idb extern SQLCHAR aCallUsp_atte_1[]; // idb extern char aCsqlpcharac_20[45]; // weak extern char asc_4C24B0[]; // idb extern SQLCHAR aCallUsp_atte_2[]; // idb extern char aCsqlpcharac_21[41]; // weak extern char asc_4C2550[]; // idb extern SQLCHAR aCallUsp_atte_3[]; // idb extern char aCsqlpcharac_22[39]; // weak extern SQLCHAR aCallUsp_tutori[]; // idb extern char aCsqlpcharac_23[41]; // weak extern SQLCHAR aCallUsp_tuto_0[]; // idb extern char aCsqlpcharac_24[41]; // weak extern char asc_4C2690[]; // idb extern SQLCHAR aCallUsp_tuto_1[]; // idb extern char aCsqlpcharac_25[34]; // weak extern char asc_4C2728[]; // idb extern SQLCHAR aCallUsp_chatco[]; // idb extern char aCsqlpcharac_26[38]; // weak extern char asc_4C27B8[]; // idb extern SQLCHAR aCallUsp_chat_3[]; // idb extern char aCsqlpcharac_27[41]; // weak extern char asc_4C2850[]; // idb extern SQLCHAR aCallUsp_chat_4[]; // idb extern char aCsqlpcharac_28[44]; // weak extern char asc_4C28F0[]; // idb extern SQLCHAR aCallUsp_cha_19[]; // idb extern char aCsqlpcharac_29[51]; // weak extern char asc_4C29A0[]; // idb extern SQLCHAR aCallUsp_cha_20[]; // idb extern char aCsqlpcharac_30[44]; // weak extern char asc_4C2A58[]; // idb extern SQLCHAR aCallUsp_cha_21[]; // idb extern char aCsqlpcharac_31[36]; // weak extern char asc_4C2AF0[]; // idb extern SQLCHAR aCallUsp_item_s[]; // idb extern char aCsqlpcharac_32[40]; // weak extern char asc_4C2B88[]; // idb extern SQLCHAR aCallUsp_item_g[]; // idb extern char aCsqlpcharac_33[45]; // weak extern char asc_4C2C28[]; // idb extern SQLCHAR aCallUsp_cha_22[]; // idb extern char aCsqlpcharac_34[45]; // weak extern char asc_4C2CD0[]; // idb extern SQLCHAR aCallUsp_cha_23[]; // idb extern char aCsqlpcharac_35[49]; // weak extern char asc_4C2D80[]; // idb extern SQLCHAR aCallUsp_cha_24[]; // idb extern char aCsqlpcharac_36[42]; // weak extern char asc_4C2E30[]; // idb extern SQLCHAR aCallUsp_linksc[]; // idb extern char asc_4C2EA0[3]; // weak extern char a_[3]; // weak extern char a__0[2]; // weak extern char aCall[7]; // weak extern char asc_4C2EB4[2]; // weak extern char asc_4C2EB8[]; // idb extern char aCsqlpcharac_37[32]; // weak extern char aP_char_setstat[38]; // weak extern char aErrorCsqlpit_2[]; // idb extern char aErrorCsqlpit_1[]; // idb extern char aErrorCsqlpit_0[]; // idb extern char aErrorCsqlpitem[]; // idb extern SQLCHAR aCallP_item_c_0[]; // idb extern char aCallP_item_cre[36]; // weak extern SQLCHAR aCallP_item_del[]; // idb extern SQLCHAR aCallP_item_get[]; // idb extern SQLCHAR aCallP_item_g_0[]; // idb extern SQLCHAR aCallP_item_g_1[]; // idb extern SQLCHAR aCallP_item_set[]; // idb extern SQLCHAR aCallP_item_g_2[]; // idb extern SQLCHAR aCallP_item_g_3[]; // idb extern SQLCHAR aCallP_item_s_0[]; // idb extern SQLCHAR aCallP_item_g_4[]; // idb extern SQLCHAR aCallP_item_s_1[]; // idb extern SQLCHAR aCallP_item_g_5[]; // idb extern SQLCHAR aCallP_item_s_2[]; // idb extern SQLCHAR aCallP_item_clr[]; // idb extern SQLCHAR aCallP_item_g_6[]; // idb extern SQLCHAR aCallP_item_s_3[]; // idb extern SQLCHAR aCallP_item_s_5[]; // idb extern char aCallP_item_s_4[44]; // weak extern SQLCHAR aCallP_item_exc[]; // idb extern SQLCHAR aCallP_item_e_0[]; // idb extern SQLCHAR aCallP_item_isv[]; // idb extern char aErrorCsqlpit_6[]; // idb extern char aErrorCsqlpit_5[]; // idb extern char aErrorCsqlpit_4[]; // idb extern char aErrorCsqlpit_3[]; // idb extern SQLCHAR aCallP_item_buy[]; // idb extern SQLCHAR aCallP_item_b_0[]; // idb extern SQLCHAR aCallP_item_sel[]; // idb extern SQLCHAR aCallP_item_s_6[]; // idb extern SQLCHAR aCallP_item_mer[]; // idb extern SQLCHAR aCallP_item_spl[]; // idb extern SQLCHAR aCallP_item_upg[]; // idb extern SQLCHAR aCallP_item_min[]; // idb extern char aErrorCsqlpi_10[]; // idb extern char aErrorCsqlpit_9[]; // idb extern char aErrorCsqlpit_8[]; // idb extern char aErrorCsqlpit_7[]; // idb extern SQLCHAR aCallP_item_fur[]; // idb extern char aErrorCsqlpi_14[]; // idb extern char aErrorCsqlpi_13[]; // idb extern char aErrorCsqlpi_12[]; // idb extern char aNownerDNendure[]; // idb extern char aErrorCsqlpi_11[]; // idb extern SQLCHAR aCallP_item_cos[]; // idb extern char aErrorCsqlpi_19[]; // idb extern char aErrorCsqlpi_18[]; // idb extern char aErrorCsqlpi_17[]; // idb extern char aErrorCsqlpi_16[]; // idb extern char aErrorCsqlpi_15[]; // idb extern SQLCHAR aCallP_item_c_1[]; // idb extern char aErrorCsqlpi_23[]; // idb extern char aErrorCsqlpi_22[]; // idb extern char aErrorCsqlpi_21[]; // idb extern char aNownerDNendu_0[]; // idb extern char aErrorCsqlpi_20[]; // idb extern char aErrorCsqlpi_28[]; // idb extern char aErrorCsqlpi_27[]; // idb extern char aErrorCsqlpi_26[]; // idb extern char aErrorCsqlpi_25[]; // idb extern char aErrorCsqlpi_24[]; // idb extern SQLCHAR aCallUsp_charge[]; // idb extern SQLCHAR aCallUsp_cha_25[]; // idb extern SQLCHAR aCallUsp_cha_26[]; // idb extern SQLCHAR aCallUsp_cha_27[]; // idb extern SQLCHAR aCallUsp_cha_28[]; // idb extern SQLCHAR aCallUsp_cha_29[]; // idb extern SQLCHAR aCallUsp_cha_30[]; // idb extern SQLCHAR aCallUsp_cha_31[]; // idb extern char aErrorCsqlpi_31[]; // idb extern char aErrorCsqlpi_30[]; // idb extern char aErrorCsqlpi_29[]; // idb extern SQLCHAR aCallUsp_item_0[]; // idb extern SQLCHAR aCallUsp_item_1[]; // idb extern char asc_4C43D0[]; // idb extern char asc_4C4420[]; // idb extern char asc_4C4478[]; // idb extern char asc_4C44D8[]; // idb extern SQLCHAR aCallUsp_item_2[]; // idb extern char asc_4C4558[]; // idb extern char asc_4C45B0[]; // idb extern char asc_4C4610[]; // idb extern char asc_4C4678[]; // idb extern SQLCHAR aCallUsp_item_3[]; // idb extern char aCsqlpitemUsp_i[43]; // weak extern char asc_4C4740[]; // idb extern SQLCHAR aCallUsp_item_4[]; // idb extern char aErrorCsqlpi_35[]; // idb extern char aErrorCsqlpi_34[]; // idb extern char aErrorCsqlpi_33[]; // idb extern char aErrorCsqlpi_32[]; // idb extern SQLCHAR aCallP_item_g_7[]; // idb extern char aErrorCsqlpi_39[]; // idb extern char aErrorCsqlpi_38[]; // idb extern char aErrorCsqlpi_37[]; // idb extern char aErrorCsqlpi_36[]; // idb extern SQLCHAR aCallUsp_safetr[]; // idb extern char aErrorCsqlpi_43[]; // idb extern char aErrorCsqlpi_42[]; // idb extern char aErrorCsqlpi_41[]; // idb extern char aErrorCsqlpi_40[]; // idb extern SQLCHAR aCallUsp_safe_0[]; // idb extern char aErrorCsqlpi_47[]; // idb extern char aErrorCsqlpi_46[]; // idb extern char aErrorCsqlpi_45[]; // idb extern char aErrorCsqlpi_44[]; // idb extern SQLCHAR aCallUsp_safe_1[]; // idb extern SQLCHAR aCallUsp_item_a[]; // idb extern SQLCHAR aCallUsp_item_d[]; // idb extern SQLCHAR aCallUsp_item_5[]; // idb extern SQLCHAR aCallUsp_item_6[]; // idb extern SQLCHAR aCallUsp_item_7[]; // idb extern int (__thiscall *off_4C4EC8)(void *, char); // weak extern SQLCHAR aCallP_prison_a[]; // idb extern SQLCHAR aCallP_prison_0[]; // idb extern SQLCHAR aCallP_prison_u[]; // idb extern SQLCHAR aCallP_prison_g[]; // idb extern SQLCHAR aCallP_prison_1[]; // idb extern SQLCHAR aCallP_prison_2[]; // idb extern char aCsqlpuserconne[47]; // weak extern char aErrorCsqlpuser[]; // idb extern SQLCHAR aCallUsp_cha_32[]; // idb extern char aCsqlpusercon_0[55]; // weak extern char aErrorCsqlpus_0[]; // idb extern SQLCHAR aCallUsp_cha_33[]; // idb extern char aCsqlpgamblehou[37]; // weak extern char aErrorCsqlpgamb[]; // idb extern SQLCHAR aCallUsp_gamb_3[]; // idb extern char aCsqlpgambleh_0[37]; // weak extern SQLCHAR aCallUsp_gamb_4[]; // idb extern char aCsqlpgambleh_1[46]; // weak extern char aErrorCsqlpga_0[]; // idb extern SQLCHAR aCallUsp_gamb_5[]; // idb extern char aCsqlpgambleh_2[44]; // weak extern SQLCHAR aCallUsp_gamb_6[]; // idb extern char aCsqlpgambleh_3[44]; // weak extern SQLCHAR aCallUsp_gamb_7[]; // idb extern char aCsqlpgambleh_4[50]; // weak extern SQLCHAR aCallUsp_gamb_8[]; // idb extern char aCsqlpgambleh_5[47]; // weak extern SQLCHAR aCallUsp_gamb_9[]; // idb extern char aCsqlpgambleh_6[44]; // weak extern SQLCHAR aCallUsp_gam_10[]; // idb extern char aCsqlpcollectio[44]; // weak extern char aErrorCsqlpcoll[]; // idb extern SQLCHAR aCallUsp_collec[]; // idb extern char aCsqlpcollect_0[49]; // weak extern char aErrorCsqlpco_0[]; // idb extern SQLCHAR aCallUsp_coll_0[]; // idb extern char aCsqlpcollect_1[40]; // weak extern char aErrorCsqlpco_1[]; // idb extern SQLCHAR aCallUsp_coll_1[]; // idb extern char aCsqlpcollect_2[45]; // weak extern char aErrorCsqlpco_2[]; // idb extern SQLCHAR aCallUsp_coll_2[]; // idb extern char aCsqlpcollect_3[42]; // weak extern char aErrorCsqlpco_3[]; // idb extern SQLCHAR aCallUsp_coll_3[]; // idb extern char aCsqlpcollect_4[46]; // weak extern char aErrorCsqlpco_4[]; // idb extern SQLCHAR aCallUsp_coll_4[]; // idb extern char aCsqlpcollect_5[42]; // weak extern char aErrorCsqlpco_5[]; // idb extern SQLCHAR aCallUsp_coll_5[]; // idb extern char aCsqlpcollect_6[46]; // weak extern char aErrorCsqlpco_6[]; // idb extern SQLCHAR aCallUsp_coll_6[]; // idb extern char aErrorCsqlppe_0[]; // idb extern char aCsqlppetUsp_pe[28]; // weak extern char aErrorCsqlppetU[]; // idb extern SQLCHAR aCallUsp_pet_se[]; // idb extern char aCsqlppetUsp__0[26]; // weak extern char aErrorCsqlppe_1[]; // idb extern SQLCHAR aCallUsp_pet__0[]; // idb extern char aCsqlppetUsp__1[30]; // weak extern char aErrorCsqlppe_2[]; // idb extern SQLCHAR aCallUsp_pet__1[]; // idb extern char aErrorCsqlppe_4[]; // idb extern char aCsqlppetUsp__2[26]; // weak extern char aErrorCsqlppe_3[]; // idb extern SQLCHAR aCallUsp_pet_ge[]; // idb extern char aCsqlppetUsp__3[28]; // weak extern char aErrorCsqlppe_5[]; // idb extern SQLCHAR aCallUsp_pet__2[]; // idb extern char aInvalidGemItem[]; // idb extern char aTooManySocketE[]; // idb extern char asc_4C5C90[19]; // idb extern char aWarningCgamedb[]; // idb extern char aErrorPidbiData[]; // idb extern char aErrorItemdatab[]; // idb extern char asc_4C5D98[13]; // idb extern char asc_4C5DF8[13]; // idb extern char aErrorCreatei_3[36]; // idb extern char aErrorCreatei_2[]; // idb extern char aErrorCreatei_1[]; // idb extern char aCgamedb_charac[]; // idb extern char aPqs_rewardX[21]; // weak extern char aPqs_failedX[21]; // weak extern char aPqs_ingX[18]; // weak extern char aPqs_repeatX[21]; // weak extern char aErrorSetcharti[]; // idb extern char aErrorP_4[16]; // idb extern char aErrorCgamedb_1[73]; // weak extern char aErrorCgamedb_0[]; // idb extern char aErrorCgamedb_2[]; // idb extern char aErrorCollect_0[]; // idb extern char aErrorCollectio[64]; // weak extern char aErrorCollect_2[]; // idb extern char aErrorCollect_1[65]; // weak extern _UNKNOWN unk_4C635C; // weak extern int (*off_4C6378)(); // weak extern int (*off_4C639C)(); // weak extern char aSoapEnv[]; // idb extern char aBoolean[]; // idb extern char aNs1Amount[]; // idb extern char aSoapEnvHeader[]; // idb extern char aSoapEnvText[]; // idb extern char aXsdString[]; // idb extern char aSoapEnvSubcode[]; // idb extern char aSoapEnvValue[]; // idb extern char aNs1Getcashshop[]; // idb extern char aNs1Getitemshop[]; // idb extern char aNs1Getaccountf[]; // idb extern char aNs1Code[]; // idb extern char aNs1Token[]; // idb extern char aNs1Ip[]; // idb extern char aNs1Itemid[]; // idb extern char aNs1Currentbala[]; // idb extern char aNs1Requestedam[]; // idb extern char aNs1Accountid[]; // idb extern char aNs1Template[]; // idb extern char aNs1Parameter[]; // idb extern char aNs1Message[]; // idb extern char aNs1Url[]; // idb extern char aNs1Clientip[]; // idb extern char aNs1Ssotoken[]; // idb extern char aNs1Value[]; // idb extern char aNs1Key[]; // idb extern char aNs1Visible[]; // idb extern char aNs1Purchasable[]; // idb extern char aNs1Description[]; // idb extern char aNs1Price[]; // idb extern char aNs1Total[]; // idb extern char aNs1Name[]; // idb extern char aNs1Quantity[]; // idb extern int (*off_4C65A0)(); // weak extern int (*off_4C65C4)(); // weak extern int (*off_4C65E8)(); // weak extern int (*off_4C660C)(); // weak extern int (*off_4C6630)(); // weak extern int (*off_4C6654)(); // weak extern int (*off_4C6678)(); // weak extern int (*off_4C669C)(); // weak extern int (*off_4C66C0)(); // weak extern int (*off_4C66E4)(); // weak extern int (*off_4C6708)(); // weak extern int (*off_4C672C)(); // weak extern int (*off_4C6750)(); // weak extern int (*off_4C6774)(); // weak extern int (*off_4C6798)(); // weak extern int (*off_4C67BC)(); // weak extern int (*off_4C67E0)(); // weak extern char aXsdQname[]; // idb extern char aNs1Nocontent[]; // idb extern char aNs1Shoppingcar[]; // idb extern char aNs1Iteminforma[]; // idb extern char aNs1Propertylis[]; // idb extern char aNs1Property[]; // idb extern char aNs1Getaccoun_1[]; // idb extern char aNs1Getaccoun_0[]; // idb extern char aNs1Getitemsh_0[]; // idb extern char aNs1Getcashsh_0[]; // idb extern char aNs1Getshopurlr[]; // idb extern char aNs1Accountnotf[]; // idb extern char aNs1Infrastruct[]; // idb extern char aNs1Templatenot[]; // idb extern char aNs1Templatep_0[]; // idb extern char aNs1Sendfailed[]; // idb extern char aNs1Insufficent[]; // idb extern char aNs1Illegalamou[]; // idb extern char aNs1Illegalitem[]; // idb extern char aNs1Ipcountrybl[]; // idb extern char aNs1Tokenexpire[]; // idb extern char aNs1Tokeninvali[]; // idb extern char aNs1Voucherco_0[]; // idb extern char aNs1Ssotokentyp[]; // idb extern char aNs1Ipaddressty[]; // idb extern char aNs1Accountidty[]; // idb extern char aNs1Itemidtype[]; // idb extern char aNs1Vouchercode[]; // idb extern char aNs1Templatetyp[]; // idb extern char aNs1Templatepar[]; // idb extern char aNs1Errormessag[]; // idb extern char aNs1Characterna[]; // idb extern char aNs1Realmname[]; // idb extern char aXsdBoolean[]; // idb extern char aXsdInt[]; // idb extern char aNs1Cashcurrenc[]; // idb extern char aXsdByte[]; // idb extern char aAny[]; // idb extern int (*off_4C6B24)(); // weak extern char aId_1[3]; // idb extern char aSoapEnvDetail[]; // idb extern char aSoapEnvRole[]; // idb extern char aSoapEnvNode[]; // idb extern char aSoapEnvReason[]; // idb extern char aSoapEnvCode[]; // idb extern char aDetail[]; // idb extern char aFaultactor[]; // idb extern char aFaultstring[]; // idb extern char aFaultcode[]; // idb extern char aSoapEnvFault[]; // idb extern int (__thiscall *off_4C6BDC)(void *, char); // weak extern char *off_4C6C30[3]; // weak extern char aGetaccountfort[19]; // weak extern char aHttpLocalhost8[26]; // weak extern char aNs1Getitemsh_2[27]; // weak extern char aGetitemshopurl[15]; // weak extern char aNs1Getcashsh_2[27]; // weak extern char aGetcashshopurl[15]; // weak extern char aHttpSchemas_xm[42]; // weak extern char aHttpSchemas__1[42]; // weak extern char aHttpWww_w3_o_0[40]; // weak extern char aHttpWww_w3_o_1[40]; // weak extern char aHttpWww_w3_o_2[]; // idb extern char asc_4C75B4[11]; // weak extern char byte_4C75C8[]; // weak extern char byte_4C760C[4]; // idb extern char byte_4C7610[]; // weak extern _UNKNOWN unk_4C7664; // weak extern _UNKNOWN unk_4C7698; // weak extern _UNKNOWN unk_4C79A0; // weak extern _UNKNOWN unk_4C7AD8; // weak extern __int16 word_4C7B18; // weak extern char aD_1[4]; // idb extern char aD_0[4]; // idb extern char aXml_1[4]; // idb extern char aWsuId[]; // idb extern char aXmlns_0[]; // idb extern char aXmlns[]; // idb extern char aLd[]; // idb extern char aByte[]; // idb extern char aShort[]; // idb extern char aInt[]; // idb extern char aLu[]; // idb extern char aCid[]; // idb extern char aConnection[11]; // weak extern char aClose[6]; // weak extern char aKeepAlive[11]; // weak extern char aContentLength[15]; // weak extern char aTransferEncodi[18]; // weak extern char aChunked[8]; // weak extern char aContentType[13]; // weak extern char aActionS[]; // idb extern int dword_4C7BD4; // weak extern int dword_4C7BD8; // weak extern int dword_4C7BDC; // weak extern __int16 word_4C7BE0; // weak extern char byte_4C7BE2; // weak extern int dword_4C7BE4; // weak extern int dword_4C7BE8; // weak extern __int16 word_4C7BEC; // weak extern char byte_4C7BEE; // weak extern char aMultipartRelat[]; // idb extern char aApplicationDim[17]; // weak extern char aApplicationXop[20]; // weak extern char aTextXml[9]; // weak extern char aApplicationS_0[21]; // weak extern char aApplicationSoa[36]; // weak extern char aTextHtmlCharse[25]; // weak extern char aTextXmlCharset[24]; // weak extern char aValidationCo_0[]; // idb extern char aValidationCons[]; // idb extern char aDCsSendDelay[]; // idb extern char aDCsReceiveDela[]; // idb extern char aOperationInter[35]; // weak extern char aSoapEnvClient[]; // idb extern char aSoapEnvSender[]; // idb extern char aSoapEnvServer[]; // idb extern char aSoapEnvReceive[]; // idb extern char aLx[8]; // weak extern char aApos[5]; // weak extern char aQuot[5]; // weak extern char aAmp_0[4]; // weak extern char aGt_0[3]; // weak extern char aLt_0[3]; // weak extern char aUtf8[7]; // weak extern char aLatin1[8]; // weak extern char aIso88591[12]; // weak extern char aEncoding[]; // idb extern char aXml[]; // idb extern char aWsastartupFail[18]; // weak extern char aTcpUdpIpErrorD[]; // idb extern char aHttps[8]; // weak extern char aConnectFailedI[32]; // weak extern char aTimeout[8]; // weak extern char aGetHostByNameF[41]; // weak extern char aGetProxyHostBy[47]; // weak extern char aSetsockoptIp_0[51]; // weak extern char aSetsockoptIp_m[52]; // weak extern char aSetsockoptTcp_[47]; // weak extern char aSetsockoptSo_r[45]; // weak extern char aSetsockoptSo_s[45]; // weak extern char aSetsockoptSo_k[48]; // weak extern char aSetsockoptFail[35]; // weak extern char aSocketFailedIn[31]; // weak extern char aSetsockoptSo_l[45]; // weak extern char aTcpInitFailedI[33]; // weak extern char aSelectFailedIn[29]; // weak extern char asc_4C80A8[]; // idb extern char asc_4C80AC[]; // idb extern char aSoapaction[11]; // weak extern char aS_1[]; // idb extern char aProxyAuthoriza[20]; // weak extern char aAuthorization[14]; // weak extern char aSS_2[]; // idb extern int dword_4C80F0; // weak extern __int16 word_4C80F4; // weak extern char byte_4C80F6; // weak extern char aUserAgent[11]; // weak extern char aGsoap2_8[10]; // weak extern char aHost[5]; // weak extern char aSD[]; // idb extern char aSSHttpS_0[]; // idb extern char aSSHttpS[14]; // weak extern char aSSDHttpS[]; // idb extern char aHttpg[]; // idb extern char aHttp[7]; // weak extern char aPost[5]; // weak extern char aConnect[8]; // weak extern char aDelete[7]; // weak extern char aPut_0[4]; // weak extern char aGet_0[4]; // weak extern char aServer[7]; // weak extern char a200Ok[7]; // weak extern char a202Accepted[13]; // weak extern char aHttpSS[]; // idb extern char aStatus[7]; // weak extern char a500InternalSer[26]; // weak extern char a400BadRequest[16]; // weak extern char a405MethodNotAl[23]; // weak extern char aLocation[9]; // weak extern char aWwwAuthenticat[17]; // weak extern char aBasicRealmS[]; // idb extern char aGsoapWebServic[18]; // weak extern char aHttpSDS[]; // idb extern char asc_4C8254[2]; // weak extern char asc_4C8258[3]; // weak extern char aXml_0[]; // idb extern char aSoapEnvEnvelop[20]; // weak extern __int16 word_4C8278; // weak extern char byte_4C827A; // weak extern char aErrorD[]; // idb extern char aHttpErrorDS[]; // idb extern char aStoppedNoRespo[58]; // weak extern char aEndOfFileOrNoI[26]; // weak extern char aUtfContentEnco[27]; // weak extern char aMaximumNumberO[90]; // weak extern char aContentRangeOr[34]; // weak extern char aOccurrenceViol[21]; // weak extern char aProhibitedAttr[29]; // weak extern char aMissingRequire[27]; // weak extern char aZlibGzipNotIns[72]; // weak extern char aEndOfMimeError[18]; // weak extern char aMimeHrefToMiss[32]; // weak extern char aMimeFormatErro[18]; // weak extern char aEndOfDimeError[18]; // weak extern char aDimeVersionTra[32]; // weak extern char aDimeHrefToMiss[32]; // weak extern char aDimeFormatErro[18]; // weak extern char aPluginRegistry[22]; // weak extern char aOpensslNotInst[53]; // weak extern char aAnHttpNtlmAuth[43]; // weak extern char aAnHttpProcessi[34]; // weak extern char aMessageTooLarg[33]; // weak extern char aIncompatibleOb[38]; // weak extern char aSoapEncMissing[19]; // weak extern char aMissingIdForRe[20]; // weak extern char aSoapEncDuplica[21]; // weak extern char aMultipleDefini[66]; // weak extern char aNilNotAllowed[16]; // weak extern char aArrayIndexOutO[26]; // weak extern char aHeaderLineTooL[21]; // weak extern char aMemoryOverflow[43]; // weak extern char aOutOfMemory[14]; // weak extern char aHttpMethodNotI[28]; // weak extern char aHttpPutMethodN[32]; // weak extern char aHttpGetMethodN[32]; // weak extern char aDataRequiredFo[28]; // weak extern char aMethodSNotImpl[]; // idb extern char aFatalError[12]; // weak extern char aUserDataError[16]; // weak extern char aNamespaceError[16]; // weak extern char aUnsupportedSoa[31]; // weak extern char aSoapEnvDataenc[29]; // weak extern char aInvalidSoapMes[46]; // weak extern char aSoapEnvVersion[]; // idb extern char aTheDataInEleme[]; // idb extern char aSoapEnvMustund[]; // idb extern char aNoXmlRootEleme[20]; // weak extern char aWellFormedness[26]; // weak extern char aDataTypeMismat[20]; // weak extern char aTagNameOrNames[31]; // weak extern char aServerFault[13]; // weak extern char aClientFault[13]; // weak extern char aErrorSoapStruc[]; // idb extern char aSDFaultSSSDeta[]; // idb extern char aError[7]; // weak extern char aSoap1_[8]; // weak extern char aNoSubcode[11]; // weak extern char aNoReason[12]; // weak extern char aNoDetail[12]; // weak extern char aErrorSoapStr_0[]; // idb extern char aHttpError[11]; // weak extern char aHead[]; // idb extern char aOptions[]; // idb extern char aDelete_0[]; // idb extern char aGet[]; // idb extern char aPut[]; // idb extern char aPost_0[]; // idb extern char aHttp_0[]; // idb extern char aWsdlRequired[]; // idb extern char aHttpWww_w3_org[50]; // weak extern char aSoapEnvRole_0[]; // idb extern char aSoapEncArraysi[]; // idb extern char aSoapEncItemtyp[]; // idb extern char aSoapEncRef[]; // idb extern char aRef[4]; // weak extern char aHttpSchemas__0[43]; // weak extern char aSoapEnvActor[]; // idb extern char aSoapEnvMustu_0[]; // idb extern char aSoapEncRoot[]; // idb extern char aSoapEncPositio[]; // idb extern char aSoapEncOffset[]; // idb extern char aSoapEncArrayty[]; // idb extern char aXsiNil[]; // idb extern char aXsiNull[]; // idb extern char aXsiType[]; // idb extern char aHref[]; // idb extern char asc_4C8B78[2]; // weak extern char aCdata[9]; // weak extern char asc_4C8B88[3]; // weak extern char asc_4C8B8C[2]; // weak extern char aContentTransfe[26]; // weak extern char aContentDescrip[20]; // weak extern char aName[5]; // weak extern char aContentDisposi[20]; // weak extern char aContentLocatio[17]; // weak extern char aContentId[11]; // weak extern char aSoapEnvEnvel_0[]; // idb extern char aSoapEnvBody[]; // idb extern int (__thiscall *off_4C8C24)(void *, char); // weak extern char aRealm[6]; // weak extern char aXForwardedFor[16]; // weak extern char aHttp1_1100Cont[22]; // weak extern char a100Continue[13]; // weak extern char aExpect[7]; // weak extern char aProxyAuthentic[19]; // weak extern char aBasic[8]; // weak extern char aGzip[5]; // weak extern char aDeflate[8]; // weak extern char aContentEncodin[17]; // weak extern char aAction[7]; // weak extern char aStart[6]; // weak extern char aBoundary[9]; // weak extern char aMultipartFormD[20]; // weak extern char aMultipartRel_0[18]; // weak extern int dword_4C8CF4; // weak extern int dword_4C8CF8; // weak extern _UNKNOWN unk_4C8CFC; // weak extern _UNKNOWN unk_4C8D00; // weak extern _UNKNOWN unk_4C8D04; // weak extern _UNKNOWN unk_4C8D08; // weak extern char aQuot_0[7]; // weak extern char aGt[5]; // weak extern char aLt[5]; // weak extern char aAmp[6]; // weak extern char aXd[6]; // weak extern char aXa[6]; // weak extern char aX9[6]; // weak extern char aContentDescr_0[22]; // weak extern char aContentLocat_0[19]; // weak extern char aContentId_0[13]; // weak extern char aContentTrans_0[28]; // weak extern char aContentType_0[15]; // weak extern char asc_4C8DAC[5]; // weak extern char asc_4C8DB4[3]; // weak extern char aEnvelope[]; // idb extern char a0[8]; // weak extern char asc_4C8DCC[3]; // weak extern char asc_4C8DD0[3]; // weak extern char aXmlnsS[]; // idb extern char aResult[]; // idb extern char aSoap_udp[]; // idb extern char aSoapEnvEncodin[]; // idb extern char a_D_0[]; // idb extern char asc_4C8E10[2]; // weak extern char a_xmlVersion1_0[40]; // weak extern char aXmlnsSoapRpc[]; // idb extern char aSoapRpcResult[]; // idb extern char aSContentTypeSC[]; // idb extern char aApplicationX_1[52]; // weak extern char aApplicationX_0[64]; // weak extern char aBody[]; // idb extern char aEn[3]; // weak extern char a1_0[4]; // weak extern char a1_1[4]; // weak extern char aCidIdD[9]; // weak extern char a_17lg[7]; // weak extern char a_9g[5]; // weak extern char a_D[]; // idb extern char aDetail_0[9]; // weak extern char aFault[9]; // weak extern char asc_4C8F78[2]; // weak extern int (__thiscall *off_4C8F80)(void *, char); // weak extern int (__thiscall *off_4C8F8C)(void *, char); // weak extern int (__thiscall *off_4C8F98)(void *, char); // weak extern int (__thiscall *off_4C8FB4)(void *, char); // weak extern int dword_4C9058; // weak extern int dword_4C905C; // weak extern int (__thiscall *off_4C9140)(void *, char); // weak extern int (__thiscall *off_4C9148)(void *, char); // weak extern int (__thiscall *off_4C9168)(void *, char); // weak extern int (__thiscall *off_4C9BA0)(void *, char); // weak extern char aGetprocesswind[]; // idb extern char aGetuserobjecti[]; // idb extern char aGetlastactivep[]; // idb extern char aGetactivewindo[]; // idb extern char aMessageboxw[]; // idb extern const WCHAR aUser32_dll_0[]; // idb extern int (__thiscall *off_4CBF80)(void *, char); // weak extern _UNKNOWN unk_4CEF14; // weak extern _UNKNOWN unk_4CEF1C; // weak extern _UNKNOWN unk_4D145C; // weak extern _UNKNOWN unk_4D15C4; // weak extern _UNKNOWN unk_4D16C0; // weak extern _UNKNOWN unk_4D17CC; // weak extern _UNKNOWN unk_4D2058; // weak extern _UNKNOWN unk_4D2110; // weak extern _UNKNOWN unk_4D2168; // weak extern _UNKNOWN unk_4D2188; // weak extern _UNKNOWN unk_4D2754; // weak extern _UNKNOWN unk_4D2790; // weak extern int dword_4D4000; // weak extern _UNKNOWN unk_4D4008; // weak extern int dword_4DC008; // weak extern int dword_4DC00C; // weak extern char byte_4DC010[]; // weak extern char byte_4DC5E0[]; // weak extern char *off_4DC600[21]; // weak extern char *off_4DC658[9]; // weak extern _UNKNOWN unk_4DC6B0; // weak extern _UNKNOWN unk_4DC710; // weak extern char *off_4DC760[29]; // weak extern char *off_4DC7AC[10]; // weak extern _UNKNOWN unk_4DC7D4; // weak extern int dword_4DC7F0; // idb extern int dword_4DCA78; // weak extern _UNKNOWN unk_4DCB00; // weak extern volatile LONG Addend; // idb extern _UNKNOWN unk_4DD298; // weak extern struct _RTL_CRITICAL_SECTION CriticalSection; // idb extern _UNKNOWN unk_4DD3B4; // weak extern FILE *dword_4DD7B4; // idb extern int dword_4DD7B8; // weak extern int dword_4DD7BC; // weak extern _UNKNOWN unk_4DD7C0; // weak extern struct _RTL_CRITICAL_SECTION stru_4DD8C4; // idb extern _UNKNOWN unk_4DD8DC; // weak extern FILE *dword_4DDCDC; // idb extern int dword_4DDCE0; // weak extern int dword_4DDCE4; // weak extern volatile LONG dword_4DE234; // idb extern int (__thiscall *off_4DE304)(void *, char); // weak extern int (__thiscall *off_4DE30C)(void *, char); // weak extern int (__thiscall *off_4DE314)(void *, char); // weak extern int __security_cookie; // weak extern void *off_4DE440; // weak extern int dword_4DEAE0; // weak extern int dword_4DEAE4; // weak extern int dword_4DEAE8; // weak extern void *off_4DEB70[2]; // weak extern char *off_4DF500[44]; // weak extern _UNKNOWN unk_4DF5B0; // weak extern int dword_4DF5D4; // weak extern int dword_4DF5D8; // weak extern int dword_4DF5DC; // weak extern int dword_4DF5E0; // weak extern int dword_4DF5E4; // weak extern int dword_4DF5E8; // weak extern int dword_4DF5EC; // weak extern int dword_4DF5F0; // weak extern int dword_4DF5F4; // weak extern int dword_4DF5F8; // weak extern int dword_4DF5FC; // weak extern int dword_4DF600; // weak extern HANDLE hConsoleOutput; // idb extern int dword_4DF8E0; // weak extern int dword_4DFA3C; // weak extern _UNKNOWN unk_4DFA48; // weak extern int dword_4DFF48; // weak extern int dword_4DFF4C; // weak extern int dword_4DFF50; // weak extern _UNKNOWN unk_4DFF64; // weak extern _UNKNOWN unk_4DFF94; // weak extern int dword_4E922C; // weak extern int dword_4E9230; // weak extern int dword_4E9234; // weak extern _UNKNOWN unk_4E9280; // weak extern _UNKNOWN unk_67734D; // weak extern _UNKNOWN unk_6E92D8; // weak extern _UNKNOWN unk_6E97D0; // weak extern _UNKNOWN unk_6E9810; // weak extern _UNKNOWN unk_6E9850; // weak extern int dword_6E9890; // weak extern __int16 word_6E989A; // weak extern __int16 word_6E989C; // weak extern _UNKNOWN unk_6E98A0; // weak extern int dword_6E98D4; // weak extern _UNKNOWN unk_6E98E0; // weak extern int dword_6E9914; // weak extern _UNKNOWN unk_6E9920; // weak extern int dword_6E9954; // weak extern _UNKNOWN unk_6E9960; // weak extern _UNKNOWN unk_6E9994; // weak extern int dword_6E9EB0; // weak extern int dword_6E9EC0; // weak extern _UNKNOWN unk_6E9EC8; // weak extern int dword_6E9F54; // weak extern int dword_6E9F58; // weak extern _UNKNOWN unk_6E9F5C; // weak extern _UNKNOWN unk_6EA3E8; // weak extern int dword_6EA3EC; // weak extern _UNKNOWN unk_6EA3F0; // weak extern int dword_6EACDC; // weak extern __int16 word_6EACE0; // weak extern __int16 word_6EAD30; // weak extern int dword_6EAD34; // weak extern int dword_6EAD38; // weak extern int dword_6EAD3C; // weak extern int dword_6EAD40; // weak extern _UNKNOWN unk_6EAD48; // weak extern _UNKNOWN unk_6EAD50; // weak extern _UNKNOWN unk_6EAD54; // weak extern __int16 word_6EB9D0; // weak extern char Buffer[1024]; // idb extern char byte_6EBDD8[128]; // idb extern char byte_6EBE58[128]; // idb extern int dword_6EBED8; // weak extern int dword_6EBEDC; // weak extern int dword_6EBEE0; // weak extern int (*dword_6EC2B8)(void); // weak extern __int16 word_6EC2BC; // weak extern int dword_6EC2C0; // weak extern _DWORD dword_6EC2C8[76]; // idb extern _UNKNOWN unk_6EC3F8; // weak extern int dword_6EC418; // weak extern int dword_6EC41C; // weak extern int dword_6EC420; // weak extern int dword_6EC424; // weak extern int dword_6EC428; // weak extern int dword_6EC42C; // weak extern int dword_6EC430; // weak extern int dword_6EC434; // weak extern int dword_6EC438; // weak extern int dword_6EC43C; // weak extern int dword_6EC440; // weak extern int dword_6EC444; // weak extern int dword_6EC448; // weak extern int dword_6EC44C; // weak extern int dword_6EC450; // weak extern int dword_6EC454; // weak extern int dword_6EC458; // weak extern volatile LONG dword_6EC468; // idb extern volatile LONG dword_6EC46C; // idb extern volatile LONG dword_6EC470; // idb extern int dword_6EC478[]; // weak extern int dword_6ECC78[]; // weak extern _UNKNOWN unk_6ECC7C; // weak extern int dword_6F44F8[]; // weak extern volatile LONG Destination; // idb extern char byte_6F4578[2048]; // idb extern struct _IMAGEHLP_SYMBOL64 Symbol; // idb extern char Filename[]; // idb extern struct _IMAGEHLP_LINE64 Line64; // idb extern _UNKNOWN unk_6F5990; // weak extern int dword_6F5A4C; // weak extern struct _tagSTACKFRAME64 StackFrame; // idb extern int dword_6F5D70; // weak extern int dword_6F5DC8; // weak extern int dword_6F5DD0; // weak extern _UNKNOWN unk_6F5E10; // weak extern int dword_6F5E58; // weak extern int dword_6F5E98; // weak extern int dword_6F5E9C; // weak extern int dword_6F5EA0; // weak extern int dword_6F5EA4; // weak extern int dword_6F5EA8; // weak extern int dword_6F5EAC; // weak extern int dword_6F5EB0; // weak extern int dword_6F5EB4; // weak extern int dword_6F5EB8; // weak extern int dword_6F5EBC; // weak extern int dword_6F5EC0; // weak extern int dword_6F5EF4; // weak extern int dword_6F5F00; // weak extern int dword_6F5F04; // weak extern int dword_6F5F08; // weak extern int dword_6F5F0C; // weak extern int dword_6F5F10; // weak extern int dword_6F5F14; // weak extern char byte_6F5F18; // weak extern _UNKNOWN unk_6F5F1C; // weak extern _UNKNOWN unk_6FA570; // weak extern char byte_74A5C0[]; // weak extern int dword_7525C0; // weak extern int dword_7525C4; // weak extern __int16 word_7CA640[]; // weak extern int dword_7D2640; // weak extern int dword_7D2644; // weak extern __int16 word_A0A880[]; // weak extern int dword_A12880; // weak extern int dword_A12884; // weak extern _UNKNOWN unk_A22898; // weak extern _UNKNOWN unk_A428B8; // weak extern char byte_A42908; // weak extern SQLHANDLE OutputHandle; // idb extern int dword_A42910; // weak extern struct _RTL_CRITICAL_SECTION stru_A42914; // idb extern int dword_A42944; // weak extern struct _RTL_CRITICAL_SECTION stru_A42948; // idb extern _UNKNOWN unk_A429A8; // weak extern void *dword_A429AC; // idb extern int dword_A429B0; // weak extern int dword_A429B8; // weak extern int dword_A429BC; // weak extern int dword_A429CC; // weak extern _UNKNOWN unk_A42B50; // weak extern _UNKNOWN unk_A42B51; // weak extern int dword_A42B54; // weak extern PVOID dword_A42EF4; // idb extern PVOID dword_A42EF8; // idb extern PVOID dword_A43058; // idb extern _UNKNOWN unk_A4376C; // weak extern void *dword_A43770; // idb extern int dword_A43894; // weak extern PVOID dword_A4389C; // idb extern PVOID dword_A438A0; // idb extern PVOID dword_A438A4; // idb extern PVOID dword_A438A8; // idb extern PVOID dword_A438AC; // idb extern int dword_A438F4; // weak extern int dword_A438F8; // weak extern UINT uNumber; // idb extern int dword_A43920[]; // weak extern int dword_A43A20; // weak //------------------------------------------------------------------------- // Function declarations #define __thiscall __cdecl // Test compile in C mode int __thiscall sub_401000(_DWORD); // weak int __thiscall sub_401010(void *this); DWORD __thiscall sub_401140(int this); DWORD __thiscall sub_401280(int this); signed int __thiscall sub_4013C0(int this); signed int __thiscall sub_401560(void *this); signed int __thiscall sub_401BC0(int this); signed int __thiscall sub_401CE0(void *this); signed int __cdecl sub_401E90(); int __cdecl sub_401EA0(); int __thiscall sub_401F20(int this); char __thiscall sub_402040(void *this, unsigned __int8 *a2); DWORD __stdcall loc_4023C0(LPVOID); // idb signed int __thiscall sub_402570(void *this, unsigned __int8 *a2); char __thiscall sub_402720(LPVOID lpParameter); int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd); int sub_4029A0(); // weak int sub_4029B0(); // weak char *__thiscall sub_4029C0(char *this, const char *a2); char *__thiscall sub_4029E0(char *this, const char *a2); int __thiscall sub_402A10(int this, int a2); bool __thiscall sub_402C60(int this, char rgbValue, char a3, int a4); bool __thiscall sub_402C80(int this, char rgbValue, char a3, char a4, int a5); __int16 __thiscall sub_402CB0(int this, int rgbValue, int a3, unsigned __int16 a4, int a5); __int16 __thiscall sub_402CD0(int this, int rgbValue, int a3, unsigned __int16 a4, int a5); signed int __thiscall sub_402CF0(int this, unsigned __int8 *a2); int __thiscall sub_402D20(int this, unsigned __int16 a2); signed int __stdcall sub_402D80(int a1); signed int __thiscall sub_402E50(void *this, int a2, int a3, int a4); signed int __thiscall sub_402F80(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403000(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403080(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403100(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403180(void *this, char rgbValue, int a3, int a4, int a5, int a6); signed int __thiscall sub_403200(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403280(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403300(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403380(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403400(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403480(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403500(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403580(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403600(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403680(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403700(void *this, char rgbValue, int a3, int a4); signed int __thiscall sub_403780(void *this, char rgbValue, int a3, int a4, int a5, int a6); signed int __thiscall sub_403800(void *this, int rgbValue, int a3, char a4, int a5); signed int __stdcall sub_4038C0(unsigned __int16 a1, int a2, int a3, int a4); signed int __stdcall sub_403AA0(unsigned __int16 a1, int a2); signed int __stdcall sub_403C00(unsigned __int16 a1, int a2, int a3); signed int __stdcall sub_403CD0(unsigned __int16 a1, int a2, int a3, int a4); signed int __thiscall sub_403E30(void *this, int a2, int a3, unsigned __int16 a4, int a5, int a6); int __cdecl sub_404170(char a1, char a2); int __thiscall sub_404220(void *this, int a2); signed int __thiscall sub_404AD0(int this, int a2, int a3); signed int __thiscall sub_404C70(int this, int a2, int a3); signed int __thiscall sub_405050(int this, int a2, int a3); signed int __thiscall sub_405490(int this, int a2, int a3); int __thiscall sub_4055B0(int this, int a2); signed int __thiscall sub_405640(void *this, int a2, void *a3, size_t a4, int a5); signed int __thiscall sub_4057B0(int this, int a2, int a3); signed int __thiscall sub_405AD0(int this, int a2, int a3); signed int __thiscall sub_405BE0(void *this, int a2); signed int __thiscall sub_405CE0(void *this, int a2); bool __thiscall sub_405D80(void *this, int a2); signed int __thiscall sub_405EA0(void *this, int a2); int __thiscall sub_406010(void *this, int a2); signed int __thiscall sub_406230(void *this, int a2); signed int __thiscall sub_406310(void *this, int a2); signed int __thiscall sub_406460(int this, int a2, int a3); signed int __thiscall sub_4065B0(int this, int a2, int a3); signed int __thiscall sub_4065E0(int this, int a2, int a3); signed int __thiscall sub_406610(int this, int a2, int a3); signed int __thiscall sub_406700(int this, int a2, int a3); signed int __thiscall sub_4067F0(int this, int a2, int a3); signed int __thiscall sub_4068E0(int this, int a2, int a3); signed int __thiscall sub_406910(int this, int a2, int a3); signed int __thiscall sub_406940(int this, int a2, int a3); signed int __thiscall sub_4069E0(int this, int a2, int a3); signed int __thiscall sub_406A80(int this, int a2, int a3); signed int __thiscall sub_406B20(void *this, int a2); signed int __thiscall sub_406BF0(void *this, int a2, int a3); signed int __thiscall sub_406CA0(int this, int a2, int a3); signed int __thiscall sub_406E50(int this, int a2, int a3); signed int __thiscall sub_406FF0(int this, int a2, int a3); signed int __thiscall sub_4071D0(int this, int a2, int a3); signed int __thiscall sub_4073C0(int this, int a2, int a3); signed int __thiscall sub_407640(int this, int a2, int a3); signed int __thiscall sub_408120(int this, int a2, int a3); signed int __thiscall sub_408370(int this, int a2, int a3); signed int __thiscall sub_4085D0(int this, int a2, int a3); signed int __thiscall sub_408830(int this, int a2, int a3); signed int __thiscall sub_408A80(int this, int a2, int a3); signed int __thiscall sub_408B40(int this, int a2, int a3); signed int __thiscall sub_408DC0(int this, int a2, int a3); signed int __thiscall sub_409020(int this, int a2, int a3); signed int __thiscall sub_4092A0(int this, int a2, int a3); signed int __thiscall sub_409660(int this, int a2, int a3); signed int __thiscall sub_4099B0(int this, int a2, int a3); signed int __thiscall sub_409E50(int this, int a2, int a3); signed int __thiscall sub_40A170(int this, int a2, int a3); signed int __thiscall sub_40A440(int this, int a2, int a3); signed int __thiscall sub_40A880(int this, int a2, int a3); signed int __thiscall sub_40AF40(int this, int a2, int a3); signed int __thiscall sub_40B0C0(int this, int a2, int a3); signed int __thiscall sub_40B450(int this, int a2, int a3); signed int __thiscall sub_40B6E0(int this, int a2, int a3); signed int __thiscall sub_40B900(int this, int a2, int a3); signed int __thiscall sub_40BB30(int this, int a2, int a3); signed int __thiscall sub_40BF80(int this, int a2, int a3); signed int __thiscall sub_40C430(int this, int a2, int a3); signed int __thiscall sub_40C480(int this, int a2, int a3); signed int __thiscall sub_40C680(int this, int a2, int a3); signed int __thiscall sub_40CA00(int this, int a2, int a3); signed int __thiscall sub_40D560(int this, int a2, int a3); signed int __thiscall sub_40D780(int this, int a2, int a3); signed int __thiscall sub_40D8C0(int this, int a2, int a3); signed int __thiscall sub_40D9E0(int this, int a2, int a3); signed int __thiscall sub_40DCB0(int this, int a2, int a3); signed int __thiscall sub_40E050(int this, int a2, int a3); signed int __thiscall sub_40E5B0(int this, int a2, int a3); int __stdcall sub_40E660(int, int); // weak signed int __thiscall sub_40E690(void *this, int a2); signed int __thiscall sub_40EAD0(int this, int a2, int a3); signed int __thiscall sub_40EFB0(int this, int a2, int a3); signed int __thiscall sub_40F2F0(void *this, int a2); signed int __thiscall sub_40F490(int this, int a2, int a3); signed int __thiscall sub_40F8D0(int this, int a2, int a3); signed int __thiscall sub_40FE30(int this, int a2, int a3); signed int __thiscall sub_410430(int this, int a2, int a3); signed int __thiscall sub_410A00(int this, int a2, int a3); signed int __thiscall sub_410E20(void *this, int rgbValue, int a3, int a4); signed int __thiscall sub_410EA0(void *this, int rgbValue, int a3); signed int __thiscall sub_410F30(int this, int a2, int a3); signed int __thiscall sub_411190(int this, int a2, int a3); signed int __thiscall sub_4113F0(int this, int a2, int a3); signed int __thiscall sub_411670(int this, int a2, int a3); signed int __thiscall sub_411830(int this, int a2, int a3); signed int __thiscall sub_411C20(int this, int a2, int a3); signed int __thiscall sub_411EA0(int this, int a2, int a3); signed int __thiscall sub_412140(int this, int a2, int a3); signed int __thiscall sub_412300(int this, int a2, int a3); signed int __thiscall sub_4123B0(void *this, int a2, int a3, int a4); signed int __thiscall sub_412450(int this, int a2, int a3); signed int __thiscall sub_412630(int this, int a2, int a3); signed int __thiscall sub_412720(int this, int a2, int a3); signed int __thiscall sub_4128D0(int this, int a2, int a3); signed int __thiscall sub_412B40(int this, int a2, int a3); signed int __thiscall sub_412C00(int this, int a2, int a3); signed int __thiscall sub_412CD0(int this, int a2, int a3); signed int __thiscall sub_412EC0(int this, int a2, int a3); signed int __thiscall sub_412FC0(int this, int a2, int a3); signed int __thiscall sub_413110(int this, int a2, int a3); signed int __thiscall sub_413240(int this, int a2, int a3); signed int __thiscall sub_413550(int this, int a2, int a3); signed int __thiscall sub_413B00(int this, int a2, int a3); signed int __thiscall sub_413BA0(int this, int a2, int a3); signed int __thiscall sub_413C20(int this, int a2, int a3); signed int __thiscall sub_413CA0(int this, int a2, int a3); signed int __thiscall sub_413D20(int this, int a2, int a3); signed int __thiscall sub_413DA0(int this, int a2, int a3); signed int __thiscall sub_413E40(int this, int a2, int a3); signed int __thiscall sub_413EE0(int this, int a2, int a3); signed int __thiscall sub_413F20(int this, int a2, int a3); signed int __thiscall sub_413F60(int this, int a2, int a3); signed int __thiscall sub_413FA0(int this, int a2, int a3); signed int __thiscall sub_413FE0(int this, int a2, int a3); signed int __thiscall sub_414020(int this, int a2, int a3); signed int __thiscall sub_414060(int this, int a2, int a3); signed int __thiscall sub_4140A0(int this, int a2, int a3); signed int __thiscall sub_4140E0(int this, int a2, int a3); int __thiscall sub_4142B0(int this, int a2); signed int __thiscall sub_4143E0(int this, int a2, int a3); int __thiscall sub_414600(int this, int a2); signed int __thiscall sub_414640(int this, int a2, int a3); signed int __thiscall sub_414800(int this, int a2, int a3); signed int __thiscall sub_414920(int this, int a2, int a3); signed int __thiscall sub_414A80(int this, int a2, int a3); signed int __thiscall sub_414BE0(int this, int a2, int a3); signed int __thiscall sub_414DE0(int this, int a2, int a3); signed int __thiscall sub_414F00(int this, int a2, int a3); signed int __thiscall sub_415060(int this, int a2, int a3); signed int __thiscall sub_415180(int this, int a2, int a3); signed int __thiscall sub_415390(int this, int a2, int a3); signed int __thiscall sub_415580(int this, int a2, int a3); signed int __thiscall sub_415690(int this, int a2, int a3); signed int __thiscall sub_4158E0(int this, int a2, int a3); signed int __thiscall sub_415C00(int this, int a2, int a3); signed int __thiscall sub_415D80(int this, int a2, int a3); signed int __thiscall sub_415EF0(int this, int a2, int a3); signed int __thiscall sub_4160D0(int this, int a2, int a3); signed int __thiscall sub_4162C0(int this, int a2, int a3); signed int __thiscall sub_416400(int this, int a2, int a3); signed int __thiscall sub_416560(int this, int a2, int a3); signed int __thiscall sub_4165E0(int this, int a2, int a3); signed int __thiscall sub_4166F0(int this, int a2, int a3); signed int __thiscall sub_4167B0(int this, int a2, int a3); signed int __thiscall sub_416870(int this, int a2, int a3); signed int __thiscall sub_416930(int this, int a2, int a3); signed int __thiscall sub_4169F0(int this, int a2, int a3); signed int __thiscall sub_416C40(int this, int a2, int a3); signed int __thiscall sub_416D70(int this, int a2, int a3); signed int __thiscall sub_417070(int this, int a2, int a3); signed int __thiscall sub_417370(int this, int a2, int a3); signed int __thiscall sub_417770(int this, int a2, int a3); signed int __thiscall sub_4179D0(int this, int a2, int a3); signed int __thiscall sub_417B90(int this, int a2, int a3); signed int __thiscall sub_417D00(int this, int a2, int a3); signed int __thiscall sub_417E60(int this, int a2, int a3); int __stdcall sub_417FC0(__time32_t *Time, int); // idb signed int __thiscall sub_418030(void *this, char rgbValue, void *a3, size_t a4); signed int __thiscall sub_418230(int this, int a2, int a3); signed int __thiscall sub_4187C0(int this, int a2, int a3); signed int __thiscall sub_4189C0(int this, int a2, int a3); signed int __thiscall sub_418C00(int this, int a2, int a3); signed int __thiscall sub_418DC0(int this, int a2, int a3); signed int __thiscall sub_418F40(int this, int a2, int a3); signed int __thiscall sub_4190C0(int this, int a2, int a3); signed int __thiscall sub_4191D0(int this, int a2, int a3); signed int __thiscall sub_419350(int this, int a2, int a3); signed int __thiscall sub_4194D0(int this, int a2, int a3); signed int __thiscall sub_4196B0(int this, int a2, int a3); signed int __thiscall sub_4198A0(int this, int a2, int a3); signed int __thiscall sub_419A70(int this, int a2, int a3); signed int __thiscall sub_419B80(int this, int a2, int a3); signed int __thiscall sub_41A1B0(int this, int a2, int a3); signed int __thiscall sub_41A3C0(int this, int a2, int a3); signed int __thiscall sub_41A470(int this, int a2, int a3); signed int __thiscall sub_41A4F0(void *this, int rgbValue); signed int __thiscall sub_41A850(int this, int a2, int a3); signed int __thiscall sub_41A880(int this, int a2, int a3); signed int __thiscall sub_41AD80(int this, int a2, int a3); signed int __thiscall sub_41AF70(int this, int a2, int a3); signed int __thiscall sub_41B110(int this, int a2, int a3); signed int __thiscall sub_41B2C0(void *this, int a2); int __stdcall sub_41B3E0(int a1, int a2); int __thiscall sub_41B440(int this, int a2); signed int __thiscall sub_41B530(int this, int a2, int a3); signed int __thiscall sub_41B960(int this, int a2, int a3); int __thiscall sub_41BAC0(int this, int a2); signed int __thiscall sub_41BB50(int this, int a2, int a3); signed int __thiscall sub_41BD90(int this, int a2, int a3); signed int __thiscall sub_41BF80(int this, int a2, int a3); signed int __thiscall sub_41C160(int this, int a2, int a3); signed int __thiscall sub_41C350(int this, int a2, int a3); signed int __thiscall sub_41C500(int this, int a2, int a3); signed int __thiscall sub_41C800(int this, int a2, int a3); signed int __thiscall sub_41CA20(int this, int a2, int a3); signed int __thiscall sub_41CC40(int this, int a2, int a3); signed int __thiscall sub_41CE70(int this, int a2, int a3); signed int __thiscall sub_41D210(int this, int a2, int a3); signed int __thiscall sub_41D440(int this, int a2, int a3); signed int __thiscall sub_41D6F0(int this, int a2, int a3); signed int __thiscall sub_41D830(int this, int a2, int a3); signed int __thiscall sub_41D970(int this, int a2, int a3); signed int __thiscall sub_41DB00(int this, int a2, int a3); signed int __thiscall sub_41DC30(int this, int a2, int a3); signed int __thiscall sub_41DD90(int this, int a2, int a3); signed int __thiscall sub_41EC30(int this, int a2, int a3); signed int __thiscall sub_41EDC0(int this, int a2, int a3); signed int __thiscall sub_41EE90(int this, int a2, int a3); signed int __thiscall sub_41EF30(int this, int a2, int a3); signed int __thiscall sub_41F5A0(int this, int a2, int a3); signed int __thiscall sub_41F720(int this, int a2, int a3); signed int __thiscall sub_41F8C0(int this, int a2, int a3); signed int __thiscall sub_41FA10(int this, int a2, int a3); signed int __thiscall sub_41FC30(int this, int a2, int a3); signed int __thiscall sub_41FE50(int this, int a2, int a3); signed int __thiscall sub_41FEE0(int this, int a2, int a3); signed int __thiscall sub_420100(int this, int a2, int a3); signed int __thiscall sub_420190(int this, int a2, int a3); signed int __thiscall sub_420650(int this, int a2, int a3); signed int __thiscall sub_4208D0(int this, int a2, int a3); signed int __thiscall sub_4209E0(int this, int a2, int a3); signed int __thiscall sub_420AC0(int this, int a2, int a3); signed int __thiscall sub_420C90(int this, int a2, int a3); signed int __thiscall sub_421000(int this, int a2, int a3); signed int __thiscall sub_4210D0(int this, int a2, int a3); signed int __thiscall sub_421360(int this, int a2, int a3); signed int __thiscall sub_4215A0(int this, int a2, int a3); signed int __thiscall sub_421970(int this, int a2, int a3); signed int __thiscall sub_421CA0(int this, int a2, int a3); signed int __thiscall sub_421D70(int this, int a2, int a3); int __thiscall sub_421F60(void *this, int rgbValue, __int16 a3); signed int __thiscall sub_422180(void *this, int TargetValue, int a3); signed int __thiscall sub_422200(void *this, int a2); signed int __thiscall sub_422410(int this, int a2, int a3); signed int __thiscall sub_4225A0(void *this, int a2); signed int __thiscall sub_4227D0(int this, int a2, int a3); signed int __thiscall sub_422AC0(int this, int a2, int a3); signed int __thiscall sub_422C50(void *this, int a2); signed int __thiscall sub_422E50(int this, int a2, int a3); signed int __thiscall sub_4230E0(int this, int a2, int a3); signed int __thiscall sub_423260(int this, int a2, int a3); signed int __thiscall sub_423360(int this, int a2, int a3); signed int __thiscall sub_423440(int this, int a2, int a3); signed int __thiscall sub_423620(int this, int a2, int a3); signed int __thiscall sub_423870(int this, int a2, int a3); signed int __thiscall sub_423AD0(int this, int a2, int a3); signed int __thiscall sub_423BF0(int this, int a2, int a3); signed int __thiscall sub_423E70(int this, int a2, int a3); signed int __thiscall sub_424080(int this, int a2, int a3); signed int __thiscall sub_424240(int this, int a2, int a3); signed int __thiscall sub_424390(int this, int a2, int a3); signed int __thiscall sub_424530(int this, int a2, int a3); signed int __thiscall sub_4246E0(int this, int a2, int a3); signed int __thiscall sub_4247F0(int this, int a2, int a3); signed int __thiscall sub_424980(int this, int a2, int a3); signed int __thiscall sub_424AF0(int this, int a2, int a3); signed int __thiscall sub_424D10(int this, int a2, int a3); signed int __thiscall sub_424F00(int this, int a2, int a3); signed int __thiscall sub_4250E0(int this, int a2, int a3); signed int __thiscall sub_4253D0(int this, int a2, int a3); signed int __thiscall sub_425800(int this, int a2, int a3); signed int __thiscall sub_425CD0(int this, int a2, int a3); signed int __thiscall sub_425F50(int this, int a2, int a3); signed int __thiscall sub_426360(int this, int a2, int a3); signed int __thiscall sub_426890(int this, int a2, int a3); signed int __thiscall sub_426B00(int this, int a2, int a3); signed int __thiscall sub_426F20(int this, int a2, int a3); signed int __thiscall sub_4274A0(int this, int a2, int a3); signed int __thiscall sub_427680(int this, int a2, int a3); signed int __thiscall sub_427850(int this, int a2, int a3); int __stdcall sub_427BD0(int, int); // weak int __stdcall sub_427C10(int a1, int a2); signed int __thiscall sub_427C70(int this, int a2, int a3); signed int __thiscall sub_428010(int this, int a2, int a3); signed int __thiscall sub_428170(int this, int a2, int a3); signed int __thiscall sub_4287B0(void *this, __int16 a2, int rgbValue); signed int __thiscall sub_428A90(int this, int a2, int a3); signed int __thiscall sub_428AD0(int this, int a2, int a3); signed int __thiscall sub_428CB0(int this, int a2, int a3); signed int __thiscall sub_429040(int this, int a2, int a3); signed int __thiscall sub_4297F0(void *this, int a2); signed int __thiscall sub_429990(int this, int a2, int a3); signed int __thiscall sub_429B70(int this, int a2, int a3); signed int __thiscall sub_429D50(int this, int a2, int a3); signed int __thiscall sub_42A110(int this, int a2, int a3); signed int __thiscall sub_42A5B0(int this, int a2, int a3); signed int __thiscall sub_42AD90(int this, int a2, int a3); signed int __thiscall sub_42B590(int this, int a2, int a3); signed int __thiscall sub_42B800(int this, int a2, int a3); signed int __thiscall sub_42B950(int this, int a2, int a3); signed int __thiscall sub_42BBA0(int this, int a2, int a3); signed int __thiscall sub_42BE10(int this, int a2, int a3); signed int __thiscall sub_42C000(int this, int a2, int a3); signed int __stdcall sub_42C530(unsigned __int16 a1, int a2, void *a3); signed int __thiscall sub_42C610(void *this, int a2); bool __thiscall sub_42C780(int this, int a2, int a3); signed int __thiscall sub_42C7B0(int this, int a2, int a3); signed int __thiscall sub_42CCF0(int this, int a2, int a3); signed int __thiscall sub_42D280(void *this, int a2); signed int __thiscall sub_42D620(int this, int a2, int a3); signed int __thiscall sub_42D850(int this, int a2, int a3); signed int __thiscall sub_42DB70(int this, int a2, int a3); signed int __thiscall sub_42DEA0(int this, int a2, int a3); signed int __thiscall sub_42E710(int this, int a2, int a3); signed int __thiscall sub_42EB90(int this, int a2, int a3); signed int __thiscall sub_42EF20(int this, int a2, int a3); signed int __thiscall sub_42F160(int this, int a2, int a3); signed int __thiscall sub_42F500(int this, int a2, int a3); signed int __thiscall sub_42FA80(int this, int a2, int a3); void __thiscall sub_42FB70(void *this); int __thiscall sub_42FBA0(void *this, int a2, int a3, int a4); signed int __thiscall sub_42FC70(void *this, int a2); void *__thiscall sub_42FF40(char *this, char a2); signed int __thiscall sub_42FF90(int this, int a2, int a3); signed int __thiscall sub_4308E0(int this, int a2, int a3); signed int __thiscall sub_430AD0(int this, int a2, int a3); signed int __thiscall sub_430C10(int this, int a2, int a3); signed int __thiscall sub_430F30(int this, int a2, int a3); signed int __thiscall sub_431020(int this, int a2, int a3); signed int __thiscall sub_4311B0(int this, int a2, int a3); signed int __thiscall sub_4317D0(int this, int a2, int a3); signed int __thiscall sub_431D20(int this, int a2, int a3); signed int __thiscall sub_4325F0(int this, int a2, int a3); signed int __thiscall sub_4328C0(int this, int a2, int a3); signed int __thiscall sub_432A70(int this, int a2, int a3); signed int __thiscall sub_433030(int this, int a2, int a3); signed int __thiscall sub_433610(int this, int a2, int a3); signed int __thiscall sub_433B60(int this, int a2, int a3); signed int __thiscall sub_433EF0(void *this, int a2); signed int __thiscall sub_434070(int this, int a2, int a3); signed int __thiscall sub_434400(int this, int a2, int a3); signed int __thiscall sub_434A40(int this, int a2, int a3); signed int __thiscall sub_434B60(int this, int a2, int a3); signed int __thiscall sub_4350A0(int this, int a2, int a3); int __thiscall sub_4351D0(int this); signed int __thiscall sub_435230(int this, int a2, int a3); signed int __thiscall sub_435450(int this, int a2, int a3); signed int __thiscall sub_435800(int this, int a2, int a3); signed int __thiscall sub_435A20(int this, int a2, int a3); signed int __thiscall sub_435C50(int this, int a2, int a3); signed int __thiscall sub_435D10(int this, int a2, int a3); signed int __thiscall sub_4361D0(int this, int a2, int a3); signed int __thiscall sub_4364C0(int this, int a2, int a3); signed int __thiscall sub_4366E0(int this, int a2, int a3); signed int __thiscall sub_436860(int this, int a2, int a3); signed int __thiscall sub_436E50(int this, int a2, int a3); signed int __thiscall sub_4373C0(void *this, int a2); signed int __thiscall sub_4375A0(int this, int a2, int a3); signed int __thiscall sub_4375D0(int this, int a2, int a3); signed int __thiscall sub_4377D0(int this, int a2, int a3); signed int __thiscall sub_4397D0(int this, int a2, int a3); int __thiscall sub_439A50(int this); signed int __thiscall sub_43B000(int this, int a2); signed int __thiscall sub_43B090(int this, unsigned int *a2, int a3); signed int __thiscall sub_43B160(void *this, int a2, int a3); signed int __thiscall sub_43B240(void *this, int a2, int a3); signed int __thiscall sub_43B6E0(int this, int a2, int a3); int __stdcall sub_43B7B0(int, int); // weak signed int __thiscall sub_43B7D0(int this, int a2, int a3); signed int __thiscall sub_43B9C0(void *this, int a2, int a3); signed int __thiscall sub_43BA70(int this, int a2, int a3); signed int __thiscall sub_43BB40(int this, int a2, int a3); bool __thiscall sub_43BC90(int this, int a2, int a3); int __thiscall sub_43BCB0(int this); signed int __thiscall sub_43BDE0(void *this, int a2); int loc_43BFA0(); // weak signed int __thiscall sub_43BFB0(int this, int a2); signed int __thiscall sub_43BFE0(int this, int a2, unsigned int a3); BOOL __thiscall sub_43C020(int this, HANDLE *a2); signed int __thiscall sub_43C040(void *this, int a2); int __thiscall sub_43C1A0(int, int, int); // idb int __thiscall sub_43C270(int this); signed int __thiscall sub_43C3B0(void *this); signed int __thiscall sub_43C4E0(int this); int __thiscall sub_43C520(int this, char a2); void __thiscall sub_43C560(int this); void __thiscall sub_43C580(int this); int __thiscall sub_43C5E0(int this, int a2, int a3); int __thiscall sub_43C640(void *this); void __stdcall sub_43C6F0(void *a1); int __thiscall sub_43C720(int this, int a2, int a3); signed int __thiscall sub_43C800(int this, int a2); signed int __thiscall sub_43C930(void *this, int a2, int a3); int __thiscall sub_43C970(int this); int __thiscall sub_43C990(int this, int a2); void *__thiscall sub_43C9B0(void *this); int __thiscall sub_43C9F0(_DWORD); // weak int __thiscall sub_43CA00(void *this); void __thiscall sub_43CA90(int this); // int __userpurge StartAddress(int a1, int a2); HANDLE __thiscall sub_43CCF0(LPVOID lpParameter, int a2, int a3, int a4); void __thiscall sub_43CDA0(int this); int (__stdcall **__thiscall sub_43CDE0(void *this))(int, int); int __thiscall sub_43CE90(int this); void *__thiscall sub_43CF10(void *this, char a2); void __thiscall sub_43CF40(int this); void __thiscall sub_43CFC0(int this, int a2); void *__thiscall sub_43D0D0(void *this); void __thiscall sub_43D110(int this); int __thiscall sub_43D190(int this, int a2, const void *a3, size_t a4); signed int __thiscall sub_43D200(int this, unsigned int a2); // int __userpurge sub_43D270(int a1, int a2, int a3, int a4); DWORD __thiscall sub_43D3A0(int this, DWORD a2, int a3); int __thiscall sub_43D500(int this); int __thiscall sub_43D510(int this, LPCSTR lpFileName); signed int __thiscall sub_43D540(int this, int a2, int a3); signed int __thiscall sub_43D640(int this, int a2, int a3); signed int __thiscall sub_43D690(int this, int a2, int a3); signed int __thiscall sub_43D6E0(int this, int a2, int a3); int __thiscall sub_43D750(_DWORD); // weak signed int __thiscall sub_43D760(int this, int a2, int a3); signed int __thiscall sub_43D840(int this, int a2, int a3); int __thiscall sub_43D8A0(void *this); void *__thiscall sub_43D8B0(void *this, char a2); void *__thiscall sub_43D8E0(void *this, int a2); int __stdcall sub_43D900(size_t); // idb int __thiscall sub_43D950(int this, unsigned int a2, unsigned int a3); // void *__usercall sub_43D9E0(int a1, int a2, unsigned int a3, size_t a4); // void __usercall sub_43DB1B(int a1); int sub_43DB50(); // weak void __thiscall loc_43DB70(void *); // idb unsigned int __thiscall sub_43DBA0(int this, unsigned int a2); int __thiscall sub_43DC20(void *this, int a2, unsigned int a3, unsigned int a4); int __thiscall sub_43DD10(int this); signed int __cdecl sub_43DD70(); void __thiscall loc_43DD80(void *); // idb int __thiscall sub_43DDB0(int this); void __thiscall loc_43DE10(void *); // idb unsigned int __thiscall sub_43DE40(int this, int a2); int __thiscall sub_43DEA0(int this, char *a2, size_t a3); int __thiscall sub_43DFA0(int this); void __thiscall sub_43DFB0(int this); int __thiscall sub_43DFE0(int this, unsigned int a2); int __thiscall sub_43E050(int this, char *a2); signed int __thiscall sub_43E080(void *lpCriticalSection, LONG a2); signed int __thiscall sub_43E1E0(int this, int a2, int a3); // char *__stdcall inet_ntoa(struct in_addr in); int __fastcall sub_43E600(int a1); void __thiscall sub_43E650(void *this); void *__thiscall sub_43E6A0(void *this, char a2); int __thiscall sub_43E6D0(int this, int a2); void *__thiscall sub_43E710(void *this, char a2); int __thiscall sub_43E740(int this); char __cdecl sub_43E770(int a1, int a2); int __thiscall sub_43E7B0(int this, unsigned int a2); int loc_43E800(); // weak int loc_43E820(); // weak __int64 __thiscall sub_43E850(int this); __int64 __thiscall sub_43E870(int this); int __thiscall sub_43E890(int this); void *__thiscall sub_43E8F0(void *this, char a2); int __thiscall sub_43E920(int this, unsigned __int8 a2); int *__thiscall sub_43E940(void *this, int *a2, int *a3); int __thiscall sub_43E970(int this, unsigned __int8 a2); int *__thiscall sub_43E990(void *this, int *a2, int *a3); char __stdcall sub_43E9C0(char a1); int __stdcall sub_43E9D0(const void *a1, int a2, void *a3); char __stdcall sub_43EA00(char a1, int a2); int __stdcall sub_43EA10(const void *a1, int a2, int a3, void *a4); void *__thiscall sub_43EA40(void *this, char a2); int __thiscall sub_43EAA0(int this, char a2, int a3); void *__thiscall sub_43EB80(void *this, int a2); void *__thiscall sub_43EBA0(void *this, int a2); int __thiscall sub_43EBD0(int this); void *__thiscall sub_43EC60(void *this, int a2); void __thiscall sub_43EC90(int this); int loc_43ECD0(); // weak int __thiscall sub_43ECF0(int this); int __thiscall sub_43ED70(int this); void __thiscall sub_43ED80(int this); __int64 __cdecl sub_43ED90(); signed int __cdecl sub_43EDA0(); void *__thiscall sub_43EDB0(void *this, int a2, int a3, int a4); int __thiscall sub_43EDC0(void *this); __int64 __thiscall sub_43EDF0(void *this, char *a2, __int64 a3); __int64 __thiscall sub_43EEC0(void *this, char *a2, __int64 a3); int __stdcall sub_43EF90(int a1, int a2, int a3, int a4, int a5); int __stdcall sub_43EFC0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8); signed int __thiscall sub_43EFF0(int this, signed int a2); signed int __thiscall sub_43F040(int this); int __thiscall sub_43F0B0(int this, int a2, __int64 a3, int a4, char a5); int __thiscall sub_43F270(int this, int a2, __int64 a3, int a4, int a5, int a6, int a7, char a8); void *__thiscall sub_43F390(void *this, char a2); void *__thiscall sub_43F3D0(void *this, char a2); void *__thiscall sub_43F410(void *this, char a2); void *__thiscall sub_43F440(void *this, char a2); void *__thiscall sub_43F4A0(void *this, char a2); void *__thiscall sub_43F4D0(void *this); char __thiscall sub_43F5C0(int this, int a2, size_t a3, char a4); void __thiscall sub_43F600(int this); char __thiscall sub_43F630(void *this, int a2, char a3); // void __usercall sub_43F758(int a1); void *__thiscall sub_43F770(void *this, char *a2); int __thiscall sub_43F820(void *this); signed int __cdecl sub_43F8D0(int a1, int a2); void *__thiscall sub_43F9B0(void *this, char a2); int __thiscall sub_43FA10(void *this); int __thiscall sub_43FA90(void *this); signed int __thiscall sub_43FB20(int this, signed int a2); int __cdecl sub_43FCD0(int a1); char __thiscall sub_43FE10(int this); char __thiscall sub_43FE20(int this); void *__thiscall sub_43FE30(void *this, char a2); void *__thiscall sub_43FEA0(void *this); void *__thiscall sub_43FEF0(void *this, char a2); _DWORD __stdcall sub_43FF30(char); // weak void *__thiscall sub_4400D0(void *this); int loc_440111(); // weak int (*__cdecl sub_440123())(); int __thiscall sub_440130(void *this, int a2); int __thiscall sub_440150(void *this, int a2); int __thiscall sub_440170(void *this, int a2); int __thiscall sub_440190(int this, int a2, unsigned int a3, int a4); int __thiscall sub_440280(int this, int a2); signed int __cdecl sub_440330(int a1, int a2); signed int __thiscall sub_440400(void *this, const char *a2); int __thiscall sub_440660(void *this, const char *a2, int a3, int a4); int __thiscall sub_4406A0(void *this); int __thiscall sub_440710(int this, size_t a2, char a3); void *__cdecl sub_4407C0(void *a1, const char *a2); // int (*__usercall sub_440A36(int a1))(); int loc_440A67(); // weak int __cdecl sub_440A80(int a1); int __thiscall sub_440BC0(int this, char *a2); int __thiscall sub_440C00(int this, int a2); int __thiscall sub_440C50(int this, int a2); int __thiscall sub_440CA0(int this, int a2); char *__cdecl sub_440CF0(signed int a1); char *__cdecl sub_440D10(signed int a1); int __thiscall sub_440D30(int this); signed int __thiscall sub_440DA0(int this); int __thiscall sub_440E00(void *this, int a2); const unsigned __int8 *__thiscall sub_440E20(int this, int a2, const unsigned __int8 *a3); const unsigned __int8 *__thiscall sub_440EA0(int this); signed int __thiscall sub_440F20(int this); signed int __thiscall sub_440FE0(int this); int __thiscall sub_441030(int this); int __thiscall sub_441080(int this); signed int __thiscall sub_441090(int this, int a2); signed int __stdcall sub_441100(const unsigned __int8 *a1, int a2, unsigned int a3); int __thiscall sub_441140(int this); signed int __thiscall sub_4411D0(int this, LPCSTR lpFileName); signed int __thiscall sub_4412E0(int this, const char *a2); int __thiscall sub_4413A0(int this, int a2); char __cdecl sub_441490(unsigned __int8 *a1, const unsigned __int8 *a2); int __thiscall sub_4414E0(int this); char __thiscall sub_441500(void *this, char *a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10); int __thiscall sub_4416C0(int this); void *__thiscall sub_4420D0(void *this, char a2); int __thiscall sub_442100(void *this, int a2); void *__thiscall sub_4427E0(int this, const void *a2, unsigned int a3); void **__thiscall sub_442890(void **this, void **a2); int __thiscall sub_442910(void *this, int a2); int __cdecl sub_442AC0(int a1, const void *a2, unsigned int a3); void *__thiscall sub_442B70(int this); DWORD __thiscall sub_442BF0(int this, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); unsigned int __thiscall sub_442C70(int this, int a2, unsigned int a3); BOOL __thiscall sub_442CB0(int this, LPCVOID NumberOfBytesWritten); int __thiscall sub_442D70(int this, int a2); BOOL __thiscall sub_442DD0(int this, int a2, unsigned int a3); signed int __thiscall sub_442E70(int this, const unsigned __int8 *a2); int __thiscall sub_442ED0(int this, int a2); int __thiscall sub_442F50(int this, const unsigned __int8 *a2); BOOL __thiscall sub_442F80(int this, HANDLE hObject); BOOL __thiscall sub_442FC0(int this, HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); void *__thiscall sub_443050(int this, HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); DWORD __thiscall sub_443140(int this, HANDLE hFile, LPDWORD lpFileSizeHigh); DWORD __thiscall sub_443180(int this, HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); int __thiscall sub_443250(int this, FILE *a2); int __thiscall sub_4432A0(int this); int __thiscall sub_4432C0(int this); int __thiscall sub_443300(int this, unsigned int a2); signed int __thiscall sub_4436F0(int this); signed int __thiscall sub_4437A0(int this, unsigned int a2); signed int __thiscall sub_443860(void *this, const unsigned __int8 *a2); int __thiscall sub_443890(_DWORD); // weak int __thiscall sub_4438A0(int this); signed int __thiscall sub_4438E0(int this, LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD a6, DWORD a7, HANDLE hTemplateFile); int __thiscall sub_443B50(int this); signed int __thiscall sub_443BC0(int this); signed int __thiscall sub_443C40(int this); int __thiscall sub_443CC0(void *this, const char *a2); int __thiscall sub_443D40(int this, int a2); int __thiscall sub_443D90(int this); int __thiscall sub_443DA0(int this, int a2); int __thiscall sub_443DF0(int this, int a2, signed int a3); signed int __thiscall sub_443EE0(int this, const unsigned __int8 *a2); int __thiscall sub_4440F0(void *this); signed int __thiscall sub_4443A0(int this, int a2); const unsigned __int8 *__thiscall sub_4443E0(void *this); signed int __thiscall sub_444460(int this, int a2); int __thiscall sub_444490(void *this, int a2, int a3); signed int __thiscall sub_4446E0(int this, const unsigned __int8 *a2, int a3); signed int __thiscall sub_444770(int this); signed int __thiscall sub_444980(int this, const CHAR *lpFileName); signed int __thiscall sub_444BC0(int this, LPCSTR lpFileName, HANDLE NumberOfBytesWritten); signed int __thiscall sub_444CE0(int this, LPCSTR lpFileName, HANDLE NumberOfBytesWritten); void __thiscall sub_444DF0(void *this); void __thiscall sub_444E60(void *this); void __thiscall sub_444ED0(int this); int __thiscall sub_444F50(int this); int __thiscall sub_445030(int this); int __thiscall sub_445090(int this); int __thiscall sub_4450F0(int this, int a2); int __thiscall sub_4452E0(int this); signed int __thiscall sub_445440(int this, const unsigned __int8 *a2, int a3); int __thiscall sub_445940(int this, LPCSTR lpFileName, int a3, int a4, const char *a5); int __thiscall sub_445B70(int this); HANDLE __thiscall sub_445BA0(void *this, HANDLE FileHandle, ULONG_PTR CompletionKey); void __thiscall sub_445BE0(ULONG_PTR dwCompletionKey, int a2); int __stdcall sub_445D10(LPOVERLAPPED Overlapped); HANDLE __thiscall sub_445DE0(ULONG_PTR this); HANDLE __thiscall sub_445E00(void *dwCompletionKey, void *a2, int a3); int __cdecl sub_445EF0(DWORD dwMessageId, int); // idb int __cdecl sub_445F60(int a1); int __cdecl sub_446020(int a1); FILE *__cdecl sub_446100(int a1, char *a2, const char *a3, va_list a4); FILE *__cdecl sub_446290(const char *a1); FILE *sub_446310(const char *a1, ...); FILE *sub_446330(int a1, const char *a2, ...); FILE *sub_446350(int a1, char *a2, const char *a3, ...); int __cdecl sub_446370(int a1, int a2, int a3, __int16 a4); int __cdecl sub_446400(int a1, int a2, int a3, int a4, unsigned __int8 *a5, int a6); int __cdecl sub_446470(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6); int __cdecl sub_4464E0(int a1, int a2, int a3, int a4, const void *a5, size_t a6, unsigned __int8 a7); signed int __cdecl sub_446580(int a1, int a2); int __thiscall sub_446640(int this, int a2, size_t a3, char a4); int __cdecl sub_446740(int a1); int __thiscall sub_446880(int this, char *a2, int a3); void *__thiscall sub_4469A0(void *this, int a2); // int (*__usercall sub_446B43(int a1))(); int loc_446B74(); // weak _DWORD __stdcall sub_446B90(char); // weak int __cdecl sub_446D10(int a1, int a2, int a3, int a4, int a5, unsigned __int8 a6, const void *a7, size_t a8, size_t a9, size_t a10, int a11); int __cdecl sub_447280(int a1, int a2, int a3, int a4, int a5, unsigned __int8 a6, const void *a7, size_t a8); int __cdecl sub_447510(int a1); int __thiscall sub_447570(void *this, int a2, int a3, int a4, int a5, char a6, unsigned __int8 a7); int __thiscall sub_447790(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7); int __thiscall sub_447810(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7); int __thiscall sub_447890(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, int a8); int __thiscall sub_447910(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, int a8); int __thiscall sub_447990(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, unsigned __int64 a7); int __thiscall sub_447BA0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, unsigned __int64 a7); int __thiscall sub_447DA0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7); signed int __thiscall sub_447E00(int this, int a2); signed int __thiscall sub_447E90(int this, int a2, int a3); signed int __thiscall sub_447F40(int this, int a2, int a3, int a4); signed int __thiscall sub_448010(int this, int a2, int a3, int a4); signed int __thiscall sub_4480C0(int this, int a2, int a3, int a4, int a5); void *__thiscall sub_448100(void *this, const char *a2); int __thiscall sub_4481B0(void *this, const char *a2); int loc_448450(); // weak void *__thiscall sub_448460(void *this, char a2); int __thiscall sub_448490(int this); void __thiscall sub_448520(int this); char __thiscall sub_4485A0(void *this, const char *a2); int __thiscall sub_4485E0(void *this, signed int a2); int loc_448600(); // weak int loc_448610(); // weak int loc_448620(); // weak int loc_448630(); // weak int loc_448640(); // weak int loc_448650(); // weak void *__thiscall sub_448660(void *this, char a2); void *__thiscall sub_448690(void *this, char a2); void *__thiscall sub_4486C0(void *this, char a2); void *__thiscall sub_4486F0(void *this, char a2); void *__thiscall sub_448720(void *this, char a2); void *__thiscall sub_448750(void *this, char a2); void *__thiscall sub_448780(void *this, char a2); int __thiscall sub_4487B0(int this); void __thiscall sub_448950(void *this); char __thiscall sub_448A20(int this, const char *a2); void __thiscall sub_448C30(int this); void *__thiscall sub_448CB0(void *this, char a2); char __thiscall sub_448CE0(void *this, const char *a2); int __thiscall sub_448D20(void *this, const char *a2, char a3); int __stdcall sub_448DD0(int a1); int __thiscall sub_448F10(int this); signed int __thiscall sub_448F90(SOCKET *this); signed int __thiscall sub_449000(SOCKET *this, const char *cp, u_short hostshort, int backlog); signed int __thiscall sub_449180(LPVOID lpParameter); void __thiscall sub_449200(SOCKET *this); signed int __thiscall sub_449230(SOCKET *lpParameter, const char *cp, int hostshort, int backlog); signed int __thiscall sub_4492D0(SOCKET *lpParameter, int hostshort, int backlog); void __thiscall sub_449330(int this); void __thiscall sub_449350(int this); int __thiscall sub_449370(void *this); signed int __thiscall sub_449420(void *this, int a2, int a3); signed int __thiscall sub_449480(int this, SOCKET s, int a3); void *__thiscall sub_4494C0(void *this, char a2); signed int __thiscall sub_4494F0(int this); void __thiscall sub_449550(int this); void __thiscall sub_4495B0(int this, int a2); void __thiscall sub_449650(int this, int a2); signed int __thiscall sub_4496F0(int this, int a2); void *__thiscall sub_449740(void *this); void __thiscall sub_449800(int this); int __thiscall sub_4498B0(int this); int __thiscall sub_449950(int this, int a2, int a3); signed int __thiscall sub_449990(int this, int a2, signed int a3, int a4, int a5); signed int __thiscall sub_449A70(int this); void __thiscall sub_449AB0(int this); int loc_449B50(); // weak signed int __thiscall sub_449B60(void *this, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, int a4); signed int __thiscall sub_449C80(SOCKET *this); BOOL __thiscall sub_449D40(int this, HANDLE *a2); LONG __thiscall sub_449D60(void *this); signed int __thiscall sub_449DA0(SOCKET *this); void __thiscall sub_449E70(int this, int a2); int __thiscall sub_44A050(int this); int (__stdcall **__thiscall sub_44A150(SOCKET *this))(int, int); signed int __thiscall sub_44A1E0(SOCKET *this, const char *cp, u_short hostshort, const char *a4, u_short a5); signed int __thiscall sub_44A320(void *this, int a2, unsigned int a3); signed int __cdecl sub_44A6A0(unsigned __int8 a1, unsigned __int8 a2); char *__cdecl sub_44A710(); char __stdcall sub_44A780(char a1, int a2, int a3, int a4, char a5, int a6, int a7, int a8, char a9, int a10, int a11, int a12); char __stdcall sub_44A880(char a1, int a2, int a3, int a4); BOOL __thiscall sub_44A930(int this); signed int __thiscall sub_44A9C0(void *this, int a2, LPCSTR lpMachineName, LPCSTR lpServiceName); void *__thiscall sub_44AA70(void *this); void *__thiscall sub_44AA90(void *this, char a2); BOOL __stdcall HandlerProc(int a1); char __thiscall sub_44AAF0(int this); BOOL __stdcall sub_44ABB0(int a1, int a2); char __thiscall sub_44ACE0(void *this, char a2, int a3, int a4, int a5, int a6, int a7); // void __thiscall type_info::_type_info(void *); idb int __thiscall sub_44ADC0(int this); unsigned __int8 *__thiscall sub_44ADD0(int this); void *__thiscall sub_44ADE0(void *this, const char *a2); int __thiscall sub_44AE80(int this); void *__thiscall sub_44AED0(void *this, char a2); int __thiscall sub_44AF10(int this, const char *a2); void *__thiscall sub_44AF40(void *this, int a2); bool __cdecl sub_44AF60(int a1, int a2); // int __usercall sub_44AF80(int a1, const void *lp); int __stdcall TopLevelExceptionFilter(void *a1); void *__thiscall sub_44B490(void *this); int __thiscall sub_44B4B0(void *this); FILE *__thiscall sub_44B530(void *this, int a2, int a3); FILE *__thiscall sub_44B580(void *this, int a2, int a3); int __thiscall sub_44B6A0(int this); void __thiscall sub_44B6C0(void *this); signed int __thiscall sub_44B6F0(void *this, unsigned __int8 *a2, int a3); signed int __thiscall sub_44B780(void *this, unsigned __int8 *a2); signed int __thiscall sub_44B7C0(int this); signed int __thiscall sub_44B7E0(void *this, int a2); signed int __thiscall sub_44B830(int this, int a2, unsigned int a3); signed int __thiscall sub_44B860(int this, void *a2); signed int __stdcall sub_44B960(int a1, int a2); signed int __stdcall sub_44BA20(int a1); int (__stdcall **__thiscall sub_44BA70(int this))(int, int); int __thiscall sub_44BAF0(int this); void *__thiscall sub_44BB80(void *this, char a2); int __thiscall sub_44BC10(void *this, __int16 a2, char a3, char a4, char a5); int __thiscall sub_44BCD0(int this, int a2, __int16 a3, int a4); int __thiscall sub_44BD10(int this, int a2, int a3, int a4); void *__thiscall sub_44BD50(void *this, unsigned __int16 a2); char __cdecl sub_44BDF0(); signed int __stdcall sub_44BE00(int a1); signed int __cdecl sub_44BE10(); int __stdcall sub_44BE20(int a1); int __stdcall sub_44BE30(int a1); char __stdcall sub_44BE40(int a1, char a2); int __cdecl sub_44BE50(); int __stdcall sub_44BE60(int a1); signed int __cdecl sub_44BE70(); int __stdcall sub_44BE80(int a1); signed int __cdecl sub_44BE90(); signed int __cdecl sub_44BEA0(); int __stdcall sub_44BEC0(int a1); int __stdcall sub_44BED0(int a1); signed int __cdecl sub_44BEF0(); int __stdcall sub_44BF00(int a1); signed int __cdecl sub_44BF10(); int __stdcall sub_44BF20(int a1); int __stdcall sub_44BF30(int a1); signed int __cdecl sub_44BF40(); int __stdcall sub_44BF50(int a1); signed int __cdecl sub_44BF60(); signed int __cdecl sub_44BF70(); signed int __cdecl sub_44BF80(); signed int __cdecl sub_44BF90(); int __stdcall sub_44BFA0(int a1); signed int __cdecl sub_44BFB0(); signed int __cdecl sub_44BFC0(); signed int __cdecl sub_44BFD0(); int __stdcall sub_44BFE0(int a1); signed int __cdecl sub_44BFF0(); signed int __cdecl sub_44C000(); signed int __cdecl sub_44C010(); signed int __cdecl sub_44C020(); signed int __cdecl sub_44C030(); int __stdcall sub_44C040(int a1); signed int __cdecl sub_44C050(); signed int __cdecl sub_44C060(); __int16 __stdcall sub_44C070(int a1, __int16 a2); signed int __cdecl sub_44C090(); signed int __cdecl sub_44C0A0(); int __stdcall sub_44C0B0(int a1, int a2, const void *a3, int a4); signed int __stdcall sub_44C150(int a1); int __stdcall sub_44C160(int a1, int a2); int __stdcall sub_44C170(int a1); int __stdcall sub_44C180(int a1); int __stdcall sub_44C190(int a1); char __stdcall sub_44C1A0(int a1); char __stdcall sub_44C1C0(int a1); char __stdcall sub_44C1D0(int a1, char a2); char __stdcall sub_44C1E0(int a1); char __stdcall sub_44C1F0(int a1, char a2); char __stdcall sub_44C200(int a1); char __stdcall sub_44C210(int a1, char a2); __int16 __stdcall sub_44C220(int a1, unsigned __int8 a2); char __thiscall sub_44C270(void *this, int a2, int a3, int a4, int a5); void __stdcall sub_44C2A0(int a1, unsigned __int8 a2, __int16 a3); int __stdcall sub_44C390(int a1); int __stdcall sub_44C3E0(int a1, int a2); int __stdcall sub_44C3F0(int a1, int a2); int __stdcall sub_44C410(int a1, void *a2); int __stdcall sub_44C430(int a1, int a2); int __stdcall sub_44C450(int a1, void *a2); int __stdcall sub_44C480(int a1, void *a2); int __stdcall sub_44C4B0(int a1, int a2); int __stdcall sub_44C4F0(int a1, int a2); int __stdcall sub_44C510(int a1, int a2); int __stdcall sub_44C530(int a1, int a2); int __stdcall sub_44C560(int a1, int a2); int __stdcall sub_44C590(int a1, int a2); int __stdcall sub_44C5B0(int a1, void *a2); int __stdcall sub_44C5E0(int a1, const void *a2); int __stdcall sub_44C600(int a1, int a2); int __stdcall sub_44C620(int a1, int a2); int __stdcall sub_44C630(int a1, const void *a2); int __stdcall sub_44C660(int a1, const void *a2); int __stdcall sub_44C690(int a1, int a2); int __stdcall sub_44C6D0(int a1, int a2); int __stdcall sub_44C6F0(int a1, int a2); int __stdcall sub_44C710(int a1, int a2); int __stdcall sub_44C740(int a1, int a2); int __stdcall sub_44C770(int a1, int a2); int __stdcall sub_44C790(int a1, int a2); int __stdcall sub_44C7B0(int a1, const void *a2); signed int __stdcall sub_44C7E0(int a1); signed int __stdcall sub_44C7F0(int a1); signed int __stdcall sub_44C800(int a1); signed int __stdcall sub_44C810(int a1); int __stdcall sub_44C820(int a1); signed int __stdcall sub_44C840(int a1); signed int __stdcall sub_44C850(int a1); signed int __stdcall sub_44C860(int a1); signed int __stdcall sub_44C870(int a1); signed int __stdcall sub_44C880(int a1); signed int __stdcall sub_44C890(int a1); char __stdcall sub_44C8A0(int a1, int a2); char __stdcall sub_44C920(int a1, int a2, int a3); char __stdcall sub_44C960(int a1, int a2, int a3); char __thiscall sub_44C9A0(void *this, int a2, int a3, int a4); char __stdcall sub_44CA40(int a1, signed int a2, int a3); char __stdcall sub_44CB70(int a1, int a2, int a3); char __stdcall sub_44CC10(int a1, int a2, int a3); int __stdcall sub_44CCB0(int a1, int a2, int a3); int __stdcall sub_44CD00(int a1, int a2, int a3); char __thiscall sub_44CD30(void *this, int a2, int a3, int a4); char __stdcall sub_44CDB0(int a1, int a2, int a3); int __stdcall sub_44CDD0(int a1, int a2, int a3); char __stdcall sub_44CDF0(int a1, int a2, int a3); int __stdcall sub_44CE40(int a1, int a2, int a3); signed int __stdcall sub_44CE90(int a1, int a2, int a3); int __stdcall sub_44CF10(int a1, int a2, int a3); int __stdcall sub_44CF40(int a1, int a2, int a3); int __stdcall sub_44CF60(int a1, int a2, int a3); int __stdcall sub_44CF80(int a1, int a2, int a3); char __stdcall sub_44D000(int a1, int a2, int a3, int a4); char __stdcall sub_44D010(int a1, int a2, int a3); int __stdcall sub_44D050(int a1, int a2, int a3); int __stdcall sub_44D080(int a1); int __stdcall sub_44D090(int a1, int a2); __int16 __stdcall sub_44D0B0(int a1); int __stdcall sub_44D0D0(int a1, unsigned __int8 a2); int __stdcall sub_44D100(int a1, int a2, int a3); int __stdcall sub_44D120(int a1, int a2, int a3); int __stdcall sub_44D140(int a1, int a2, int a3); char __thiscall sub_44D160(void *this, int a2, int a3, int a4); int __thiscall sub_44D1A0(void *this, int a2, int a3, int a4); char __thiscall sub_44D250(void *this, int a2, int a3, int a4); int __stdcall sub_44D2D0(int a1, int a2, int a3); signed int __stdcall sub_44D2F0(__int16 a1, int a2, int a3, char a4, int a5, int a6); int __stdcall sub_44D320(int a1, int a2, int a3, int a4, int a5, int a6); signed int __stdcall sub_44D330(__int16 a1, int a2, int a3, int a4, int a5, int a6); signed int __stdcall sub_44D3E0(__int16 a1, int a2, int a3, char a4, int a5, int a6); signed int __stdcall sub_44D420(__int16 a1, int a2, int a3, char a4, int a5, int a6); char __stdcall sub_44D450(int a1, int a2, int a3, int a4); char __stdcall sub_44D460(int a1, int a2, int a3, int a4); char __stdcall sub_44D4A0(int a1, int a2, int a3, int a4); char __stdcall sub_44D4E0(int a1, int a2, signed int a3, int a4); char __stdcall sub_44D570(int a1, int a2, signed int a3, int a4); char __stdcall sub_44D5C0(int a1, int a2, int a3, int a4); char __stdcall sub_44D5E0(int a1, int a2, int a3, int a4); signed int __stdcall sub_44D620(int a1, int a2, int a3); signed int __stdcall sub_44D630(int a1, __int16 a2, int a3); int __stdcall sub_44D6E0(int a1, int a2, int a3); int __stdcall sub_44D6F0(int a1, __int16 a2, int a3); _UNKNOWN *__stdcall sub_44D740(int a1); int __stdcall sub_44D750(int a1); char __stdcall sub_44D760(int a1, int a2, int a3); char __stdcall sub_44D770(int a1, int a2, int a3); int __stdcall sub_44D790(int a1, int a2, int a3); int __stdcall sub_44D7C0(int a1); signed int __stdcall sub_44D7D0(int a1, int a2, int a3); signed int __stdcall sub_44D7E0(int a1, int a2, int a3); __int16 __stdcall sub_44D860(int a1, __int16 a2); int __stdcall sub_44D880(int a1, int a2); signed int __thiscall sub_44D890(void *this, int a2, int a3); int __stdcall sub_44D8D0(int a1, int a2, int a3, int a4); // signed int __userpurge sub_44D8E0(int a1, int a2, signed int a3, unsigned __int16 a4, unsigned __int16 a5, const void *a6); char __stdcall sub_44DA80(int a1, char a2); int __stdcall sub_44DA90(int a1); int __stdcall sub_44DAA0(int a1); int __stdcall sub_44DAB0(int a1); signed int __stdcall sub_44DAC0(int a1, int a2); signed int __stdcall sub_44DAE0(int a1, int a2); signed int __stdcall sub_44DB00(int a1, int a2); int __stdcall sub_44DB20(int a1, int a2); int __stdcall sub_44DB40(int a1); signed int __cdecl sub_44DB60(); int __stdcall sub_44DB70(int a1, char a2); char __stdcall sub_44DB90(int a1); int __stdcall sub_44DBB0(int a1, __int16 a2); __int16 __stdcall sub_44DBD0(int a1); int __stdcall sub_44DBF0(int a1, int a2, const void *a3, int a4); int __stdcall sub_44DC20(int a1, int a2, const void *a3, int a4); int __thiscall sub_44DC50(int this); int __stdcall sub_44DF70(int a1, int a2, const void *a3, int a4); void *__thiscall sub_44DFA0(void *this, char a2); unsigned int __stdcall sub_44DFD0(int a1, int a2); unsigned int __stdcall sub_44E000(int a1, int a2); unsigned int __stdcall sub_44E030(int a1, int a2); unsigned int __stdcall sub_44E060(int a1, int a2); unsigned int __stdcall sub_44E090(int a1, int a2); unsigned int __stdcall sub_44E0C0(int a1, int a2); unsigned int __stdcall sub_44E0F0(int a1); unsigned int __stdcall sub_44E110(int a1); unsigned int __stdcall sub_44E130(int a1); signed int __stdcall sub_44E150(int a1, int a2, int a3); int __thiscall sub_44E180(int this); signed int __thiscall sub_44E1A0(int this, unsigned int a2); signed int __thiscall sub_44E280(int this, const void *a2, size_t a3); int __thiscall sub_44E2D0(int this); int __thiscall sub_44E2F0(int this); int __thiscall sub_44E310(int this, unsigned __int16 a2, size_t a3, const void *a4); int __thiscall sub_44E3B0(int this); char __cdecl sub_44E3D0(); SQLRETURN __thiscall sub_44E3E0(int this); bool sub_44E410(int a1, const char *a2, ...); bool __thiscall sub_44E4A0(int this); SQLRETURN __thiscall sub_44E4D0(int this); int __thiscall sub_44E4E0(int this, SQLPOINTER TargetValue); int __thiscall sub_44E510(int this, SQLPOINTER TargetValue); int __thiscall sub_44E540(int this, SQLPOINTER TargetValue); int __thiscall sub_44E570(int this, SQLPOINTER TargetValue); int __thiscall sub_44E5A0(int this, SQLPOINTER TargetValue); int __thiscall sub_44E5D0(int this, SQLPOINTER TargetValue); int __thiscall sub_44E600(int this, SQLPOINTER TargetValue); int __thiscall sub_44E650(int this, SQLPOINTER TargetValue); int __thiscall sub_44E6B0(int this, SQLPOINTER TargetValue); int __thiscall sub_44E6E0(int this); SQLRETURN __thiscall sub_44E6F0(int this); char __thiscall sub_44E770(int this, SQLCHAR *szConnStrIn); int __thiscall sub_44E7E0(int this, char a2); void *__thiscall sub_44E870(void *this); int __stdcall sub_44E880(int a1); int __stdcall sub_44E890(int a1); int __stdcall sub_44E8A0(int a1); int __stdcall sub_44E8B0(int a1); signed int __stdcall sub_44E8C0(int a1, int a2); void *__thiscall sub_44E8D0(void *this); void __thiscall sub_44E8E0(int this); signed int __thiscall sub_44E910(int this); int __thiscall sub_44E950(void *this); int __thiscall sub_44E9B0(int this, int a2); __int16 __thiscall sub_44E9F0(int this); int __thiscall sub_44EA10(int this); int __thiscall sub_44EA20(int this); signed int __thiscall sub_44EA30(void *this, int a2, int a3, int a4); int __thiscall sub_44EA90(void *this); signed int __thiscall sub_44EAC0(int this); int __thiscall sub_44EB00(int this); __int16 __thiscall sub_44EB40(int this); void *__thiscall sub_44EB60(int this, const void *a2, int a3); int __thiscall sub_44EBD0(int this); int __thiscall sub_44EBE0(int this); int __thiscall sub_44EC20(int this, __int16 a2, int a3, const void *a4); // DWORD __stdcall timeGetTime(); void *__thiscall sub_44ECE0(void *this); int __thiscall sub_44ECF0(int this); void __thiscall sub_44ED10(int this); void *__thiscall sub_44ED20(void *this, char a2); LONG __thiscall sub_44ED50(void *Destination); int __thiscall sub_44EDC0(int this); void *__thiscall sub_44EE20(void *this, char a2); int __cdecl sub_44EE50(); LONG __thiscall sub_44EF40(void *this); char __thiscall sub_44EFA0(int this, const char *a2); char sub_44F010(int a1, const char *a2, ...); int __cdecl sub_44F270(int a1); BOOL __stdcall ReadMemoryRoutine(int a1, LPCVOID lpBaseAddress, int a3, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead); int __cdecl sub_44F320(unsigned int a1); void __cdecl sub_44F570(); void __cdecl sub_44F5A0(); // int __userpurge sub_44F5D0(int a1, int a2); // int __userpurge sub_44F9D0(int a1, const void *lp); int __stdcall sub_44FE20(int, void *lp); // idb int __stdcall sub_44FE80(int a1, int a2); int __thiscall sub_44FE90(int this); int __thiscall sub_44FED0(int this, int a2); double __thiscall sub_44FF00(int this); unsigned int __thiscall sub_44FFB0(int this, unsigned int a2); int __thiscall sub_44FFF0(int this); void __thiscall sub_450000(void *); // idb int __stdcall sub_450010(int a1); int __cdecl sub_4500E0(); int loc_4500F0(); // weak void *__thiscall sub_450100(void *this, char a2); void *__thiscall sub_450130(void *this, char a2); void *__thiscall sub_450160(void *this, char a2); char __thiscall sub_450190(int this, int a2); char __stdcall sub_450200(int a1, int a2); char __thiscall sub_450210(int this, int a2); char __thiscall sub_4503D0(int this, int a2, int a3); void *__thiscall sub_450400(void *this, char a2); int __thiscall sub_450490(int this); signed int __thiscall sub_4504B0(void *this, signed int a2); void *__thiscall sub_450540(void *this); int __thiscall sub_4506C0(int this); char __cdecl sub_4506E0(); bool __thiscall sub_450780(int this); FILE *__cdecl sub_4507D0(int a1, FILE *StatementHandle); SQLRETURN __thiscall sub_4508E0(int this); SQLRETURN __thiscall sub_450920(int this); char __thiscall sub_450990(void *this, SQLCHAR *szConnStrIn); void *__thiscall sub_450A90(void *this, char a2); int loc_450AC0(); // weak char __thiscall sub_450AE0(int this, char *a2); int __thiscall sub_450CA0(int this, unsigned __int16 a2); int __thiscall sub_450DA0(int this, unsigned __int16 a2); char __thiscall sub_450EA0(int this, unsigned __int16 a2); char __thiscall sub_450F90(void *this, int a2); char __thiscall sub_450FC0(void *this, int a2); char __thiscall sub_450FF0(void *this, int a2); char __thiscall sub_451040(void *this, int a2); void *__thiscall sub_4510A0(void *this, char a2); void __thiscall sub_4510E0(int this); signed int __thiscall sub_451150(void *this, int a2); char __thiscall sub_4511A0(int this, unsigned __int16 a2); char __thiscall sub_451320(int this, int a2); int __thiscall sub_4513A0(int this); int __stdcall sub_451430(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_451580(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4516E0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4517A0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_451830(int a1, char rgbValue); bool __stdcall sub_451890(int a1, SQLPOINTER rgbValue); bool __stdcall sub_451980(int a1, char rgbValue); bool __stdcall sub_4519F0(int pcbValue, char *rgbValue); bool __stdcall sub_451AC0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_451B50(int a1, char rgbValue, char a3); int __stdcall sub_451BD0(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_451C90(int a1, SQLPOINTER rgbValue); bool __stdcall sub_451D20(int a1, SQLPOINTER rgbValue); int __stdcall sub_451D90(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_451E70(int a1, char rgbValue); bool __stdcall sub_451ED0(int a1, char rgbValue, void *a3); int __stdcall sub_451F50(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_4520F0(int a1); bool __stdcall sub_452130(int a1); bool __stdcall sub_452170(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4522B0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_452330(int a1, SQLPOINTER rgbValue); int __stdcall sub_452420(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_452510(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4525D0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_452670(int a1, SQLPOINTER rgbValue); bool __stdcall sub_452710(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4527B0(int a1, SQLPOINTER rgbValue); int __stdcall sub_452850(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_452A40(int a1, SQLPOINTER rgbValue); int __stdcall sub_452B50(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_452D20(int a1, SQLPOINTER rgbValue); bool __stdcall sub_452E10(int a1, SQLPOINTER rgbValue); bool __stdcall sub_452EE0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_452FA0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_453050(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4530E0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4531F0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_453250(int a1, SQLPOINTER rgbValue); bool __stdcall sub_453310(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4533B0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4534E0(int a1, SQLPOINTER rgbValue); int __stdcall sub_4535A0(int, SQLPOINTER rgbValue); // idb signed int __stdcall sub_453670(int a1, int a2); int __stdcall sub_453720(int, SQLPOINTER rgbValue); // idb int __stdcall sub_453990(int, SQLPOINTER rgbValue); // idb int __stdcall sub_453A90(int, SQLPOINTER rgbValue); // idb int __stdcall sub_453CA0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_453E70(int, SQLPOINTER rgbValue); // idb int __stdcall sub_453F90(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_4540E0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4541C0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4542B0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4543C0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454500(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454610(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454740(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454850(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454960(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454A70(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454B80(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454CE0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454DF0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_454F20(int a1, SQLPOINTER rgbValue); bool __stdcall sub_455050(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4551B0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4552A0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_455390(int a1, SQLPOINTER rgbValue); bool __stdcall sub_455480(int a1, SQLPOINTER rgbValue); bool __stdcall sub_455560(int a1, SQLPOINTER rgbValue); bool __stdcall sub_455690(int a1, SQLPOINTER rgbValue); bool __stdcall sub_455780(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4558B0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4559D0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_455B30(int a1, SQLPOINTER rgbValue); bool __stdcall sub_455C50(int a1, SQLPOINTER rgbValue); int __stdcall sub_455DB0(int a1); int __stdcall sub_455E10(int, SQLPOINTER rgbValue); // idb int __stdcall sub_455EA0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_455FC0(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_456080(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4560F0(int a1, SQLPOINTER rgbValue); signed int __stdcall sub_456160(int a1, __time32_t Time); bool __stdcall sub_456370(int a1, char rgbValue, void *a3); bool __stdcall sub_4563F0(int a1, SQLPOINTER rgbValue); int __stdcall sub_4564B0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4566D0(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_4568B0(int a1, SQLPOINTER rgbValue); int __stdcall sub_456950(int, SQLPOINTER rgbValue); // idb int __stdcall sub_456AC0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_456C00(int, char rgbValue); // idb int __stdcall sub_456C70(int, char rgbValue); // idb int __stdcall sub_456CE0(int a1, char rgbValue, void *a3); bool __stdcall sub_456D60(int a1, char rgbValue, int a3); bool __stdcall sub_456DD0(int a1, char rgbValue); bool __stdcall sub_456E40(int a1, char rgbValue, void *a3); bool __stdcall sub_456ED0(int a1, char rgbValue, char a3); bool __stdcall sub_456F60(int a1, char rgbValue); bool __stdcall sub_456FD0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_457070(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4570F0(int pcbValue, char rgbValue); bool __stdcall sub_457160(int a1, char rgbValue, void *a3); bool __stdcall sub_457280(int a1, char rgbValue, void *a3); bool __stdcall sub_457330(int a1, char rgbValue, void *a3); bool __stdcall sub_4573E0(int a1, char rgbValue, void *a3); bool __stdcall sub_457490(int a1, char rgbValue, void *a3); bool __stdcall sub_457540(int a1, char rgbValue, void *a3); bool __stdcall sub_4575F0(int a1, char rgbValue, void *a3); bool __stdcall sub_4576A0(int a1, char rgbValue, void *a3); bool __stdcall sub_457750(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __stdcall sub_4577F0(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __stdcall sub_457890(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __stdcall sub_457930(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __stdcall sub_4579D0(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __stdcall sub_457A70(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __stdcall sub_457B10(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __stdcall sub_457BB0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_457C20(int a1, char rgbValue); bool __stdcall sub_457C80(int a1, char rgbValue, void *a3); bool __stdcall sub_457D20(int a1, char rgbValue, char a3, int a4); bool __stdcall sub_457DC0(int a1, char rgbValue, char a3, int a4); bool __stdcall sub_457E60(int a1, char rgbValue, char a3, char a4, int a5); bool __stdcall sub_457F10(int a1, char rgbValue, char a3); bool __stdcall sub_457FB0(int a1, char rgbValue, char a3); bool __stdcall sub_458050(int a1, char rgbValue, char a3, char a4, int a5); bool __stdcall sub_458100(int a1, char rgbValue); bool __stdcall sub_458160(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4582B0(int a1, char rgbValue, char a3); bool __stdcall sub_458340(int a1, char rgbValue, char a3); bool __stdcall sub_4583D0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_458540(int a1, char rgbValue, void *a3); bool __stdcall sub_4585C0(int a1, char rgbValue, void *a3); bool __stdcall sub_458640(int a1, char rgbValue, char a3); bool __stdcall sub_4586C0(int a1, char rgbValue, char a3, void *a4, char a5); bool __stdcall sub_458770(int a1, SQLPOINTER rgbValue); bool __stdcall sub_458890(int a1, SQLPOINTER rgbValue); bool __stdcall sub_458990(int a1, char rgbValue, char a3); int __stdcall sub_458A10(int, SQLPOINTER rgbValue); // idb int __stdcall sub_458AD0(int, char rgbValue); // idb int __stdcall sub_458CB0(int, char rgbValue, char); // idb bool __stdcall sub_458EB0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_458F50(int a1, SQLPOINTER rgbValue); bool __stdcall sub_459020(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4590F0(int a1, char rgbValue, void *a3); bool __stdcall sub_459190(int a1, SQLPOINTER rgbValue); bool __stdcall sub_459280(int a1, SQLPOINTER rgbValue); bool __stdcall sub_459320(int a1, char rgbValue); bool __stdcall sub_459380(int pcbValue, char rgbValue, void *a3); bool __stdcall sub_459400(int a1, char rgbValue, void *a3); bool __stdcall sub_459480(int a1, SQLPOINTER rgbValue); bool __stdcall sub_459570(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4596D0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4597E0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4598D0(int a1, char rgbValue); bool __stdcall sub_459930(int a1, SQLPOINTER rgbValue); bool __stdcall sub_459A50(int a1, char rgbValue, char a3); bool __stdcall sub_459AF0(int a1, char rgbValue, char a3); bool __stdcall sub_459B90(int a1, char rgbValue); bool __stdcall sub_459C10(int a1, char rgbValue, char a3); bool __stdcall sub_459CB0(int a1, char rgbValue, char a3); bool __stdcall sub_459D50(int a1, char rgbValue, char a3, char a4); bool __stdcall sub_459E00(int a1, char rgbValue, char a3, char a4, void *a5, void *a6); bool __stdcall sub_459EF0(int a1, char rgbValue, char a3); bool __stdcall sub_459F90(int a1, char rgbValue); bool __stdcall sub_459FF0(int a1, char rgbValue, void *a3); bool __stdcall sub_45A090(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45A170(int a1, SQLPOINTER rgbValue); signed int __stdcall sub_45A240(int a1, char rgbValue, void *a3); int __stdcall sub_45A410(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45A600(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45A7F0(int, SQLPOINTER rgbValue); // idb signed int __stdcall sub_45A9C0(int a1, char rgbValue, void *a3); int __stdcall sub_45AB90(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45AC40(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45AF00(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45B120(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45B330(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45B540(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45B7D0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45B9C0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45BBD0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45BDC0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C000(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C100(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C200(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C350(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C450(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C550(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C6A0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C7A0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C8A0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45C9E0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45CB10(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45CC60(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45CD90(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_45CED0(int a1, SQLPOINTER rgbValue); int __stdcall sub_45CFC0(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_45D110(int a1, SQLPOINTER rgbValue); int __stdcall sub_45D200(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45D340(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45D3D0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45D480(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45D650(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45D860(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45DAF0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45DCB0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45DDF0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45DF10(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45E050(int, SQLPOINTER rgbValue); // idb int __stdcall sub_45E170(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_45E2B0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45E360(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45E410(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45E570(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45E680(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45E7B0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45E8E0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45EA10(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45EB40(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45EC50(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45EDB0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45EEE0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45EFF0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45F120(int a1, SQLPOINTER rgbValue); bool __stdcall sub_45F230(int a1, SQLPOINTER rgbValue); void *__thiscall sub_45F370(int this, void *a2); void *__thiscall sub_45F4A0(void *this, void *a2); void *__cdecl sub_45F4D0(void *a1, const char *a2, signed int a3); bool __stdcall sub_45F7C0(int a1, SQLPOINTER rgbValue); int __stdcall sub_45FB50(int, SQLPOINTER rgbValue, int); // idb SQLRETURN __stdcall sub_45FE40(int a1, char rgbValue, int a3); bool __stdcall sub_45FEC0(int a1, char rgbValue, char a3); bool __stdcall sub_45FF40(int a1, char rgbValue, char a3); bool __stdcall sub_45FFC0(int a1, SQLPOINTER rgbValue); SQLRETURN __stdcall sub_4600E0(int a1, char rgbValue, int a3, char a4, char a5, int a6); SQLRETURN __stdcall sub_460190(int a1, char rgbValue, int a3, char a4, void *a5); bool __stdcall sub_460240(int a1, char rgbValue, int a3); SQLRETURN __stdcall sub_4602A0(int a1, char rgbValue, int a3, char a4, char a5, char a6); bool __stdcall sub_460370(int a1, char rgbValue, int a3); int __stdcall sub_4603D0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_460490(int, SQLPOINTER rgbValue); // idb int __stdcall sub_460550(int, SQLPOINTER rgbValue); // idb int __stdcall sub_460620(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_460710(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4607E0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_460890(int a1, SQLPOINTER rgbValue, int a3); bool __stdcall sub_460990(int a1, SQLPOINTER rgbValue); bool __stdcall sub_460A90(int a1, SQLPOINTER rgbValue); char __stdcall sub_460BC0(int a1, char rgbValue, int a3, char a4); int __stdcall sub_460C50(int, SQLPOINTER rgbValue, char, int, char, char); // idb int __stdcall sub_460ED0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_460FE0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4610B0(int, SQLPOINTER rgbValue); // idb char __stdcall sub_461180(int a1, int a2); char __stdcall sub_4611D0(int a1, int a2); __int16 __stdcall sub_461230(int a1, int a2); int __stdcall sub_461260(int, SQLPOINTER rgbValue); // idb int __stdcall sub_461370(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4614B0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_461710(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4617E0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_461A50(int, SQLPOINTER rgbValue); // idb int __stdcall sub_461D40(int, SQLPOINTER rgbValue); // idb int __stdcall sub_461FA0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_462290(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_4624F0(int a1, char rgbValue); bool __stdcall sub_462550(int a1, char a2, char rgbValue); bool __stdcall sub_4625F0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4626B0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4627A0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_462840(int a1, SQLPOINTER rgbValue); bool __stdcall sub_462910(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4629B0(int a1, SQLPOINTER rgbValue); int __stdcall sub_462A80(int, SQLPOINTER rgbValue, char, int); // idb int __stdcall sub_462CA0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_462D70(int, SQLPOINTER rgbValue); // idb int __stdcall sub_462FB0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_463240(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4633E0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4635F0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_463850(int, SQLPOINTER rgbValue); // idb int __stdcall sub_463AF0(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_463DE0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_463EE0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_464000(int a1, SQLPOINTER rgbValue); bool __stdcall sub_464100(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4641D0(int a1, int a2, int a3, void *a4); void *__thiscall sub_464260(void *this); void __thiscall sub_464270(void *this); bool __stdcall sub_464280(int a1, SQLPOINTER rgbValue); bool __stdcall sub_464390(int a1, SQLPOINTER rgbValue); bool __stdcall sub_464480(int a1, SQLPOINTER rgbValue); int __stdcall sub_464500(int, SQLPOINTER rgbValue); // idb bool __stdcall sub_4645A0(int a1, SQLPOINTER rgbValue); bool __stdcall sub_4646B0(int a1, SQLPOINTER rgbValue); void *__thiscall sub_4647A0(void *this, char a2); int __stdcall sub_4647D0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_464940(int, SQLPOINTER rgbValue); // idb int __stdcall sub_464AC0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_464BC0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_464C90(int, SQLPOINTER rgbValue); // idb int __stdcall sub_464DB0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_464EB0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_464F80(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4650D0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_465180(int, SQLPOINTER rgbValue); // idb int __stdcall sub_465210(int, SQLPOINTER rgbValue); // idb int __stdcall sub_465310(int, SQLPOINTER rgbValue); // idb int __stdcall sub_465410(int, SQLPOINTER rgbValue); // idb int __stdcall sub_465580(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4656D0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4657F0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_4658F0(int, SQLPOINTER rgbValue); // idb int __stdcall sub_465A10(int, SQLPOINTER rgbValue); // idb char __stdcall sub_465B00(int a1, SQLPOINTER rgbValue); char __stdcall sub_465CD0(int a1, SQLPOINTER rgbValue); char __stdcall sub_465DE0(int a1, SQLPOINTER rgbValue); char __stdcall sub_465F10(int a1, SQLPOINTER rgbValue); char __stdcall sub_4660B0(int a1, SQLPOINTER rgbValue); int __thiscall sub_4661C0(int this, int a2, int a3, int a4); signed int __stdcall sub_4661E0(unsigned __int16 a1, void *a2); signed int __stdcall sub_4663A0(unsigned __int16 a1, int a2, char a3); signed int __stdcall sub_466420(unsigned __int16 a1, int a2, const void *a3); int __stdcall sub_4664A0(int, void *); // idb signed int __stdcall sub_466820(unsigned __int16 a1, int a2, void *a3); SQLRETURN __stdcall sub_466950(int a1, char rgbValue, int a3); bool __stdcall sub_466970(int a1, SQLPOINTER rgbValue); SQLRETURN __stdcall sub_466990(int a1, char rgbValue, int a3, char a4, void *a5); signed int __thiscall sub_4669C0(void *this, int a2, int rgbValue, int a4, void *a5); __int16 __stdcall sub_4681E0(int a1, char rgbValue, int a3, char a4, char *a5); signed int __stdcall sub_4684C0(int a1, int a2, int a3, unsigned __int16 a4, int a5, int a6, int a7); int __stdcall sub_468680(int, char rgbValue, char, int, int, int); // idb int __stdcall sub_468750(int, char rgbValue, char, int, int, int, int, int); // idb int __stdcall sub_468870(int, char rgbValue, char, int, int, int, int, int); // idb int __stdcall sub_4689A0(int, char rgbValue, int); // idb int __stdcall sub_4689D0(int, char rgbValue, int); // idb int __stdcall sub_4689F0(int, char rgbValue, int); // idb int __stdcall sub_468A10(int, char rgbValue, int); // idb int __stdcall sub_468A40(int, char rgbValue, int, int, int); // idb int __stdcall sub_468A70(int, char rgbValue, int); // idb int __stdcall sub_468A90(int, char rgbValue, int); // idb int __stdcall sub_468AB0(int, char rgbValue, int); // idb int __stdcall sub_468AE0(int, char rgbValue, int); // idb int __stdcall sub_468B00(int, char rgbValue, int); // idb int __stdcall sub_468B20(int, char rgbValue, int); // idb int __stdcall sub_468B40(int, char rgbValue, int); // idb int __stdcall sub_468B60(int, char rgbValue, int); // idb int __stdcall sub_468B80(int, char rgbValue, int); // idb int __stdcall sub_468BA0(int, char rgbValue, int); // idb int __stdcall sub_468BC0(int, char rgbValue, int); // idb int __stdcall sub_468BE0(int, char rgbValue, int, int, int); // idb signed int __stdcall sub_468C10(int a1, char rgbValue, char a3, int a4, unsigned __int16 a5); int __stdcall sub_468CB0(int, char rgbValue, int, int, int, int); // idb bool __stdcall sub_468E30(int a1, char a2, char rgbValue); __int16 __stdcall sub_468E40(int a1, int rgbValue, int a3, unsigned __int16 a4, int a5); __int16 __stdcall sub_46A1C0(int a1, int rgbValue, int a3, unsigned __int16 a4, int a5); int __stdcall sub_46A220(int, SQLPOINTER rgbValue, int, char, int, char, char); // idb __int16 __stdcall sub_46A360(int a1, SQLPOINTER rgbValue, int a3, char a4, int a5, int a6); __int16 __stdcall sub_46A440(int a1, SQLPOINTER rgbValue, int a3, int a4); int __cdecl sub_46A5A0(int a1, int a2, unsigned int a3); signed int __thiscall sub_46A620(int this, int rgbValue, int a3); signed int __thiscall sub_46AC00(int pcbValue, int TargetValue, int a3); bool __thiscall sub_46ACB0(void *this, char rgbValue, int a3); signed int __thiscall sub_46AD10(int this, int rgbValue, int a3); char __thiscall sub_46AF30(int this, char rgbValue, int a3, int a4, int a5, int a6); int __cdecl sub_46B110(int a1, int a2); signed int __thiscall sub_46B130(int this, int rgbValue, int a3); bool __thiscall sub_46B460(int this, char rgbValue); char __thiscall sub_46B480(int this, int rgbValue, int a3); signed int __thiscall sub_46B500(int this, int rgbValue, int a3); int __thiscall sub_46B640(int, char rgbValue, int); // idb bool __thiscall sub_46B730(int this, char rgbValue, void *a3); bool __thiscall sub_46B750(int this, char rgbValue, void *a3); bool __thiscall sub_46B770(int this, char rgbValue, void *a3); bool __thiscall sub_46B790(int this, char rgbValue, void *a3); bool __thiscall sub_46B7B0(int this, char rgbValue, void *a3); bool __thiscall sub_46B7D0(int this, char rgbValue, void *a3); bool __thiscall sub_46B7F0(int this, char rgbValue, void *a3); bool __thiscall sub_46B810(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __thiscall sub_46B830(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __thiscall sub_46B850(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __thiscall sub_46B870(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __thiscall sub_46B890(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __thiscall sub_46B8B0(SQLINTEGER cbValueMax, char rgbValue, void *a3); bool __thiscall sub_46B8D0(SQLINTEGER cbValueMax, char rgbValue, void *a3); signed int __thiscall sub_46B8F0(int this, unsigned int TargetValue, int a3); bool __thiscall sub_46BA10(void *this, int a2, int a3, int a4); bool __thiscall sub_46BB30(int this, int a2, __int16 a3); bool __thiscall sub_46BB90(int this, int a2, char a3, int a4, int a5); bool __thiscall sub_46BBF0(int this, int a2, unsigned __int8 a3, unsigned __int8 a4, unsigned __int16 a5); int __thiscall sub_46BCB0(int, char rgbValue, int); // idb signed int __thiscall sub_46BE00(int this, char *TargetValue); bool __thiscall sub_46BEC0(int this, SQLPOINTER rgbValue); bool __thiscall sub_46BEE0(int this, char rgbValue, char a3); bool __thiscall sub_46BF10(int this, char rgbValue, char a3); bool __thiscall sub_46BF40(int this, char rgbValue, char a3); bool __thiscall sub_46BF70(int this, char rgbValue, char a3); bool __thiscall sub_46BFA0(int this, char rgbValue, char a3, char a4); bool __thiscall sub_46BFD0(int this, char rgbValue, char a3, char a4, void *a5, void *a6); bool __thiscall sub_46C000(int this, char rgbValue, char a3); bool __thiscall sub_46C030(int this, char rgbValue); int __thiscall sub_46C050(int, char rgbValue, int); // idb int __thiscall sub_46C120(int, char rgbValue, int); // idb int __thiscall sub_46C230(int, char rgbValue, int); // idb bool __thiscall sub_46C350(int this, SQLPOINTER rgbValue); int __thiscall sub_46C370(int, int, int); // idb int __thiscall sub_46C4F0(int, int, int); // idb int __thiscall sub_46C5F0(int, SQLPOINTER rgbValue); // idb int __thiscall sub_46C650(int, SQLPOINTER rgbValue); // idb int __thiscall sub_46C700(int this); int __stdcall sub_46C7A0(unsigned int a1); int __cdecl sub_46C800(int a1, int a2, int a3); int __thiscall sub_46C840(int this, unsigned int a2); // void __usercall sub_46C8F8(int a1); signed int __thiscall sub_46C910(int this, int rgbValue, int a3, int a4); void *__thiscall sub_46CD50(void *lpCriticalSection); int __thiscall sub_46CE10(LPCRITICAL_SECTION lpCriticalSection, int); // idb signed int __thiscall sub_46D0A0(int this, int a2); signed int __thiscall sub_46D300(void *this, int a2, const char *a3); int __thiscall sub_46D360(_DWORD); // weak void *__thiscall sub_46D370(void *this, int a2); void __thiscall sub_46D380(void *); // idb signed int __cdecl sub_46D390(); void __thiscall sub_46D3A0(void *); // idb signed int __cdecl sub_46D3B0(); _DWORD __cdecl sub_46D3C0(_DWORD); // weak int __cdecl sub_46D4E0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46D510(int a1, const char *a2, int a3, unsigned int a4, const char *a5); void *__cdecl sub_46D540(int a1, const char *a2, int a3, const char *a4); int __cdecl sub_46D590(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46D5C0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); signed int __cdecl sub_46D630(int a1, const char *a2, int a3); void *__cdecl sub_46D6B0(int a1, const char *a2, int a3, const char *a4); int __thiscall sub_46D7B0(int this, int a2); int __thiscall sub_46D7D0(void *, char); // idb int __thiscall sub_46D840(int this, int a2); int __thiscall sub_46D850(void *, char); // idb void *__cdecl sub_46D8B0(int a1, const char *a2, int a3, const char *a4); int __cdecl sub_46D990(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46D9E0(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46DA30(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46DA80(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46DAD0(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46DB20(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46DB70(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46DBC0(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46DC10(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46DC60(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); int __cdecl sub_46DCB0(int a1, const char *a2, int a3, unsigned int *a4, const char *a5); void *__cdecl sub_46DD00(int a1, const char *a2, void *a3, int a4); void *__cdecl sub_46DD30(int a1, const char *a2, void *a3, int a4); // int DNameNode::DNameNode(); weak int sub_46DD70(); // weak void __thiscall nullsub_1(void *); // idb int __cdecl sub_46DDA0(int a1); bool __cdecl sub_46DE20(int a1); int __cdecl sub_46DE70(int a1, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_46DE90(void *this, int a2, const char *a3, int a4, const char *a5); int __cdecl sub_46DF00(int a1, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_46DF20(void *this, int a2, const char *a3, int a4, const char *a5); int __cdecl sub_46DF70(int a1, int a2, int a3, int a4, int a5, int a6); void *__cdecl sub_46DF90(int a1, const char *a2, int a3, const char *a4); void *__cdecl sub_46E0B0(int a1, const char *a2, int a3, const char *a4); signed int __cdecl sub_46E230(int a1, unsigned int *a2); int __cdecl sub_46E260(int a1, unsigned int *a2); signed int __cdecl sub_46E2C0(int a1, unsigned int *a2); int __cdecl sub_46E2F0(int a1, unsigned int *a2); signed int __cdecl sub_46E350(int a1, unsigned int *a2); int __cdecl sub_46E380(int a1, unsigned int *a2); void *__cdecl sub_46E3E0(int a1, const char *a2, void *a3, const char *a4); void *__cdecl sub_46E4A0(int a1, const char *a2, void *a3, const char *a4); int __stdcall sub_46E560(unsigned int a1); int __cdecl sub_46E5C0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46E650(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46E6E0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46E770(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46E800(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46E890(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46E920(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46E9B0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46EA40(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46EAD0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46EB60(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46EBF0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46ECA0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46ED30(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46EDC0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46EE40(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46EEC0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46EF50(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46EFE0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); int __cdecl sub_46F0D0(int a1, const char *a2, int a3, unsigned int a4, const char *a5); // int unknown_libname_1(); weak char __thiscall sub_46F1B0(int this, unsigned int a2); char *__stdcall sub_46F200(const void *a1, int a2, void *a3); void __thiscall sub_46F230(int this); void __thiscall sub_46F280(int this); void __thiscall sub_46F2D0(int this); signed int __cdecl sub_46F320(); void __thiscall sub_46F330(int this); signed int __cdecl sub_46F380(); int __thiscall sub_46F390(int this); int __thiscall sub_46F3C0(int this); signed int __cdecl sub_46F3F0(); int __thiscall sub_46F400(int this); int __thiscall sub_46F430(int this); signed int __cdecl sub_46F460(); int __thiscall sub_46F470(int this); signed int __cdecl sub_46F4A0(); void __thiscall sub_46F4B0(int this); void __thiscall sub_46F500(int this); signed int __cdecl sub_46F550(); int __thiscall sub_46F560(int this); int __thiscall sub_46F590(int this); int __thiscall sub_46F5C0(int this); int __thiscall sub_46F5F0(int this); int __thiscall sub_46F620(int this); signed int __cdecl sub_46F650(); int __thiscall sub_46F660(int this); signed int __cdecl sub_46F690(); int __cdecl sub_46F6A0(int a1, unsigned int *a2, const char *a3, int a4, int a5); int __thiscall sub_46FCE0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_46FD50(void *, char); // idb int __thiscall sub_46FDD0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_46FE40(void *, char); // idb int __thiscall sub_46FEC0(int this, int a2); int __thiscall sub_46FEE0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_46FF50(void *, char); // idb int __thiscall sub_46FFD0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470040(void *, char); // idb int __thiscall sub_4700C0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470130(void *, char); // idb int __thiscall sub_4701B0(int this, int a2); int __thiscall sub_4701E0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470200(void *, char); // idb int __thiscall sub_470280(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_4702A0(void *, char); // idb int __thiscall sub_470340(int this, int a2); int __thiscall sub_470370(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470390(void *, char); // idb int __thiscall sub_470430(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_4704A0(void *, char); // idb int __thiscall sub_470520(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470590(void *, char); // idb int __thiscall sub_470610(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470680(void *, char); // idb int __thiscall sub_470700(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470720(void *, char); // idb int __thiscall sub_4707A0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470810(void *, char); // idb int __thiscall sub_470890(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470900(void *, char); // idb int __thiscall sub_470980(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_4709A0(void *, char); // idb int __thiscall sub_470A20(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470A40(void *, char); // idb int __thiscall sub_470AE0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470B00(void *, char); // idb int __thiscall sub_470BA0(int this, int a2); int __thiscall sub_470BE0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470C00(void *, char); // idb int __thiscall sub_470CA0(int this, int a2); int __thiscall sub_470CE0(void *this, int a2, const char *a3, int a4, const char *a5); int __thiscall sub_470D00(void *, char); // idb void __cdecl sub_470DA0(int a1, int a2); int __cdecl sub_470DE0(int a1, const char *a2, int a3, int a4); void __thiscall sub_470E50(void **this); void *__thiscall sub_470E80(void *this); void *__thiscall sub_470F10(void *this); void __thiscall sub_470FA0(int this); void *__thiscall sub_470FD0(void *this); void *__thiscall sub_471050(void *this); void *__thiscall sub_4710D0(void *this); void *__thiscall sub_471130(void *this); void *__thiscall sub_471190(void *this); void *__thiscall sub_4711F0(void *this); void *__thiscall sub_471250(void *this); void *__thiscall sub_4712B0(void *this); void *__thiscall sub_471330(void *this); void *__thiscall sub_4713B0(void *this); void *__thiscall sub_471420(void *this); void *__thiscall sub_471480(void *this); void *__thiscall sub_4714E0(void *this); void *__thiscall sub_471540(void *this); void *__thiscall sub_4715A0(void *this); int __cdecl sub_471600(int a1); int __thiscall sub_471690(void *this, int a2, int a3, int a4); int __thiscall sub_4716F0(void *this, int a2, int a3, int a4); int __thiscall sub_471750(void *this, int a2, int a3, int a4); int __thiscall sub_4717B0(void *this, int a2, int a3, int a4); int __thiscall sub_471810(void *this, int a2, int a3, int a4); int __thiscall sub_471870(void *this, int a2, int a3, int a4); int __thiscall sub_4718D0(void *this, int a2, int a3, int a4); int __thiscall sub_471930(void *this, int a2, int a3, int a4); int __thiscall sub_471990(void *this, int a2, int a3, int a4); int __thiscall sub_4719F0(void *this, int a2, int a3, int a4); int __thiscall sub_471A50(void *this, int a2, int a3, int a4); int __thiscall sub_471AB0(void *this, int a2, int a3, int a4); int __thiscall sub_471B10(void *this, int a2, int a3, int a4); int __thiscall sub_471B70(void *this, int a2, int a3, int a4); int __thiscall sub_471BD0(void *this, int a2, int a3, int a4); int __thiscall sub_471C30(void *this, int a2, int a3, int a4); int __thiscall sub_471C90(void *this, int a2, int a3, int a4); int __thiscall sub_471CF0(void *this, int a2, int a3, int a4); void __thiscall sub_471D50(void *this, int a2); int __thiscall sub_471D70(void *this, int a2, int a3, int a4); int __thiscall sub_471DD0(void *, char); // idb int __thiscall sub_471E50(void *this, int a2, int a3, int a4); int __thiscall sub_471EB0(void *this, int a2, int a3, int a4); int __thiscall sub_471F10(void *this, int a2, int a3, int a4); signed int __cdecl sub_471F70(int a1); int __cdecl sub_472180(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_4722B0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_472420(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_472590(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_472700(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_472870(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_4729E0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_472B20(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_472C70(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_472DC0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_472F10(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_473080(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_4731F0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_473360(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_4734D0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_473640(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_4737B0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_473920(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_473A70(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_473BC0(void *this, int a2, const char *a3, int a4, const char *a5); int __cdecl sub_473C30(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_473D80(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_473ED0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_474010(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_4740B0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_474150(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_4741F0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_474270(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_474310(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_4743B0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_474450(int a1, int a2, int a3, int a4, int a5); void *__cdecl sub_4744F0(int a1, const char *a2, void *a3); void *__cdecl sub_4745D0(int a1, const char *a2, void *a3); void *__cdecl sub_4746B0(int a1, const char *a2, void *a3); void *__cdecl sub_474790(int a1, const char *a2, void *a3); void *__cdecl sub_474870(int a1, const char *a2, void *a3); void *__cdecl sub_474950(int a1, const char *a2, void *a3); int __cdecl sub_474A30(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_474B50(void *this, int a2); void __cdecl sub_474C80(int a1); int __cdecl sub_474DA0(int a1); int __cdecl sub_474DD0(int a1); int __cdecl sub_474E60(int a1); int __cdecl sub_474EA0(int a1); int __cdecl sub_474ED0(int a1); int __cdecl sub_474FB0(int a1); void *__thiscall sub_474FF0(int this, void *a2); int __cdecl sub_475030(int a1, const char *a2, int a3); int __thiscall sub_4753B0(int this); int __cdecl sub_475400(int a1, int a2, int a3, void *a4, int a5, int a6); int __cdecl sub_475420(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_475560(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl sub_475590(int a1, int a2, int a3, int a4, int a5); void *__cdecl sub_475A40(int a1, const char *a2, int a3); void *__cdecl sub_475BD0(int a1, const char *a2, int a3); void *__cdecl sub_475D60(int a1, const char *a2, int a3); void *__cdecl sub_475F00(int a1, const char *a2, int a3); void *__cdecl sub_476090(int a1, const char *a2, int a3); void *__cdecl sub_476220(int a1, const char *a2, int a3); void *__cdecl sub_4763B0(int a1, const char *a2, int a3); void *__cdecl sub_476540(int a1, const char *a2, int a3); void *__cdecl sub_4766D0(int a1, const char *a2, int a3); void *__cdecl sub_476860(int a1, const char *a2, int a3); void *__cdecl sub_4769F0(int a1, const char *a2, int a3); int __cdecl sub_476B80(int a1, const char *a2, int a3, int a4); int __cdecl sub_476D40(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl sub_476D80(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl sub_476DB0(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl sub_476DF0(int a1, const char *a2, int a3, int a4); int __cdecl sub_476F50(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl sub_476FA0(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl sub_476FF0(int a1, const char *a2, int a3, int a4); int __cdecl sub_477120(int a1, const char *a2, int a3, int a4); int __cdecl sub_4772B0(int a1, const char *a2, int a3, int a4); int __cdecl sub_477440(int a1, const char *a2, int a3, int a4); int __cdecl sub_4775D0(int a1, const char *a2, int a3, int a4); int __cdecl sub_477760(int a1, const char *a2, int a3, int a4); int __thiscall sub_4778F0(int this, int a2, const char *a3, int a4); int __cdecl sub_477910(int a1, const char *a2, int a3, int a4); int __cdecl sub_477B30(int a1, const char *a2, int a3, int a4); int __cdecl sub_477D10(int a1, const char *a2, int a3, int a4); int __cdecl sub_477EF0(int a1, const char *a2, int a3, int a4); int __cdecl sub_478080(int a1, const char *a2, int a3, int a4); int __cdecl sub_478210(int a1, const char *a2, int a3, int a4); int __cdecl sub_4783A0(int a1, const char *a2, int a3, int a4); int __cdecl sub_478550(int a1, const char *a2, int a3, int a4); int __cdecl sub_4786E0(int a1, const char *a2, int a3, int a4); int __cdecl sub_478870(int a1, const char *a2, int a3, int a4); int __cdecl sub_478A20(int a1, const char *a2, int a3, int a4); int __cdecl sub_478C00(int a1, const char *a2, int a3, int a4); int __thiscall sub_478DE0(int this, int a2, const char *a3, int a4); int __cdecl sub_478E00(int a1, const char *a2, int a3, int a4); int __cdecl sub_4790B0(int a1, const char *a2, int a3, int a4); int __thiscall sub_479320(int this, int a2, const char *a3, int a4); void *__cdecl sub_479340(int a1, int a2); int __thiscall sub_47A390(int this, int a2, const char *a3, int a4); int __thiscall sub_47A3B0(int this, int a2, const char *a3, int a4); int __thiscall sub_47A3D0(int this, int a2, const char *a3, int a4); int __thiscall sub_47A3F0(int this, int a2, const char *a3, int a4); int __thiscall sub_47A410(int this, int a2, const char *a3, int a4); int __thiscall sub_47A430(int this, int a2, const char *a3, int a4); int __thiscall sub_47A450(int this, int a2, const char *a3, int a4); int __thiscall sub_47A470(int this, int a2, const char *a3, int a4); int __thiscall sub_47A490(int this, int a2, const char *a3, int a4); int __thiscall sub_47A4B0(int this, int a2, const char *a3, int a4); int __thiscall sub_47A4D0(int this, int a2, const char *a3, int a4); int __thiscall sub_47A4F0(int this, int a2, const char *a3, int a4); int __thiscall sub_47A510(int this, int a2, const char *a3, int a4); int __thiscall sub_47A530(int this, int a2, const char *a3, int a4); int __thiscall sub_47A550(int this, int a2, const char *a3, int a4); int __thiscall sub_47A570(int this, int a2, const char *a3, int a4); int __thiscall sub_47A590(int this, int a2, const char *a3, int a4); int __thiscall sub_47A5B0(int this, int a2, const char *a3, int a4); int __thiscall sub_47A5D0(int this, int a2, const char *a3, int a4); void *__cdecl sub_47A5F0(int a1, const char *a2, int a3, const char *a4); void *__cdecl sub_47A8B0(int a1, const char *a2, void *a3, const char *a4); int __cdecl sub_47A970(int a1); void *__cdecl sub_47A9D0(int a1, const char *a2, int a3, const char *a4); signed int __cdecl sub_47ACF0(int a1); int __thiscall sub_47AD50(int this, int a2, const char *a3, int a4); int __thiscall sub_47AD90(int this, int a2, const char *a3, int a4); int __thiscall sub_47ADD0(int this, int a2, const char *a3, int a4); int __thiscall sub_47AE10(int this, int a2, const char *a3, int a4); int __thiscall sub_47AE50(int this, int a2, const char *a3, int a4); int __thiscall sub_47AE90(int this, int a2, const char *a3, int a4); int __thiscall sub_47AED0(int this, int a2, const char *a3, int a4); int __thiscall sub_47AF10(int this, int a2, const char *a3, int a4); int __thiscall sub_47AF50(int this, int a2, const char *a3, int a4); int __thiscall sub_47AF90(int this, int a2, const char *a3, int a4); int __thiscall sub_47AFD0(int this, int a2, const char *a3, int a4); int __thiscall sub_47B010(int this, int a2, const char *a3, int a4); int __thiscall sub_47B050(int this, int a2, const char *a3, int a4); int __thiscall sub_47B090(int this, int a2, const char *a3, int a4); int __thiscall sub_47B0D0(int this, int a2, const char *a3, int a4); int __thiscall sub_47B110(int this, int a2, const char *a3, int a4); int __thiscall sub_47B150(int this, int a2, const char *a3, int a4); int __thiscall sub_47B190(int this, int a2, const char *a3, int a4); int __thiscall sub_47B1D0(int this, int a2, const char *a3, int a4); int __thiscall sub_47B210(int this, int a2, const char *a3, int a4); int __thiscall sub_47B250(int this, int a2, const char *a3, int a4); int __thiscall sub_47B290(int this, int a2, const char *a3, int a4); int __thiscall sub_47B2D0(void *this, int a2, int a3); int __thiscall sub_47B2F0(void *this, int a2, int a3); int __thiscall sub_47B310(void *this, int a2, int a3); int __thiscall sub_47B330(int this, int a2, int a3); void __thiscall sub_47B360(int this); int __thiscall sub_47B380(void *this); void __thiscall sub_47B3B0(int this); int __thiscall sub_47B3C0(int this); int __thiscall sub_47B3D0(int this); int __thiscall sub_47B3E0(int this); int __thiscall sub_47B3F0(int this); int __thiscall sub_47B400(int this); int __thiscall sub_47B410(int this); int __thiscall sub_47B420(int, FILE *); // idb void *__thiscall sub_47B440(int this, void *a2); char *__thiscall sub_47B460(int this, char *a2, size_t a3); int __thiscall sub_47B480(int this, int a2, const char *a3, int a4, int a5); int __thiscall sub_47B6A0(int this, int a2, const char *a3, int a4, int a5); int __thiscall sub_47B8C0(int this, int a2, const char *a3, int a4, int a5); void *__thiscall sub_47BAE0(void *this, char a2); int __thiscall sub_47BB10(int this, int a2); // signed int __usercall sub_47BB50(int a1); int __cdecl sub_47BBB0(int a1); int __cdecl sub_47BF30(int a1); signed int __cdecl sub_47C1D0(int a1); int __cdecl sub_47C230(int a1, const char *a2); int __cdecl sub_47C290(int a1, int a2); signed int __cdecl sub_47C2C0(int a1, int a2); void *__cdecl sub_47C340(int a1); int __cdecl sub_47C380(int a1, unsigned int a2, unsigned int a3, int a4, int a5); // signed int __usercall sub_47C4A0(int a1, unsigned int a2, unsigned int a3); int __cdecl sub_47C520(int a1, int a2); int __cdecl sub_47C560(int a1, int a2); void __cdecl sub_47C580(int a1, void *a2); signed int __cdecl sub_47C600(int a1, int a2); int __cdecl sub_47C680(int a1); signed int __cdecl sub_47C6C0(int a1, const char *a2, const char *a3, size_t a4, size_t a5); char __cdecl sub_47C7C0(int a1, int a2); signed int __cdecl sub_47C8A0(int a1, const char *a2, const char *a3); signed int __cdecl sub_47CA10(int a1, const char *name, void *a3); int __thiscall sub_47CA70(int this, SOCKET fd, char a3, __int32 a4); SOCKET __cdecl sub_47CC10(int a1, SOCKET s, struct sockaddr *addr, int *addrlen); int __cdecl sub_47CC30(int a1); int __cdecl sub_47CC80(int, SOCKET s); // idb int __cdecl sub_47CC90(int, SOCKET s, int how); // idb int __cdecl sub_47CCB0(int a1); int __cdecl sub_47CD40(int a1); // int __usercall sub_47CD70(int a1, int a2, int a3, const char *a4); int __thiscall sub_47CE80(void *this); int sub_47CEB0(); // weak unsigned int __cdecl sub_47CEC0(int a1); int __cdecl sub_47CF00(int a1, unsigned int a2, int a3, int a4); void *__cdecl sub_47CF50(int a1, unsigned int a2, unsigned int *a3, int a4, int a5, int a6); int __cdecl sub_47D010(int a1, int a2, unsigned int *a3, int a4, int a5, int a6); int __cdecl sub_47D0B0(int a1); signed int __cdecl sub_47D0E0(int a1, unsigned int a2, int a3); int __cdecl sub_47D170(int a1, int a2, unsigned int a3, int a4); bool __cdecl sub_47D260(int a1, int a2); signed int __cdecl sub_47D2D0(int a1, signed int a2); int __cdecl sub_47D310(int a1, int a2); void __cdecl sub_47D330(int a1); int __cdecl sub_47D390(int a1, const char *a2); void *__cdecl sub_47D420(int a1, int a2); void *__cdecl sub_47D480(int a1, size_t a2); void __cdecl sub_47D520(int a1, int a2); void *__cdecl sub_47D5C0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_47D600(int a1, const char *a2); void *__cdecl sub_47D630(int a1, int a2, void *a3, int a4, int a5, unsigned int a6); int __cdecl sub_47D7E0(int a1, int a2, int a3, int a4, size_t a5, int a6, int a7, int a8, int (__cdecl *a9)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD)); void *__cdecl sub_47D930(int a1, int a2, int a3, void *a4, int a5, const void *a6, size_t a7); void *__cdecl sub_47D950(int a1); int __cdecl sub_47DA10(int a1, const char *a2); int __cdecl sub_47DA90(int a1, const char *a2, size_t a3); void *__cdecl sub_47DAE0(int a1, const char *a2, const char *a3, signed int a4); void *__cdecl sub_47DC50(int a1, const char *a2); signed int __cdecl sub_47DD00(int a1, char *a2, const char *a3, __int16 a4); void __cdecl sub_47E190(int a1); signed int __cdecl sub_47E200(int a1, const void *a2, size_t a3); int __cdecl sub_47E2D0(int a1); int __cdecl sub_47E300(int a1, const char *a2, int a3); int __cdecl sub_47E370(int a1, const char *a2, int a3); int __cdecl sub_47E3E0(int a1, const char *a2, int a3); signed int __cdecl sub_47E440(int a1, int a2, int a3); int __cdecl sub_47E590(int a1); // void *__usercall sub_47E720(int a1, int a2); signed int __cdecl sub_47E7F0(int a1); char *__cdecl sub_47E9F0(int a1, const char *a2, const char *a3); void __cdecl sub_47EAE0(int a1, int a2); signed int __cdecl sub_47EC50(int a1); int __cdecl sub_47ED00(int a1); int __cdecl sub_47ED50(int a1, const char *a2); void *__cdecl sub_47EE90(int a1, int a2, void *a3, signed int a4); void *__cdecl sub_47EFD0(int a1, const char *a2, void *a3, size_t a4, int a5); int __cdecl sub_47F180(int a1, int a2, int a3); // int __usercall sub_47F550(int a1, int a2, int a3); // int __usercall sub_47F5B0(int a1); int __cdecl sub_47F6A0(int a1, int a2, int a3, int a4); int __cdecl sub_47F700(int a1, int a2, int a3, int a4); int __cdecl sub_47F760(int a1, const char *a2); int __cdecl sub_47F7C0(int a1, const void *a2, size_t a3); int __cdecl sub_47F8F0(int a1, int a2, int a3); // signed int __usercall sub_47FA00(int a1); // signed int __usercall sub_47FC40(int a1); void *__cdecl sub_47FDA0(int a1, const char *a2); signed int __cdecl sub_47FDF0(int a1); void *__cdecl sub_480050(int a1, int a2, void *a3, int a4); void *__cdecl sub_480150(int a1, const char *a2, int a3); // int __usercall sub_480310(int a1); int __cdecl sub_480380(int, int, int, u_short hostshort); // idb signed int __cdecl sub_480B00(int a1); int __cdecl sub_480BD0(int a1, const char *a2, int a3, int a4, int a5, const char *a6, int a7); int __cdecl sub_480FA0(int a1, signed int a2, int a3); int __cdecl sub_481250(int a1, unsigned int a2, unsigned int *a3, int a4, int a5, int a6); void __cdecl sub_481310(int a1, void *a2); void *__cdecl sub_481410(int a1, const char *a2, void *a3, int a4, int a5, int a6, unsigned int a7, int a8, int a9); void __cdecl sub_481550(int a1); void __cdecl sub_4816F0(int a1); void __cdecl sub_4817C0(int a1); int __cdecl sub_481820(int a1, int a2); signed int __cdecl sub_481930(int a1, const char *a2, int a3, signed int a4, signed int a5); signed int __cdecl sub_481C20(int a1); signed int __cdecl sub_482090(int a1, int a2, int a3, int a4, const char *a5, const char *a6, const char *a7, const char *a8); void *__cdecl sub_482140(int a1); void *__cdecl sub_482210(int a1); int __cdecl sub_482370(int a1); int __cdecl sub_482A00(int, FILE *); // idb char *__cdecl sub_482AF0(int a1, char *a2, size_t a3); int __cdecl sub_482BF0(int a1); int __cdecl sub_482C60(int a1); int __cdecl sub_4830C0(int a1); int __cdecl sub_4832F0(int a1); int __cdecl sub_483970(int a1, int a2, int a3); int __cdecl sub_4839F0(int a1); int __cdecl sub_483B30(int a1); _DWORD __cdecl sub_483CF0(_DWORD); // weak signed int __cdecl sub_483EA0(int a1, const char *a2); // signed int __usercall sub_484000(int a1, int a2, unsigned int a3, int a4); signed int __cdecl sub_484110(int a1); int __cdecl sub_4850A0(int a1, int a2, signed int a3, signed int a4); int __cdecl sub_485B90(int a1); signed int __cdecl sub_485C50(int a1); int __cdecl sub_485ED0(int a1, int a2); int __cdecl sub_486340(int a1); signed int __cdecl sub_486A50(int a1); signed int __cdecl sub_486A80(int a1); int __cdecl sub_486AC0(int a1, int a2); int __cdecl sub_486C60(int a1, const void *a2, int a3); int __cdecl sub_486D90(int a1, const void *a2); int __cdecl sub_486DC0(int a1, const void *a2, const void *a3, const void *a4); int __cdecl sub_486E50(int a1, unsigned int a2); char __cdecl sub_486F70(int a1, int a2, int a3); // int __usercall sub_487420(const char *a1, int a2); int __cdecl sub_4875F0(int a1, const char *a2, const char *a3); int __cdecl sub_487650(int a1, int a2); int __cdecl sub_487710(int a1, const char *a2); signed int __cdecl sub_487800(int a1, const char *a2, int a3, const char *a4); int __cdecl sub_487910(int, wchar_t, int); // idb void *__cdecl sub_487C20(int a1, const char *a2, int a3, const char *a4, int a5); void *__cdecl sub_487D50(int a1, const char *a2, int a3, const char *a4, int a5); void *__cdecl sub_487E50(int a1, const char *a2, void *a3, int a4, int a5, int a6, signed int a7, signed int a8); void *__cdecl sub_487FB0(int a1, const char *a2, void *a3); int __cdecl sub_4880A0(int a1); int __cdecl sub_488270(int a1); int __cdecl sub_488520(int a1, int a2); int __cdecl sub_488630(int a1); int __cdecl sub_4887E0(int a1); int __cdecl sub_488930(int a1); int __cdecl sub_488AB0(int a1); int __cdecl sub_488AF0(int a1); int __cdecl sub_488B40(int a1); int __cdecl sub_488D50(int a1, const char *a2); void __cdecl sub_488FD0(int a1); int __cdecl sub_4890C0(int a1, const char *a2, const char *a3); // int __usercall sub_4891C0(const char *a1, int a2, int a3, int a4, const char *a5); int __cdecl sub_489490(int a1); int __cdecl sub_489500(int a1, const char *a2, int a3, const char *a4); int __cdecl sub_4899E0(int a1, const char *a2, int a3, const char *a4); int __cdecl sub_489A20(int a1, const char *a2, int a3, const char *a4); int __cdecl sub_489AD0(int, wchar_t); // idb int __cdecl sub_489B60(int a1, const char *a2, int a3, unsigned int a4, const char *a5, int a6); int __cdecl sub_489BF0(int a1, const char *a2, int a3, unsigned int a4, const char *a5, int a6); int __cdecl sub_489C90(int a1); int __cdecl sub_489DE0(int a1); int __fastcall sub_489E60(int a1, int a2, int a3, int a4, const char *a5, const char *a6); _DWORD __stdcall sub_48A270(_DWORD, _DWORD, _DWORD); // weak int __thiscall sub_48A3E0(void *this, int a2, int a3, int a4); // int (*__usercall sub_48A4DF(int a1))(); int loc_48A510(); // weak signed int __cdecl sub_48A530(int a1, const char *buf, int nNumberOfBytesToWrite); int __cdecl sub_48A7D0(signed int fromlen, void *buf, unsigned int len); void __cdecl sub_48A9C0(int a1); int __cdecl sub_48ABC0(int a1, int a2, int a3); int __cdecl sub_48B000(int a1, const char *a2, int a3, int a4); signed int __cdecl sub_48B090(int a1, const char *a2, int a3, unsigned int a4, unsigned int *a5, int a6, const char *a7, int a8); int __cdecl sub_48B160(int a1, const char *a2, int a3, unsigned int *a4, const char *a5, int a6); int __cdecl sub_48B220(int a1, const char *a2, const char *a3); void *__cdecl sub_48B240(int a1, void *a2); void *__thiscall sub_48B3C0(void *this); void __thiscall sub_48B3E0(int this); void *__thiscall sub_48B450(void *this, char a2); // int __cdecl unknown_libname_17(_DWORD); weak void *__thiscall sub_48B481(void *this, int a2); void __stdcall sub_48B49E(int a1); void *__thiscall sub_48B4CE(void *this, int a2); void __stdcall sub_48B4EB(int a1); void *__thiscall sub_48B51B(void *this, int a2); void *__thiscall sub_48B538(void *this, char a2); // int __cdecl _Tolower(int, const _Ctypevec *); // _Ctypevec *__cdecl _Getctype(_Ctypevec *retstr); // _Cvtvec __cdecl _Getcvt(); // int __thiscall std::_Init_locks::_Init_locks(_DWORD); weak int unknown_libname_2(); // weak // _DWORD __stdcall std::_Lockit::_Lockit(_DWORD); weak // int __thiscall std::_Lockit::__Lockit(_DWORD); weak // int __thiscall std::_Fac_node::__Fac_node(_DWORD); weak // _DWORD __cdecl std::locale::facet::_Facet_Register(_DWORD); weak int __cdecl sub_48B801(); // _DWORD __cdecl std::_Locinfo::_Locinfo_dtor(_DWORD); weak // _DWORD __cdecl std::_Locinfo::_Locinfo_ctor(_DWORD, char *); weak // int std::locale::_Init(void); weak void *__thiscall sub_48BAD1(void *this, char a2); int __thiscall sub_48BB68(int this); int __thiscall sub_48BB6C(int this); int (__thiscall **__cdecl sub_48BB70())(void *, char); // _DWORD __cdecl std::ios_base::_Ios_base_dtor(_DWORD); weak // int __cdecl _Toupper(int, const _Ctypevec *); // int __thiscall std::_Mutex::_Mutex(_DWORD); weak // int __thiscall std::_Mutex::__Mutex(_DWORD); weak bool __cdecl __uncaught_exception(); // idb // int __cdecl _Mtxdst(LPCRITICAL_SECTION lpCriticalSection); idb // int __cdecl unknown_libname_4(LPCRITICAL_SECTION lpCriticalSection); idb void __cdecl sub_48BE4F(LPCRITICAL_SECTION lpCriticalSection); // int __thiscall _Init_atexit::__Init_atexit(_DWORD); weak // unsigned __int8 *__cdecl _mbstok(unsigned __int8 *, const unsigned __int8 *); // _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); weak // int __thiscall __security_check_cookie(_DWORD); weak // int sprintf(char *, const char *, ...); // int sprintf_s(char *DstBuf, size_t SizeInBytes, const char *Format, ...); // char *__cdecl strncpy(char *, const char *, size_t); // void __cdecl operator delete(void *); idb // int __cdecl operator new(size_t); idb // int __stdcall _LN21(void *, unsigned int, int, void (__thiscall *)(void *)); idb // int __stdcall _eh_vector_constructor_iterator_(void *, unsigned int, int, int, void (__thiscall *)(void *)); idb // int __cdecl _chdir(const char *); // int __cdecl atexit(void (__cdecl *)()); // errno_t __cdecl _localtime32_s(struct tm *Tm, const __time32_t *Time); // struct tm *__cdecl _localtime32(const __time32_t *Time); // _DWORD __cdecl _LN52(_DWORD); weak // __time32_t __cdecl _time32(__time32_t *Time); // _DWORD __stdcall _LocaleUpdate::_LocaleUpdate(_DWORD); weak // unsigned __int8 *__cdecl _mbsnbcpy(unsigned __int8 *, const unsigned __int8 *, size_t); // int __cdecl atoi(const char *); // __int64 __cdecl _atoi64(const char *); // void *__cdecl memset(void *, int, size_t); // void *__cdecl memmove(void *, const void *, size_t); // struct tm *__cdecl _localtime64(const __time64_t *Time); void __cdecl sub_48DB99(void *a1); int __thiscall sub_48DBA4(void *this); void *__thiscall sub_48DBB4(void *this, char a2); // void *__cdecl memmove_0(void *, const void *, size_t); // int std::exception::_Tidy(void); weak // _DWORD __stdcall std::exception::exception(_DWORD); weak void *__thiscall sub_48E045(void *this, char a2); int __thiscall sub_48E063(void *this); // _DWORD __stdcall std::exception::exception(_DWORD); weak void *__thiscall sub_48E093(void *this, char a2); void *__thiscall sub_48E0BA(void *this, int a2); // _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); weak // void __cdecl free(void *); // struct lconv *__cdecl localeconv(); // int __cdecl fclose(FILE *); // size_t __cdecl fwrite(const void *, size_t, size_t, FILE *); // FILE *__cdecl fopen(const char *, const char *); // size_t __cdecl fread(void *, size_t, size_t, FILE *); // __int32 __cdecl _filelength(int); // int __cdecl _fileno(FILE *); // void *__cdecl memchr(const void *, int, size_t); // unsigned __int8 *__cdecl _mbspbrk(const unsigned __int8 *, const unsigned __int8 *); // int __cdecl _mbsicmp(const unsigned __int8 *, const unsigned __int8 *); // void *__cdecl malloc(size_t); // int __cdecl _mbsnbcmp(const unsigned __int8 *, const unsigned __int8 *, size_t); // char *__cdecl strtok(char *, const char *); // int __cdecl tolower(int); // int __cdecl _mbscmp(const unsigned __int8 *, const unsigned __int8 *); // __int32 __cdecl ftell(FILE *); // int __cdecl fseek(FILE *, __int32, int); // int sscanf(const char *, const char *, ...); // double __cdecl atof(const char *); // void __cdecl _splitpath(const char *, char *, char *, char *, char *); // char *__cdecl _fullpath(char *, const char *, size_t); // int fprintf(FILE *, const char *, ...); // int __cdecl _vsnprintf(char *, size_t, const char *, va_list); // int __cdecl _mkdir(const char *); void **__cdecl sub_49005E(); // _DWORD __cdecl flsall(_DWORD); weak // int __cdecl fflush(FILE *); int __cdecl sub_4903F0(); // size_t __cdecl strcspn(const char *, const char *); // errno_t __cdecl memmove_s(void *Dst, rsize_t DstSize, const void *Src, rsize_t MaxCount); // unsigned __int8 *__cdecl _mbsupr(unsigned __int8 *); // int __cdecl vsprintf(char *, const char *, va_list); // unsigned __int8 *__cdecl _mbsrchr(const unsigned __int8 *, unsigned int); // int __cdecl _except_handler4(PEXCEPTION_RECORD ExceptionRecord, PVOID TargetFrame, int); idb // char *__cdecl strrchr(const char *, int); // void __cdecl srand(unsigned int); // int __cdecl rand(); // void __cdecl qsort(void *, size_t, size_t, int (__cdecl *)(const void *, const void *)); // _DWORD __cdecl _LN34(_DWORD); weak // char *__cdecl strchr(const char *, int); // char *__cdecl strstr(const char *, const char *); // __int32 __cdecl strtol(const char *, char **, int); // unsigned __int32 __cdecl strtoul(const char *, char **, int); // int __cdecl strncmp(const char *, const char *, size_t); // char *__cdecl strncat(char *, const char *, size_t); // int _snprintf(char *, size_t, const char *, ...); signed int __cdecl sub_491D3C(int a1); // int __cdecl _setmode(int, int); // int __cdecl ___mb_cur_max_func(); // int __cdecl wctomb(char *, wchar_t); // int __cdecl mbtowc(wchar_t *, const char *, size_t); // int __cdecl _write_nolock(int, int, DWORD nNumberOfBytesToWrite); idb int __cdecl sub_492C41(int, int, DWORD nNumberOfBytesToWrite); // idb // int __cdecl _read(int, void *, unsigned int); // int *__cdecl _errno(); // unsigned __int32 *__cdecl __doserrno(); // _DWORD __cdecl _EH_prolog3(char); weak // int __stdcall _EH_epilog3(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak int __cdecl sub_493939(); void *__thiscall sub_494688(void *this, char a2); // void __usercall sub_4949B9(int a1); // int _encoded_null(void); weak // int _getptd(void); weak void *__cdecl sub_496A46(void *a1); // int _invalid_parameter_noinfo(void); weak void *__cdecl sub_496BE0(void *a1); // _DWORD __cdecl _unlock(_DWORD); weak // _DWORD __cdecl _lock(_DWORD); weak PVOID __cdecl sub_496E7B(); int (*__cdecl sub_4971F5())(void); int (*__cdecl sub_49721B())(void); signed int __cdecl sub_497E27(int a1); signed int __cdecl sub_497E54(int a1); signed int __cdecl sub_497E81(int a1); int *__cdecl sub_497EAE(); int *__cdecl sub_497EB4(); int *__cdecl sub_497EBA(); int __cdecl sub_497EC0(); int __cdecl sub_498C65(); int __cdecl sub_499B62(int a1); int __cdecl sub_49A7F3(); // _DWORD __cdecl __lock_fhandle(_DWORD); weak // _DWORD __cdecl _unlock_fhandle(_DWORD); weak // int __cdecl _lseek_nolock(int, LONG lDistanceToMove, DWORD dwMoveMethod); idb int __cdecl sub_49BF18(int, LONG lDistanceToMove, DWORD dwMoveMethod); // idb // _DWORD __cdecl __strgtold12_l(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak // int __cdecl _getdcwd_nolock(const CHAR FileName, LPSTR lpBuffer, size_t); idb int __cdecl sub_49DCD0(LPSTR lpBuffer, size_t); // idb _UNKNOWN *__cdecl sub_4A2139(); int __cdecl sub_4A213F(); void __cdecl sub_4A2417(); int __cdecl sub_4A2552(int a1, int a2, int a3); signed int __cdecl sub_4A2944(int a1, int a2, int a3); signed int __cdecl sub_4A29EC(int a1, int a2, int a3); // int __cdecl _tsopen_nolock(int, LPCSTR lpFileName, int, int, int); idb int __cdecl sub_4A3536(LPCSTR lpFileName, int, int, int, int, int); // idb int __cdecl sub_4A35FA(int, LPCSTR lpFileName, int, int, int); // idb signed int __cdecl sub_4A3838(int a1, int a2); signed int __cdecl sub_4A3D89(int a1, int a2); BOOL __cdecl sub_4A4793(); // SQLRETURN __stdcall SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle); // SQLRETURN __stdcall SQLExecDirect(SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength); // SQLRETURN __stdcall SQLFreeStmt(SQLHSTMT StatementHandle, SQLUSMALLINT Option); // SQLRETURN __stdcall SQLCloseCursor(SQLHSTMT StatementHandle); // SQLRETURN __stdcall SQLFetch(SQLHSTMT StatementHandle); // SQLRETURN __stdcall SQLGetData(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValue, SQLINTEGER BufferLength, SQLINTEGER *StrLen_or_IndPtr); // SQLRETURN __stdcall SQLColAttribute(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier, SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength, SQLSMALLINT *StringLength, SQLPOINTER NumericAttribute); // SQLRETURN __stdcall SQLAllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE *OutputHandle); // SQLRETURN __stdcall SQLSetEnvAttr(SQLHENV EnvironmentHandle, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER StringLength); // SQLRETURN __stdcall SQLSetConnectAttr(SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER StringLength); // SQLRETURN __stdcall SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT CompletionType); // SQLRETURN __stdcall SQLError(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle, SQLCHAR *Sqlstate, SQLINTEGER *NativeError, SQLCHAR *MessageText, SQLSMALLINT BufferLength, SQLSMALLINT *TextLength); // SQLRETURN __stdcall SQLDisconnect(SQLHDBC ConnectionHandle); // SQLRETURN __stdcall SQLDriverConnect(SQLHDBC hdbc, SQLHWND hwnd, SQLCHAR *szConnStrIn, SQLSMALLINT cchConnStrIn, SQLCHAR *szConnStrOut, SQLSMALLINT cchConnStrOutMax, SQLSMALLINT *pcchConnStrOut, SQLUSMALLINT fDriverCompletion); // SQLRETURN __stdcall SQLBindParameter(SQLHSTMT hstmt, SQLUSMALLINT ipar, SQLSMALLINT fParamType, SQLSMALLINT fCType, SQLSMALLINT fSqlType, SQLUINTEGER cbColDef, SQLSMALLINT ibScale, SQLPOINTER rgbValue, SQLINTEGER cbValueMax, SQLINTEGER *pcbValue); // int __stdcall _WSAFDIsSet(SOCKET fd, fd_set *); // int __stdcall WSACleanup(); // int __stdcall WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData); // struct hostent *__stdcall gethostbyname(const char *name); // int __stdcall gethostname(char *name, int namelen); void *__thiscall sub_4A6130(void *this); void __thiscall sub_4A62E0(void *this); void *__thiscall sub_4A62F0(void *this, char a2); signed int __thiscall sub_4A6320(int this, unsigned __int16 a2, unsigned int a3); // int __usercall sub_4A6370(int a1); // HANDLE __usercall sub_4A6378(int a1); // void __usercall sub_4A6386(int a1); // void __usercall sub_4A6394(int a1); // int __usercall sub_4A63A2(int a1); // void __usercall sub_4A63B0(int a1); // void __usercall sub_4A63BE(int a1); // void __usercall sub_4A63CC(int a1); // void __usercall sub_4A63DA(int a1); // void __usercall sub_4A63E8(int a1); // void __usercall sub_4A63F6(int a1); // void __usercall sub_4A6404(int a1); int __cdecl sub_4A6412(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int (__stdcall **__usercall sub_4A6430(int a1))(int, int); int __cdecl sub_4A643B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6470(int a1); int __cdecl sub_4A647B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A64A0(int a1); // void __usercall sub_4A64AB(int a1); // int __usercall sub_4A64B6(int a1); // void __usercall sub_4A64CC(int a1); // void __usercall sub_4A64DA(int a1); // void __usercall sub_4A64E5(int a1); int __cdecl sub_4A64F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6520(int a1); // void __usercall sub_4A652B(int a1); int __cdecl sub_4A6539(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_4A6570(); // void __usercall sub_4A65A0(int a1); // void __usercall sub_4A65AB(int a1); int __cdecl sub_4A65B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A65E0(int a1); int __cdecl sub_4A65EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6620(int a1); int __cdecl sub_4A662B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6660(int a1); // void __usercall sub_4A666B(int a1); int __cdecl sub_4A6676(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A66A0(int a1); int __cdecl sub_4A66AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A66E0(int a1); int __cdecl sub_4A66EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6720(int a1); // void __usercall sub_4A672B(int a1); int __cdecl sub_4A6736(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6760(int a1); // void __usercall sub_4A676B(int a1); int __cdecl sub_4A6776(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A67A0(int a1); // void __usercall sub_4A67AB(int a1); int __cdecl sub_4A67B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A67E0(int a1); // void __usercall sub_4A67EB(int a1); // void __usercall sub_4A67F6(int a1); int __cdecl sub_4A6801(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6830(int a1); // void __usercall sub_4A683B(int a1); // void __usercall sub_4A6846(int a1); // void __usercall sub_4A6851(int a1); // void __usercall sub_4A685C(int a1); // void __usercall sub_4A6867(int a1); // void __usercall sub_4A6872(int a1); int __cdecl sub_4A687D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A68B0(int a1); int __cdecl sub_4A68BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A68F0(int a1); int __cdecl sub_4A68FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6930(int a1); int __cdecl sub_4A693B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6970(int a1); // void __usercall sub_4A697B(int a1); // void __usercall sub_4A6986(int a1); int __cdecl sub_4A6991(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A69C0(int a1); // void __usercall sub_4A69CB(int a1); // void __usercall sub_4A69D6(int a1); int __cdecl sub_4A69E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6A10(int a1); // void __usercall sub_4A6A1B(int a1); // void __usercall sub_4A6A26(int a1); // void __usercall sub_4A6A31(int a1); int __cdecl sub_4A6A3C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6A70(int a1); // void __usercall sub_4A6A7B(int a1); // void __usercall sub_4A6A86(int a1); // void __usercall sub_4A6A91(int a1); int __cdecl sub_4A6A9C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6AD0(int a1); // void __usercall sub_4A6ADB(int a1); // void __usercall sub_4A6AE6(int a1); // void __usercall sub_4A6AF1(int a1); int __cdecl sub_4A6AFC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6B30(int a1); // void __usercall sub_4A6B3B(int a1); // void __usercall sub_4A6B46(int a1); // void __usercall sub_4A6B51(int a1); int __cdecl sub_4A6B5C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6B90(int a1); int __cdecl sub_4A6B9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6BD0(int a1); int __cdecl sub_4A6BDB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6C10(int a1); // void __usercall sub_4A6C1B(int a1); // void __usercall sub_4A6C26(int a1); // void __usercall sub_4A6C31(int a1); int __cdecl sub_4A6C3C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6C70(int a1); // void __usercall sub_4A6C7B(int a1); int __cdecl sub_4A6C86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6CB0(int a1); // void __usercall sub_4A6CBB(int a1); // void __usercall sub_4A6CC6(int a1); // void __usercall sub_4A6CD1(int a1); int __cdecl sub_4A6CDC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6D10(int a1); // void __usercall sub_4A6D1B(int a1); // void __usercall sub_4A6D26(int a1); int __cdecl sub_4A6D31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6D60(int a1); // void __usercall sub_4A6D6B(int a1); // void __usercall sub_4A6D76(int a1); int __cdecl sub_4A6D81(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6DB0(int a1); // void __usercall sub_4A6DBB(int a1); // void __usercall sub_4A6DC6(int a1); int __cdecl sub_4A6DD1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6E00(int a1); int __cdecl sub_4A6E0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6E40(int a1); int __cdecl sub_4A6E4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6E80(int a1); // void __usercall sub_4A6E8B(int a1); // void __usercall sub_4A6E96(int a1); int __cdecl sub_4A6EA1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6ED0(int a1); // void __usercall sub_4A6EDB(int a1); // void __usercall sub_4A6EE6(int a1); // void __usercall sub_4A6EF1(int a1); // void __usercall sub_4A6EFC(int a1); // void __usercall sub_4A6F07(int a1); int __cdecl sub_4A6F12(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6F40(int a1); // void __usercall sub_4A6F4B(int a1); // void __usercall sub_4A6F56(int a1); int __cdecl sub_4A6F61(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6F90(int a1); int __cdecl sub_4A6F9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A6FD0(int a1); int __cdecl sub_4A6FDB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7010(int a1); int __cdecl sub_4A701B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7050(int a1); int __cdecl sub_4A705B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7090(int a1); // void __usercall sub_4A709B(int a1); int __cdecl sub_4A70A6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A70D0(int a1); // void __usercall sub_4A70DB(int a1); int __cdecl sub_4A70E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7110(int a1); int __cdecl sub_4A711B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7150(int a1); // void __usercall sub_4A715B(int a1); // void __usercall sub_4A7166(int a1); int __cdecl sub_4A7171(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A71A0(int a1); // void __usercall sub_4A71AB(int a1); // void __usercall sub_4A71B6(int a1); int __cdecl sub_4A71C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A71F0(int a1); // void __usercall sub_4A71FB(int a1); // void __usercall sub_4A7206(int a1); int __cdecl sub_4A7211(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7240(int a1); int __cdecl sub_4A724B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7280(int a1); // void __usercall sub_4A728B(int a1); int __cdecl sub_4A7296(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A72C0(int a1); // void __usercall sub_4A72CB(int a1); int __cdecl sub_4A72D6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7300(int a1); // void __usercall sub_4A730B(int a1); int __cdecl sub_4A7316(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7340(int a1); // void __usercall sub_4A734B(int a1); int __cdecl sub_4A7356(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7380(int a1); // void __usercall sub_4A738B(int a1); int __cdecl sub_4A7396(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A73C0(int a1); // void __usercall sub_4A73CB(int a1); // void __usercall sub_4A73D6(int a1); int __cdecl sub_4A73E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7410(int a1); int __cdecl sub_4A741B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7450(int a1); int __cdecl sub_4A745B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7490(int a1); int __cdecl sub_4A749B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A74D0(int a1); // void __usercall sub_4A74DB(int a1); int __cdecl sub_4A74E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7510(int a1); int __cdecl sub_4A751B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7550(int a1); int __cdecl sub_4A755B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7590(int a1); int __cdecl sub_4A759B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A75D0(int a1); int __cdecl sub_4A75DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7610(int a1); int __cdecl sub_4A761B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7650(int a1); // void __usercall sub_4A765B(int a1); int __cdecl sub_4A7666(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7690(int a1); int __cdecl sub_4A769B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A76D0(int a1); int __cdecl sub_4A76DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7710(int a1); // void __usercall sub_4A771B(int a1); int __cdecl sub_4A7726(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7750(int a1); int __cdecl sub_4A775B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7790(int a1); int __cdecl sub_4A779B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A77D0(int a1); // void __usercall sub_4A77DB(int a1); // void __usercall sub_4A77E6(int a1); int __cdecl sub_4A77F1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7820(int a1); int __cdecl sub_4A782B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7860(int a1); int __cdecl sub_4A786B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A78A0(int a1); // void __usercall sub_4A78AB(int a1); int __cdecl sub_4A78B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A78E0(int a1); // void __usercall sub_4A78EB(int a1); // void __usercall sub_4A78F6(int a1); int __cdecl sub_4A7901(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7930(int a1); // void __usercall sub_4A793B(int a1); // void __usercall sub_4A7946(int a1); int __cdecl sub_4A7951(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7980(int a1); // void __usercall sub_4A798B(int a1); int __cdecl sub_4A7996(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A79C0(int a1); int __cdecl sub_4A79CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7A00(int a1); // void __usercall sub_4A7A0B(int a1); int __cdecl sub_4A7A16(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7A40(int a1); int __cdecl sub_4A7A4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7A80(int a1); int __cdecl sub_4A7A8B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7AC0(int a1); // void __usercall sub_4A7ACB(int a1); int __cdecl sub_4A7AD6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7B00(int a1); int __cdecl sub_4A7B0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7B40(int a1); int __cdecl sub_4A7B4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7B80(int a1); // void __usercall sub_4A7B8B(int a1); int __cdecl sub_4A7B96(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7BC0(int a1); int __cdecl sub_4A7BCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7C00(int a1); int __cdecl sub_4A7C0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7C40(int a1); int __cdecl sub_4A7C4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7C80(int a1); int __cdecl sub_4A7C8B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7CC0(int a1); int __cdecl sub_4A7CCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7D00(int a1); int __cdecl sub_4A7D0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7D40(int a1); // void __usercall sub_4A7D4B(int a1); int __cdecl sub_4A7D56(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7D80(int a1); // void __usercall sub_4A7D8B(int a1); int __cdecl sub_4A7D96(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7DC0(int a1); int __cdecl sub_4A7DCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7E00(int a1); int __cdecl sub_4A7E0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7E40(int a1); // void __usercall sub_4A7E4B(int a1); int __cdecl sub_4A7E56(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7E80(int a1); // void __usercall sub_4A7E8B(int a1); // void __usercall sub_4A7E96(int a1); int __cdecl sub_4A7EA1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7ED0(int a1); // void __usercall sub_4A7EDB(int a1); // void __usercall sub_4A7EE6(int a1); int __cdecl sub_4A7EF1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7F20(int a1); int __cdecl sub_4A7F2B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7F60(int a1); int __cdecl sub_4A7F6B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7FA0(int a1); int __cdecl sub_4A7FAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A7FE0(int a1); int __cdecl sub_4A7FEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8020(int a1); int __cdecl sub_4A802B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8060(int a1); int __cdecl sub_4A806B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A80A0(int a1); int __cdecl sub_4A80AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A80E0(int a1); int __cdecl sub_4A80EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8120(int a1); int __cdecl sub_4A812B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8160(int a1); int __cdecl sub_4A816B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A81A0(int a1); int __cdecl sub_4A81AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A81E0(int a1); int __cdecl sub_4A81EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8220(int a1); int __cdecl sub_4A822B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8260(int a1); int __cdecl sub_4A826B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A82A0(int a1); int __cdecl sub_4A82AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A82E0(int a1); int __cdecl sub_4A82EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8320(int a1); // void __usercall sub_4A832B(int a1); int __cdecl sub_4A8336(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8360(int a1); int __cdecl sub_4A836B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A83A0(int a1); int __cdecl sub_4A83AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A83E0(int a1); int __cdecl sub_4A83EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8420(int a1); int __cdecl sub_4A842B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8460(int a1); // void __usercall sub_4A846B(int a1); // void __usercall sub_4A8476(int a1); int __cdecl sub_4A8481(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A84B0(int a1); int __cdecl sub_4A84BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A84F0(int a1); // void __usercall sub_4A84FB(int a1); // void __usercall sub_4A8506(int a1); int __cdecl sub_4A8511(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8540(int a1); int __cdecl sub_4A854B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8580(int a1); int __cdecl sub_4A858B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A85C0(int a1); // void __usercall sub_4A85CB(int a1); int __cdecl sub_4A85D6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8600(int a1); // void __usercall sub_4A860B(int a1); int __cdecl sub_4A8616(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8640(int a1); int __cdecl sub_4A864B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8680(int a1); int __cdecl sub_4A868B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A86C0(int a1); // void __usercall sub_4A86CB(int a1); int __cdecl sub_4A86D6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8700(int a1); int __cdecl sub_4A870B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8740(int a1); int __cdecl sub_4A874B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8780(int a1); // void __usercall sub_4A878B(int a1); int __cdecl sub_4A8796(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A87C0(int a1); int __cdecl sub_4A87CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8800(int a1); int __cdecl sub_4A880B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8840(int a1); int __cdecl sub_4A884B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8880(int a1); int __cdecl sub_4A888B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A88C0(int a1); int __cdecl sub_4A88CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8900(int a1); int __cdecl sub_4A890B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8940(int a1); // void __usercall sub_4A894B(int a1); int __cdecl sub_4A8956(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8980(int a1); // void __usercall sub_4A898B(int a1); int __cdecl sub_4A8996(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A89C0(int a1); // void __usercall sub_4A89CB(int a1); // void __usercall sub_4A89D6(int a1); // void __usercall sub_4A89E1(int a1); // void __usercall sub_4A89EC(int a1); // void __usercall sub_4A89F7(int a1); int __cdecl sub_4A8A02(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8A30(int a1); // void __usercall sub_4A8A3B(int a1); // void __usercall sub_4A8A46(int a1); // void __usercall sub_4A8A51(int a1); // void __usercall sub_4A8A5C(int a1); int __cdecl sub_4A8A67(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8A90(int a1); int __cdecl sub_4A8A9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8AD0(int a1); int __cdecl sub_4A8ADB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8B10(int a1); int __cdecl sub_4A8B1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8B50(int a1); int __cdecl sub_4A8B5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8B90(int a1); // void __usercall sub_4A8B9B(int a1); int __cdecl sub_4A8BA6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8BD0(int a1); // void __usercall sub_4A8BDB(int a1); // void __usercall sub_4A8BE6(int a1); int __cdecl sub_4A8BF1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8C20(int a1); // void __usercall sub_4A8C2B(int a1); // void __usercall sub_4A8C36(int a1); // void __usercall sub_4A8C41(int a1); int __cdecl sub_4A8C4C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8C80(int a1); int __cdecl sub_4A8C8B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8CC0(int a1); // void __usercall sub_4A8CCB(int a1); // void __usercall sub_4A8CD6(int a1); int __cdecl sub_4A8CE1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8D10(int a1); // void __usercall sub_4A8D1B(int a1); // void __usercall sub_4A8D26(int a1); int __cdecl sub_4A8D31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8D60(int a1); // void __usercall sub_4A8D6B(int a1); int __cdecl sub_4A8D76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8DA0(int a1); // void __usercall sub_4A8DAB(int a1); // void __usercall sub_4A8DB6(int a1); int __cdecl sub_4A8DC1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8DF0(int a1); int __cdecl sub_4A8DFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8E30(int a1); int __cdecl sub_4A8E3B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8E70(int a1); int __cdecl sub_4A8E7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8EB0(int a1); // void __usercall sub_4A8EBB(int a1); int __cdecl sub_4A8EC6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8EF0(int a1); // void __usercall sub_4A8EFB(int a1); // void __usercall sub_4A8F06(int a1); // void __usercall sub_4A8F11(int a1); int __cdecl sub_4A8F1C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8F50(int a1); int __cdecl sub_4A8F5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8F90(int a1); // void __usercall sub_4A8F9B(int a1); int __cdecl sub_4A8FA6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A8FD0(int a1); int __cdecl sub_4A8FDB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9010(int a1); // void __usercall sub_4A901B(int a1); int __cdecl sub_4A9026(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9050(int a1); int __cdecl sub_4A905B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9090(int a1); int __cdecl sub_4A909B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A90D0(int a1); int __cdecl sub_4A90DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9110(int a1); int __cdecl sub_4A911B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9150(int a1); int __cdecl sub_4A915B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9190(int a1); int __cdecl sub_4A919B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A91D0(int a1); int __cdecl sub_4A91DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9210(int a1); int __cdecl sub_4A921B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9250(int a1); // void __usercall sub_4A925B(int a1); // void __usercall sub_4A9266(int a1); // void __usercall sub_4A9271(int a1); // void __usercall sub_4A927C(int a1); int __cdecl sub_4A9287(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A92B0(int a1); int __cdecl sub_4A92BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A92F0(int a1); // void __usercall sub_4A92FB(int a1); int __cdecl sub_4A9306(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9330(int a1); int __cdecl sub_4A933B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9370(int a1); int __cdecl sub_4A937B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A93B0(int a1); int __cdecl sub_4A93BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A93F0(int a1); int __cdecl sub_4A93F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9420(int a1); int __cdecl sub_4A942B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9460(int a1); int __cdecl sub_4A946B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A94A0(int a1); int __cdecl sub_4A94AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A94E0(int a1); int __cdecl sub_4A94EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9520(int a1); int __cdecl sub_4A952B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int (__stdcall **__usercall sub_4A9550(int a1))(int, int); // void __usercall sub_4A9558(int a1); int __cdecl sub_4A9566(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int (__stdcall **__usercall sub_4A9590(int a1))(int, int); // void __usercall sub_4A9598(int a1); // int __usercall sub_4A95A6(int a1); int __cdecl sub_4A95AE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int (__stdcall **__usercall sub_4A95D0(int a1))(int, int); // void __usercall sub_4A95D8(int a1); int __cdecl sub_4A95E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9610(int a1); int __cdecl sub_4A961E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9640(int a1); int __cdecl sub_4A9670(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9690(int a1); int __cdecl sub_4A969B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A96C0(int a1); // void __usercall sub_4A96CB(int a1); // int __usercall sub_4A96D6(int a1); void __cdecl sub_4A96E1(); // int __usercall sub_4A96EC(int a1); // void __usercall sub_4A96F7(int a1); // void __usercall sub_4A9702(int a1); int __cdecl sub_4A970D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A9740(int a1); int __cdecl sub_4A974B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_4A9770(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A9790(int a1); // void __usercall sub_4A9798(int a1); void __cdecl sub_4A97A3(); void __cdecl sub_4A97AE(); void __cdecl sub_4A97B9(); int __cdecl sub_4A97C4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A97E0(int a1); void __cdecl sub_4A97E8(); void __cdecl sub_4A97F3(); void __cdecl sub_4A97FE(); void __cdecl sub_4A9809(); int __cdecl sub_4A9814(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9830(int a1); int __cdecl sub_4A983B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A9860(int a1); int __cdecl sub_4A986B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9890(int a1); int __cdecl sub_4A9898(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_4A98C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9910(int a1); // int __usercall sub_4A991B(int a1); // void __usercall sub_4A9934(int a1); // int __usercall sub_4A9990(int a1); int __cdecl sub_4A9998(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4A99C0(); // int __usercall sub_4A99C8(int a1); void __cdecl sub_4A99D0(); int __cdecl sub_4A99D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A9A00(int a1); int __cdecl sub_4A9A08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A9A30(int a1); int __cdecl sub_4A9A38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A9A60(int a1); void __cdecl sub_4A9A79(); int __cdecl sub_4A9A81(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9AB0(int a1); int __cdecl sub_4A9AB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A9AE0(int a1); int __cdecl sub_4A9AE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A9B10(int a1); // int __usercall sub_4A9B1B(int a1); // int __usercall sub_4A9B26(int a1); int __cdecl sub_4A9B31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4A9B60(int a1); // int __usercall sub_4A9B6B(int a1); int __cdecl sub_4A9B76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9BA0(int a1); int __cdecl sub_4A9BAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4A9BD0(); // int __usercall sub_4A9BD8(int a1); // void __usercall sub_4A9BE0(int a1); void __cdecl sub_4A9BE8(); void __cdecl sub_4A9C10(); // int __usercall sub_4A9C18(int a1); void __cdecl sub_4A9C20(); int __cdecl sub_4A9C28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9C50(int a1); void __cdecl sub_4A9C58(); void __cdecl sub_4A9C60(); int __cdecl sub_4A9C68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9C90(int a1); void __cdecl sub_4A9C98(); int __cdecl sub_4A9CA0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9CD0(int a1); void __cdecl sub_4A9CD8(); void __cdecl sub_4A9CE0(); void __cdecl sub_4A9CE8(); int __cdecl sub_4A9CF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9D20(int a1); int __cdecl sub_4A9D28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4A9D50(); // void __usercall sub_4A9D58(int a1); int __cdecl sub_4A9D66(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9D90(int a1); // void __usercall sub_4A9D98(int a1); // void __usercall sub_4A9DA6(int a1); // void __usercall sub_4A9DB4(int a1); // void __usercall sub_4A9DC2(int a1); // void __usercall sub_4A9DD0(int a1); int __cdecl sub_4A9DDE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4A9E00(); void __cdecl sub_4A9E08(); void __cdecl sub_4A9E16(); void __cdecl sub_4A9E24(); void __cdecl sub_4A9E32(); void __cdecl sub_4A9E40(); int __cdecl sub_4A9E4E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9E70(int a1); int __cdecl sub_4A9E7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9EA0(int a1); // void __usercall sub_4A9EAB(int a1); int __cdecl sub_4A9EB9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9EE0(int a1); int __cdecl sub_4A9EEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9F10(int a1); int __cdecl sub_4A9F1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4A9F40(int a1); void __cdecl sub_4A9F4B(); // void __usercall sub_4A9F59(int a1); int __cdecl sub_4A9F67(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4A9F90(); void __cdecl sub_4A9F9B(); void __cdecl sub_4A9FD0(); void __cdecl sub_4A9FDB(); void __cdecl sub_4A9FE6(); void __cdecl sub_4A9FF1(); int __cdecl sub_4A9FFC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA020(int a1); // void __usercall sub_4AA028(int a1); // void __usercall sub_4AA030(int a1); int __cdecl sub_4AA038(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA060(int a1); int __cdecl sub_4AA068(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA090(int a1); // void __usercall sub_4AA09B(int a1); int __cdecl sub_4AA0A6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA0D0(int a1); int __cdecl sub_4AA0D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA100(); // int (__stdcall **__usercall sub_4AA10B(int a1))(int, int); // void __usercall sub_4AA116(int a1); int __cdecl sub_4AA124(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA140(); // int (__stdcall **__usercall sub_4AA14B(int a1))(int, int); int __cdecl sub_4AA156(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // SQLRETURN __usercall sub_4AA180(int a1); int __cdecl sub_4AA188(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA1B0(int a1); int __cdecl sub_4AA1B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA1E0(); int __cdecl sub_4AA1EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4AA210(int a1); // int __usercall sub_4AA226(int a1); // void __usercall sub_4AA241(int a1); int __cdecl sub_4AA24F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_4AA280(); int __cdecl sub_4AA297(); int __cdecl sub_4AA2AE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA2D0(int a1); int __cdecl sub_4AA2D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA300(int a1); int __cdecl sub_4AA308(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA330(); // void __usercall sub_4AA338(int a1); int __cdecl sub_4AA343(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA360(); void __cdecl sub_4AA368(); void __cdecl sub_4AA370(); int __cdecl sub_4AA378(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4AA3A0(int a1); // int __usercall sub_4AA3B9(int a1); void __cdecl sub_4AA3C4(); // int __usercall sub_4AA3CF(int a1); // int __usercall sub_4AA3DA(int a1); // int __usercall sub_4AA3E5(int a1); void __cdecl sub_4AA3FE(); // int __usercall sub_4AA40C(int a1); int __cdecl sub_4AA41A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4AA440(int a1); // void __usercall sub_4AA448(int a1); int __cdecl sub_4AA453(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_4AA470(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA490(); int __cdecl sub_4AA49B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA4D0(); void __cdecl sub_4AA4DB(); int __cdecl sub_4AA4E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA510(); void __cdecl sub_4AA51B(); int __cdecl sub_4AA526(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA550(); void __cdecl sub_4AA590(); int __cdecl sub_4AA59B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA5C0(); int __cdecl sub_4AA5CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA5F0(int a1); void __cdecl sub_4AA5FB(); // void __usercall sub_4AA606(int a1); int __cdecl sub_4AA611(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA630(int a1); // void __usercall sub_4AA63B(int a1); int __cdecl sub_4AA646(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_4AA670(int a1); int __cdecl sub_4AA67B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_4AA6D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA6F0(); // int __usercall sub_4AA6F8(int a1); void __cdecl sub_4AA700(); int __cdecl sub_4AA708(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_4AA730(); void __cdecl sub_4AA738(); int __cdecl sub_4AA740(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_4AA75B(int a1); int __cdecl sub_4AA763(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_4AA7AC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_4AA7D0(); int __cdecl sub_4AA7F0(); int __cdecl sub_4AA810(); int __cdecl sub_4AA820(); int __cdecl sub_4AA840(); int __cdecl sub_4AA860(); int __cdecl sub_4AA880(); int __cdecl sub_4AA890(); int __cdecl sub_4AA8B0(); int __cdecl sub_4AA940(); int __cdecl sub_4AA950(); int __cdecl sub_4AA960(); int __cdecl sub_4AA990(); int __cdecl sub_4AA9B0(); int __cdecl sub_4AAA10(); int __cdecl sub_4AAA70(); int __cdecl sub_4AAAA0(); int __cdecl sub_4AAB40(); int __cdecl sub_4AABA0(); int __cdecl sub_4AABC0(); int __cdecl sub_4AABD6(); int __cdecl sub_4AABEC(); int __cdecl sub_4AABF8(); int __cdecl sub_4AAC04(); int __cdecl sub_4AAC10(); int __cdecl sub_4AAC1C(); int __cdecl sub_4AAC28(); int __cdecl sub_4AAC3E(); int __cdecl sub_4AAC60(); void __cdecl sub_4AAC70(); // idb void __cdecl nullsub_2(); // idb void __cdecl sub_4AAC90(); // idb int __cdecl sub_4AACA0(); void __cdecl sub_4AACC0(); // idb void __cdecl nullsub_3(); // idb int (__thiscall **__cdecl sub_4AACF0())(void *, char); void __cdecl nullsub_4(); // idb void __cdecl nullsub_5(); // idb void __cdecl nullsub_6(); // idb int __cdecl sub_4AAD30(); int __cdecl sub_4AAD50(); int __cdecl sub_4AAD70(); void __cdecl sub_4AAD90(); // idb void __cdecl sub_4AADB0(); // idb void __cdecl sub_4AAE30(); // idb int __cdecl sub_4AAE50(); void __cdecl sub_4AAED0(); // idb LONG __cdecl sub_4AAEDA(); void __cdecl sub_4AAEE4(); // idb // int __usercall sub_4AAEEE(int a1); void __cdecl sub_4AAEF8(); // idb void __cdecl sub_4AAF03(); // idb void __cdecl sub_4AAF0E(); // idb void __cdecl sub_4AAF19(); // idb int __cdecl sub_4AAF23(); int __cdecl sub_4AAF2D(); // BOOL __stdcall StartServiceCtrlDispatcherA(const SERVICE_TABLE_ENTRYA *lpServiceStartTable); // SERVICE_STATUS_HANDLE __stdcall RegisterServiceCtrlHandlerA(LPCSTR lpServiceName, LPHANDLER_FUNCTION lpHandlerProc); // BOOL __stdcall CloseServiceHandle(SC_HANDLE hSCObject); // SC_HANDLE __stdcall CreateServiceA(SC_HANDLE hSCManager, LPCSTR lpServiceName, LPCSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCSTR lpBinaryPathName, LPCSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCSTR lpDependencies, LPCSTR lpServiceStartName, LPCSTR lpPassword); // SC_HANDLE __stdcall OpenSCManagerA(LPCSTR lpMachineName, LPCSTR lpDatabaseName, DWORD dwDesiredAccess); // BOOL __stdcall DeleteService(SC_HANDLE hService); // SC_HANDLE __stdcall OpenServiceA(SC_HANDLE hSCManager, LPCSTR lpServiceName, DWORD dwDesiredAccess); // BOOL __stdcall SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus); // BOOL __stdcall QueryServiceStatus(SC_HANDLE hService, LPSERVICE_STATUS lpServiceStatus); // void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // BOOL __stdcall PostQueuedCompletionStatus(HANDLE CompletionPort, DWORD dwNumberOfBytesTransferred, ULONG_PTR dwCompletionKey, LPOVERLAPPED lpOverlapped); // HANDLE __stdcall CreateSemaphoreA(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCSTR lpName); // BOOL __stdcall ReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); // DWORD __stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); // void __stdcall OutputDebugStringA(LPCSTR lpOutputString); // HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); // DWORD __stdcall GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize); // void __stdcall GetSystemInfo(LPSYSTEM_INFO lpSystemInfo); // void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime); // int __stdcall GetDateFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, LPSTR lpDateStr, int cchDate); // int __stdcall GetTimeFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpTimeStr, int cchTime); // void __stdcall GetSystemTime(LPSYSTEMTIME lpSystemTime); // DWORD __stdcall GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer); // void __stdcall Sleep(DWORD dwMilliseconds); // void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // BOOL __stdcall IsProcessorFeaturePresent(DWORD ProcessorFeature); // HMODULE __stdcall LoadLibraryW(LPCWSTR lpLibFileName); // BOOL __stdcall ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); // BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); // DWORD __stdcall SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); // void __stdcall SetLastError(DWORD dwErrCode); // DWORD __stdcall GetLastError(); // BOOL __stdcall SystemTimeToFileTime(const SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime); // BOOL __stdcall CloseHandle(HANDLE hObject); // DWORD __stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh); // HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); // BOOL __stdcall SetCurrentDirectoryA(LPCSTR lpPathName); // HANDLE __stdcall CreateIoCompletionPort(HANDLE FileHandle, HANDLE ExistingCompletionPort, ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads); // BOOL __stdcall GetQueuedCompletionStatus(HANDLE CompletionPort, LPDWORD lpNumberOfBytesTransferred, PULONG_PTR lpCompletionKey, LPOVERLAPPED *lpOverlapped, DWORD dwMilliseconds); // DWORD __stdcall FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, va_list *Arguments); // DWORD __stdcall GetCurrentProcessId(); // HANDLE __stdcall GetCurrentProcess(); // BOOL __stdcall SetEvent(HANDLE hEvent); // HANDLE __stdcall CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName); // DWORD __stdcall GetCurrentThreadId(); // FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName); // HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName); // LPTOP_LEVEL_EXCEPTION_FILTER __stdcall SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); // BOOL __stdcall ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead); // HANDLE __stdcall GetCurrentThread(); // LONG __stdcall InterlockedExchange(volatile LONG *Target, LONG Value); // BOOL __stdcall SwitchToThread(); // LONG __stdcall InterlockedCompareExchange(volatile LONG *Destination, LONG Exchange, LONG Comperand); // LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend); // LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend); // BOOL __stdcall IsBadReadPtr(const void *lp, UINT_PTR ucb); // LPSTR __stdcall lstrcpynA(LPSTR lpString1, LPCSTR lpString2, int iMaxLength); // int __stdcall lstrlenA(LPCSTR lpString); // HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName); // PVOID __stdcall EncodePointer(PVOID Ptr); // PVOID __stdcall DecodePointer(PVOID Ptr); // int __stdcall MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType); // int wsprintfA(LPSTR, LPCSTR, ...); // DWORD __stdcall timeGetTime(); // int __stdcall setsockopt(SOCKET s, int level, int optname, const char *optval, int optlen); // int __stdcall ioctlsocket(SOCKET s, __int32 cmd, u_long *argp); // int __stdcall bind(SOCKET s, const struct sockaddr *name, int namelen); // int __stdcall listen(SOCKET s, int backlog); // int __stdcall getsockname(SOCKET s, struct sockaddr *name, int *namelen); // int __stdcall WSACleanup(); // int __stdcall WSAGetLastError(); // int __stdcall closesocket(SOCKET s); // int __stdcall shutdown(SOCKET s, int how); // u_long __stdcall ntohl(u_long netlong); // int __stdcall sendto(SOCKET s, const char *buf, int len, int flags, const struct sockaddr *to, int tolen); // int __stdcall recvfrom(SOCKET s, char *buf, int len, int flags, struct sockaddr *from, int *fromlen); // int __stdcall getpeername(SOCKET s, struct sockaddr *name, int *namelen); // int __stdcall connect(SOCKET s, const struct sockaddr *name, int namelen); // u_short __stdcall htons(u_short hostshort); // unsigned __int32 __stdcall inet_addr(const char *cp); // int __stdcall getsockopt(SOCKET s, int level, int optname, char *optval, int *optlen); // int __stdcall recv(SOCKET s, char *buf, int len, int flags); // int __stdcall WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData); // struct hostent *__stdcall gethostbyname(const char *name); // SOCKET __stdcall accept(SOCKET s, struct sockaddr *addr, int *addrlen); // int __stdcall send(SOCKET s, const char *buf, int len, int flags); // u_short __stdcall ntohs(u_short netshort); // char *__stdcall inet_ntoa(struct in_addr in); // SOCKET __stdcall socket(int af, int type, int protocol); // int __stdcall select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout); // BOOL __stdcall MakeSureDirectoryPathExists(PCSTR DirPath); // BOOL __stdcall SymInitialize(HANDLE hProcess, PCSTR UserSearchPath, BOOL fInvadeProcess); // DWORD __stdcall SymSetOptions(DWORD SymOptions); // DWORD __stdcall SymGetOptions(); // BOOL __stdcall SymCleanup(HANDLE hProcess); // BOOL __stdcall SymGetLineFromAddr64(HANDLE hProcess, DWORD64 qwAddr, PDWORD pdwDisplacement, PIMAGEHLP_LINE64 Line64); // BOOL __stdcall SymGetSymFromAddr64(HANDLE hProcess, DWORD64 qwAddr, PDWORD64 pdwDisplacement, PIMAGEHLP_SYMBOL64 Symbol); // BOOL __stdcall StackWalk64(DWORD MachineType, HANDLE hProcess, HANDLE hThread, LPSTACKFRAME64 StackFrame, PVOID ContextRecord, PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine, PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine, PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine, PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress); //----- (00401010) -------------------------------------------------------- int __thiscall sub_401010(void *this) { int v1; // esi@1 v1 = (int)this; sub_401000((char *)this + 2137932); sub_43DFB0(v1 + 2137880); sub_43EC90(v1 + 2137816); sub_43EC90(v1 + 2137752); sub_43EC90(v1 + 2137688); sub_43EC90(v1 + 2137608); sub_43EC90(v1 + 2137544); sub_43EC90(v1 + 2137480); sub_445030(v1 + 2136208); sub_43D110(v1 + 38968); sub_43C560(v1 + 1356); sub_445DE0(v1 + 1308); return sub_445030(v1); } // 401000: using guessed type int __thiscall sub_401000(_DWORD); //----- (00401140) -------------------------------------------------------- DWORD __thiscall sub_401140(int this) { const SYSTEMTIME *v1; // esi@1 struct _SYSTEMTIME SystemTime; // [sp+8h] [bp-318h]@1 CHAR Buffer; // [sp+18h] [bp-308h]@1 char v5; // [sp+11Ch] [bp-204h]@1 char v6; // [sp+19Ch] [bp-184h]@1 CHAR TimeStr; // [sp+21Ch] [bp-104h]@1 CHAR DateStr; // [sp+29Ch] [bp-84h]@1 unsigned int v9; // [sp+31Ch] [bp-4h]@1 int v10; // [sp+320h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v1 = (const SYSTEMTIME *)(this + 2139208); GetLocalTime((LPSYSTEMTIME)(this + 2139208)); GetDateFormatA(0, 0, v1, 0, &DateStr, 128); GetTimeFormatA(0, 0, v1, 0, &TimeStr, 128); sprintf(&v6, "%s %s", &DateStr, &TimeStr); GetSystemTime(&SystemTime); GetDateFormatA(0, 0, &SystemTime, 0, &DateStr, 128); GetTimeFormatA(0, 0, &SystemTime, 0, &TimeStr, 128); sprintf(&v5, "%s %s", &DateStr, &TimeStr); sub_446350(1, "Msg", "%s%s", "Local Time ", &v6); sub_446350(1, "Msg", "%s%s", "System Time(UTC) ", &v5); return GetCurrentDirectoryA(0x104u, &Buffer); } // 4DE38C: using guessed type int __security_cookie; //----- (00401280) -------------------------------------------------------- DWORD __thiscall sub_401280(int this) { const SYSTEMTIME *v1; // esi@1 struct _SYSTEMTIME SystemTime; // [sp+8h] [bp-318h]@1 CHAR Buffer; // [sp+18h] [bp-308h]@1 char v5; // [sp+11Ch] [bp-204h]@1 char v6; // [sp+19Ch] [bp-184h]@1 CHAR TimeStr; // [sp+21Ch] [bp-104h]@1 CHAR DateStr; // [sp+29Ch] [bp-84h]@1 unsigned int v9; // [sp+31Ch] [bp-4h]@1 int v10; // [sp+320h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v1 = (const SYSTEMTIME *)(this + 2139224); GetLocalTime((LPSYSTEMTIME)(this + 2139224)); GetDateFormatA(0, 0, v1, 0, &DateStr, 128); GetTimeFormatA(0, 0, v1, 0, &TimeStr, 128); sprintf(&v6, "%s %s", &DateStr, &TimeStr); GetSystemTime(&SystemTime); GetDateFormatA(0, 0, &SystemTime, 0, &DateStr, 128); GetTimeFormatA(0, 0, &SystemTime, 0, &TimeStr, 128); sprintf(&v5, "%s %s", &DateStr, &TimeStr); sub_446350(1, "Msg", "%s%s", "Local Time ", &v6); sub_446350(1, "Msg", "%s%s", "System Time(UTC) ", &v5); return GetCurrentDirectoryA(0x104u, &Buffer); } // 4DE38C: using guessed type int __security_cookie; //----- (004013C0) -------------------------------------------------------- signed int __thiscall sub_4013C0(int this) { int v1; // esi@1 int v2; // ST24_4@3 int v3; // ST20_4@3 char *v4; // eax@3 signed int result; // eax@4 char v6; // [sp+4h] [bp-128h]@3 char *v7; // [sp+18h] [bp-114h]@5 char v8; // [sp+28h] [bp-104h]@3 unsigned int v9; // [sp+128h] [bp-4h]@1 int v10; // [sp+12Ch] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v1 = this; if ( sub_43D510(this, "DataServerInfo_Character.txt") ) { sub_446350(1, "Msg", "%s%s", " ", "DataServerInfo_Character.txt"); sub_440DA0(v1); if ( sub_447E00(v1, v1 + 1272) ) { v2 = *(_DWORD *)(v1 + 1288); v3 = *(_DWORD *)(v1 + 1284); v4 = sub_440CF0(*(_DWORD *)(v1 + 1280)); sprintf(&v8, "", *(_DWORD *)(v1 + 1276), v4, v3, v2); sub_446350(1, "Msg", "%s", &v8); if ( sub_4480C0(v1, (int)&v6, *(_DWORD *)(v1 + 1280), *(_DWORD *)(v1 + 1284), *(_DWORD *)(v1 + 1288)) ) { strncpy((char *)(v1 + 1292), v7, 0x10u); *(_BYTE *)(v1 + 1307) = 0; result = 1; } else { sub_446350( 1, "Msg", "%s", "FATAL ERROR - Can't found ServerInfo on funcition 'DataServer::ReadDefineScriptor()', need check scriptor data."); result = 0; } } else { sub_446350(1, "Msg", "%s", "*FAILED GetMyServerInfo*"); result = 0; } } else { sub_446350(1, "Msg", "%s%s", "*FAILED SCRIPTOR READ* ", "DataServerInfo_Character.txt"); sub_440DA0(v1); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00401560) -------------------------------------------------------- signed int __thiscall sub_401560(void *this) { void *v1; // esi@1 int v3; // ebx@16 int v4; // edi@16 __int16 v5; // ax@27 unsigned int v6; // edx@32 int v7; // eax@33 int v8; // edi@35 int v9; // edi@42 unsigned int v10; // ebx@45 int v11; // edi@46 int v12; // [sp+4h] [bp-110h]@16 int v13; // [sp+8h] [bp-10Ch]@16 signed int v14; // [sp+8h] [bp-10Ch]@32 int v15; // [sp+Ch] [bp-108h]@16 unsigned int i; // [sp+Ch] [bp-108h]@32 unsigned int v17; // [sp+Ch] [bp-108h]@43 char v18; // [sp+10h] [bp-104h]@36 unsigned int v19; // [sp+110h] [bp-4h]@1 int v20; // [sp+114h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v1 = this; if ( !sub_448CE0(&unk_6EA3E8, "../../9Data/Shine/ItemInfo.shn") && !sub_448CE0(&unk_6EA3E8, "../9Data/Shine/ItemInfo.shn") ) { sub_446350(1, "Msg", "%s", "*FAILED GLOBAL GAME DATA READ - ItemInfo.shn"); return 0; } if ( !sub_43D510((int)((char *)v1 + 2136208), "../../9Data/Shine/DefaultCharacterData.txt") && !sub_43D510((int)((char *)v1 + 2136208), "../9Data/Shine/DefaultCharacterData.txt") ) { sub_446350(1, "Msg", "%s", "*FAILED GLOBAL GAME DATA READ - DefaultCharacterData.txt"); return 0; } if ( !sub_440660((char *)v1 + 2137480, "../../9Data/Shine/FaceInfo.shn", 1119, 58) && !sub_440660((char *)v1 + 2137480, "../9Data/Shine/FaceInfo.shn", 1119, 58) ) { sub_446350(1, "Msg", "%s", "*FAILED GLOBAL GAME DATA READ - FaceInfo.shn"); return 0; } if ( !sub_440660((char *)v1 + 2137544, "../../9Data/Shine/HairColorInfo.shn", 197, 62) && !sub_440660((char *)v1 + 2137544, "../9Data/Shine/HairColorInfo.shn", 197, 62) ) { sub_446350(1, "Msg", "%s", "*FAILED GLOBAL GAME DATA READ - HairColorInfo.shn"); return 0; } if ( !sub_440660((char *)v1 + 2137608, "../../9Data/Shine/HairInfo.shn", 14925, 488) && !sub_440660((char *)v1 + 2137608, "../9Data/Shine/HairInfo.shn", 14925, 488) ) { sub_446350(1, "Msg", "%s", "*FAILED GLOBAL GAME DATA READ - HairInfo.shn"); return 0; } *((_WORD *)v1 + 1068836) = sub_402CF0((int)&unk_6EA3E8, (unsigned __int8 *)"HairShop01"); *((_WORD *)v1 + 1068837) = sub_402CF0((int)&unk_6EA3E8, (unsigned __int8 *)"HairShop02"); *((_WORD *)v1 + 1068838) = sub_402CF0((int)&unk_6EA3E8, (unsigned __int8 *)"HairShop03"); *((_WORD *)v1 + 1068839) = sub_402CF0((int)&unk_6EA3E8, (unsigned __int8 *)"HairShop04"); *((_WORD *)v1 + 1068840) = sub_402CF0((int)&unk_6EA3E8, (unsigned __int8 *)"HairShop05"); *((_WORD *)v1 + 1068841) = sub_402CF0((int)&unk_6EA3E8, (unsigned __int8 *)"HairShop05"); v3 = *((_WORD *)v1 + 1068836) == -1; v13 = *((_WORD *)v1 + 1068837) == -1; v12 = *((_WORD *)v1 + 1068838) == -1; v15 = *((_WORD *)v1 + 1068839) == -1; v4 = *((_WORD *)v1 + 1068840) == -1; if ( *((_WORD *)v1 + 1068836) == -1 ) sub_446310("*Not found HAIRSHOP_ITEMGRADE_1, ItemIndex = HairShop01"); if ( v13 ) sub_446310("*Not found HAIRSHOP_ITEMGRADE_2, ItemIndex = HairShop02"); if ( v12 ) sub_446310("*Not found HAIRSHOP_ITEMGRADE_3, ItemIndex = HairShop03"); if ( v15 ) sub_446310("*Not found HAIRSHOP_ITEMGRADE_4, ItemIndex = HairShop04"); if ( v4 ) sub_446310("*Not found HAIRSHOP_ITEMGRADE_5, ItemIndex = HairShop05"); if ( v3 | v13 | v12 | v15 | v4 ) return 0; v5 = sub_402CF0((int)&unk_6EA3E8, (unsigned __int8 *)"UniChange01"); *((_WORD *)v1 + 1068842) = v5; if ( v5 == -1 ) { sub_446310("*Not found HAIRSHOP_ITEM_GENDER, ItemIndex = UniChange01"); return 0; } if ( !sub_440660((char *)v1 + 2137688, "../../9Data/Shine/HolyPromiseReward.shn", 673, 70) && !sub_440660((char *)v1 + 2137688, "../9Data/Shine/HolyPromiseReward.shn", 673, 70) ) { sub_446350(1, "Msg", "%s", "*FAILED GLOBAL GAME DATA READ - HolyPromiseReward.shn"); return 0; } v6 = 0; v14 = 0; for ( i = 0; ; v6 = i ) { v7 = *((_DWORD *)v1 + 534435); if ( !v7 ) break; if ( v6 >= *(_DWORD *)(v7 + 40) ) break; v8 = sub_43E7B0((int)((char *)v1 + 2137688), v6); if ( (unsigned __int16)sub_402CF0((int)&unk_6EA3E8, (unsigned __int8 *)(v8 + 2)) == -1 ) { v14 = 1; sprintf( &v18, "ERROR - HOLY_PROMISE_REWARD Unknowned Level=%3d, Class=%2d, item = '%s' ", *(_BYTE *)v8, *(_BYTE *)(v8 + 1), v8 + 2); sub_446350(1, "Msg", "%s", &v18); } ++i; } if ( v14 ) return 0; if ( !sub_440660((char *)v1 + 2137816, "../../9Data/Shine/AttendReward.shn", 152, 38) && !sub_440660((char *)v1 + 2137816, "../9Data/Shine/AttendReward.shn", 152, 38) ) { sub_446350(1, "Msg", "%s", "*FAILED GLOBAL GAME DATA READ - AttendReward.shn"); return 0; } v9 = *((_DWORD *)v1 + 534467); if ( v9 ) v17 = *(_DWORD *)(v9 + 40); else v17 = 0; v10 = 0; if ( !v17 ) { LABEL_48: if ( !sub_43D510((int)((char *)v1 + 2137932), "../../9Data/Shine/TutorialCharacterData.txt") && !sub_43D510((int)((char *)v1 + 2137932), "../9Data/Shine/TutorialCharacterData.txt") ) { sub_446350(1, "Msg", "%s", "*FAILED GLOBAL GAME DATA READ - TutorialCharacterData.txt"); return 0; } if ( *((_DWORD *)v1 + 320) != 2 || sub_4485A0(&unk_6E9EC8, "../../9Data/Shine/MapInfo.shn") || sub_4485A0(&unk_6E9EC8, "../9Data/Shine/MapInfo.shn") ) return 1; sub_446350(1, "Msg", "%s", "*FAILED GLOBAL GAME DATA READ - MapInfo.shn"); return 0; } while ( 1 ) { v11 = sub_43E7B0((int)((char *)v1 + 2137816), v10); if ( (unsigned __int16)sub_402CF0((int)&unk_6EA3E8, (unsigned __int8 *)(v11 + 6)) == -1 ) break; ++v10; if ( v10 >= v17 ) goto LABEL_48; } sprintf(&v18, "ERROR - AttendReward Invalid Item : RewardID(%d), Index(%s)", *(_BYTE *)v11, v11 + 6); sub_446350(1, "Msg", "%s", &v18); return 0; } // 4DE38C: using guessed type int __security_cookie; //----- (00401BC0) -------------------------------------------------------- signed int __thiscall sub_401BC0(int this) { int v1; // esi@1 signed int result; // eax@2 char *v3; // eax@4 char v4; // cl@5 signed int v5; // eax@7 int v6; // [sp+4h] [bp-28h]@1 char *cp; // [sp+18h] [bp-14h]@4 u_short hostshort[2]; // [sp+1Ch] [bp-10h]@7 int backlog; // [sp+20h] [bp-Ch]@7 int v10; // [sp+24h] [bp-8h]@3 v1 = this; if ( sub_4480C0(v1, (int)&v6, *(_DWORD *)(v1 + 1280), *(_DWORD *)(this + 1284), *(_DWORD *)(this + 1288)) ) { if ( sub_449990(v1 + 1356, v1 + 1308, v10, 0, 0) ) { sub_446350(1, "Msg", "%s%s", " ", v6); v3 = cp; do v4 = *v3++; while ( v4 ); if ( v3 == cp + 1 ) v5 = sub_4492D0((SOCKET *)(v1 + 1368), *(int *)hostshort, backlog); else v5 = sub_449230((SOCKET *)(v1 + 1368), cp, *(int *)hostshort, backlog); if ( v5 ) { result = 1; } else { sub_446350(1, "Msg", "%s", "*FAILED START LISTEN SOCKET* "); result = 0; } } else { sub_446350(1, "Msg", "%s%s", "*FAILED SESSION MANAGER INIT* ", v6); result = 0; } } else { sub_446350( 1, "Msg", "%s", "FATAL ERROR - Can't found ServerInfo on funcition 'DataServer::Start_Acceptor()', need check scriptor data."); result = 0; } return result; } //----- (00401CE0) -------------------------------------------------------- signed int __thiscall sub_401CE0(void *this) { void *v1; // edi@1 signed int result; // eax@2 int v3; // eax@3 const char *v4; // ebx@3 char v5; // cl@4 int v6; // esi@7 signed int v7; // edi@7 int v8; // eax@8 unsigned int v9; // [sp-4h] [bp-200h]@1 char v10; // [sp+Ch] [bp-1F0h]@1 int v11; // [sp+20h] [bp-1DCh]@3 int v12; // [sp+24h] [bp-1D8h]@7 void *v13; // [sp+34h] [bp-1C8h]@1 int v14; // [sp+38h] [bp-1C4h]@7 char v15; // [sp+3Ch] [bp-1C0h]@8 char v16; // [sp+ECh] [bp-110h]@12 unsigned int v17; // [sp+1ECh] [bp-10h]@1 int v18; // [sp+1F8h] [bp-4h]@7 int v19; // [sp+1FCh] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v9 = (unsigned int)&v19 ^ __security_cookie; v1 = this; v13 = this; if ( sub_4480C0((int)&unk_4DFA48, (int)&v10, 3, dword_4DFF4C, dword_4DFF50) ) { v3 = v11; v4 = (const char *)v11; do v5 = *(_BYTE *)v3++; while ( v5 ); if ( v3 == v11 + 1 ) v4 = sub_44A710(); v6 = v12; sub_44A050((int)&v14); v18 = 0; v7 = sub_44A1E0((SOCKET *)&v14, (const char *)v1 + 1292, 0, v4, v6); if ( v7 ) { v8 = sub_43C720((int)&unk_4DFF94, v14, (int)&v15); if ( v8 ) { *((_DWORD *)v13 + 534814) = *(_DWORD *)(v8 + 12); *(_BYTE *)(*(_DWORD *)(v8 + 12) + 220) = 2; *(_DWORD *)(*(_DWORD *)(v8 + 12) + 224) = 3; v14 = -1; dword_4D4000 = 1; } else { sub_449DA0((SOCKET *)&v14); v7 = 0; } } else { if ( dword_4D4000 ) { dword_4D4000 = 0; sprintf(&v16, "CONNECT TO GAMELOG SERVER TO %s:%d", v4, v6, v9); sub_446350(1, "Msg", "%s", &v16); } } v18 = -1; sub_44A150((SOCKET *)&v14); result = v7; } else { sub_446350(1, "Msg", "%s", &unk_4ABCE0); result = 0; } return result; } // 4D4000: using guessed type int dword_4D4000; // 4DE38C: using guessed type int __security_cookie; // 4DFF4C: using guessed type int dword_4DFF4C; // 4DFF50: using guessed type int dword_4DFF50; //----- (00401E90) -------------------------------------------------------- signed int __cdecl sub_401E90() { return 100; } //----- (00401EA0) -------------------------------------------------------- int __cdecl sub_401EA0() { int result; // eax@1 void *v1; // eax@2 void *v2; // eax@3 result = dword_4DF8E0; if ( !dword_4DF8E0 ) { v1 = (void *)operator new(0x44u); if ( v1 ) v2 = sub_44AA70(v1); else v2 = 0; dword_4DF8E0 = (int)v2; (**(void (***)(void))v2)(); result = dword_4DF8E0; } return result; } // 4DF8E0: using guessed type int dword_4DF8E0; //----- (00401F20) -------------------------------------------------------- int __thiscall sub_401F20(int this) { int v1; // esi@1 v1 = this; sub_43D500(this); sub_445B70(v1 + 1308); sub_43C9B0((void *)(v1 + 1356)); sub_43D0D0((void *)(v1 + 38968)); sub_43D500(v1 + 2136208); sub_43E740(v1 + 2137480); sub_43E740(v1 + 2137544); sub_43E740(v1 + 2137608); sub_43E740(v1 + 2137688); sub_43E740(v1 + 2137752); sub_43E740(v1 + 2137816); sub_43DFA0(v1 + 2137880); sub_43D500(v1 + 2137932); *(_DWORD *)(v1 + 1292) = 0; *(_DWORD *)(v1 + 1296) = 0; *(_DWORD *)(v1 + 1300) = 0; *(_DWORD *)(v1 + 1304) = 0; *(_DWORD *)(v1 + 2139204) = 0; *(_DWORD *)(v1 + 2139256) = 0; return v1; } //----- (00402040) -------------------------------------------------------- char __thiscall sub_402040(void *this, unsigned __int8 *a2) { void *v2; // ebx@1 signed int v3; // esi@1 unsigned __int8 *v4; // eax@1 void *v5; // edi@2 int v6; // eax@6 void *v7; // eax@7 void *v8; // ecx@9 void (__thiscall *v9)(_DWORD); // eax@9 void *v10; // edi@10 const char *v11; // eax@14 const char *v12; // edx@14 int v13; // esi@14 const char *v14; // edx@17 const CHAR *v15; // esi@24 char v17; // [sp-34h] [bp-4F0h]@14 int v18; // [sp-30h] [bp-4ECh]@14 int v19; // [sp-2Ch] [bp-4E8h]@14 int v20; // [sp-28h] [bp-4E4h]@14 char v21; // [sp-24h] [bp-4E0h]@14 int v22; // [sp-20h] [bp-4DCh]@14 int v23; // [sp-1Ch] [bp-4D8h]@14 int v24; // [sp-18h] [bp-4D4h]@14 char v25; // [sp-14h] [bp-4D0h]@14 int v26; // [sp-10h] [bp-4CCh]@14 int v27; // [sp-Ch] [bp-4C8h]@14 int v28; // [sp-8h] [bp-4C4h]@14 unsigned int v29; // [sp-4h] [bp-4C0h]@1 char *v30; // [sp+Ch] [bp-4B0h]@14 char v31; // [sp+10h] [bp-4ACh]@1 char *v32; // [sp+20h] [bp-49Ch]@14 LPCSTR lpText; // [sp+24h] [bp-498h]@21 int v34; // [sp+28h] [bp-494h]@21 int v35; // [sp+2Ch] [bp-490h]@21 int v36; // [sp+30h] [bp-48Ch]@21 int v37; // [sp+34h] [bp-488h]@21 int v38; // [sp+38h] [bp-484h]@21 char v39; // [sp+3Ch] [bp-480h]@1 int v40; // [sp+4Ch] [bp-470h]@6 char *v41; // [sp+50h] [bp-46Ch]@14 char v42; // [sp+54h] [bp-468h]@1 CHAR Filename; // [sp+A4h] [bp-418h]@10 unsigned __int8 v44[4]; // [sp+4A4h] [bp-18h]@1 char v45; // [sp+4A8h] [bp-14h]@1 unsigned int v46; // [sp+4ACh] [bp-10h]@1 int v47; // [sp+4B8h] [bp-4h]@1 int v48; // [sp+4BCh] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v29 = (unsigned int)&v48 ^ __security_cookie; v2 = this; sub_44AF10((int)&v39, "UPLOAD"); v3 = 0; v47 = 0; sub_44AF10((int)&v31, "REMOVE"); LOBYTE(v47) = 1; _eh_vector_constructor_iterator_(&v42, 0x10u, 5, (int)sub_44AE80, type_info::_type_info); LOBYTE(v47) = 2; *(_DWORD *)v44 = dword_4ABDC4; v45 = byte_4ABDC8; v4 = _mbstok(a2, v44); if ( v4 ) { v5 = &v42; do { if ( v3 >= 5 ) break; sub_44ADE0(v5, (const char *)v4); ++v3; v5 = (char *)v5 + 16; v4 = _mbstok(0, v44); } while ( v4 ); } if ( !dword_4DF8E0 ) { v6 = operator new(0x44u); v40 = v6; LOBYTE(v47) = 3; if ( v6 ) v7 = sub_44AA70((void *)v6); else v7 = 0; dword_4DF8E0 = (int)v7; v8 = v7; v9 = (void (__thiscall *)(_DWORD))**(_DWORD **)v7; LOBYTE(v47) = 2; v9(v8); } v10 = (void *)dword_4DF8E0; GetModuleFileNameA(0, &Filename, 0x400u); if ( v3 < 1 ) { if ( sub_44A9C0(v10, (int)&v40, 0, *((LPCSTR *)v2 + 318)) ) { v13 = 0; goto LABEL_19; } sub_44AF40(&v42, (int)&v39); } sub_44ADD0((int)&v42); if ( sub_44AF60((int)&v42, (int)&v39) ) { v30 = &v25; sub_44AF10((int)&v25, &Filename); v11 = (const char *)*((_DWORD *)v2 + 319); v32 = &v21; LOBYTE(v47) = 4; sub_44AF10((int)&v21, v11); v12 = (const char *)*((_DWORD *)v2 + 318); v41 = &v17; LOBYTE(v47) = 5; sub_44AF10((int)&v17, v12); LOBYTE(v47) = 2; v13 = (sub_44A780(v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) == 0) + 1; } else { if ( sub_44AF60((int)&v42, (int)&v31) ) { v14 = (const char *)*((_DWORD *)v2 + 318); v41 = &v25; sub_44AF10((int)&v25, v14); v13 = (sub_44A880(v25, v26, v27, v28) == 0) + 3; } else { v13 = 5; } } LABEL_19: if ( dword_4DF8E0 ) (*(void (__stdcall **)(signed int))(*(_DWORD *)dword_4DF8E0 + 4))(1); dword_4DF8E0 = 0; lpText = "Service start(no parameter)"; v34 = (int)"Service upload only ok."; v35 = (int)"Service upload failed."; v36 = (int)"Service remove ok."; v37 = (int)"Service remove failed."; v38 = (int)"Service unknown command."; if ( v13 ) { if ( v13 > 0 && v13 <= 5 ) { v15 = (&lpText)[4 * v13]; v28 = (int)v15; sub_446350(1, "Msg", "%s", v15); MessageBoxA(0, v15, *((LPCSTR *)v2 + 319), 0); LOBYTE(v47) = 1; _LN21(&v42, 0x10u, 5, type_info::_type_info); LOBYTE(v47) = 0; type_info::_type_info(&v31); v47 = -1; type_info::_type_info(&v39); return 0; } } else { v28 = (int)"Service start(no parameter)"; sub_446350(1, "Msg", "%s", "Service start(no parameter)"); } LOBYTE(v47) = 1; _LN21(&v42, 0x10u, 5, type_info::_type_info); LOBYTE(v47) = 0; type_info::_type_info(&v31); v47 = -1; type_info::_type_info(&v39); return 1; } // 4ABDC4: using guessed type int dword_4ABDC4; // 4ABDC8: using guessed type char byte_4ABDC8; // 4DE38C: using guessed type int __security_cookie; // 4DF8E0: using guessed type int dword_4DF8E0; //----- (00402570) -------------------------------------------------------- signed int __thiscall sub_402570(void *this, unsigned __int8 *a2) { int v2; // esi@1 CHAR *v3; // eax@1 char v4; // cl@2 int i; // eax@3 signed int result; // eax@7 const char *v7; // eax@12 int v8; // eax@13 void *v9; // eax@14 void *v10; // ecx@16 void (__thiscall *v11)(_DWORD); // eax@16 char v12; // [sp-1Ch] [bp-43Ch]@12 int v13; // [sp-18h] [bp-438h]@17 int v14; // [sp-14h] [bp-434h]@17 int v15; // [sp-10h] [bp-430h]@17 int v16; // [sp-Ch] [bp-42Ch]@6 CHAR *v17; // [sp-8h] [bp-428h]@6 unsigned int v18; // [sp-4h] [bp-424h]@1 char *v19; // [sp+8h] [bp-418h]@12 int v20; // [sp+Ch] [bp-414h]@13 CHAR Filename[1024]; // [sp+10h] [bp-410h]@1 _BYTE v22[3]; // [sp+11h] [bp-40Fh]@3 unsigned int v23; // [sp+410h] [bp-10h]@1 int v24; // [sp+41Ch] [bp-4h]@12 int v25; // [sp+420h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v18 = (unsigned int)&v25 ^ __security_cookie; v2 = (int)this; GetModuleFileNameA(0, Filename, 0x400u); v3 = Filename; do v4 = *v3++; while ( v4 ); for ( i = v3 - v22 - 1; i >= 0; --i ) { if ( Filename[i] == 92 ) break; } v17 = Filename; Filename[i] = 0; _chdir(v17); v16 = (int)Filename; sub_446350(1, "Msg", "%s", Filename); sub_446290("US - 2015³â 08¿"); sub_446350(1, "Msg", "%s", "-------------------------------------------------------"); sub_446350(1, "Msg", "%s", "Launching the server....."); sub_401140(v2); if ( sub_4013C0(v2) ) { if ( sub_401560((void *)v2) ) { if ( sub_402040((void *)v2, a2) ) { v7 = *(const char **)(v2 + 1272); v17 = (CHAR *)sub_4029B0; v16 = (int)sub_4029A0; v19 = &v12; sub_44AF10((int)&v12, v7); v24 = 0; if ( !dword_4DF8E0 ) { v8 = operator new(0x44u); v20 = v8; LOBYTE(v24) = 1; if ( v8 ) v9 = sub_44AA70((void *)v8); else v9 = 0; dword_4DF8E0 = (int)v9; v10 = v9; v11 = (void (__thiscall *)(_DWORD))**(_DWORD **)v9; LOBYTE(v24) = 0; v11(v10); } v24 = -1; sub_44ACE0((void *)dword_4DF8E0, v12, v13, v14, v15, v16, (int)v17); result = 0; } else { result = -2; } } else { result = -4; } } else { result = -1; } return result; } // 4029A0: using guessed type int sub_4029A0(); // 4029B0: using guessed type int sub_4029B0(); // 4DE38C: using guessed type int __security_cookie; // 4DF8E0: using guessed type int dword_4DF8E0; // 402570: using guessed type CHAR Filename[1024]; //----- (00402720) -------------------------------------------------------- char __thiscall sub_402720(LPVOID lpParameter) { LPVOID v1; // esi@1 HANDLE v2; // eax@1 char result; // al@4 int v4; // eax@5 v1 = lpParameter; *((_DWORD *)lpParameter + 534810) = 0; *((_DWORD *)lpParameter + 534811) = 0; v2 = CreateThread(0, 0, loc_4023C0, lpParameter, 0, (LPDWORD)lpParameter + 534813); *((_DWORD *)v1 + 534812) = v2; if ( v2 ) { while ( *((_DWORD *)v1 + 534811) != 1 ) Sleep(5u); result = 1; } else { v4 = sub_445EF0(0, 1); sub_446350(1, "Msg", "%s%s", "*FAILED CREATE MAIN THREAD* ", v4); result = 0; } return result; } //----- (00402930) -------------------------------------------------------- int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { int v4; // esi@1 char v6; // [sp+7h] [bp-105h]@1 char v7; // [sp+8h] [bp-104h]@1 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; sub_44B490(&v6); v4 = sub_402570(&unk_4DFA48, (unsigned __int8 *)lpCmdLine); sprintf(&v7, "< END OF MAIN = %d >", v4); sub_446350(1, "Msg", "%s", &v7); return v4; } // 4DE38C: using guessed type int __security_cookie; //----- (004029C0) -------------------------------------------------------- char *__thiscall sub_4029C0(char *this, const char *a2) { *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; return strncpy(this, a2, 0xCu); } //----- (004029E0) -------------------------------------------------------- char *__thiscall sub_4029E0(char *this, const char *a2) { *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; return strncpy(this, a2, 0x10u); } //----- (00402A10) -------------------------------------------------------- int __thiscall sub_402A10(int this, int a2) { int result; // eax@1 *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 28); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); *(_DWORD *)(this + 36) = *(_DWORD *)(a2 + 36); *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); *(_DWORD *)(this + 48) = *(_DWORD *)(a2 + 48); *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); *(_DWORD *)(this + 64) = *(_DWORD *)(a2 + 64); *(_DWORD *)(this + 68) = *(_DWORD *)(a2 + 68); *(_DWORD *)(this + 72) = *(_DWORD *)(a2 + 72); *(_DWORD *)(this + 76) = *(_DWORD *)(a2 + 76); *(_DWORD *)(this + 80) = *(_DWORD *)(a2 + 80); *(_DWORD *)(this + 84) = *(_DWORD *)(a2 + 84); *(_DWORD *)(this + 88) = *(_DWORD *)(a2 + 88); *(_DWORD *)(this + 92) = *(_DWORD *)(a2 + 92); *(_DWORD *)(this + 96) = *(_DWORD *)(a2 + 96); *(_DWORD *)(this + 100) = *(_DWORD *)(a2 + 100); *(_DWORD *)(this + 104) = *(_DWORD *)(a2 + 104); *(_DWORD *)(this + 108) = *(_DWORD *)(a2 + 108); *(_DWORD *)(this + 112) = *(_DWORD *)(a2 + 112); *(_DWORD *)(this + 116) = *(_DWORD *)(a2 + 116); *(_DWORD *)(this + 120) = *(_DWORD *)(a2 + 120); *(_DWORD *)(this + 124) = *(_DWORD *)(a2 + 124); *(_DWORD *)(this + 128) = *(_DWORD *)(a2 + 128); *(_DWORD *)(this + 132) = *(_DWORD *)(a2 + 132); *(_DWORD *)(this + 136) = *(_DWORD *)(a2 + 136); *(_DWORD *)(this + 140) = *(_DWORD *)(a2 + 140); *(_DWORD *)(this + 144) = *(_DWORD *)(a2 + 144); *(_DWORD *)(this + 148) = *(_DWORD *)(a2 + 148); *(_DWORD *)(this + 152) = *(_DWORD *)(a2 + 152); *(_DWORD *)(this + 156) = *(_DWORD *)(a2 + 156); *(_DWORD *)(this + 160) = *(_DWORD *)(a2 + 160); *(_DWORD *)(this + 164) = *(_DWORD *)(a2 + 164); *(_DWORD *)(this + 168) = *(_DWORD *)(a2 + 168); *(_DWORD *)(this + 172) = *(_DWORD *)(a2 + 172); *(_DWORD *)(this + 176) = *(_DWORD *)(a2 + 176); *(_DWORD *)(this + 180) = *(_DWORD *)(a2 + 180); *(_DWORD *)(this + 184) = *(_DWORD *)(a2 + 184); *(_DWORD *)(this + 188) = *(_DWORD *)(a2 + 188); *(_DWORD *)(this + 192) = *(_DWORD *)(a2 + 192); *(_DWORD *)(this + 196) = *(_DWORD *)(a2 + 196); *(_DWORD *)(this + 200) = *(_DWORD *)(a2 + 200); *(_DWORD *)(this + 204) = *(_DWORD *)(a2 + 204); *(_DWORD *)(this + 208) = *(_DWORD *)(a2 + 208); *(_DWORD *)(this + 212) = *(_DWORD *)(a2 + 212); *(_DWORD *)(this + 216) = *(_DWORD *)(a2 + 216); *(_DWORD *)(this + 220) = *(_DWORD *)(a2 + 220); *(_DWORD *)(this + 224) = *(_DWORD *)(a2 + 224); *(_DWORD *)(this + 228) = *(_DWORD *)(a2 + 228); *(_DWORD *)(this + 232) = *(_DWORD *)(a2 + 232); *(_DWORD *)(this + 236) = *(_DWORD *)(a2 + 236); *(_DWORD *)(this + 240) = *(_DWORD *)(a2 + 240); *(_DWORD *)(this + 244) = *(_DWORD *)(a2 + 244); *(_DWORD *)(this + 248) = *(_DWORD *)(a2 + 248); result = *(_DWORD *)(a2 + 252); *(_DWORD *)(this + 252) = result; return result; } //----- (00402C60) -------------------------------------------------------- bool __thiscall sub_402C60(int this, char rgbValue, char a3, int a4) { return sub_457DC0(this, rgbValue, a3, a4); } //----- (00402C80) -------------------------------------------------------- bool __thiscall sub_402C80(int this, char rgbValue, char a3, char a4, int a5) { return sub_458050(this, rgbValue, a3, a4, a5); } //----- (00402CB0) -------------------------------------------------------- __int16 __thiscall sub_402CB0(int this, int rgbValue, int a3, unsigned __int16 a4, int a5) { return sub_468E40(this, rgbValue, a3, a4, a5); } //----- (00402CD0) -------------------------------------------------------- __int16 __thiscall sub_402CD0(int this, int rgbValue, int a3, unsigned __int16 a4, int a5) { return sub_46A1C0(this, rgbValue, a3, a4, a5); } //----- (00402CF0) -------------------------------------------------------- signed int __thiscall sub_402CF0(int this, unsigned __int8 *a2) { signed int result; // eax@1 result = sub_44B780((void *)(this + 8), a2); if ( result == -1 ) result = 65535; else result = (unsigned __int16)result; return result; } //----- (00402D20) -------------------------------------------------------- int __thiscall sub_402D20(int this, unsigned __int16 a2) { int v2; // edi@2 int v3; // ecx@4 if ( (unsigned int)a2 >= *(_DWORD *)(this + 4) || (v2 = *(_DWORD *)(this + 2292) + 40 * a2) == 0 || !*(_DWORD *)v2 ) return 0; v3 = **(_WORD **)v2; if ( (_WORD)v3 != a2 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v3 + 10000 * a2); return 0; } return v2; } //----- (00402D80) -------------------------------------------------------- signed int __stdcall sub_402D80(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // eax@3 char v4; // [sp+4h] [bp-104h]@2 unsigned int v5; // [sp+104h] [bp-4h]@1 int v6; // [sp+108h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v1 = sub_43C5E0((int)&unk_4DFF94, 5, 0); if ( v1 ) { v3 = *(_DWORD *)(v1 + 12); if ( v3 ) { result = sub_43BFB0(v3, a1); } else { sprintf(&v4, " CPFsCharacter::WorldManager_SendPacket - Á¢¼ÓµÈ ¿"); sub_446350(1, "Msg", "%s", &v4); result = 0; } } else { sprintf(&v4, " CPFsCharacter::WorldManager_SendPacket - Á¢¼ÓµÈ ¿"); sub_446350(1, "Msg", "%s", &v4); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00402E50) -------------------------------------------------------- signed int __thiscall sub_402E50(void *this, int a2, int a3, int a4) { int v4; // eax@1 int v5; // ebx@1 int v6; // esi@2 __int16 v7; // ax@3 int v8; // ecx@3 __int16 v9; // di@3 int v10; // eax@3 int v11; // eax@4 int v12; // eax@4 signed int result; // eax@6 void *v14; // [sp+Ch] [bp-88h]@1 int v15; // [sp+1Ch] [bp-78h]@1 int v16; // [sp+20h] [bp-74h]@3 int v17; // [sp+24h] [bp-70h]@3 __int16 v18; // [sp+28h] [bp-6Ch]@3 char v19; // [sp+2Ah] [bp-6Ah]@3 unsigned int v20; // [sp+90h] [bp-4h]@1 int v21; // [sp+94h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v4 = a3; v14 = this; *(_BYTE *)(a3 + 2) = *(_BYTE *)a2; v5 = a3 + 3; v15 = 0; if ( *(_DWORD *)a2 <= 0 ) { LABEL_6: *(_DWORD *)a4 = v5 - v4; result = 1; } else { v6 = a2 + 16; while ( 1 ) { v7 = *(_WORD *)(v5 + 1) & 0x3FF | (*(_BYTE *)(v6 + 2) << 10); *(_WORD *)(v5 + 1) = v7; *(_WORD *)(v5 + 1) = v7 ^ (v7 ^ *(_WORD *)v6) & 0x3FF; v8 = *(_DWORD *)(v6 - 8); v9 = *(_WORD *)(v6 + 4); v17 = *(_DWORD *)(v6 - 4); v10 = *(_DWORD *)v14 + 4684; v16 = v8; v18 = v9; if ( !sub_4669C0((void *)(v10 + 36), v10, v8, v17, &v19) ) break; v11 = (int)sub_44BD50(dword_6EC2C8, v9); v12 = sub_44BCD0((int)&v16, v11, v9, v5 + 3); *(_BYTE *)v5 = v12 - (_BYTE)v5 - 1; v5 = v12; v6 += 40; ++v15; if ( v15 >= *(_DWORD *)a2 ) { v4 = a3; goto LABEL_6; } } result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00402F80) -------------------------------------------------------- signed int __thiscall sub_402F80(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-168Ch]@1 unsigned int v7; // [sp+1694h] [bp-4h]@1 int v8; // [sp+1698h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_4689A0(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403000) -------------------------------------------------------- signed int __thiscall sub_403000(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-4BCh]@1 unsigned int v7; // [sp+4C4h] [bp-4h]@1 int v8; // [sp+4C8h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_4689D0(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403080) -------------------------------------------------------- signed int __thiscall sub_403080(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-D4h]@1 unsigned int v7; // [sp+DCh] [bp-4h]@1 int v8; // [sp+E0h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_4689F0(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403100) -------------------------------------------------------- signed int __thiscall sub_403100(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-5A0Ch]@1 unsigned int v7; // [sp+5A14h] [bp-4h]@1 int v8; // [sp+5A18h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468A10(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403180) -------------------------------------------------------- signed int __thiscall sub_403180(void *this, char rgbValue, int a3, int a4, int a5, int a6) { void *v6; // esi@1 signed int result; // eax@1 int v8; // [sp+Ch] [bp-5A0Ch]@1 unsigned int v9; // [sp+5A14h] [bp-4h]@1 int v10; // [sp+5A18h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v6 = this; result = sub_468A40(*(_DWORD *)this + 4684, rgbValue, (int)&v8, a5, a6); if ( result ) result = sub_402E50(v6, (int)&v8, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403200) -------------------------------------------------------- signed int __thiscall sub_403200(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-69Ch]@1 unsigned int v7; // [sp+6A4h] [bp-4h]@1 int v8; // [sp+6A8h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468A70(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403280) -------------------------------------------------------- signed int __thiscall sub_403280(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-5ACh]@1 unsigned int v7; // [sp+5B4h] [bp-4h]@1 int v8; // [sp+5B8h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468A90(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403300) -------------------------------------------------------- signed int __thiscall sub_403300(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-A00Ch]@1 unsigned int v7; // [sp+A014h] [bp-4h]@1 int v8; // [sp+A018h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468AB0(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403380) -------------------------------------------------------- signed int __thiscall sub_403380(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-C8Ch]@1 unsigned int v7; // [sp+C94h] [bp-4h]@1 int v8; // [sp+C98h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468AE0(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403400) -------------------------------------------------------- signed int __thiscall sub_403400(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-FACh]@1 unsigned int v7; // [sp+FB4h] [bp-4h]@1 int v8; // [sp+FB8h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468B00(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403480) -------------------------------------------------------- signed int __thiscall sub_403480(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-584h]@1 unsigned int v7; // [sp+58Ch] [bp-4h]@1 int v8; // [sp+590h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468B20(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403500) -------------------------------------------------------- signed int __thiscall sub_403500(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-F5Ch]@1 unsigned int v7; // [sp+F64h] [bp-4h]@1 int v8; // [sp+F68h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468B40(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403580) -------------------------------------------------------- signed int __thiscall sub_403580(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-F5Ch]@1 unsigned int v7; // [sp+F64h] [bp-4h]@1 int v8; // [sp+F68h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468B60(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403600) -------------------------------------------------------- signed int __thiscall sub_403600(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-F5Ch]@1 unsigned int v7; // [sp+F64h] [bp-4h]@1 int v8; // [sp+F68h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468B80(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403680) -------------------------------------------------------- signed int __thiscall sub_403680(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-F5Ch]@1 unsigned int v7; // [sp+F64h] [bp-4h]@1 int v8; // [sp+F68h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468BA0(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403700) -------------------------------------------------------- signed int __thiscall sub_403700(void *this, char rgbValue, int a3, int a4) { void *v4; // esi@1 signed int result; // eax@1 int v6; // [sp+Ch] [bp-69Ch]@1 unsigned int v7; // [sp+6A4h] [bp-4h]@1 int v8; // [sp+6A8h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; result = sub_468BC0(*(_DWORD *)this + 4684, rgbValue, (int)&v6); if ( result ) result = sub_402E50(v4, (int)&v6, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403780) -------------------------------------------------------- signed int __thiscall sub_403780(void *this, char rgbValue, int a3, int a4, int a5, int a6) { void *v6; // esi@1 signed int result; // eax@1 int v8; // [sp+Ch] [bp-A00Ch]@1 unsigned int v9; // [sp+A014h] [bp-4h]@1 int v10; // [sp+A018h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v6 = this; result = sub_468BE0(*(_DWORD *)this + 4684, rgbValue, (int)&v8, a5, a6); if ( result ) result = sub_402E50(v6, (int)&v8, a3, a4); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00403800) -------------------------------------------------------- signed int __thiscall sub_403800(void *this, int rgbValue, int a3, char a4, int a5) { int v5; // eax@1 signed int result; // eax@2 int v7; // [sp+4h] [bp-10Ch]@1 int v8; // [sp+8h] [bp-108h]@1 char v9; // [sp+Ch] [bp-104h]@2 unsigned int v10; // [sp+10Ch] [bp-4h]@1 int v11; // [sp+110h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v7 = 0; v8 = 0; LOWORD(v5) = sub_466990(*(_DWORD *)this + 4684, rgbValue, a3, a4, &v7); if ( v5 ) { sprintf(&v9, "ERROR - GetItem_Option : GetItemOption Error ItemKey[%I64d]", rgbValue, a3); sub_446350(1, "Msg", "%s", &v9); result = 0; } else { *(_DWORD *)a5 = v7; result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004038C0) -------------------------------------------------------- signed int __stdcall sub_4038C0(unsigned __int16 a1, int a2, int a3, int a4) { int v4; // esi@2 int v5; // ecx@4 signed int result; // eax@6 int v7; // esi@7 *(_DWORD *)a3 = 0; *(_DWORD *)a4 = 65534; if ( a1 >= (unsigned int)dword_6EA3EC || (v4 = dword_6EACDC + 40 * a1) == 0 || !*(_DWORD *)v4 ) return 0; v5 = **(_WORD **)v4; if ( (_WORD)v5 != a1 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v5 + 10000 * a1); return 0; } v7 = *(_DWORD *)v4; if ( !v7 ) return 0; switch ( *(_DWORD *)(v7 + 102) ) { default: return 0; case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: if ( a2 ) *(_DWORD *)a3 = *(_BYTE *)a2; *(_DWORD *)a4 = 1; result = 1; break; case 1: case 0x15: if ( a2 ) *(_DWORD *)a3 = *(_WORD *)a2; *(_DWORD *)a4 = 2; result = 1; break; case 2: if ( a2 ) *(_DWORD *)a3 = *(_DWORD *)a2; *(_DWORD *)a4 = 3; result = 1; break; case 0x18: if ( a2 ) *(_DWORD *)a3 = *(_DWORD *)a2; *(_DWORD *)a4 = 4; result = 1; break; case 3: if ( a2 ) *(_DWORD *)a3 = *(_WORD *)a2; *(_DWORD *)a4 = 300; result = 1; break; case 0x22: if ( a2 ) *(_DWORD *)a3 = *(_BYTE *)a2; *(_DWORD *)a4 = 2000; result = 1; break; case 0x21: if ( a2 ) *(_DWORD *)a3 = *(_BYTE *)a2; *(_DWORD *)a4 = 2500; result = 1; break; case 0x23: if ( a2 ) *(_DWORD *)a3 = *(_WORD *)a2; *(_DWORD *)a4 = 2600; result = 1; break; } return result; } // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (00403AA0) -------------------------------------------------------- signed int __stdcall sub_403AA0(unsigned __int16 a1, int a2) { int v2; // esi@2 int v3; // ecx@4 signed int result; // eax@6 int v5; // esi@7 *(_DWORD *)a2 = 65534; if ( a1 >= (unsigned int)dword_6EA3EC || (v2 = dword_6EACDC + 40 * a1) == 0 || !*(_DWORD *)v2 ) return 0; v3 = **(_WORD **)v2; if ( (_WORD)v3 != a1 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v3 + 10000 * a1); return 0; } v5 = *(_DWORD *)v2; if ( !v5 ) return 0; switch ( *(_DWORD *)(v5 + 102) ) { default: return 0; case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: *(_DWORD *)a2 = 1; result = 1; break; case 1: case 0x15: *(_DWORD *)a2 = 2; result = 1; break; case 2: *(_DWORD *)a2 = 3; result = 1; break; case 0x18: *(_DWORD *)a2 = 4; result = 1; break; case 3: *(_DWORD *)a2 = 300; result = 1; break; case 0x22: *(_DWORD *)a2 = 2000; result = 1; break; case 0x21: *(_DWORD *)a2 = 2500; result = 1; break; case 0x23: *(_DWORD *)a2 = 2600; result = 1; break; } return result; } // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (00403C00) -------------------------------------------------------- signed int __stdcall sub_403C00(unsigned __int16 a1, int a2, int a3) { int v3; // eax@2 int v4; // eax@3 signed int result; // eax@5 if ( a2 && (v3 = sub_402D20((int)&unk_6EA3E8, a1)) != 0 && (v4 = *(_DWORD *)v3) != 0 ) { switch ( *(_DWORD *)(v4 + 102) ) { case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: case 0x21: *(_BYTE *)a2 = a3; result = 1; break; case 1: case 3: case 0x15: case 0x23: *(_WORD *)a2 = a3; result = 1; break; case 2: *(_DWORD *)a2 = a3; result = 1; break; case 0x18: *(_DWORD *)a2 = a3; result = 1; break; case 0x22: *(_BYTE *)a2 = a3; result = 1; break; default: goto LABEL_10; } } else { LABEL_10: result = 0; } return result; } //----- (00403CD0) -------------------------------------------------------- signed int __stdcall sub_403CD0(unsigned __int16 a1, int a2, int a3, int a4) { int v4; // esi@2 int v5; // ecx@4 signed int result; // eax@6 int v7; // esi@7 if ( a1 >= (unsigned int)dword_6EA3EC || (v4 = dword_6EACDC + 40 * a1) == 0 || !*(_DWORD *)v4 ) return 0; v5 = **(_WORD **)v4; if ( (_WORD)v5 != a1 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v5 + 10000 * a1); return 0; } v7 = *(_DWORD *)v4; if ( !v7 ) return 0; switch ( *(_DWORD *)(v7 + 102) ) { case 4: *(_WORD *)a2 = 418; *(_WORD *)a3 = 420; *(_WORD *)a4 = 419; result = 1; break; case 5: *(_WORD *)a2 = 500; *(_WORD *)a3 = 502; *(_WORD *)a4 = 501; result = 1; break; case 6: *(_WORD *)a2 = 600; *(_WORD *)a3 = 602; *(_WORD *)a4 = 601; result = 1; break; case 7: *(_WORD *)a2 = 700; *(_WORD *)a3 = 702; *(_WORD *)a4 = 701; result = 1; break; case 8: *(_WORD *)a2 = 800; *(_WORD *)a3 = 802; *(_WORD *)a4 = 802; result = 1; break; default: return 0; } return result; } // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (00403E30) -------------------------------------------------------- signed int __thiscall sub_403E30(void *this, int a2, int a3, unsigned __int16 a4, int a5, int a6) { void *v6; // ebx@1 int v7; // edx@2 int v8; // esi@4 int v9; // eax@6 int v10; // esi@7 int v11; // eax@9 int v12; // eax@11 int v13; // ebx@13 int v15; // esi@17 int v16; // edx@18 int v17; // ecx@18 int v18; // eax@18 int i; // esi@22 int v20; // eax@23 int v21; // eax@23 int v22; // [sp+Ch] [bp-18Ch]@8 int v23[25]; // [sp+10h] [bp-188h]@11 int rgbValue; // [sp+74h] [bp-124h]@11 int v25; // [sp+78h] [bp-120h]@11 int v26; // [sp+7Ch] [bp-11Ch]@11 char v27; // [sp+80h] [bp-118h]@11 __int16 v28; // [sp+82h] [bp-116h]@11 int v29; // [sp+84h] [bp-114h]@13 int v30; // [sp+88h] [bp-110h]@13 int v31; // [sp+8Ch] [bp-10Ch]@13 char v32; // [sp+90h] [bp-108h]@13 __int16 v33; // [sp+92h] [bp-106h]@13 char v34; // [sp+94h] [bp-104h]@14 unsigned int v35; // [sp+194h] [bp-4h]@1 int v36; // [sp+198h] [bp+0h]@1 v35 = (unsigned int)&v36 ^ __security_cookie; v6 = this; if ( a4 < (unsigned int)dword_6EA3EC ) { v7 = dword_6EACDC + 40 * a4; if ( v7 ) { if ( *(_DWORD *)v7 ) { v8 = **(_WORD **)v7; if ( (_WORD)v8 == a4 ) { v9 = dword_6EACDC + 40 * a4; goto LABEL_7; } sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v8 + 10000 * a4); } } } v9 = 0; LABEL_7: v10 = *(_DWORD *)v9; if ( !*(_DWORD *)v9 || !sub_4669C0((void *)(*(_DWORD *)v6 + 4720), *(_DWORD *)v6 + 4684, a2, a3, &v22) ) return 0; v11 = *(_DWORD *)(v10 + 102); if ( v11 == 15 ) { v15 = 0; if ( !(v22 & 0xF) ) return 1; while ( 1 ) { v16 = *(int *)((char *)&v23[2 * v15] + 1); v17 = *(int *)((char *)&v22 + 8 * v15 + 1); v26 = a6; v28 = 0; v18 = *(_DWORD *)v6; rgbValue = v17; v25 = v16; v27 = 10; if ( sub_460BC0(v18 + 4684, v17, v16, a5) ) break; if ( !sub_460890(*(_DWORD *)v6 + 4684, &rgbValue, 1) ) { for ( i = v15 - 1; i >= 0; --i ) { v20 = *(int *)((char *)&v22 + 8 * i + 1); v30 = *(int *)((char *)&v23[2 * i] + 1); v29 = v20; v21 = *(_DWORD *)v6; v33 = 0; v31 = a5; v32 = 10; if ( !sub_460890(v21 + 4684, &v29, 1) ) { sprintf(&v34, "¿À·", a5, v29, v30, a6); sub_446350(1, "Msg", "%s", &v34); } } return 0; } ++v15; if ( v15 >= (v22 & 0xF) ) return 1; } return 0; } if ( v11 != 29 ) return 1; v28 = 0; v12 = *(_DWORD *)v6; rgbValue = v22; v25 = v23[0]; v26 = a6; v27 = 10; if ( sub_460BC0(v12 + 4684, v22, v23[0], a5) ) return 0; if ( sub_460890(*(_DWORD *)v6 + 4684, &rgbValue, 1) ) return 1; v13 = *(_DWORD *)v6; v29 = v22; v30 = v23[0]; v33 = 0; v31 = a5; v32 = 10; if ( !sub_460890(v13 + 4684, &v29, 1) ) { sprintf(&v34, "¿À·", a5, v29, v30, a6); sub_446350(1, "Msg", "%s", &v34); } return 0; } // 4DE38C: using guessed type int __security_cookie; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; // 403E30: using guessed type int var_188[25]; //----- (00404170) -------------------------------------------------------- int __cdecl sub_404170(char a1, char a2) { struct _SYSTEMTIME SystemTime; // [sp+4h] [bp-14h]@1 unsigned int v4; // [sp+14h] [bp-4h]@1 int v5; // [sp+18h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; *(_DWORD *)&SystemTime.wHour = 0; GetLocalTime(&SystemTime); return ((a1 & 0xF | 16 * (a2 & 0x1F | 32 * (unsigned __int8)word_6EAD30++)) << 9) & 0x3FFFFFF | (SystemTime.wSecond << 26); } // 4DE38C: using guessed type int __security_cookie; // 6EAD30: using guessed type __int16 word_6EAD30; //----- (00404220) -------------------------------------------------------- int __thiscall sub_404220(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char v4; // dl@1 int v5; // ecx@1 int v6; // ecx@1 int v7; // eax@1 unsigned __int8 v8; // dl@1 int v9; // eax@1 int result; // eax@8 int v11; // eax@9 char *v12; // edx@9 char v13; // cl@10 int v14; // eax@11 char v15; // al@12 int v16; // edx@12 int v17; // eax@12 int v18; // edx@16 int v19; // eax@18 int v20; // eax@19 int v21; // eax@21 int v22; // eax@26 signed int v23; // ecx@27 int v24; // eax@35 int v25; // eax@35 int v26; // eax@40 int v27; // eax@45 int v28; // ecx@47 int v29; // eax@47 int v30; // eax@47 char *v31; // [sp-18h] [bp-2A0h]@48 char v32; // [sp+Ch] [bp-27Ch]@7 int v33; // [sp+10h] [bp-278h]@9 int v34; // [sp+14h] [bp-274h]@11 int v35; // [sp+18h] [bp-270h]@11 __int16 v36; // [sp+1Ch] [bp-26Ch]@11 __int16 v37; // [sp+20h] [bp-268h]@11 __int16 v38; // [sp+24h] [bp-264h]@11 __int16 v39; // [sp+28h] [bp-260h]@11 int v40; // [sp+2Ch] [bp-25Ch]@11 unsigned __int16 v41; // [sp+30h] [bp-258h]@12 char *v42; // [sp+34h] [bp-254h]@12 __time32_t Time; // [sp+38h] [bp-250h]@32 int v44; // [sp+3Ch] [bp-24Ch]@13 int v45; // [sp+40h] [bp-248h]@1 int v46; // [sp+44h] [bp-244h]@13 int v47; // [sp+48h] [bp-240h]@8 int i; // [sp+4Ch] [bp-23Ch]@13 int v49; // [sp+50h] [bp-238h]@1 char v50; // [sp+54h] [bp-234h]@1 char v51; // [sp+55h] [bp-233h]@1 char v52; // [sp+56h] [bp-232h]@1 int v53; // [sp+57h] [bp-231h]@1 int v54; // [sp+5Bh] [bp-22Dh]@1 int v55; // [sp+5Fh] [bp-229h]@1 int v56; // [sp+63h] [bp-225h]@1 int v57; // [sp+67h] [bp-221h]@1 char v58; // [sp+6Bh] [bp-21Dh]@1 char v59; // [sp+80h] [bp-208h]@1 unsigned __int8 v60; // [sp+81h] [bp-207h]@1 char v61; // [sp+82h] [bp-206h]@1 char v62; // [sp+83h] [bp-205h]@1 unsigned __int8 v63; // [sp+84h] [bp-204h]@1 unsigned __int8 v64; // [sp+85h] [bp-203h]@1 int v65; // [sp+88h] [bp-200h]@40 int v66; // [sp+8Ch] [bp-1FCh]@40 char v67; // [sp+90h] [bp-1F8h]@40 char v68; // [sp+91h] [bp-1F7h]@40 int v69; // [sp+94h] [bp-1F4h]@16 int v70; // [sp+FCh] [bp-18Ch]@9 char v71[16]; // [sp+100h] [bp-188h]@9 int v72; // [sp+110h] [bp-178h]@11 int v73; // [sp+114h] [bp-174h]@11 __int16 v74; // [sp+118h] [bp-170h]@11 __int16 v75; // [sp+11Ah] [bp-16Eh]@11 __int16 v76; // [sp+11Ch] [bp-16Ch]@11 __int16 v77; // [sp+11Eh] [bp-16Ah]@11 __int64 v78; // [sp+124h] [bp-164h]@11 int v79; // [sp+12Ch] [bp-15Ch]@11 int v80; // [sp+134h] [bp-154h]@47 int v81; // [sp+138h] [bp-150h]@47 char v82; // [sp+13Ch] [bp-14Ch]@47 char v83; // [sp+13Dh] [bp-14Bh]@47 int v84; // [sp+140h] [bp-148h]@47 int rgbValue; // [sp+144h] [bp-144h]@35 __int16 v86; // [sp+148h] [bp-140h]@35 char v87; // [sp+14Ah] [bp-13Eh]@35 int v88; // [sp+14Ch] [bp-13Ch]@16 int v89; // [sp+150h] [bp-138h]@16 int v90; // [sp+154h] [bp-134h]@16 int v91; // [sp+158h] [bp-130h]@16 int v92; // [sp+15Ch] [bp-12Ch]@16 int v93; // [sp+160h] [bp-128h]@16 int v94; // [sp+164h] [bp-124h]@43 int v95; // [sp+168h] [bp-120h]@14 int v96; // [sp+16Ch] [bp-11Ch]@16 int v97; // [sp+170h] [bp-118h]@17 int v98; // [sp+174h] [bp-114h]@45 char v99; // [sp+178h] [bp-110h]@45 __int16 v100; // [sp+17Ah] [bp-10Eh]@45 int v101; // [sp+17Ch] [bp-10Ch]@33 char v102[4]; // [sp+180h] [bp-108h]@1 char v103; // [sp+184h] [bp-104h]@48 unsigned int v104; // [sp+284h] [bp-4h]@1 int v105; // [sp+288h] [bp+0h]@1 v104 = (unsigned int)&v105 ^ __security_cookie; v2 = this; v3 = *(_DWORD *)(a2 + 2); v4 = *(_BYTE *)(a2 + 7); v50 = *(_BYTE *)(a2 + 6); v5 = *(_DWORD *)(a2 + 9); v49 = v3; LOBYTE(v3) = *(_BYTE *)(a2 + 8); v53 = v5; v6 = *(_DWORD *)(a2 + 21); v52 = v3; v7 = *(_DWORD *)(a2 + 17); v56 = v6; v55 = v7; LOBYTE(v7) = *(_BYTE *)(a2 + 29); v51 = v4; v54 = *(_DWORD *)(a2 + 13); v57 = *(_DWORD *)(a2 + 25); v59 = byte_4DC5E0[((unsigned int)(unsigned __int8)v7 >> 2) & 0x1F]; v8 = *(_BYTE *)(a2 + 31); v60 = ((unsigned __int8)v7 >> 2) & 0x1F; LOBYTE(v6) = *(_BYTE *)(a2 + 32); v61 = (unsigned __int8)v7 >> 7; LOBYTE(v7) = *(_BYTE *)(a2 + 30); v63 = v8; v64 = v6; v58 = 0; v62 = v7; v45 = sub_43E7B0((int)&unk_6E9850, (unsigned __int8)v7); *(_DWORD *)v102 = sub_43E7B0((int)&unk_6E9810, v63); v9 = sub_43E7B0((int)&unk_6E97D0, v64); if ( !*(_DWORD *)v102 || !v45 || !v9 || *(_BYTE *)(*(_DWORD *)v102 + 61) || *(_BYTE *)(v45 + 65) || *(_BYTE *)(v9 + 33) ) { result = -2; } else { if ( !sub_43D540((int)&unk_6E92D8, (int)&v32, v60) ) return 0; result = sub_456950(*(_DWORD *)v2 + 4684, &v49); v47 = result; if ( result < 1 ) return result; v70 = result; v11 = v33; v12 = &v71[-v33]; do { v13 = *(_BYTE *)v11; v12[v11] = *(_BYTE *)v11; ++v11; } while ( v13 ); v73 = v35; v72 = v34; v76 = v38; v75 = v37; v74 = v36; v78 = v40; v14 = *(_DWORD *)v2 + 4684; v77 = v39; v79 = 0; if ( sub_456AC0(v14, &v70) != 1 || (*(_DWORD *)v102 = v41, v15 = _atoi64(v42), LOBYTE(v17) = sub_402C80(*(_DWORD *)v2 + 4684, v47, v102[0], v15, v16), !v17) ) { LABEL_50: sub_456C70(*(_DWORD *)v2 + 4684, v47); return 0; } v44 = 0; v46 = sub_43D750(&unk_6E92D8); *(_DWORD *)v102 = 0; for ( i = 0; i < v46; i += v23 ) { if ( sub_43D840((int)&unk_6E92D8, (int)&v95, i) && v95 == v60 ) { v90 = v47; v88 = sub_404170(5, 0); v89 = v18; HIWORD(v91) = v44; v92 = v96; LOBYTE(v91) = 9; v93 = 0; if ( !sub_4661E0(v96, &v69) ) { sprintf(&v103, "ij¸¯ »", v95, v96, v88, v89, v90); sub_446350(1, "Msg", "%s", &v103); goto LABEL_50; } sub_403C00(v96, (int)&v69, v97); v45 = 0; if ( !*(_DWORD *)v102 ) { v19 = sub_402D20((int)&unk_6EA3E8, v96); if ( !v19 || (v20 = *(_DWORD *)v19) == 0 ) goto LABEL_50; if ( *(_DWORD *)(v20 + 102) == 5 ) { LOBYTE(v91) = 8; v21 = *(_DWORD *)(v20 + 110); if ( v21 == 10 ) { HIWORD(v91) = 10; } else { if ( v21 != 12 ) goto LABEL_50; HIWORD(v91) = 12; } v45 = 1; } } LOWORD(v22) = sub_46A440(*(_DWORD *)v2 + 4684, &v88, (int)&v69, 0); if ( v22 ) { sprintf(&v103, "ij¸¯ »", v95, v96, v22, v88, v89, v90); sub_446350(1, "Msg", "%s", &v103); goto LABEL_50; } v23 = 1; if ( v45 == 1 ) *(_DWORD *)v102 = 1; else ++v44; } else { v23 = 1; } } _time32(&Time); i = 0; if ( v46 > 0 ) { while ( 1 ) { if ( sub_43D640((int)&unk_6E92D8, (int)&v101, i) ) { if ( v101 == v60 ) { v24 = *(_DWORD *)v2; rgbValue = v47; v86 = *(_WORD *)v102; v87 = 1; v88 = 0; v90 = 0; v91 = 0; v92 = 0; v93 = 0; LOBYTE(v25) = sub_451580(v24 + 4684, &rgbValue); if ( !v25 ) break; } } ++i; if ( i >= v46 ) goto LABEL_37; } sprintf(&v103, "ij¸¯ »", v101, *(_DWORD *)v102, rgbValue); v31 = &v103; goto LABEL_49; } LABEL_37: i = 0; if ( v46 > 0 ) { while ( 1 ) { if ( sub_43D690((int)&unk_6E92D8, (int)&v101, i) ) { if ( v101 == v60 ) { v65 = v47; v66 = *(_DWORD *)v102; v67 = 6; memset(&v68, 0, 0x64u); LOBYTE(v26) = sub_4519F0(*(_DWORD *)v2 + 4684, (char *)&v65); if ( !v26 ) break; } } ++i; if ( i >= v46 ) goto LABEL_42; } sprintf(&v103, "ij¸¯ »", v101, *(_DWORD *)v102, v65); v31 = &v103; goto LABEL_49; } LABEL_42: i = 0; if ( v46 > 0 ) { while ( 1 ) { if ( sub_43D6E0((int)&unk_6E92D8, (int)&v94, i) ) { if ( v94 == v60 ) { v100 = v96; v27 = *(_DWORD *)v2; v98 = v47; v99 = v95; v101 = v97; *(_DWORD *)v102 = 0; if ( !sub_45C200(v27 + 4684, &v98) ) break; } } ++i; if ( i >= v46 ) goto LABEL_47; } sprintf(&v103, "ij¸¯ »", v94, v95, v96, v97); sub_446350(1, "Msg", "%s", &v103); goto LABEL_50; } LABEL_47: v28 = *(_DWORD *)(a2 + 2); v80 = v47; v29 = *(_DWORD *)v2; v81 = v28; v83 = 0; v84 = 0; v82 = ((v60 != 26) - 1) & 2; LOBYTE(v30) = sub_45E410(v29 + 4684, &v80); if ( !v30 ) { sprintf(&v103, " ERROR - ij¸¯ »", v81, v47, 1); v31 = &v103; LABEL_49: sub_446350(1, "Msg", "%s", v31); goto LABEL_50; } result = v47; } return result; } // 43D750: using guessed type int __thiscall sub_43D750(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 404220: using guessed type char var_188[16]; //----- (00404AD0) -------------------------------------------------------- signed int __thiscall sub_404AD0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // esi@2 int v6; // edi@2 int v7; // ecx@3 int v8; // ecx@6 int v9; // edx@6 int v10; // eax@6 int v11; // ecx@6 int v12; // edx@6 signed __int16 v13; // ax@9 signed int v14; // esi@15 int v15; // [sp-14h] [bp-2028h]@4 char v16; // [sp+0h] [bp-2014h]@2 __int16 v17; // [sp+5h] [bp-200Fh]@3 int v18; // [sp+7h] [bp-200Dh]@3 int v19; // [sp+Bh] [bp-2009h]@6 int v20; // [sp+Fh] [bp-2005h]@6 int v21; // [sp+13h] [bp-2001h]@6 int v22; // [sp+17h] [bp-1FFDh]@6 __int16 v23; // [sp+1Bh] [bp-1FF9h]@10 unsigned int v24; // [sp+2004h] [bp-10h]@1 int v25; // [sp+2010h] [bp-4h]@2 int v26; // [sp+2014h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = a2 + 2; sub_44E180((int)&v16); v25 = 0; v6 = sub_404220((void *)v3, a2 + 2); if ( v6 > 0 ) { sub_44E310((int)&v16, 0x1405u, 0x85u, 0); v7 = *(_DWORD *)v3 + 4684; v17 = *(_WORD *)v5; if ( sub_46A620(v7, v6, (int)((char *)&v18 + 1)) ) { LOBYTE(v18) = 1; v15 = (int)&v16; LABEL_15: v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), v15); v25 = -1; nullsub_1(&v16); return v14; } sub_456C70(*(_DWORD *)v3 + 4684, v6); } sub_44E310((int)&v16, 0x1403u, 0x18u, 0); v8 = *(_DWORD *)(a2 + 11); v9 = *(_DWORD *)(a2 + 15); v17 = *(_WORD *)v5; v10 = *(_DWORD *)(a2 + 19); v18 = v8; v11 = *(_DWORD *)(a2 + 23); v19 = v9; v12 = *(_DWORD *)(a2 + 27); v20 = v10; v21 = v11; v22 = v12; if ( v6 != -3 ) { if ( v6 == -2 ) { v23 = 387; } else { if ( v6 != -1 ) { v13 = 385; LABEL_13: v23 = v13; goto LABEL_14; } v23 = 386; } LABEL_14: v15 = (int)&v16; goto LABEL_15; } v13 = 388; goto LABEL_13; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00404C70) -------------------------------------------------------- signed int __thiscall sub_404C70(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 const void *v5; // edi@2 signed int v6; // ebx@2 char v7; // ST18_1@2 int v8; // ST14_4@2 int v9; // ebx@9 int v10; // eax@10 int v11; // eax@10 int v12; // edx@13 int v13; // eax@13 int v14; // eax@13 int v15; // ecx@17 signed int v16; // esi@17 int v17; // eax@20 int v18; // eax@20 int v19; // ecx@23 int v20; // ecx@26 int v21; // eax@26 int v22; // eax@26 char *v23; // [sp-24h] [bp-415Ch]@14 unsigned int v24; // [sp-10h] [bp-4148h]@1 int rgbValue; // [sp+0h] [bp-4138h]@10 int v26; // [sp+8h] [bp-4130h]@20 int v27; // [sp+Ch] [bp-412Ch]@20 int TargetValue; // [sp+10h] [bp-4128h]@4 char v29; // [sp+14h] [bp-4124h]@29 int v30; // [sp+19h] [bp-411Fh]@29 char v31; // [sp+2018h] [bp-2120h]@2 __int16 v32; // [sp+201Dh] [bp-211Bh]@17 __int16 v33; // [sp+201Fh] [bp-2119h]@17 int v34; // [sp+401Ch] [bp-11Ch]@13 int v35; // [sp+4020h] [bp-118h]@13 int v36; // [sp+4024h] [bp-114h]@26 char v37; // [sp+4028h] [bp-110h]@11 unsigned int v38; // [sp+4128h] [bp-10h]@1 int v39; // [sp+4134h] [bp-4h]@2 int v40; // [sp+4138h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v24 = (unsigned int)&v40 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = (const void *)(a2 + 2); sub_44E180((int)&v31); v6 = 0; v7 = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)v3 + 4684; v39 = 0; if ( !sub_456D60(v8, v7, 0) ) goto LABEL_34; if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { while ( 1 ) { sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); if ( TargetValue == *(_DWORD *)(a2 + 8) ) break; if ( !sub_44E4A0(*(_DWORD *)v3 + 4684) ) goto LABEL_8; } v6 = 1; } LABEL_8: sub_44E4D0(*(_DWORD *)v3 + 4684); if ( !v6 ) { LABEL_34: LOWORD(v9) = 5; goto LABEL_17; } v10 = *(_DWORD *)v3 + 4684; rgbValue = *(_DWORD *)(a2 + 8); LOBYTE(v11) = sub_451D20(v10, &rgbValue); if ( !v11 ) { sprintf(&v37, "ERROR - CPFsCharacter::fc_NC_AVATAR_ERASEDATA_REQ, nCharNo = %d", *(_DWORD *)(a2 + 8), v24); sub_446350(1, "Msg", "%s", &v37); LOWORD(v9) = 200; goto LABEL_17; } if ( *(_DWORD *)(a2 + 13) ) { v12 = *(_DWORD *)(a2 + 8); v34 = *(_DWORD *)(a2 + 13); v13 = *(_DWORD *)v3 + 4684; v35 = v12; LOBYTE(v14) = sub_453310(v13, &v34); if ( !v14 ) { sprintf( &v37, "ERROR - CPFsCharacter::fc_NC_AVATAR_ERASEDATA_REQ, nCharNo = %d, nGuildNo = %d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 13), v24); v23 = &v37; LABEL_15: sub_446350(1, "Msg", "%s", v23); LABEL_16: LOWORD(v9) = 201; goto LABEL_17; } } v26 = *(_DWORD *)(a2 + 8); v17 = *(_DWORD *)v3 + 4684; v27 = 0; LOBYTE(v18) = sub_4542B0(v17, &v26); if ( v18 ) { v19 = *(_DWORD *)v3 + 4684; TargetValue = 0; if ( sub_44E4A0(v19) ) { do sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); if ( TargetValue ) { v20 = *(_DWORD *)(a2 + 8); v34 = TargetValue; v21 = *(_DWORD *)v3 + 4684; v35 = v20; v36 = 0; LOBYTE(v22) = sub_454500(v21, &v34); if ( !v22 ) { sprintf( &v37, "ERROR - CPFsCharacter::fc_NC_AVATAR_ERASEDATA_REQ, GuildAcademyNo Del Fail : GuildNo=%d, CharNo=%d", v35, v34, v24); v23 = &v37; goto LABEL_15; } } } else { if ( v27 != -1521 ) { sprintf( &v37, "ERROR - CPFsCharacter::fc_NC_AVATAR_ERASEDATA_REQ, GuildAcademyNo Get Fail : nCharNo = %d", *(_DWORD *)(a2 + 8), v24); sub_446350(1, "Msg", "%s", &v37); goto LABEL_16; } } v9 = sub_456C00(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8)); if ( !v9 ) { sub_44E310((int)&v31, 0x140Bu, 0xFu, v5); v16 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v31); sub_44E180((int)&v29); LOBYTE(v39) = 1; sub_44E310((int)&v29, 0x412u, 4u, 0); v30 = *(_DWORD *)(a2 + 8); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v29); LOBYTE(v39) = 0; nullsub_1(&v29); goto LABEL_18; } LABEL_17: sub_44E310((int)&v31, 0x1409u, 4u, 0); v15 = *(_DWORD *)(v3 + 4); v32 = *(_WORD *)v5; v33 = v9 + 192; v16 = sub_43BFB0(v15, (int)&v31); LABEL_18: v39 = -1; nullsub_1(&v31); result = v16; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00405050) -------------------------------------------------------- signed int __thiscall sub_405050(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ebx@2 char v6; // ST14_1@2 int v7; // ST10_4@2 int v8; // ecx@5 int v9; // eax@6 int v10; // eax@6 int v11; // ecx@7 __int16 v12; // cx@9 int v13; // edx@9 int v14; // eax@13 signed int v15; // ecx@13 char *v16; // eax@14 int v17; // eax@16 signed int v18; // ecx@18 int v19; // edi@19 char v20; // dl@19 char *v21; // eax@19 signed int v22; // esi@28 int v23; // [sp-14h] [bp-2288h]@25 unsigned int v24; // [sp-10h] [bp-2284h]@1 char v25; // [sp+0h] [bp-2274h]@18 int rgbValue; // [sp+4h] [bp-2270h]@13 int v27; // [sp+8h] [bp-226Ch]@13 int v28; // [sp+Ch] [bp-2268h]@6 int v29; // [sp+10h] [bp-2264h]@6 int v30; // [sp+14h] [bp-2260h]@9 SQLPOINTER TargetValue; // [sp+18h] [bp-225Ch]@4 unsigned __int8 v32; // [sp+1Fh] [bp-2255h]@7 char v33; // [sp+20h] [bp-2254h]@2 __int16 v34; // [sp+25h] [bp-224Fh]@9 unsigned __int8 v35; // [sp+27h] [bp-224Dh]@9 char v36; // [sp+28h] [bp-224Ch]@9 char v37; // [sp+9Fh] [bp-21D5h]@19 char v38; // [sp+A0h] [bp-21D4h]@14 int v39[16]; // [sp+2024h] [bp-250h]@4 char v40; // [sp+2064h] [bp-210h]@26 char v41; // [sp+2164h] [bp-110h]@27 unsigned int v42; // [sp+2264h] [bp-10h]@1 int v43; // [sp+2270h] [bp-4h]@2 int v44; // [sp+2274h] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; v24 = (unsigned int)&v44 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v33); v5 = 0; v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)v3 + 4684; v43 = 0; if ( sub_456D60(v7, v6, 0) ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { TargetValue = v39; do { sub_44E4E0(*(_DWORD *)v3 + 4684, TargetValue); v8 = *(_DWORD *)v3; TargetValue = (char *)TargetValue + 4; ++v5; } while ( sub_44E4A0(v8 + 4684) ); } v9 = *(_DWORD *)v3; v28 = *(_DWORD *)(a2 + 4); v29 = 0; LOBYTE(v10) = sub_45E2B0(v9 + 4684, &v28); if ( v10 != 1 ) { sprintf(&v40, "CPFsCharacter::fc_NC_USER_AVATARINFO_REQ - usp_Tutorial_getIsSkip, nUserNo=%d", v28, v24); sub_446350(1, "Msg", "%s", &v40); v34 = *(_WORD *)(a2 + 2); v35 = -1; sub_44E310((int)&v33, 0xC13u, 3u, 0); v23 = (int)&v33; LABEL_28: v22 = sub_43BFB0(*(_DWORD *)(v3 + 4), v23); v43 = -1; nullsub_1(&v33); return v22; } v11 = *(_DWORD *)v3 + 4684; v32 = 0; if ( sub_44E4A0(v11) ) { do sub_44E510(*(_DWORD *)v3 + 4684, &v32); while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v34 = *(_WORD *)(a2 + 2); v35 = v32; sub_44E310((int)&v33, 0xC5Fu, 3u, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v33); sub_44E310((int)&v33, 0xC13u, 130 * v5 + 3, 0); v12 = *(_WORD *)(a2 + 2); TargetValue = &v36; v13 = 0; v34 = v12; v30 = 0; if ( v5 <= 0 ) { LABEL_13: v14 = *(_DWORD *)(a2 + 4); v15 = 0; v35 = v5; rgbValue = v14; v27 = v13; if ( (_BYTE)v5 ) { v16 = &v38; do { *(_WORD *)(v16 - 1) = 25600; *(_DWORD *)(v16 + 1) = v13; ++v15; v16 += 130; } while ( v15 < v35 ); } LOBYTE(v17) = sub_45CED0(*(_DWORD *)v3 + 4684, &rgbValue); if ( v17 == 1 ) { while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { sub_44E4E0(*(_DWORD *)v3 + 4684, &v30); sub_44E570(*(_DWORD *)v3 + 4684, &v25); sub_44E570(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v3 + 4684, &v32); v18 = 0; if ( v35 ) { v19 = v30; v20 = v32; v21 = &v37; do { if ( TargetValue == *(SQLPOINTER *)(v21 - 119) ) { *v21 = 1; v21[1] = v20; *(_DWORD *)(v21 + 2) = v19; } ++v18; v21 += 130; } while ( v18 < v35 ); } } sub_44E4D0(*(_DWORD *)v3 + 4684); } v23 = (int)&v33; goto LABEL_28; } while ( sub_46A620(*(_DWORD *)v3 + 4684, v39[v30], (int)TargetValue) ) { TargetValue = (char *)TargetValue + 130; ++v30; if ( v30 >= v5 ) { v13 = 0; goto LABEL_13; } } } sprintf(&v41, "DEBUG - ¾Æ¹ÙŸ ¾", *(_DWORD *)(a2 + 4), v24); sub_446350(1, "Msg", "%s", &v41); sub_44E310((int)&v33, 0xC13u, 3u, 0); v34 = *(_WORD *)(a2 + 2); v35 = -1; v23 = (int)&v33; goto LABEL_28; } return result; } // 4DE38C: using guessed type int __security_cookie; // 405050: using guessed type int var_250[16]; //----- (00405490) -------------------------------------------------------- signed int __thiscall sub_405490(int this, int a2, int a3) { int v3; // edi@1 int v4; // ecx@2 int v5; // eax@2 int v6; // eax@2 char v7; // dl@4 int v8; // ecx@4 signed int v9; // eax@4 int rgbValue; // [sp+0h] [bp-201Ch]@2 int v12; // [sp+4h] [bp-2018h]@3 char v13; // [sp+8h] [bp-2014h]@2 __int16 v14; // [sp+Dh] [bp-200Fh]@2 int v15; // [sp+Fh] [bp-200Dh]@2 int v16; // [sp+13h] [bp-2009h]@4 char v17; // [sp+17h] [bp-2005h]@4 unsigned int v18; // [sp+200Ch] [bp-10h]@1 int v19; // [sp+2018h] [bp-4h]@2 int v20; // [sp+201Ch] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v13); v19 = 0; sub_44E310((int)&v13, 0x1414u, 0xBu, 0); v4 = *(_DWORD *)(a2 + 4); v14 = *(_WORD *)(a2 + 2); v5 = *(_DWORD *)v3 + 4684; v15 = 0; rgbValue = v4; LOBYTE(v6) = sub_453050(v5, &rgbValue); if ( v6 ) v15 = v12; v7 = *(_BYTE *)(a2 + 8); v16 = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)(v3 + 4); v17 = v7; v9 = sub_43BFB0(v8, (int)&v13); v19 = -1; if ( !v9 ) { nullsub_1(&v13); return 0; } nullsub_1(&v13); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004055B0) -------------------------------------------------------- int __thiscall sub_4055B0(int this, int a2) { int result; // eax@1 int v3; // esi@1 signed int v4; // edx@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_BYTE *)(this + 20) = *(_BYTE *)(a2 + 20); *(_DWORD *)(this + 21) = *(_DWORD *)(a2 + 21); *(_WORD *)(this + 25) = *(_WORD *)(a2 + 25); v3 = this + 27; v4 = 64; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - this + v3); ++v3; --v4; } while ( v4 ); *(_DWORD *)(this + 91) = *(_DWORD *)(a2 + 91); *(_BYTE *)(this + 95) = *(_BYTE *)(a2 + 95); *(_BYTE *)(this + 96) = *(_BYTE *)(a2 + 96); *(_BYTE *)(this + 97) = *(_BYTE *)(a2 + 97); *(_DWORD *)(this + 98) = *(_DWORD *)(a2 + 98); *(_DWORD *)(this + 102) = *(_DWORD *)(a2 + 102); *(_DWORD *)(this + 106) = *(_DWORD *)(a2 + 106); return result; } //----- (00405640) -------------------------------------------------------- signed int __thiscall sub_405640(void *this, int a2, void *a3, size_t a4, int a5) { void *v5; // edi@1 signed int result; // eax@2 unsigned int v7; // [sp-10h] [bp-2224h]@1 char v8; // [sp+0h] [bp-2214h]@1 __int16 v9; // [sp+5h] [bp-220Fh]@1 char v10; // [sp+2004h] [bp-210h]@2 char v11; // [sp+2104h] [bp-110h]@4 unsigned int v12; // [sp+2204h] [bp-10h]@1 int v13; // [sp+2210h] [bp-4h]@1 int v14; // [sp+2214h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v7 = (unsigned int)&v14 ^ __security_cookie; v5 = this; sub_44E180((int)&v8); v13 = 0; sub_44E310((int)&v8, 0x1017u, 2u, 0); v9 = *(_WORD *)a2; if ( sub_44E280((int)&v8, a3, a4) ) { if ( sub_43BFB0(*((_DWORD *)v5 + 1), (int)&v8) ) { v13 = -1; nullsub_1(&v8); result = 1; } else { sprintf( &v11, "* FATAL ERROR - CPFsCharacter::Send_NC_CHAR_ITEM_CMD - SEND FAILED, nPart=%d, nCharNo=%d", *((_BYTE *)a3 + 1), a5, v7); sub_446350(1, "Msg", "%s", &v11); v13 = -1; nullsub_1(&v8); result = 0; } } else { sprintf( &v10, "* FATAL ERROR - CPFsCharacter::Send_NC_CHAR_ITEM_CMD - OVER MAX PACKET SIZE=%d, nPart=%d, nCharNo=%d", a4 + 2, *((_BYTE *)a3 + 1), a5, v7); sub_446350(1, "Msg", "%s", &v10); v13 = -1; nullsub_1(&v8); result = 2; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004057B0) -------------------------------------------------------- signed int __thiscall sub_4057B0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // edx@2 const void *v6; // edi@2 int v7; // ST10_4@2 signed int v8; // ebx@2 int v9; // ecx@7 char *v10; // ebx@12 char *v11; // edi@12 int v12; // eax@13 int v13; // eax@13 int v14; // ecx@16 int v15; // eax@16 int v16; // eax@16 __int16 v17; // ax@18 unsigned int v18; // [sp-10h] [bp-55D0h]@1 int rgbValue; // [sp+0h] [bp-55C0h]@13 int v20; // [sp+4h] [bp-55BCh]@13 int v21; // [sp+8h] [bp-55B8h]@2 int TargetValue; // [sp+Ch] [bp-55B4h]@7 char v23; // [sp+10h] [bp-55B0h]@4 char v24; // [sp+2014h] [bp-35ACh]@11 unsigned __int16 v25; // [sp+2019h] [bp-35A7h]@11 char v26; // [sp+201Fh] [bp-35A1h]@12 int v27; // [sp+4018h] [bp-15A8h]@16 int v28; // [sp+401Ch] [bp-15A4h]@15 int v29; // [sp+4020h] [bp-15A0h]@16 int v30; // [sp+4026h] [bp-159Ah]@10 char v31; // [sp+53B0h] [bp-210h]@17 char v32; // [sp+54B0h] [bp-110h]@3 unsigned int v33; // [sp+55B0h] [bp-10h]@1 int v34; // [sp+55BCh] [bp-4h]@4 int v35; // [sp+55C0h] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v18 = (unsigned int)&v35 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 2); v6 = (const void *)(a2 + 2); v7 = *(_DWORD *)v3 + 4684; v8 = 0; v21 = 0; if ( !sub_456E40(v7, v5, &v21) ) { sprintf(&v32, "Error - fc_NC_CHAR_LOGIN_DB, CharNo=%d", *(_DWORD *)v6, v18); sub_446350(1, "Msg", "%s", &v32); } sub_44E180((int)&v23); v34 = 0; sub_44E310((int)&v23, 0x40Au, 0x38u, v6); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v23); if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { v9 = *(_DWORD *)v3 + 4684; TargetValue = 0; sub_44E4E0(v9, &TargetValue); if ( TargetValue >= 1 ) v8 = 1; sub_44E4D0(*(_DWORD *)v3 + 4684); if ( v8 == 1 && sub_46B640(*(_DWORD *)v3 + 4684, *(_DWORD *)v6, (int)&v30) == 1 ) { sub_44E180((int)&v24); LOBYTE(v34) = 1; v25 = 0; TargetValue = 0; if ( (unsigned __int16)v30 > 0u ) { v10 = &v26; v11 = (char *)&v30 + 2; do { v12 = *(_DWORD *)v3; rgbValue = *(_DWORD *)v11; v20 = 0; LOBYTE(v13) = sub_45EEE0(v12 + 4684, &rgbValue); if ( v13 ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { sub_44E4E0(*(_DWORD *)v3 + 4684, &v28); sub_44E4D0(*(_DWORD *)v3 + 4684); } v14 = *(_DWORD *)v11; v15 = *(_DWORD *)v3; ++v28; v27 = v14; v29 = 0; LOBYTE(v16) = sub_45EFF0(v15 + 4684, &v27); if ( v16 ) { v17 = v28; *((_DWORD *)v10 - 1) = v27; *(_WORD *)v10 = v17; *((_WORD *)v10 + 1) = 0; ++v25; } else { sprintf( &v31, "Error - CGameDB_Character::fc_NC_CHAR_LOGIN_DB usp_Character_setFriendpoint: CharNo %d", *(_DWORD *)v11, v18); sub_446350(1, "Msg", "%s", &v31); } } v11 += 25; v10 += 8; ++TargetValue; } while ( TargetValue < (unsigned __int16)v30 ); if ( v25 ) { sub_44E310((int)&v24, 0x541Cu, 8 * v25 + 2, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v24); } } LOBYTE(v34) = 0; nullsub_1(&v24); } } v34 = -1; nullsub_1(&v23); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00405AD0) -------------------------------------------------------- signed int __thiscall sub_405AD0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 unsigned int v5; // [sp-Ch] [bp-2120h]@1 char v6; // [sp+0h] [bp-2114h]@4 char v7; // [sp+2004h] [bp-110h]@3 unsigned int v8; // [sp+2104h] [bp-10h]@1 int v9; // [sp+2110h] [bp-4h]@4 int v10; // [sp+2114h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v5 = (unsigned int)&v10 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( !sub_456ED0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), *(_WORD *)(a2 + 26)) ) { sprintf(&v7, "Error - fc_NC_CHAR_LOGOUT_DB, CharNo=%d, PlayMin=%d", *(_DWORD *)(a2 + 2), *(_WORD *)(a2 + 26), v5); sub_446350(1, "Msg", "%s", &v7); } sub_44E180((int)&v6); v9 = 0; sub_44E310((int)&v6, 0x40Bu, 0x23u, (const void *)(a2 + 2)); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v6); v9 = -1; nullsub_1(&v6); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00405BE0) -------------------------------------------------------- signed int __thiscall sub_405BE0(void *this, int a2) { int v2; // eax@1 int v3; // edx@1 int v4; // eax@1 int v5; // edx@1 int v6; // edx@1 int v7; // eax@1 int v8; // edx@1 int v9; // eax@1 int v10; // eax@1 int rgbValue; // [sp+8h] [bp-C4h]@1 int v13; // [sp+Ch] [bp-C0h]@1 int v14; // [sp+10h] [bp-BCh]@1 int v15; // [sp+14h] [bp-B8h]@1 char v16; // [sp+18h] [bp-B4h]@1 int v17; // [sp+1Ch] [bp-B0h]@1 int v18; // [sp+20h] [bp-ACh]@1 int v19; // [sp+28h] [bp-A4h]@1 int v20; // [sp+2Ch] [bp-A0h]@1 int v21; // [sp+30h] [bp-9Ch]@1 int v22; // [sp+34h] [bp-98h]@1 char v23; // [sp+38h] [bp-94h]@1 int v24; // [sp+3Ch] [bp-90h]@1 int v25; // [sp+40h] [bp-8Ch]@1 char v26; // [sp+48h] [bp-84h]@2 unsigned int v27; // [sp+C8h] [bp-4h]@1 int v28; // [sp+CCh] [bp+0h]@1 v27 = (unsigned int)&v28 ^ __security_cookie; v2 = *(_DWORD *)a2; v13 = *(_DWORD *)(a2 + 4); v15 = *(_DWORD *)(a2 + 12); v17 = *(_DWORD *)(a2 + 16); v3 = *(_DWORD *)(a2 + 20); rgbValue = v2; v4 = *(_DWORD *)(a2 + 8); v18 = v3; v5 = *(_DWORD *)(a2 + 24); v14 = v4; v19 = v5; v6 = *(_DWORD *)(a2 + 28); v16 = 0; v23 = 0; v7 = *(_DWORD *)(a2 + 40); v20 = v6; v8 = *(_DWORD *)(a2 + 32); v24 = v7; v9 = *(_DWORD *)this; v21 = v8; v22 = *(_DWORD *)(a2 + 36); v25 = *(_DWORD *)(a2 + 44); LOBYTE(v10) = sub_458770(v9 + 4684, &rgbValue); if ( !v10 ) { sprintf( &v26, "CharSaveLocation ERROR:CharNo=%d, Map=%s, X=%d, Y=%d", *(_DWORD *)a2, a2 + 4, *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20)); sub_446350(1, "Msg", "%s", &v26); } return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00405CE0) -------------------------------------------------------- signed int __thiscall sub_405CE0(void *this, int a2) { int v2; // eax@1 char v4; // [sp+Ch] [bp-84h]@2 unsigned int v5; // [sp+8Ch] [bp-4h]@1 int v6; // [sp+90h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; LOBYTE(v2) = sub_4586C0( *(_DWORD *)this + 4684, *(_DWORD *)a2, *(_BYTE *)(a2 + 4), (void *)(a2 + 5), *(_DWORD *)(a2 + 13)); if ( !v2 ) { sprintf( &v4, "CharSaveLevelExp ERROR:CharNo=%d, Lvl=%d, Exp=%I64d, Frame=%d", *(_DWORD *)a2, *(_BYTE *)(a2 + 4), *(_DWORD *)(a2 + 5), *(_DWORD *)(a2 + 9), *(_DWORD *)(a2 + 13)); sub_446350(1, "Msg", "%s", &v4); } return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00405D80) -------------------------------------------------------- bool __thiscall sub_405D80(void *this, int a2) { int v2; // eax@2 unsigned __int8 v3; // dl@2 int v4; // esi@2 int v5; // eax@2 int v6; // eax@2 void *v8; // [sp+4h] [bp-284h]@1 signed int v9; // [sp+8h] [bp-280h]@1 int v10; // [sp+Ch] [bp-27Ch]@1 int rgbValue; // [sp+10h] [bp-278h]@1 int v12; // [sp+14h] [bp-274h]@2 unsigned __int8 v13; // [sp+18h] [bp-270h]@2 char v14; // [sp+19h] [bp-26Fh]@2 char v15; // [sp+35h] [bp-253h]@2 char v16; // [sp+84h] [bp-204h]@3 unsigned int v17; // [sp+284h] [bp-4h]@1 int v18; // [sp+288h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v8 = this; v9 = 0; rgbValue = *(_DWORD *)(a2 + 2); v10 = 0; if ( *(_BYTE *)(a2 + 7) ) { do { v2 = 32 * (unsigned __int16)v10; v3 = *(_BYTE *)(v2 + a2 + 10); v12 = *(_WORD *)(v2 + a2 + 8); v4 = v2 + a2 + 11; v5 = *(_DWORD *)v8; v13 = v3; memcpy(&v14, (const void *)v4, 0x1Cu); v15 = *(_BYTE *)(v4 + 28); LOBYTE(v6) = sub_4519F0(v5 + 4684, (char *)&rgbValue); if ( !v6 ) { v9 = 1; sprintf(&v16, "ERROR - CharSaveQuest, nCharNo=%d, nQuestNo=%d, Status=%d", rgbValue, v12, v13); sub_446350(1, "Msg", "%s", &v16); } ++v10; } while ( (unsigned __int16)v10 < *(_BYTE *)(a2 + 7) ); } return v9 == 0; } // 4DE38C: using guessed type int __security_cookie; //----- (00405EA0) -------------------------------------------------------- signed int __thiscall sub_405EA0(void *this, int a2) { void *v2; // ebx@1 signed int result; // eax@1 int v4; // edi@1 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // edx@2 int v11; // eax@2 int v12; // eax@2 signed int v13; // [sp+Ch] [bp-228h]@1 int rgbValue; // [sp+10h] [bp-224h]@2 unsigned __int16 v15; // [sp+14h] [bp-220h]@2 char v16; // [sp+16h] [bp-21Eh]@2 int v17; // [sp+18h] [bp-21Ch]@2 __int64 v18; // [sp+20h] [bp-214h]@2 int v19; // [sp+28h] [bp-20Ch]@2 unsigned __int8 v20; // [sp+2Ch] [bp-208h]@2 unsigned __int8 v21; // [sp+2Dh] [bp-207h]@2 unsigned __int8 v22; // [sp+2Eh] [bp-206h]@2 unsigned __int8 v23; // [sp+2Fh] [bp-205h]@2 char v24; // [sp+30h] [bp-204h]@3 unsigned int v25; // [sp+230h] [bp-4h]@1 int v26; // [sp+234h] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v2 = this; result = 1; v4 = 0; v13 = 1; if ( *(_WORD *)(a2 + 6) > 0u ) { do { v5 = *(_DWORD *)(a2 + 2); v6 = 16 * (unsigned __int16)v4; v7 = *(_DWORD *)(v6 + a2 + 20); v8 = a2 + v6; v17 = v7; v9 = *(_DWORD *)(v8 + 8); rgbValue = v5; v15 = *(_WORD *)(v8 + 12); v18 = v9; LOBYTE(v9) = *(_BYTE *)(v8 + 18); v10 = *(_DWORD *)(v8 + 14); LOBYTE(v8) = *(_BYTE *)(v8 + 19); v19 = v10; LOBYTE(v10) = v9; v21 = (unsigned __int8)v9 >> 4; v22 = v8 & 0xF; v11 = *(_DWORD *)v2; v23 = (unsigned __int8)v8 >> 4; v16 = 0; v20 = v10 & 0xF; LOBYTE(v12) = sub_451580(v11 + 4684, &rgbValue); if ( !v12 ) { v13 = 0; sprintf( &v24, "ERROR - CharSaveSkill, nCharNo=%d, nSkillNo=%d, nSkillExp=%d, nSkillWriteTime=%I64d, nSkillCoolTime=%d, POWER=%d,%d,%d,%d", rgbValue, v15, v17, v18, v19, v20, v21, v22, v23); sub_446350(1, "Msg", "%s", &v24); } ++v4; } while ( (unsigned __int16)v4 < *(_WORD *)(a2 + 6) ); result = v13; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00406010) -------------------------------------------------------- int __thiscall sub_406010(void *this, int a2) { void *v2; // ebx@1 int result; // eax@2 int v4; // edi@3 int v5; // eax@4 unsigned __int16 v6; // dx@4 int v7; // ecx@4 int v8; // edx@4 unsigned int v9; // ecx@4 int v10; // eax@4 int rgbValue; // [sp+8h] [bp-13Ch]@1 int v12; // [sp+10h] [bp-134h]@3 int v13; // [sp+14h] [bp-130h]@4 unsigned __int16 v14; // [sp+18h] [bp-12Ch]@4 unsigned __int16 v15; // [sp+1Ah] [bp-12Ah]@4 int v16; // [sp+1Ch] [bp-128h]@4 int v17; // [sp+20h] [bp-124h]@4 __int16 v18; // [sp+24h] [bp-120h]@4 char v19; // [sp+26h] [bp-11Eh]@4 char v20; // [sp+27h] [bp-11Dh]@4 char v21; // [sp+28h] [bp-11Ch]@4 char v22; // [sp+29h] [bp-11Bh]@4 __int16 v23; // [sp+2Ah] [bp-11Ah]@4 __int16 v24; // [sp+2Ch] [bp-118h]@4 __int16 v25; // [sp+2Eh] [bp-116h]@4 __int16 v26; // [sp+30h] [bp-114h]@4 __int16 v27; // [sp+32h] [bp-112h]@4 __int16 v28; // [sp+34h] [bp-110h]@4 __int16 v29; // [sp+36h] [bp-10Eh]@4 __int16 v30; // [sp+38h] [bp-10Ch]@4 __int16 v31; // [sp+3Ah] [bp-10Ah]@4 __int16 v32; // [sp+3Ch] [bp-108h]@4 char v33; // [sp+40h] [bp-104h]@2 unsigned int v34; // [sp+140h] [bp-4h]@1 int v35; // [sp+144h] [bp+0h]@1 v34 = (unsigned int)&v35 ^ __security_cookie; v2 = this; rgbValue = *(_DWORD *)(a2 + 2); if ( sub_457BB0(*(_DWORD *)this + 4684, &rgbValue) ) { v4 = 0; v12 = 1; if ( *(_WORD *)(a2 + 6) > 0u ) { do { v13 = *(_DWORD *)(a2 + 2); v5 = a2 + 36 * (unsigned __int16)v4; v6 = *(_WORD *)(v5 + 8); v15 = *(_BYTE *)(v5 + 10); v7 = *(_DWORD *)(v5 + 15); v14 = v6; v8 = *(_DWORD *)(v5 + 11); v17 = v7; LOBYTE(v7) = *(_BYTE *)(v5 + 21); v16 = v8; LOWORD(v8) = *(_WORD *)(v5 + 19); v19 = v7 & 0xF; v9 = *(_WORD *)(v5 + 21); v18 = v8; v20 = (unsigned __int8)v9 >> 4; BYTE1(v8) = BYTE1(v9); v22 = (v9 >> 12) & 0xF; LOWORD(v9) = *(_WORD *)(v5 + 28); v21 = BYTE1(v8) & 0xF; LOWORD(v8) = *(_WORD *)(v5 + 30); v23 = v9; LOWORD(v9) = *(_WORD *)(v5 + 32); v24 = v8; LOWORD(v8) = *(_WORD *)(v5 + 34); v25 = v9; LOWORD(v9) = *(_WORD *)(v5 + 36); v26 = v8; LOWORD(v8) = *(_WORD *)(v5 + 38); v27 = v9; LOWORD(v9) = *(_WORD *)(v5 + 40); v28 = v8; LOWORD(v8) = *(_WORD *)(v5 + 42); v29 = v9; LOWORD(v9) = *(_BYTE *)(v5 + 23); v30 = v8; LOWORD(v8) = *(_WORD *)(v5 + 24); v10 = *(_DWORD *)v2; v31 = v9; v32 = v8; if ( !sub_45F7C0(v10 + 4684, &v13) ) { sprintf( &v33, "ERROR - CharSaveState SetState, nCharNo=%d, nStateNo=%d, nStateLevel=%d, nStateTime=%d", v13, v14, v15, v16); sub_446350(1, "Msg", "%s", &v33); v12 = 0; } ++v4; } while ( (unsigned __int16)v4 < *(_WORD *)(a2 + 6) ); } result = v12; } else { sprintf(&v33, "ERROR - CharSaveState DEL STATE ALL, nCharNo=%d", rgbValue); sub_446350(1, "Msg", "%s", &v33); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00406230) -------------------------------------------------------- signed int __thiscall sub_406230(void *this, int a2) { int v2; // edx@1 __int16 v3; // ax@1 int v4; // eax@1 int v5; // eax@1 int rgbValue; // [sp+4h] [bp-98h]@1 int v8; // [sp+8h] [bp-94h]@1 int v9; // [sp+Ch] [bp-90h]@1 __int16 v10; // [sp+10h] [bp-8Ch]@1 __int16 v11; // [sp+12h] [bp-8Ah]@1 __int16 v12; // [sp+14h] [bp-88h]@1 __int16 v13; // [sp+16h] [bp-86h]@1 char v14; // [sp+18h] [bp-84h]@2 unsigned int v15; // [sp+98h] [bp-4h]@1 int v16; // [sp+9Ch] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = *(_DWORD *)(a2 + 4); rgbValue = *(_DWORD *)a2; v9 = *(_DWORD *)(a2 + 8); v11 = *(_WORD *)(a2 + 16); v3 = *(_WORD *)(a2 + 24); v8 = v2; LOWORD(v2) = *(_WORD *)(a2 + 12); v13 = v3; v4 = *(_DWORD *)this; v10 = v2; v12 = *(_WORD *)(a2 + 20); LOBYTE(v5) = sub_458890(v4 + 4684, &rgbValue); if ( !v5 ) { sprintf( &v14, "CharSaveStat ERROR:CharNo=%d,nPS=%d,nGS=%d,nHPS=%d,nSPS=%d,nHP=%d,nSP=%d", *(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), *(_DWORD *)(a2 + 24)); sub_446350(1, "Msg", "%s", &v14); } return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00406310) -------------------------------------------------------- signed int __thiscall sub_406310(void *this, int a2) { signed int result; // eax@2 unsigned __int16 v3; // ax@3 signed int v4; // ebx@5 int v5; // edi@6 char v6; // al@7 int v7; // eax@9 void *v8; // [sp+4h] [bp-108h]@1 char v9; // [sp+8h] [bp-104h]@2 unsigned int v10; // [sp+108h] [bp-4h]@1 int v11; // [sp+10Ch] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v8 = this; if ( a2 ) { v3 = *(_WORD *)(a2 + 6); if ( v3 <= 0x80u ) { v4 = 0; if ( v3 > 0u ) { v5 = a2 + 8; do { v6 = *(_BYTE *)v5; if ( *(_BYTE *)v5 && (unsigned __int8)v6 < 0x80u ) { LOBYTE(v7) = sub_46BB90( *(_DWORD *)v8 + 4684, *(_DWORD *)(a2 + 2), v6, *(_DWORD *)(v5 + 1), *(_DWORD *)(v5 + 5)); if ( !v7 ) { sprintf(&v9, "ERROR - CharSaveTitle: m_DBFChar.SetCharTitleValues, nCharNo=%d", *(_DWORD *)(a2 + 2)); sub_446350(1, "Msg", "%s", &v9); } } ++v4; v5 += 9; } while ( v4 < *(_WORD *)(a2 + 6) ); } result = 1; } else { sprintf(&v9, "ERROR - CharSaveTitle: NumOfValues", *(_DWORD *)(a2 + 2)); sub_446350(1, "Msg", "%s", &v9); result = 0; } } else { sprintf(&v9, "ERROR - CharSaveTitle: pReq is NULL ", v2); sub_446350(1, "Msg", "%s", &v9); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00406460) -------------------------------------------------------- signed int __thiscall sub_406460(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // esi@2 int v6; // esi@2 int v7; // ecx@3 __int16 v8; // ax@3 __int16 v9; // dx@3 signed int v10; // esi@3 unsigned int v11; // [sp-10h] [bp-2128h]@1 char v12; // [sp+4h] [bp-2114h]@3 int v13; // [sp+9h] [bp-210Fh]@3 __int16 v14; // [sp+Dh] [bp-210Bh]@3 int v15; // [sp+Fh] [bp-2109h]@3 __int16 v16; // [sp+13h] [bp-2105h]@3 char v17; // [sp+2008h] [bp-110h]@4 unsigned int v18; // [sp+2108h] [bp-10h]@1 int v19; // [sp+2114h] [bp-4h]@3 int v20; // [sp+2118h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v11 = (unsigned int)&v20 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = sub_405CE0((void *)v3, a2 + 14) == 0; v6 = sub_405BE0((void *)v3, a2 + 31) == 0 | v5; if ( sub_406230((void *)v3, a2 + 79) == 0 | v6 ) { sprintf(&v17, "CPFsCharacter::fc_NC_CHARSAVE_ALL_REQ - FAILED CharNo=%d", *(_DWORD *)(a2 + 14), v11); sub_446350(1, "Msg", "%s", &v17); result = 1; } else { sub_44E180((int)&v12); v7 = *(_DWORD *)(a2 + 8); v8 = *(_WORD *)(a2 + 6); v13 = *(_DWORD *)(a2 + 2); v9 = *(_WORD *)(a2 + 12); v15 = v7; v19 = 0; v14 = v8; v16 = v9; sub_44E310((int)&v12, 0x4002u, 0xCu, 0); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v12); v19 = -1; nullsub_1(&v12); result = v10; } } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004065B0) -------------------------------------------------------- signed int __thiscall sub_4065B0(int this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@1 v3 = (void *)this; result = sub_43B000(this, a2); if ( result ) result = sub_405BE0(v3, a2 + 8); return result; } //----- (004065E0) -------------------------------------------------------- signed int __thiscall sub_4065E0(int this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@1 v3 = (void *)this; result = sub_43B000(this, a2); if ( result ) result = sub_405CE0(v3, a2 + 8); return result; } //----- (00406610) -------------------------------------------------------- signed int __thiscall sub_406610(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // eax@2 __int16 v6; // cx@4 int v7; // edx@4 __int16 v8; // ax@4 signed int v9; // esi@4 char v10; // [sp+0h] [bp-2014h]@4 int v11; // [sp+5h] [bp-200Fh]@4 __int16 v12; // [sp+9h] [bp-200Bh]@4 int v13; // [sp+Bh] [bp-2009h]@4 __int16 v14; // [sp+Fh] [bp-2005h]@4 unsigned int v15; // [sp+2004h] [bp-10h]@1 int v16; // [sp+2010h] [bp-4h]@4 int v17; // [sp+2014h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { LOBYTE(v5) = sub_405D80((void *)v3, a2 + 8); if ( v5 ) { sub_44E180((int)&v10); v6 = *(_WORD *)(a2 + 6); v7 = *(_DWORD *)(a2 + 8); v11 = *(_DWORD *)(a2 + 2); v8 = *(_WORD *)(a2 + 12); v12 = v6; v16 = 0; v13 = v7; v14 = v8; sub_44E310((int)&v10, 0x4006u, 0xCu, 0); v9 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v10); v16 = -1; nullsub_1(&v10); result = v9; } else { result = 1; } } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00406700) -------------------------------------------------------- signed int __thiscall sub_406700(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 __int16 v5; // cx@4 int v6; // edx@4 __int16 v7; // ax@4 signed int v8; // esi@4 char v9; // [sp+0h] [bp-2014h]@4 int v10; // [sp+5h] [bp-200Fh]@4 __int16 v11; // [sp+9h] [bp-200Bh]@4 int v12; // [sp+Bh] [bp-2009h]@4 __int16 v13; // [sp+Fh] [bp-2005h]@4 unsigned int v14; // [sp+2004h] [bp-10h]@1 int v15; // [sp+2010h] [bp-4h]@4 int v16; // [sp+2014h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( sub_405EA0((void *)v3, a2 + 8) ) { sub_44E180((int)&v9); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 8); v10 = *(_DWORD *)(a2 + 2); v7 = *(_WORD *)(a2 + 12); v11 = v5; v15 = 0; v12 = v6; v13 = v7; sub_44E310((int)&v9, 0x400Au, 0xCu, 0); v8 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v9); v15 = -1; nullsub_1(&v9); result = v8; } else { result = 1; } } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004067F0) -------------------------------------------------------- signed int __thiscall sub_4067F0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 __int16 v5; // cx@4 int v6; // edx@4 __int16 v7; // ax@4 signed int v8; // esi@4 char v9; // [sp+0h] [bp-2014h]@4 int v10; // [sp+5h] [bp-200Fh]@4 __int16 v11; // [sp+9h] [bp-200Bh]@4 int v12; // [sp+Bh] [bp-2009h]@4 __int16 v13; // [sp+Fh] [bp-2005h]@4 unsigned int v14; // [sp+2004h] [bp-10h]@1 int v15; // [sp+2010h] [bp-4h]@4 int v16; // [sp+2014h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( sub_406010((void *)v3, a2 + 8) ) { sub_44E180((int)&v9); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 8); v10 = *(_DWORD *)(a2 + 2); v7 = *(_WORD *)(a2 + 12); v11 = v5; v15 = 0; v12 = v6; v13 = v7; sub_44E310((int)&v9, 0x4008u, 0xCu, 0); v8 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v9); v15 = -1; nullsub_1(&v9); result = v8; } else { result = 1; } } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004068E0) -------------------------------------------------------- signed int __thiscall sub_4068E0(int this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@1 v3 = (void *)this; result = sub_43B000(this, a2); if ( result ) { sub_406230(v3, a2 + 8); result = 1; } return result; } //----- (00406910) -------------------------------------------------------- signed int __thiscall sub_406910(int this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@1 v3 = (void *)this; result = sub_43B000(this, a2); if ( result ) { sub_406310(v3, a2 + 8); result = 1; } return result; } //----- (00406940) -------------------------------------------------------- signed int __thiscall sub_406940(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 char v6; // [sp+8h] [bp-84h]@3 unsigned int v7; // [sp+88h] [bp-4h]@1 int v8; // [sp+8Ch] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { LOBYTE(v5) = sub_458990(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12)); if ( !v5 ) { sprintf(&v6, "CharSavePKCount ERROR:CharNo=%d, PKCount=%d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12)); sub_446350(1, "Msg", "%s", &v6); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004069E0) -------------------------------------------------------- signed int __thiscall sub_4069E0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 char v5; // [sp+8h] [bp-84h]@3 unsigned int v6; // [sp+88h] [bp-4h]@1 int v7; // [sp+8Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( !sub_458AD0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4)) ) { sprintf(&v5, "CharSaveRestExpLastExecTime ERROR:CharNo=%d", *(_DWORD *)(a2 + 4)); sub_446350(1, "Msg", "%s", &v5); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00406A80) -------------------------------------------------------- signed int __thiscall sub_406A80(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 char v5; // [sp+8h] [bp-84h]@3 unsigned int v6; // [sp+88h] [bp-4h]@1 int v7; // [sp+8Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( !sub_458CB0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), *(_WORD *)(a2 + 2)) ) { sprintf(&v5, "CharSaveAuto_Pick ERROR:CharNo=%d", *(_DWORD *)(a2 + 4)); sub_446350(1, "Msg", "%s", &v5); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00406B20) -------------------------------------------------------- signed int __thiscall sub_406B20(void *this, int a2) { int v2; // eax@1 int v3; // eax@1 signed int result; // eax@2 int rgbValue; // [sp+8h] [bp-278h]@1 int v6; // [sp+Ch] [bp-274h]@1 unsigned __int8 v7; // [sp+10h] [bp-270h]@1 char v8; // [sp+11h] [bp-26Fh]@1 char v9; // [sp+2Dh] [bp-253h]@1 char v10; // [sp+7Ch] [bp-204h]@2 unsigned int v11; // [sp+27Ch] [bp-4h]@1 int v12; // [sp+280h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; rgbValue = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 7); v7 = *(_BYTE *)(a2 + 9); v2 = *(_DWORD *)this; memcpy(&v8, (const void *)(a2 + 10), 0x1Cu); v9 = *(_BYTE *)(a2 + 38); LOBYTE(v3) = sub_4519F0(v2 + 4684, (char *)&rgbValue); if ( v3 ) { result = 1; } else { sprintf(&v10, "ERROR - CharSetQuest, nCharNo=%d, nQuestNo=%d, nStatus=%d", rgbValue, v6, v7); sub_446350(1, "Msg", "%s", &v10); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00406BF0) -------------------------------------------------------- signed int __thiscall sub_406BF0(void *this, int a2, int a3) { int v3; // eax@1 int v4; // eax@1 signed int result; // eax@2 int rgbValue; // [sp+0h] [bp-210h]@1 int v7; // [sp+4h] [bp-20Ch]@1 int v8; // [sp+8h] [bp-208h]@2 char v9; // [sp+Ch] [bp-204h]@2 unsigned int v10; // [sp+20Ch] [bp-4h]@1 int v11; // [sp+210h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; rgbValue = a2; v3 = *(_DWORD *)this + 4684; v7 = a3; LOBYTE(v4) = sub_451AC0(v3, &rgbValue); if ( v4 ) { result = 1; } else { sprintf(&v9, "ERROR - CharDelQuest, nCharNo=%d, nQuestNo=%d, Error=%d", rgbValue, v7, v8); sub_446350(1, "Msg", "%s", &v9); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00406CA0) -------------------------------------------------------- signed int __thiscall sub_406CA0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 __int16 v5; // cx@3 char v6; // dl@3 int v7; // eax@7 char v8; // dl@7 int v9; // ecx@7 signed int v10; // esi@7 signed __int16 v11; // [sp+0h] [bp-401Ch]@2 char v12; // [sp+4h] [bp-4018h]@7 int v13; // [sp+9h] [bp-4013h]@7 __int16 v14; // [sp+Dh] [bp-400Fh]@7 char v15; // [sp+Fh] [bp-400Dh]@7 char v16; // [sp+10h] [bp-400Ch]@7 __int16 v17; // [sp+30h] [bp-3FECh]@7 char v18; // [sp+2008h] [bp-2014h]@3 int v19; // [sp+200Dh] [bp-200Fh]@3 char v20[4]; // [sp+2011h] [bp-200Bh]@3 int v21; // [sp+2015h] [bp-2007h]@3 int v22; // [sp+2019h] [bp-2003h]@3 int v23; // [sp+201Dh] [bp-1FFFh]@3 int v24; // [sp+2021h] [bp-1FFBh]@3 __int16 v25; // [sp+2025h] [bp-1FF7h]@3 char v26; // [sp+2027h] [bp-1FF5h]@3 unsigned int v27; // [sp+400Ch] [bp-10h]@1 int v28; // [sp+4018h] [bp-4h]@3 int v29; // [sp+401Ch] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v11 = 2881; if ( sub_406B20((void *)v3, a2 + 2) ) { sub_44E180((int)&v18); v28 = 0; sub_44E310((int)&v18, 0x43Eu, 0x1Bu, 0); v5 = *(_WORD *)(a2 + 9); v6 = *(_BYTE *)(a2 + 11); v19 = *(_DWORD *)(a2 + 4); v25 = v5; v26 = v6; v22 = 0; v21 = 0; *(_DWORD *)v20 = 0; strncpy(v20, "Need", 0xCu); v23 = 0; v24 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v18); v28 = -1; nullsub_1(&v18); } else { v11 = 2883; } sub_44E180((int)&v12); v28 = 1; sub_44E310((int)&v12, 0x4404u, 0x29u, 0); v7 = *(_DWORD *)(a2 + 2); v8 = *(_BYTE *)(a2 + 8); v14 = *(_WORD *)(a2 + 6); v13 = v7; v15 = v8; memcpy(&v16, (const void *)(a2 + 9), 0x20u); v9 = *(_DWORD *)(v3 + 4); v17 = v11; v10 = sub_43BFB0(v9, (int)&v12); v28 = -1; nullsub_1(&v12); result = v10; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00406E50) -------------------------------------------------------- signed int __thiscall sub_406E50(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 signed __int16 v5; // bx@2 int v6; // edx@3 __int16 v7; // cx@7 __int16 v8; // dx@7 int v9; // ecx@7 signed int v10; // esi@7 char v11; // [sp+0h] [bp-4018h]@7 int v12; // [sp+5h] [bp-4013h]@7 __int16 v13; // [sp+9h] [bp-400Fh]@7 __int16 v14; // [sp+Bh] [bp-400Dh]@7 __int16 v15; // [sp+Dh] [bp-400Bh]@7 char v16; // [sp+2004h] [bp-2014h]@3 int v17; // [sp+2009h] [bp-200Fh]@3 char v18[4]; // [sp+200Dh] [bp-200Bh]@3 int v19; // [sp+2011h] [bp-2007h]@3 int v20; // [sp+2015h] [bp-2003h]@3 int v21; // [sp+2019h] [bp-1FFFh]@3 int v22; // [sp+201Dh] [bp-1FFBh]@3 __int16 v23; // [sp+2021h] [bp-1FF7h]@3 unsigned int v24; // [sp+4008h] [bp-10h]@1 int v25; // [sp+4014h] [bp-4h]@3 int v26; // [sp+4018h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = 2881; if ( sub_406BF0((void *)v3, *(_DWORD *)(a2 + 4), *(_WORD *)(a2 + 8)) ) { sub_44E180((int)&v16); v25 = 0; sub_44E310((int)&v16, 0x440u, 0x1Au, 0); v6 = *(_DWORD *)(a2 + 4); v23 = *(_WORD *)(a2 + 8); v17 = v6; v20 = 0; v19 = 0; *(_DWORD *)v18 = 0; strncpy(v18, "Need", 0xCu); v21 = 0; v22 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v16); v25 = -1; nullsub_1(&v16); } else { v5 = 2882; } sub_44E180((int)&v11); v25 = 1; sub_44E310((int)&v11, 0x4406u, 0xAu, 0); v7 = *(_WORD *)(a2 + 6); v8 = *(_WORD *)(a2 + 8); v12 = *(_DWORD *)(a2 + 2); v13 = v7; v9 = *(_DWORD *)(v3 + 4); v14 = v8; v15 = v5; v10 = sub_43BFB0(v9, (int)&v11); v25 = -1; nullsub_1(&v11); result = v10; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00406FF0) -------------------------------------------------------- signed int __thiscall sub_406FF0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 signed __int16 v6; // bx@2 __int16 v7; // cx@3 __int16 v8; // dx@7 __int16 v9; // ax@7 int v10; // ecx@7 signed int v11; // esi@7 char v12; // [sp+0h] [bp-4040h]@2 int v13; // [sp+2h] [bp-403Eh]@2 __int16 v14; // [sp+7h] [bp-4039h]@2 char v15; // [sp+9h] [bp-4037h]@2 int v16; // [sp+Ah] [bp-4036h]@2 int v17; // [sp+Eh] [bp-4032h]@2 int v18; // [sp+12h] [bp-402Eh]@2 int v19; // [sp+16h] [bp-402Ah]@2 int v20; // [sp+1Ah] [bp-4026h]@2 int v21; // [sp+1Eh] [bp-4022h]@2 int v22; // [sp+22h] [bp-401Eh]@2 char v23; // [sp+26h] [bp-401Ah]@2 char v24; // [sp+28h] [bp-4018h]@7 int v25; // [sp+2Dh] [bp-4013h]@7 __int16 v26; // [sp+31h] [bp-400Fh]@7 __int16 v27; // [sp+33h] [bp-400Dh]@7 __int16 v28; // [sp+35h] [bp-400Bh]@7 char v29; // [sp+202Ch] [bp-2014h]@3 int v30; // [sp+2031h] [bp-200Fh]@3 char v31[4]; // [sp+2035h] [bp-200Bh]@3 int v32; // [sp+2039h] [bp-2007h]@3 int v33; // [sp+203Dh] [bp-2003h]@3 int v34; // [sp+2041h] [bp-1FFFh]@3 int v35; // [sp+2045h] [bp-1FFBh]@3 __int16 v36; // [sp+2049h] [bp-1FF7h]@3 unsigned int v37; // [sp+4030h] [bp-10h]@1 int v38; // [sp+403Ch] [bp-4h]@3 int v39; // [sp+4040h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 8); v13 = *(_DWORD *)(a2 + 4); v14 = v5; v6 = 2881; v15 = 20; v16 = 0; v17 = 0; v18 = 0; v19 = 0; v20 = 0; v21 = 0; v22 = 0; v23 = 0; if ( sub_406B20((void *)v3, (int)&v12) ) { sub_44E180((int)&v29); v38 = 0; sub_44E310((int)&v29, 0x440u, 0x1Au, 0); v7 = *(_WORD *)(a2 + 8); v30 = *(_DWORD *)(a2 + 4); v36 = v7; v33 = 0; v32 = 0; *(_DWORD *)v31 = 0; strncpy(v31, "Need", 0xCu); v34 = 0; v35 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v29); v38 = -1; nullsub_1(&v29); } else { v6 = 2886; } sub_44E180((int)&v24); v38 = 1; sub_44E310((int)&v24, 0x440Au, 0xAu, 0); v8 = *(_WORD *)(a2 + 6); v9 = *(_WORD *)(a2 + 8); v25 = *(_DWORD *)(a2 + 2); v10 = *(_DWORD *)(v3 + 4); v26 = v8; v27 = v9; v28 = v6; v11 = sub_43BFB0(v10, (int)&v24); v38 = -1; nullsub_1(&v24); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004071D0) -------------------------------------------------------- signed int __thiscall sub_4071D0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 signed __int16 v6; // bx@2 __int16 v7; // cx@3 __int16 v8; // dx@7 __int16 v9; // ax@7 int v10; // ecx@7 signed int v11; // esi@7 char v12; // [sp+0h] [bp-4040h]@2 int v13; // [sp+2h] [bp-403Eh]@2 __int16 v14; // [sp+7h] [bp-4039h]@2 char v15; // [sp+9h] [bp-4037h]@2 int v16; // [sp+Ah] [bp-4036h]@2 int v17; // [sp+Eh] [bp-4032h]@2 int v18; // [sp+12h] [bp-402Eh]@2 int v19; // [sp+16h] [bp-402Ah]@2 int v20; // [sp+1Ah] [bp-4026h]@2 int v21; // [sp+1Eh] [bp-4022h]@2 int v22; // [sp+22h] [bp-401Eh]@2 char v23; // [sp+26h] [bp-401Ah]@2 char v24; // [sp+28h] [bp-4018h]@7 int v25; // [sp+2Dh] [bp-4013h]@7 __int16 v26; // [sp+31h] [bp-400Fh]@7 __int16 v27; // [sp+33h] [bp-400Dh]@7 __int16 v28; // [sp+35h] [bp-400Bh]@7 char v29; // [sp+202Ch] [bp-2014h]@3 int v30; // [sp+2031h] [bp-200Fh]@3 char v31[4]; // [sp+2035h] [bp-200Bh]@3 int v32; // [sp+2039h] [bp-2007h]@3 int v33; // [sp+203Dh] [bp-2003h]@3 int v34; // [sp+2041h] [bp-1FFFh]@3 int v35; // [sp+2045h] [bp-1FFBh]@3 __int16 v36; // [sp+2049h] [bp-1FF7h]@3 char v37; // [sp+204Bh] [bp-1FF5h]@3 unsigned int v38; // [sp+4030h] [bp-10h]@1 int v39; // [sp+403Ch] [bp-4h]@3 int v40; // [sp+4040h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 8); v13 = *(_DWORD *)(a2 + 4); v14 = v5; v15 = 20; v16 = 0; v17 = 0; v18 = 0; v19 = 0; v20 = 0; v21 = 0; v22 = 0; v23 = 0; v6 = 2881; if ( sub_406B20((void *)v3, (int)&v12) ) { sub_44E180((int)&v29); v39 = 0; sub_44E310((int)&v29, 0x43Eu, 0x1Bu, 0); v7 = *(_WORD *)(a2 + 8); v30 = *(_DWORD *)(a2 + 4); v36 = v7; v37 = 20; v33 = 0; v32 = 0; *(_DWORD *)v31 = 0; strncpy(v31, "Need", 0xCu); v34 = 0; v35 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v29); v39 = -1; nullsub_1(&v29); } else { v6 = 2883; } sub_44E180((int)&v24); v39 = 1; sub_44E310((int)&v24, 0x4419u, 0xAu, 0); v8 = *(_WORD *)(a2 + 6); v9 = *(_WORD *)(a2 + 8); v25 = *(_DWORD *)(a2 + 2); v10 = *(_DWORD *)(v3 + 4); v26 = v8; v28 = v9; v27 = v6; v11 = sub_43BFB0(v10, (int)&v24); v39 = -1; nullsub_1(&v24); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004073C0) -------------------------------------------------------- signed int __thiscall sub_4073C0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 unsigned int v6; // eax@2 int v7; // ST1C_4@2 int v8; // eax@2 __int16 v9; // cx@3 __int16 v10; // ax@3 signed int v11; // esi@3 __int16 v12; // dx@4 __int16 v13; // ax@4 signed int v14; // edi@4 int v15; // eax@4 __int16 v16; // cx@4 __int16 v17; // dx@4 unsigned int v18; // [sp-Ch] [bp-6140h]@1 char v19; // [sp+0h] [bp-6134h]@4 int v20; // [sp+5h] [bp-612Fh]@4 __int16 v21; // [sp+9h] [bp-612Bh]@4 __int16 v22; // [sp+Bh] [bp-6129h]@4 char v23; // [sp+2004h] [bp-4130h]@3 int v24; // [sp+2009h] [bp-412Bh]@3 __int16 v25; // [sp+200Dh] [bp-4127h]@3 __int16 v26; // [sp+200Fh] [bp-4125h]@3 int v27; // [sp+2011h] [bp-4123h]@3 char v28; // [sp+4008h] [bp-212Ch]@4 int v29; // [sp+400Dh] [bp-2127h]@4 int v30; // [sp+4011h] [bp-2123h]@4 int v31; // [sp+4015h] [bp-211Fh]@4 int v32; // [sp+4019h] [bp-211Bh]@4 __int16 v33; // [sp+401Dh] [bp-2117h]@4 __int16 v34; // [sp+401Fh] [bp-2115h]@4 int rgbValue; // [sp+600Ch] [bp-128h]@2 int v36; // [sp+6010h] [bp-124h]@2 int v37; // [sp+6014h] [bp-120h]@2 char v38; // [sp+6018h] [bp-11Ch]@2 __int16 v39; // [sp+601Ah] [bp-11Ah]@2 int v40; // [sp+601Ch] [bp-118h]@2 int v41; // [sp+6020h] [bp-114h]@2 char v42; // [sp+6024h] [bp-110h]@3 unsigned int v43; // [sp+6124h] [bp-10h]@1 int v44; // [sp+6130h] [bp-4h]@3 int v45; // [sp+6134h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v18 = (unsigned int)&v45 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 40); rgbValue = *(_DWORD *)(a2 + 36); v37 = *(_DWORD *)(a2 + 10); v6 = *(_WORD *)(a2 + 34); v36 = v5; v39 = v6 & 0x3FF; v40 = *(_WORD *)(a2 + 44); v7 = *(_DWORD *)v3 + 4684; v38 = (v6 >> 10) & 0x3F; v41 = 0; LOWORD(v8) = sub_46A440(v7, &rgbValue, a2 + 48, 0); if ( v8 ) { sprintf( &v42, "¾ÆÀÌÅÛ »", *(_DWORD *)(a2 + 36), *(_DWORD *)(a2 + 40), *(_WORD *)(a2 + 44), *(_DWORD *)(a2 + 10), v8, v18); sub_446350(1, "Msg", "%s", &v42); sub_44E180((int)&v23); v9 = *(_WORD *)(a2 + 8); v10 = *(_WORD *)(a2 + 6); v24 = *(_DWORD *)(a2 + 2); v26 = v9; v44 = 0; v25 = v10; v27 = v37; sub_44E310((int)&v23, 0x3403u, 0xCu, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v23); v44 = -1; nullsub_1(&v23); result = v11; } else { sub_44E180((int)&v19); v12 = *(_WORD *)(a2 + 6); v13 = *(_WORD *)(a2 + 8); v20 = *(_DWORD *)(a2 + 2); v44 = 1; v21 = v12; v22 = v13; sub_44E310((int)&v19, 0x3402u, 8u, 0); v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v19); sub_44E180((int)&v28); LOBYTE(v44) = 2; sub_44E310((int)&v28, 0x44Fu, 0x14u, 0); v15 = *(_DWORD *)(a2 + 10); v16 = *(_WORD *)(a2 + 44); v31 = *(_DWORD *)(a2 + 36); v17 = *(_WORD *)(a2 + 34); v33 = v16; v29 = v15; v30 = v15; v32 = *(_DWORD *)(a2 + 40); v34 = v17; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v28); LOBYTE(v44) = 1; nullsub_1(&v28); v44 = -1; nullsub_1(&v19); result = v14; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00407640) -------------------------------------------------------- signed int __thiscall sub_407640(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 signed int v5; // edi@2 int v6; // eax@2 signed int v7; // edx@2 int v8; // ebx@2 signed int v9; // eax@4 char *v10; // edx@5 int v11; // ecx@12 int v12; // edi@13 int v13; // edx@17 int v14; // edx@17 int v15; // eax@20 void *v16; // ecx@23 int v17; // ebx@27 int v18; // edx@28 int v19; // eax@28 int v20; // eax@28 int v21; // ebx@34 int v22; // eax@34 unsigned int v23; // ecx@35 int v24; // eax@35 int v25; // eax@35 char *v26; // edx@37 int v27; // ebx@39 unsigned int v28; // eax@40 int v29; // eax@40 int v30; // ecx@41 int v31; // ebx@44 unsigned int v32; // eax@45 int v33; // eax@45 int v34; // eax@45 int v35; // ebx@49 int v36; // eax@49 int v37; // ecx@51 double v38; // st7@59 signed __int64 v39; // qax@59 unsigned __int64 v40; // qcx@59 unsigned __int64 v41; // qcx@62 int v42; // ebx@65 int v43; // eax@65 int v44; // eax@66 int v45; // eax@66 char *v46; // [sp-20h] [bp-4AC4h]@32 const char *v47; // [sp-14h] [bp-4AB8h]@18 int v48; // [sp-14h] [bp-4AB8h]@24 unsigned int v49; // [sp-10h] [bp-4AB4h]@1 int v50; // [sp+0h] [bp-4AA4h]@49 int v51; // [sp+4h] [bp-4AA0h]@49 float v52; // [sp+8h] [bp-4A9Ch]@59 int v53; // [sp+Ch] [bp-4A98h]@2 int v54; // [sp+10h] [bp-4A94h]@12 int v55; // [sp+14h] [bp-4A90h]@2 unsigned __int64 TargetValue; // [sp+18h] [bp-4A8Ch]@51 int v57; // [sp+20h] [bp-4A84h]@1 char v58; // [sp+24h] [bp-4A80h]@2 int v59; // [sp+29h] [bp-4A7Bh]@2 int v60; // [sp+2Dh] [bp-4A77h]@2 int v61; // [sp+31h] [bp-4A73h]@2 int v62; // [sp+35h] [bp-4A6Fh]@2 int v63; // [sp+39h] [bp-4A6Bh]@46 unsigned __int64 v64; // [sp+3Dh] [bp-4A67h]@2 int v65; // [sp+2028h] [bp-2A7Ch]@65 unsigned __int64 v66; // [sp+2050h] [bp-2A54h]@66 char v67; // [sp+2388h] [bp-271Ch]@22 int v68; // [sp+238Dh] [bp-2717h]@22 unsigned __int64 v69; // [sp+2391h] [bp-2713h]@22 unsigned __int64 v70; // [sp+2399h] [bp-270Bh]@22 int rgbValue; // [sp+438Ch] [bp-718h]@27 unsigned __int64 v72; // [sp+43B4h] [bp-6F0h]@35 unsigned int v73; // [sp+43C0h] [bp-6E4h]@28 unsigned __int64 v74; // [sp+43CCh] [bp-6D8h]@40 int v75; // [sp+46ECh] [bp-3B8h]@17 unsigned int v76; // [sp+4754h] [bp-350h]@17 int v77; // [sp+4758h] [bp-34Ch]@17 int v78; // [sp+47C4h] [bp-2E0h]@28 unsigned int v79; // [sp+47C8h] [bp-2DCh]@28 unsigned int v80; // [sp+47D0h] [bp-2D4h]@17 int v81; // [sp+47D4h] [bp-2D0h]@17 unsigned __int64 v82; // [sp+47D8h] [bp-2CCh]@17 int v83; // [sp+47E0h] [bp-2C4h]@17 int v84; // [sp+47E4h] [bp-2C0h]@17 int v85; // [sp+47E8h] [bp-2BCh]@35 unsigned __int64 v86; // [sp+47F0h] [bp-2B4h]@35 int v87; // [sp+47F8h] [bp-2ACh]@45 char v88; // [sp+4800h] [bp-2A4h]@69 int v89; // [sp+4900h] [bp-1A4h]@2 __int16 v90; // [sp+494Ch] [bp-158h]@2 char v91; // [sp+494Eh] [bp-156h]@2 char v92; // [sp+4994h] [bp-110h]@16 unsigned int v93; // [sp+4A94h] [bp-10h]@1 int v94; // [sp+4AA0h] [bp-4h]@2 int v95; // [sp+4AA4h] [bp+0h]@1 v93 = (unsigned int)&v95 ^ __security_cookie; v49 = (unsigned int)&v95 ^ __security_cookie; v3 = this; v57 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v58); v5 = 0; v94 = 0; sub_44E310((int)&v58, 0x74ABu, 0x1Cu, 0); v6 = *(_DWORD *)v3 + 4684; v59 = *(_DWORD *)(a2 + 6); v62 = 0; v61 = 0; v60 = 0; v64 = 0i64; sub_468C10(v6, v59, 4, (int)&v89, 0x24u); v90 = 0; memset(&v91, 0, 0x46u); v7 = 0; v8 = 0; v55 = 0; v53 = 0; do { if ( v8 >= *(_DWORD *)(a2 + 10) ) break; v9 = 0; if ( (unsigned __int16)v89 > v5 ) { v10 = (char *)&v89 + 2; do { if ( v55 == *(_WORD *)v10 ) break; ++v9; v10 += 2; } while ( v9 < (unsigned __int16)v89 ); v8 = v53; v7 = v55; v5 = 0; } if ( v9 == (unsigned __int16)v89 ) { *(&v90 + v8++) = v7; v53 = v8; } ++v7; v55 = v7; } while ( v7 < 36 ); v11 = 0; v55 = 0; v54 = v5; if ( *(_DWORD *)(a2 + 10) > v5 ) { v12 = a2 + 15; while ( 1 ) { switch ( *(_BYTE *)(v12 - 1) ) { case 0: if ( v53 > v54 ) { sub_44BC10(&v76, *(_WORD *)v12, 11, 0, dword_4DFF4C); v13 = *(_DWORD *)(a2 + 6); v80 = v76; v81 = v77; WORD3(v82) = *(&v90 + v54++); LODWORD(v82) = v13; v14 = *(_DWORD *)v12; BYTE4(v82) = 4; v83 = v14; v84 = 0; if ( sub_4664A0(v12 - 1, &v75) ) { LOWORD(v15) = sub_46A440(*(_DWORD *)v57 + 4684, &v80, (int)&v75, 0); if ( !v15 ) { sub_44E180((int)&v67); LOBYTE(v94) = 1; sub_44E310((int)&v67, 0x44Fu, 0x14u, 0); v68 = *(_DWORD *)(a2 + 6); LODWORD(v70) = v77; v69 = __PAIR__(v76, (unsigned int)v82); WORD2(v70) = v83; WORD3(v70) = (WORD3(v82) ^ (WORD3(v70) & 0x3FF | 0x1000)) & 0x3FF ^ (WORD3(v70) & 0x3FF | 0x1000); goto LABEL_23; } v47 = (const char *)&unk_4ACEF0; } else { v47 = "¾ÆÀÌÅÛ ¼Ó¼º ¼ÂÆÃ ½ÇÆÐ"; } sprintf(&v92, v47, v49); sub_446350(1, "Msg", "%s", &v92); } else { sprintf( &v92, "CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ : item Create Fail, Inven full - GuildNo(%d), nRewardIndex(%d), nRewardItemID(%d)", *(_DWORD *)(a2 + 6), v11, *(_DWORD *)v12, v49); sub_446350(1, "Msg", "%s", &v92); } goto LABEL_72; case 1: v17 = v57; rgbValue = *(_DWORD *)(a2 + 6); if ( sub_451F50(*(_DWORD *)v57 + 4684, &rgbValue) ) { v18 = *(_DWORD *)(a2 + 6); v79 = v73 + *(_DWORD *)v12; v19 = *(_DWORD *)v17 + 4684; v78 = v18; LOBYTE(v20) = sub_452670(v19, &v78); if ( v20 ) { v61 = *(_DWORD *)v12; sub_44E180((int)&v67); LOBYTE(v94) = 2; sub_44E310((int)&v67, 0x4ACu, 0xCu, 0); v68 = *(_DWORD *)(a2 + 6); v69 = __PAIR__(v79, v73); goto LABEL_30; } sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_FAME 1, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v46 = &v92; } else { sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_FAME 2, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v46 = &v92; } goto LABEL_71; case 2: v21 = v57; v22 = *(_DWORD *)v57 + 4684; rgbValue = *(_DWORD *)(a2 + 6); if ( sub_451F50(v22, &rgbValue) ) { v23 = *(_DWORD *)v12; v85 = *(_DWORD *)(a2 + 6); v24 = *(_DWORD *)v21; v86 = v72 + v23; LOBYTE(v25) = sub_452710(v24 + 4684, &v85); if ( v25 ) { v60 = *(_DWORD *)v12; sub_44E180((int)&v67); LOBYTE(v94) = 3; sub_44E310((int)&v67, 0x4ABu, 0x14u, 0); v68 = *(_DWORD *)(a2 + 6); v70 = v86; v69 = v72; goto LABEL_23; } sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_MONEY 1, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v26 = &v92; } else { sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_MONEY 2, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v26 = &v92; } goto LABEL_70; case 3: v27 = v57; rgbValue = *(_DWORD *)(a2 + 6); if ( sub_451F50(*(_DWORD *)v57 + 4684, &rgbValue) ) { v28 = *(_DWORD *)v12; v85 = *(_DWORD *)(a2 + 6); v86 = v74 + v28; LOBYTE(v29) = sub_4527B0(*(_DWORD *)v27 + 4684, &v85); if ( v29 ) { v62 = *(_DWORD *)v12; sub_44E180((int)&v67); LOBYTE(v94) = 4; sub_44E310((int)&v67, 0x4ADu, 0x14u, 0); v30 = *(_DWORD *)(a2 + 6); v70 = v85; v68 = v30; v69 = v74; goto LABEL_23; } sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_EXP 1, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v26 = &v92; } else { sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_EXP 2, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v26 = &v92; } goto LABEL_70; case 4: v31 = v57; v80 = *(_DWORD *)(a2 + 6); v82 = 0i64; v83 = 0; if ( !sub_452850(*(_DWORD *)v57 + 4684, &v80) ) { sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_TOKEN 2, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v46 = &v92; goto LABEL_71; } v32 = *(_DWORD *)v12; v85 = *(_DWORD *)(a2 + 6); v86 = v82 + v32; v33 = *(_DWORD *)v31 + 4684; v87 = 0; LOBYTE(v34) = sub_452A40(v33, &v85); if ( !v34 ) { sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_TOKEN 1, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v46 = &v92; goto LABEL_71; } v63 = *(_DWORD *)v12; sub_44E180((int)&v67); LOBYTE(v94) = 5; sub_44E310((int)&v67, 0x4AFu, 0x14u, 0); v68 = *(_DWORD *)(a2 + 6); v70 = v86; v69 = v82; LABEL_30: v16 = (void *)dword_6E9EC0; if ( dword_6E9EC0 ) { v48 = (int)&v67; goto LABEL_25; } goto LABEL_26; case 5: v35 = v57; v36 = *(_DWORD *)v57 + 4684; v50 = *(_DWORD *)(a2 + 2); v51 = 0; if ( !sub_452B50(v36, &v50) ) { sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_MONEY_DIVISION 1, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); sub_446350(1, "Msg", "%s", &v92); } v37 = *(_DWORD *)v35 + 4684; TargetValue = 0i64; if ( sub_44E4A0(v37) ) sub_44E5A0(*(_DWORD *)v35 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v35 + 4684); if ( SHIDWORD(TargetValue) < 0 || SHIDWORD(TargetValue) <= 0 && !(_DWORD)TargetValue || !*(_DWORD *)v12 ) goto LABEL_72; if ( *(_DWORD *)v12 > 0x3E8u ) *(_DWORD *)v12 = 1000; v52 = (double)*(unsigned int *)v12 / 1000.0; v38 = v52 * (double)(signed __int64)TargetValue; v39 = (unsigned __int64)v38; LODWORD(v40) = *(_DWORD *)(v12 + 4); TargetValue = (unsigned __int64)v38; if ( (_DWORD)v40 ) { HIDWORD(v40) = 0; if ( v39 < (unsigned int)v40 ) { v39 = (unsigned int)v40; TargetValue = v40; } } LODWORD(v41) = *(_DWORD *)(v12 + 8); if ( (_DWORD)v41 ) { HIDWORD(v41) = 0; if ( v39 > (unsigned int)v41 ) TargetValue = v41; } v42 = v57; v43 = *(_DWORD *)v57 + 4684; v65 = *(_DWORD *)(a2 + 6); if ( !sub_451F50(v43, &v65) ) { sprintf( &v88, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_MONEY_DIVISION 3, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v26 = &v88; LABEL_70: v46 = v26; LABEL_71: sub_446350(1, "Msg", "%s", v46); goto LABEL_72; } v44 = *(_DWORD *)v42; v85 = *(_DWORD *)(a2 + 6); v86 = TargetValue + v66; LOBYTE(v45) = sub_452710(v44 + 4684, &v85); if ( !v45 ) { sprintf( &v92, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_REWARD_CREATE_REQ - ID_GUILD_MONEY_DIVISION 2, GuildNo=%d", *(_DWORD *)(a2 + 6), v49); v26 = &v92; goto LABEL_70; } v64 = TargetValue; sub_44E180((int)&v67); LOBYTE(v94) = 6; sub_44E310((int)&v67, 0x4B0u, 0x14u, 0); v68 = *(_DWORD *)(a2 + 6); v70 = v86; v69 = v66; LABEL_23: v16 = (void *)dword_6E9EC0; if ( dword_6E9EC0 ) { v48 = (int)&v67; LABEL_25: sub_44B7E0(v16, v48); } LABEL_26: LOBYTE(v94) = 0; nullsub_1(&v67); LABEL_72: v11 = v55 + 1; v12 += 33; v55 = v11; if ( v11 >= *(_DWORD *)(a2 + 10) ) goto LABEL_73; break; default: goto LABEL_72; } } } LABEL_73: sub_43BFB0(*(_DWORD *)(v57 + 4), (int)&v58); v94 = -1; nullsub_1(&v58); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4DFF4C: using guessed type int dword_4DFF4C; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00408120) -------------------------------------------------------- signed int __thiscall sub_408120(int this, int a2, int a3) { signed int result; // eax@1 __int16 v4; // cx@2 __int16 v5; // dx@2 __int16 v6; // bx@2 int v7; // edi@2 int v8; // eax@2 __int16 v9; // cx@2 int v10; // eax@2 int v11; // ecx@2 int v12; // ebx@2 int v13; // eax@2 int v14; // ST30_4@8 int v15; // ecx@8 int v16; // ST2C_4@8 int v17; // edx@8 unsigned int v18; // [sp-10h] [bp-2150h]@1 int v19; // [sp+0h] [bp-2140h]@1 char v20; // [sp+4h] [bp-213Ch]@2 int v21; // [sp+9h] [bp-2137h]@2 __int16 v22; // [sp+Dh] [bp-2133h]@2 __int16 v23; // [sp+Fh] [bp-2131h]@2 __int16 v24; // [sp+11h] [bp-212Fh]@2 __int16 v25; // [sp+13h] [bp-212Dh]@2 int v26; // [sp+15h] [bp-212Bh]@2 int v27; // [sp+19h] [bp-2127h]@2 int v28; // [sp+1Dh] [bp-2123h]@2 char v29; // [sp+21h] [bp-211Fh]@2 __int16 v30; // [sp+22h] [bp-211Eh]@2 int v31; // [sp+24h] [bp-211Ch]@2 int v32; // [sp+28h] [bp-2118h]@2 int rgbValue; // [sp+2008h] [bp-138h]@2 int v34; // [sp+200Ch] [bp-134h]@2 int v35; // [sp+2010h] [bp-130h]@2 int v36; // [sp+2014h] [bp-12Ch]@2 int v37; // [sp+2018h] [bp-128h]@2 int v38; // [sp+2020h] [bp-120h]@2 int v39; // [sp+2024h] [bp-11Ch]@2 int v40; // [sp+2028h] [bp-118h]@2 char v41; // [sp+2030h] [bp-110h]@8 unsigned int v42; // [sp+2130h] [bp-10h]@1 int v43; // [sp+213Ch] [bp-4h]@2 int v44; // [sp+2140h] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; v18 = (unsigned int)&v44 ^ __security_cookie; v19 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v20); v4 = *(_WORD *)(a2 + 6); v5 = *(_WORD *)(a2 + 8); v6 = *(_WORD *)(a2 + 25); v7 = *(_DWORD *)(a2 + 20); v21 = *(_DWORD *)(a2 + 2); v24 = 7232; v26 = *(_DWORD *)(a2 + 12); v35 = v26; v8 = *(_WORD *)(a2 + 25); v22 = v4; v9 = *(_WORD *)(a2 + 10); v23 = v5; LOBYTE(v5) = *(_BYTE *)(a2 + 24); v37 = v8; v10 = *(_DWORD *)(a2 + 27); v25 = v9; v11 = *(_DWORD *)(a2 + 16); v30 = v6; v12 = *(_DWORD *)(a2 + 27); v28 = v7; v34 = v7; v29 = v5; v38 = v10; v13 = *(_DWORD *)v19; v27 = v11; rgbValue = v11; v31 = v12; v32 = *(_DWORD *)(a2 + 31); v36 = (unsigned __int8)v5; v39 = v32; v40 = 0; v43 = 0; if ( !sub_453720(v13 + 4684, &rgbValue) ) { switch ( v40 ) { case -1421: v24 = 7238; break; case -1422: v24 = 7237; break; case -1423: v24 = 7236; break; case -1424: v24 = 7239; break; default: v14 = *(_DWORD *)(a2 + 31); v15 = *(_BYTE *)(a2 + 24); v16 = *(_DWORD *)(a2 + 27); v17 = *(_DWORD *)(a2 + 12); v24 = 7233; sprintf( &v41, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_JOIN_NEW_REQ, GTNo(%d), GuildNo(%d), CharNo(%d), MinLevel(%d), MinMember(%d), ProposalMoney(%I64d), nRet(%d)", *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), v17, v15, *(_WORD *)(a2 + 25), v16, v14, v40, v18); sub_446350(1, "Msg", "%s", &v41); break; } } sub_44E310((int)&v20, 0x74E6u, 0x23u, 0); sub_43BFB0(*(_DWORD *)(v19 + 4), (int)&v20); v43 = -1; nullsub_1(&v20); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00408370) -------------------------------------------------------- signed int __thiscall sub_408370(int this, int a2, int a3) { int v3; // esi@1 __int16 v4; // cx@2 int v5; // eax@2 int v6; // ST18_4@3 int v7; // ecx@4 int v8; // edi@4 signed int result; // eax@9 unsigned int v10; // [sp-10h] [bp-2138h]@1 char v11; // [sp+0h] [bp-2128h]@5 int rgbValue; // [sp+8h] [bp-2120h]@2 int v13; // [sp+Ch] [bp-211Ch]@2 char TargetValue; // [sp+12h] [bp-2116h]@5 char v15; // [sp+13h] [bp-2115h]@5 char v16; // [sp+14h] [bp-2114h]@2 __int16 v17; // [sp+19h] [bp-210Fh]@2 char v18; // [sp+1Bh] [bp-210Dh]@4 __int16 v19; // [sp+1Ch] [bp-210Ch]@2 int v20; // [sp+1Eh] [bp-210Ah]@2 __int16 v21; // [sp+22h] [bp-2106h]@2 char v22[8180]; // [sp+24h] [bp-2104h]@5 char v23; // [sp+2018h] [bp-110h]@3 unsigned int v24; // [sp+2118h] [bp-10h]@1 int v25; // [sp+2124h] [bp-4h]@2 int v26; // [sp+2128h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v10 = (unsigned int)&v26 ^ __security_cookie; v3 = this; if ( sub_43B000(this, a2) ) { sub_44E180((int)&v16); v4 = *(_WORD *)(a2 + 2); v17 = 7240; v20 = *(_DWORD *)(a2 + 4); rgbValue = v20; v5 = *(_DWORD *)v3; v19 = v4; v21 = 0; v13 = 0; v25 = 0; if ( !sub_453990(v5 + 4684, &rgbValue) ) { v6 = *(_DWORD *)(a2 + 4); v17 = 7241; sprintf(&v23, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_JOIN_LIST_REQ, GTNo(%d)", v6, v10); sub_446350(1, "Msg", "%s", &v23); } v7 = *(_DWORD *)v3 + 4684; v8 = 0; v18 = 1; if ( sub_44E4A0(v7) ) { do { sub_44E570(*(_DWORD *)v3 + 4684, &v22[46 * (unsigned __int16)v8]); sub_44E5A0(*(_DWORD *)v3 + 4684, &v11); sub_44E510(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v3 + 4684, &v15); ++v8; if ( 46 * (unsigned __int16)v8 + 11 >= 7787 ) { v21 = v8; sub_44E310((int)&v16, 0x74ECu, 46 * (unsigned __int16)v8 + 11, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); v25 = -1; nullsub_1(&v16); goto LABEL_12; } v8 = 0; v18 = 0; } } while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v18 |= 2u; v21 = v8; sub_44E310((int)&v16, 0x74ECu, 46 * (unsigned __int16)v8 + 11, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v25 = -1; nullsub_1(&v16); result = 1; } else { LABEL_12: result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; // 408370: using guessed type char var_2104[8180]; //----- (004085D0) -------------------------------------------------------- signed int __thiscall sub_4085D0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // eax@2 int v8; // ST1C_4@3 int v9; // eax@4 int v10; // ST1C_4@5 char v11; // bl@6 unsigned int v12; // [sp-10h] [bp-213Ch]@1 int v13; // [sp+0h] [bp-212Ch]@4 int v14; // [sp+4h] [bp-2128h]@4 char v15; // [sp+8h] [bp-2124h]@2 __int16 v16; // [sp+Dh] [bp-211Fh]@2 int v17; // [sp+Fh] [bp-211Dh]@2 char v18; // [sp+13h] [bp-2119h]@2 char TargetValue[8184]; // [sp+14h] [bp-2118h]@8 int rgbValue; // [sp+200Ch] [bp-120h]@2 int v21; // [sp+2010h] [bp-11Ch]@2 int v22; // [sp+2014h] [bp-118h]@2 int v23; // [sp+2018h] [bp-114h]@2 char v24; // [sp+201Ch] [bp-110h]@3 unsigned int v25; // [sp+211Ch] [bp-10h]@1 int v26; // [sp+2128h] [bp-4h]@2 int v27; // [sp+212Ch] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v12 = (unsigned int)&v27 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v15); v5 = *(_BYTE *)(a2 + 6); v6 = *(_WORD *)(a2 + 7); v16 = 7248; v17 = *(_DWORD *)(a2 + 2); rgbValue = v17; v7 = *(_DWORD *)v3; v21 = v5; v18 = 0; v22 = v6; v23 = 0; v26 = 0; if ( !sub_453A90(v7 + 4684, &rgbValue) ) { v8 = *(_DWORD *)(a2 + 2); v16 = 7249; sprintf( &v24, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_FINAL_SELECTION_REQ, GTNo(%d), nRet(%d)", v8, v23, v12); sub_446350(1, "Msg", "%s", &v24); } v9 = *(_DWORD *)v3 + 4684; v13 = *(_DWORD *)(a2 + 2); v14 = 0; if ( !sub_453CA0(v9, &v13) ) { v10 = *(_DWORD *)(a2 + 2); v16 = 7249; sprintf( &v24, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_FINAL_SELECTION_REQ, GTNo(%d), nRet(%d)", v10, v23, v12); sub_446350(1, "Msg", "%s", &v24); } v11 = 0; if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { while ( (unsigned __int8)v11 <= 0x10u ) { sub_44E570(*(_DWORD *)v3 + 4684, &TargetValue[4 * (unsigned __int8)v11++]); if ( !sub_44E4A0(*(_DWORD *)v3 + 4684) ) goto LABEL_11; } sprintf( &v24, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_FINAL_SELECTION_REQ, GTNo(%d), nRet(%d), JoinGuildNum(%d)", *(_DWORD *)(a2 + 2), v23, (unsigned __int8)v11, v12); sub_446350(1, "Msg", "%s", &v24); } LABEL_11: sub_44E4D0(*(_DWORD *)v3 + 4684); v18 = v11; sub_44E310((int)&v15, 0x74E8u, 4 * (unsigned __int8)v11 + 7, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v15); v26 = -1; nullsub_1(&v15); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4085D0: using guessed type char TargetValue[8184]; //----- (00408830) -------------------------------------------------------- signed int __thiscall sub_408830(int this, int a2, int a3) { int v3; // esi@1 int v4; // edx@2 int v5; // eax@2 int v6; // ebx@2 int v7; // ST18_4@3 int v8; // ecx@4 __int16 *v9; // edi@5 signed int result; // eax@9 unsigned int v11; // [sp-10h] [bp-212Ch]@1 int rgbValue; // [sp+0h] [bp-211Ch]@2 int v13; // [sp+4h] [bp-2118h]@2 char v14; // [sp+8h] [bp-2114h]@2 __int16 v15; // [sp+Dh] [bp-210Fh]@2 char v16; // [sp+Fh] [bp-210Dh]@2 __int16 v17; // [sp+10h] [bp-210Ch]@2 char v18; // [sp+200Ch] [bp-110h]@3 unsigned int v19; // [sp+210Ch] [bp-10h]@1 int v20; // [sp+2118h] [bp-4h]@2 int v21; // [sp+211Ch] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v11 = (unsigned int)&v21 ^ __security_cookie; v3 = this; if ( sub_43B000(this, a2) ) { sub_44E180((int)&v14); v4 = *(_DWORD *)(a2 + 2); v15 = 3408; v5 = *(_DWORD *)v3; v17 = 0; v6 = 0; v16 = 1; rgbValue = v4; v13 = 0; v20 = 0; if ( !sub_453990(v5 + 4684, &rgbValue) ) { v7 = *(_DWORD *)(a2 + 2); v15 = 3408; sprintf(&v18, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_ENTER_LIST_DB_GET_REQ, GTNo(%d)", v7, v11); sub_446350(1, "Msg", "%s", &v18); } v8 = *(_DWORD *)v3 + 4684; v16 = 1; if ( sub_44E4A0(v8) ) { do { v9 = &v15 + 10 * (unsigned __int16)v6; sub_44E570(*(_DWORD *)v3 + 4684, (char *)v9 + 5); sub_44E5D0(*(_DWORD *)v3 + 4684, (char *)v9 + 17); sub_44E4E0(*(_DWORD *)v3 + 4684, (char *)v9 + 9); sub_44E4E0(*(_DWORD *)v3 + 4684, (char *)v9 + 13); ++v6; if ( 20 * (unsigned __int16)v6 + 5 >= 7787 ) { v17 = v6; sub_44E310((int)&v14, 0x74F7u, 20 * (unsigned __int16)v6 + 5, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); v20 = -1; nullsub_1(&v14); goto LABEL_12; } v6 = 0; v16 = 0; } } while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v16 |= 2u; v17 = v6; sub_44E310((int)&v14, 0x74F7u, 20 * (unsigned __int16)v6 + 5, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14); v20 = -1; nullsub_1(&v14); result = 1; } else { LABEL_12: result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00408A80) -------------------------------------------------------- signed int __thiscall sub_408A80(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // eax@2 int rgbValue; // [sp+8h] [bp-110h]@2 int v8; // [sp+Ch] [bp-10Ch]@2 int v9; // [sp+10h] [bp-108h]@2 char v10; // [sp+14h] [bp-104h]@3 unsigned int v11; // [sp+114h] [bp-4h]@1 int v12; // [sp+118h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)v3 + 4684; v8 = v5; v9 = 0; if ( !sub_453E70(v6, &rgbValue) ) { sprintf( &v10, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_REFUND_NOTICE_DB_SET_REQ, GTNo(%d), nNo(%d), nRet(%d)", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6), v9); sub_446350(1, "Msg", "%s", &v10); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00408B40) -------------------------------------------------------- signed int __thiscall sub_408B40(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 unsigned int v6; // eax@2 int v7; // ST1C_4@2 int v8; // eax@2 __int16 v9; // cx@3 __int16 v10; // ax@3 signed int v11; // esi@3 __int16 v12; // dx@4 __int16 v13; // ax@4 signed int v14; // edi@4 int v15; // eax@4 __int16 v16; // cx@4 __int16 v17; // dx@4 unsigned int v18; // [sp-Ch] [bp-6140h]@1 char v19; // [sp+0h] [bp-6134h]@4 int v20; // [sp+5h] [bp-612Fh]@4 __int16 v21; // [sp+9h] [bp-612Bh]@4 __int16 v22; // [sp+Bh] [bp-6129h]@4 char v23; // [sp+2004h] [bp-4130h]@3 int v24; // [sp+2009h] [bp-412Bh]@3 __int16 v25; // [sp+200Dh] [bp-4127h]@3 __int16 v26; // [sp+200Fh] [bp-4125h]@3 int v27; // [sp+2011h] [bp-4123h]@3 char v28; // [sp+4008h] [bp-212Ch]@4 int v29; // [sp+400Dh] [bp-2127h]@4 int v30; // [sp+4011h] [bp-2123h]@4 int v31; // [sp+4015h] [bp-211Fh]@4 int v32; // [sp+4019h] [bp-211Bh]@4 __int16 v33; // [sp+401Dh] [bp-2117h]@4 __int16 v34; // [sp+401Fh] [bp-2115h]@4 int rgbValue; // [sp+600Ch] [bp-128h]@2 int v36; // [sp+6010h] [bp-124h]@2 int v37; // [sp+6014h] [bp-120h]@2 char v38; // [sp+6018h] [bp-11Ch]@2 __int16 v39; // [sp+601Ah] [bp-11Ah]@2 int v40; // [sp+601Ch] [bp-118h]@2 int v41; // [sp+6020h] [bp-114h]@2 char v42; // [sp+6024h] [bp-110h]@3 unsigned int v43; // [sp+6124h] [bp-10h]@1 int v44; // [sp+6130h] [bp-4h]@3 int v45; // [sp+6134h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v18 = (unsigned int)&v45 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 40); rgbValue = *(_DWORD *)(a2 + 36); v37 = *(_DWORD *)(a2 + 10); v6 = *(_WORD *)(a2 + 34); v36 = v5; v39 = v6 & 0x3FF; v40 = *(_WORD *)(a2 + 44); v7 = *(_DWORD *)v3 + 4684; v38 = (v6 >> 10) & 0x3F; v41 = 0; LOWORD(v8) = sub_46A440(v7, &rgbValue, a2 + 48, 0); if ( v8 ) { sprintf( &v42, "¾ÆÀÌÅÛ »", *(_DWORD *)(a2 + 36), *(_DWORD *)(a2 + 40), *(_WORD *)(a2 + 44), *(_DWORD *)(a2 + 10), v8, v18); sub_446350(1, "Msg", "%s", &v42); sub_44E180((int)&v23); v9 = *(_WORD *)(a2 + 8); v10 = *(_WORD *)(a2 + 6); v24 = *(_DWORD *)(a2 + 2); v26 = v9; v44 = 0; v25 = v10; v27 = v37; sub_44E310((int)&v23, 0x3469u, 0xCu, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v23); v44 = -1; nullsub_1(&v23); result = v11; } else { sub_44E180((int)&v19); v12 = *(_WORD *)(a2 + 6); v13 = *(_WORD *)(a2 + 8); v20 = *(_DWORD *)(a2 + 2); v44 = 1; v21 = v12; v22 = v13; sub_44E310((int)&v19, 0x3468u, 8u, 0); v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v19); sub_44E180((int)&v28); LOBYTE(v44) = 2; sub_44E310((int)&v28, 0x44Fu, 0x14u, 0); v15 = *(_DWORD *)(a2 + 10); v16 = *(_WORD *)(a2 + 44); v31 = *(_DWORD *)(a2 + 36); v17 = *(_WORD *)(a2 + 34); v33 = v16; v29 = v15; v30 = v15; v32 = *(_DWORD *)(a2 + 40); v34 = v17; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v28); LOBYTE(v44) = 1; nullsub_1(&v28); v44 = -1; nullsub_1(&v19); result = v14; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00408DC0) -------------------------------------------------------- signed int __thiscall sub_408DC0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 const void *v6; // esi@2 unsigned int v7; // eax@2 unsigned int v8; // edx@2 int v9; // eax@2 int v10; // ST00_4@2 int v11; // eax@2 int v12; // ecx@3 int v13; // eax@3 unsigned __int16 v14; // ST00_2@3 int v15; // eax@6 signed int v16; // esi@6 char v17; // [sp+0h] [bp-6040h]@3 int v18; // [sp+4h] [bp-603Ch]@3 int v19; // [sp+8h] [bp-6038h]@2 char v20; // [sp+Ch] [bp-6034h]@6 int v21; // [sp+11h] [bp-602Fh]@6 __int16 v22; // [sp+15h] [bp-602Bh]@6 __int16 v23; // [sp+17h] [bp-6029h]@6 char v24; // [sp+2010h] [bp-4030h]@3 char v25; // [sp+4014h] [bp-202Ch]@3 int v26; // [sp+4019h] [bp-2027h]@3 char v27[4]; // [sp+401Dh] [bp-2023h]@3 int v28; // [sp+4021h] [bp-201Fh]@3 int v29; // [sp+4025h] [bp-201Bh]@3 int v30; // [sp+4029h] [bp-2017h]@3 int v31; // [sp+402Dh] [bp-2013h]@3 __int16 v32; // [sp+4031h] [bp-200Fh]@3 unsigned __int16 v33; // [sp+4033h] [bp-200Dh]@3 int v34; // [sp+4035h] [bp-200Bh]@3 int v35; // [sp+4039h] [bp-2007h]@3 __int16 v36; // [sp+403Dh] [bp-2003h]@3 int rgbValue; // [sp+6018h] [bp-28h]@2 int v38; // [sp+601Ch] [bp-24h]@2 int v39; // [sp+6020h] [bp-20h]@2 char v40; // [sp+6024h] [bp-1Ch]@2 __int16 v41; // [sp+6026h] [bp-1Ah]@2 int v42; // [sp+6028h] [bp-18h]@2 int v43; // [sp+602Ch] [bp-14h]@2 unsigned int v44; // [sp+6030h] [bp-10h]@1 int v45; // [sp+603Ch] [bp-4h]@3 int v46; // [sp+6040h] [bp+0h]@1 v44 = (unsigned int)&v46 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 40); v6 = (const void *)(a2 + 2); rgbValue = *(_DWORD *)(a2 + 36); v39 = *(_DWORD *)(a2 + 10); v7 = *(_WORD *)(a2 + 34); v38 = v5; v8 = v7; v41 = v7 & 0x3FF; v9 = *(_WORD *)(a2 + 44); v19 = a2 + 48; v42 = v9; v10 = *(_DWORD *)v3 + 4684; v40 = (v8 >> 10) & 0x3F; v43 = 0; LOWORD(v11) = sub_46A440(v10, &rgbValue, a2 + 48, 0); if ( v11 ) { sub_44E180((int)&v20); v15 = *(_DWORD *)v6; v22 = *(_WORD *)(a2 + 6); v45 = 2; v21 = v15; v23 = 962; sub_44E310((int)&v20, 0x3406u, 8u, 0); v16 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v20); v45 = -1; nullsub_1(&v20); result = v16; } else { sub_44E180((int)&v24); v45 = 0; sub_44E310((int)&v24, 0x3405u, 6u, v6); v18 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v24); sub_44E180((int)&v25); LOBYTE(v45) = 1; sub_44E310((int)&v25, 0x43Fu, 0x26u, 0); v26 = *(_DWORD *)(a2 + 10); v29 = 0; v28 = 0; *(_DWORD *)v27 = 0; strncpy(v27, "Need", 0xCu); v12 = *(_DWORD *)(a2 + 40); v13 = *(_DWORD *)(a2 + 36); v32 = *(_WORD *)(a2 + 8); v35 = v12; v34 = v13; v14 = *(_WORD *)(a2 + 44); v30 = 0; v31 = 0; v33 = v14; sub_4038C0(v14, v19, (int)&v19, (int)&v17); v36 = v19; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v25); LOBYTE(v45) = 0; nullsub_1(&v25); v45 = -1; nullsub_1(&v24); result = v18; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00409020) -------------------------------------------------------- signed int __thiscall sub_409020(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 const void *v5; // esi@2 int v6; // eax@3 int v7; // ecx@4 int v8; // eax@4 unsigned __int16 v9; // ST08_2@4 int v10; // eax@9 signed int v11; // esi@9 char v12[4]; // [sp+0h] [bp-6028h]@2 int v13; // [sp+4h] [bp-6024h]@2 char v14[4]; // [sp+8h] [bp-6020h]@2 char v15; // [sp+Ch] [bp-601Ch]@9 int v16; // [sp+11h] [bp-6017h]@9 __int16 v17; // [sp+15h] [bp-6013h]@9 __int16 v18; // [sp+17h] [bp-6011h]@9 char v19; // [sp+2010h] [bp-4018h]@4 char v20; // [sp+4014h] [bp-2014h]@4 int v21; // [sp+4019h] [bp-200Fh]@4 char v22[4]; // [sp+401Dh] [bp-200Bh]@4 int v23; // [sp+4021h] [bp-2007h]@4 int v24; // [sp+4025h] [bp-2003h]@4 int v25; // [sp+4029h] [bp-1FFFh]@4 int v26; // [sp+402Dh] [bp-1FFBh]@4 __int16 v27; // [sp+4031h] [bp-1FF7h]@4 unsigned __int16 v28; // [sp+4033h] [bp-1FF5h]@4 int v29; // [sp+4035h] [bp-1FF3h]@4 int v30; // [sp+4039h] [bp-1FEFh]@4 __int16 v31; // [sp+403Dh] [bp-1FEBh]@4 unsigned int v32; // [sp+6018h] [bp-10h]@1 int v33; // [sp+6024h] [bp-4h]@4 int v34; // [sp+6028h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( !result ) return result; v5 = (const void *)(a2 + 2); v13 = a2 + 24; if ( !sub_4038C0(*(_WORD *)(a2 + 10), a2 + 24, (int)v14, (int)v12) ) { *(_DWORD *)v14 = 964; goto LABEL_9; } LOWORD(v6) = sub_4600E0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 12), *(_DWORD *)(a2 + 16), v12[0], v14[0], 0); if ( v6 ) { *(_DWORD *)v14 = 963; LABEL_9: sub_44E180((int)&v15); v10 = *(_DWORD *)v5; v17 = *(_WORD *)(a2 + 6); v33 = 2; v16 = v10; v18 = *(_WORD *)v14; sub_44E310((int)&v15, 0x3409u, 8u, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v15); v33 = -1; nullsub_1(&v15); return v11; } sub_44E180((int)&v19); v33 = 0; sub_44E310((int)&v19, 0x3408u, 6u, v5); *(_DWORD *)v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v19); sub_44E180((int)&v20); LOBYTE(v33) = 1; sub_44E310((int)&v20, 0x43Fu, 0x26u, 0); v21 = *(_DWORD *)(a2 + 4); v24 = 0; v23 = 0; *(_DWORD *)v22 = 0; strncpy(v22, "Need", 0xCu); v7 = *(_DWORD *)(a2 + 16); v8 = *(_DWORD *)(a2 + 12); v27 = *(_WORD *)(a2 + 8); v30 = v7; v29 = v8; v9 = *(_WORD *)(a2 + 10); v25 = 0; v26 = 0; v28 = v9; sub_4038C0(v9, v13, (int)&v13, (int)v14); v31 = v13; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v20); LOBYTE(v33) = 0; nullsub_1(&v20); v33 = -1; nullsub_1(&v19); return *(_DWORD *)v12; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004092A0) -------------------------------------------------------- signed int __thiscall sub_4092A0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 unsigned int v7; // eax@2 int v8; // edx@2 int v9; // ST38_4@2 int v10; // ST34_4@2 int v11; // ST2C_4@2 int v12; // ST20_4@2 int v13; // eax@2 signed __int16 v14; // bx@3 int v15; // edx@5 __int16 v16; // ax@5 signed int v17; // esi@5 __int16 v18; // dx@6 int v19; // eax@6 int v20; // eax@6 int v21; // ecx@6 int v22; // ecx@6 __int16 v23; // ax@6 int v24; // eax@8 __int16 v25; // dx@8 int v26; // eax@8 unsigned int v27; // ecx@10 int v28; // edi@10 unsigned int v29; // [sp-10h] [bp-816Ch]@1 char v30; // [sp+0h] [bp-815Ch]@6 __int16 v31; // [sp+4h] [bp-8158h]@6 int v32; // [sp+8h] [bp-8154h]@6 char v33; // [sp+Ch] [bp-8150h]@5 int v34; // [sp+11h] [bp-814Bh]@5 __int16 v35; // [sp+15h] [bp-8147h]@5 __int16 v36; // [sp+17h] [bp-8145h]@5 __int16 v37; // [sp+19h] [bp-8143h]@5 char v38; // [sp+2010h] [bp-614Ch]@6 int v39; // [sp+2015h] [bp-6147h]@6 __int16 v40; // [sp+2019h] [bp-6143h]@6 __int16 v41; // [sp+201Bh] [bp-6141h]@6 char v42; // [sp+4014h] [bp-4148h]@8 int v43; // [sp+4019h] [bp-4143h]@8 int v44; // [sp+401Dh] [bp-413Fh]@8 __int16 v45; // [sp+4021h] [bp-413Bh]@8 int v46; // [sp+4023h] [bp-4139h]@8 int v47; // [sp+4027h] [bp-4135h]@8 __int16 v48; // [sp+402Bh] [bp-4131h]@8 char v49; // [sp+6018h] [bp-2144h]@6 int v50; // [sp+601Dh] [bp-213Fh]@6 char v51; // [sp+6021h] [bp-213Bh]@6 int v52; // [sp+6022h] [bp-213Ah]@6 int v53; // [sp+6028h] [bp-2134h]@6 __int16 v54; // [sp+602Ch] [bp-2130h]@6 __int16 v55; // [sp+602Eh] [bp-212Eh]@6 int v56; // [sp+6030h] [bp-212Ch]@6 int rgbValue; // [sp+801Ch] [bp-140h]@10 unsigned int v58; // [sp+8024h] [bp-138h]@10 int v59; // [sp+8028h] [bp-134h]@10 int v60; // [sp+802Ch] [bp-130h]@10 int v61; // [sp+8030h] [bp-12Ch]@10 int v62; // [sp+8034h] [bp-128h]@2 int v63; // [sp+8038h] [bp-124h]@2 int v64; // [sp+803Ch] [bp-120h]@2 char v65; // [sp+8040h] [bp-11Ch]@2 __int16 v66; // [sp+8042h] [bp-11Ah]@2 int v67; // [sp+8044h] [bp-118h]@2 int v68; // [sp+8048h] [bp-114h]@2 char v69; // [sp+804Ch] [bp-110h]@5 unsigned int v70; // [sp+814Ch] [bp-10h]@1 int v71; // [sp+8158h] [bp-4h]@5 int v72; // [sp+815Ch] [bp+0h]@1 v70 = (unsigned int)&v72 ^ __security_cookie; v29 = (unsigned int)&v72 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 38); v6 = *(_DWORD *)(a2 + 8); v62 = *(_DWORD *)(a2 + 34); v7 = *(_WORD *)(a2 + 32); v63 = v5; v64 = v6; v8 = *(_WORD *)(a2 + 42); v65 = (v7 >> 10) & 0x3F; v9 = *(_DWORD *)(a2 + 56); v67 = v8; v10 = *(_DWORD *)(a2 + 52); v11 = *(_DWORD *)(a2 + 48); v66 = v7 & 0x3FF; v12 = *(_DWORD *)v3 + 4684; v68 = 0; v13 = sub_46A220(v12, &v62, a2 + 66, v11, 0, v10, v9); if ( v13 ) { v14 = 518; if ( v13 == 1 ) v14 = 517; sprintf( &v69, "¾ÆÀÌÅÛ ±¸ÀÔ(»", *(_DWORD *)(a2 + 34), *(_DWORD *)(a2 + 38), *(_WORD *)(a2 + 42), *(_DWORD *)(a2 + 48), *(_DWORD *)(a2 + 52), *(_DWORD *)(a2 + 8), (unsigned int)*(_WORD *)(a2 + 32) >> 10, *(_WORD *)(a2 + 32) & 0x3FF, v13, v29); sub_446350(1, "Msg", "%s", &v69); sub_44E180((int)&v33); v15 = *(_DWORD *)(a2 + 2); v16 = *(_WORD *)(a2 + 6); v37 = *(_WORD *)(a2 + 46); v71 = 3; v34 = v15; v35 = v16; v36 = v14; sub_44E310((int)&v33, 0x340Cu, 0xAu, 0); v17 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v33); v71 = -1; nullsub_1(&v33); result = v17; } else { sub_44E180((int)&v38); v18 = *(_WORD *)(a2 + 46); v19 = *(_DWORD *)(a2 + 2); v40 = *(_WORD *)(a2 + 6); v71 = 0; v39 = v19; v41 = v18; sub_44E310((int)&v38, 0x340Bu, 8u, 0); v32 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v38); sub_44E180((int)&v49); LOBYTE(v71) = 1; sub_44E310((int)&v49, 0x448u, 0x17u, 0); v20 = *(_DWORD *)(a2 + 34); v21 = *(_DWORD *)(a2 + 8); LOWORD(v52) = *(_WORD *)(a2 + 42); v50 = v21; v22 = *(_DWORD *)(a2 + 38); *(int *)((char *)&v52 + 2) = v20; v53 = v22; v51 = 0; sub_4038C0(v52, a2 + 66, (int)&v31, (int)&v30); v23 = *(_WORD *)(a2 + 32); v56 = *(_DWORD *)(a2 + 48); v54 = v31; v55 = v23; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v49); sub_44E180((int)&v42); LOBYTE(v71) = 2; sub_44E310((int)&v42, 0xC80Du, 0x14u, 0); v24 = *(_DWORD *)(a2 + 60); v25 = *(_WORD *)(a2 + 42); v44 = *(_DWORD *)(a2 + 8); v48 = *(_WORD *)(a2 + 64); v43 = v24; v26 = *(_DWORD *)(a2 + 48); v45 = v25; v46 = v26; v47 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v42); v27 = 100 * *(_DWORD *)(a2 + 48); v28 = *(_DWORD *)v3; rgbValue = *(_DWORD *)(a2 + 8); v58 = v27 / 0x3E8; v60 = 10; v59 = 0; v61 = 0; sub_4564B0(v28 + 4684, &rgbValue); LOBYTE(v71) = 1; nullsub_1(&v42); LOBYTE(v71) = 0; nullsub_1(&v49); v71 = -1; nullsub_1(&v38); result = v32; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00409660) -------------------------------------------------------- signed int __thiscall sub_409660(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@3 int v6; // eax@3 int v7; // ecx@3 int v8; // eax@3 int v9; // edx@3 int v10; // eax@3 int v11; // eax@3 __int16 v12; // dx@7 int v13; // eax@7 __int16 v14; // dx@7 int v15; // eax@7 int v16; // ecx@7 int v17; // eax@9 __int16 v18; // dx@9 int v19; // eax@9 unsigned int v20; // ecx@11 int v21; // eax@11 __int16 v22; // cx@13 __int16 v23; // dx@13 signed int v24; // esi@13 int v25; // [sp+0h] [bp-8070h]@2 int v26; // [sp+4h] [bp-806Ch]@2 char v27; // [sp+8h] [bp-8068h]@13 int v28; // [sp+Dh] [bp-8063h]@13 __int16 v29; // [sp+11h] [bp-805Fh]@13 __int16 v30; // [sp+13h] [bp-805Dh]@13 __int16 v31; // [sp+15h] [bp-805Bh]@13 char v32; // [sp+200Ch] [bp-6064h]@7 int v33; // [sp+2011h] [bp-605Fh]@7 __int16 v34; // [sp+2015h] [bp-605Bh]@7 __int16 v35; // [sp+2017h] [bp-6059h]@7 char v36; // [sp+4010h] [bp-4060h]@9 int v37; // [sp+4015h] [bp-405Bh]@9 int v38; // [sp+4019h] [bp-4057h]@9 __int16 v39; // [sp+401Dh] [bp-4053h]@9 int v40; // [sp+401Fh] [bp-4051h]@9 int v41; // [sp+4023h] [bp-404Dh]@9 __int16 v42; // [sp+4027h] [bp-4049h]@9 char v43; // [sp+6014h] [bp-205Ch]@7 int v44; // [sp+6019h] [bp-2057h]@7 char v45; // [sp+601Dh] [bp-2053h]@7 __int16 v46; // [sp+601Eh] [bp-2052h]@7 int v47; // [sp+6020h] [bp-2050h]@7 int v48; // [sp+6024h] [bp-204Ch]@7 __int16 v49; // [sp+6028h] [bp-2048h]@7 __int16 v50; // [sp+602Ah] [bp-2046h]@7 int v51; // [sp+602Ch] [bp-2044h]@7 int rgbValue; // [sp+8018h] [bp-58h]@3 int v53; // [sp+801Ch] [bp-54h]@3 int v54; // [sp+8020h] [bp-50h]@3 __int16 v55; // [sp+8024h] [bp-4Ch]@3 int v56; // [sp+8028h] [bp-48h]@3 int v57; // [sp+802Ch] [bp-44h]@3 int v58; // [sp+8030h] [bp-40h]@3 int v59; // [sp+8034h] [bp-3Ch]@3 int v60; // [sp+8038h] [bp-38h]@3 int v61; // [sp+803Ch] [bp-34h]@3 int v62; // [sp+8048h] [bp-28h]@11 unsigned int v63; // [sp+8050h] [bp-20h]@11 int v64; // [sp+8054h] [bp-1Ch]@11 int v65; // [sp+8058h] [bp-18h]@11 int v66; // [sp+805Ch] [bp-14h]@11 unsigned int v67; // [sp+8060h] [bp-10h]@1 int v68; // [sp+806Ch] [bp-4h]@7 int v69; // [sp+8070h] [bp+0h]@1 v67 = (unsigned int)&v69 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( !sub_4038C0(*(_WORD *)(a2 + 22), a2 + 42, (int)&v26, (int)&v25) ) { v26 = 521; LABEL_13: sub_44E180((int)&v27); v22 = *(_WORD *)(a2 + 6); v23 = *(_WORD *)(a2 + 8); v28 = *(_DWORD *)(a2 + 2); v29 = v22; v68 = 3; v31 = v23; v30 = v26; sub_44E310((int)&v27, 0x340Fu, 0xAu, 0); v24 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v27); v68 = -1; nullsub_1(&v27); return v24; } v5 = *(_DWORD *)(a2 + 14); v6 = *(_DWORD *)(a2 + 4); rgbValue = *(_DWORD *)(a2 + 10); v53 = v5; v55 = v25; v7 = *(_DWORD *)(a2 + 28); v54 = v6; v8 = *(_DWORD *)(a2 + 24); v56 = v26; v9 = *(_DWORD *)(a2 + 32); v60 = v7; v58 = v8; v10 = *(_DWORD *)v3; v61 = v9; v57 = 0; v59 = 0; v11 = sub_460ED0(v10 + 4684, &rgbValue); if ( v11 ) { if ( v11 == 1 ) v26 = 519; else v26 = 520; goto LABEL_13; } sub_44E180((int)&v32); v12 = *(_WORD *)(a2 + 8); v13 = *(_DWORD *)(a2 + 2); v34 = *(_WORD *)(a2 + 6); v68 = 0; v33 = v13; v35 = v12; sub_44E310((int)&v32, 0x340Eu, 8u, 0); v25 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v32); sub_44E180((int)&v43); LOBYTE(v68) = 1; sub_44E310((int)&v43, 0x448u, 0x17u, 0); v14 = *(_WORD *)(a2 + 22); v15 = *(_DWORD *)(a2 + 10); v44 = *(_DWORD *)(a2 + 4); v48 = *(_DWORD *)(a2 + 14); v16 = *(_DWORD *)(a2 + 24); v46 = v14; v51 = v16; v47 = v15; LOWORD(v15) = *(_WORD *)(a2 + 20); v45 = 0; v49 = v26; v50 = v15; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v43); sub_44E180((int)&v36); LOBYTE(v68) = 2; sub_44E310((int)&v36, 0xC80Du, 0x14u, 0); v17 = *(_DWORD *)(a2 + 36); v18 = *(_WORD *)(a2 + 22); v38 = *(_DWORD *)(a2 + 4); v42 = *(_WORD *)(a2 + 40); v37 = v17; v19 = *(_DWORD *)(a2 + 24); v39 = v18; v40 = v19; v41 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v36); v20 = 100 * *(_DWORD *)(a2 + 24); v62 = *(_DWORD *)(a2 + 4); v21 = *(_DWORD *)v3; v63 = v20 / 0x3E8; v65 = 10; v64 = 0; v66 = 0; sub_4564B0(v21 + 4684, &v62); LOBYTE(v68) = 1; nullsub_1(&v36); LOBYTE(v68) = 0; nullsub_1(&v43); v68 = -1; nullsub_1(&v32); result = v25; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004099B0) -------------------------------------------------------- signed int __thiscall sub_4099B0(int this, int a2, int a3) { signed int result; // eax@1 unsigned int v4; // eax@2 int v5; // edi@3 int v6; // ecx@5 int v7; // eax@5 signed __int16 v8; // ax@7 int v9; // edx@8 int v10; // ecx@8 int v11; // edx@8 int v12; // eax@8 int v13; // ecx@8 int v14; // eax@8 int v15; // edi@9 int v16; // edx@18 __int16 v17; // ax@18 int v18; // eax@18 int v19; // edx@18 int v20; // eax@18 int v21; // eax@18 signed int v22; // ebx@20 int v23; // edi@21 int v24; // eax@23 int v25; // edx@26 int v26; // eax@26 int v27; // edx@26 signed __int16 v28; // di@29 int v29; // eax@33 __int16 v30; // dx@33 signed int v31; // esi@33 unsigned int v32; // [sp-10h] [bp-8160h]@1 signed int v33; // [sp+0h] [bp-8150h]@18 int v34; // [sp+4h] [bp-814Ch]@1 char v35; // [sp+8h] [bp-8148h]@33 int v36; // [sp+Dh] [bp-8143h]@33 __int16 v37; // [sp+11h] [bp-813Fh]@33 __int16 v38; // [sp+13h] [bp-813Dh]@33 __int16 v39; // [sp+15h] [bp-813Bh]@33 char v40; // [sp+200Ch] [bp-6144h]@18 int v41; // [sp+2011h] [bp-613Fh]@18 __int16 v42; // [sp+2015h] [bp-613Bh]@18 __int16 v43; // [sp+2017h] [bp-6139h]@18 char v44; // [sp+4010h] [bp-4140h]@26 int v45; // [sp+4015h] [bp-413Bh]@26 int v46; // [sp+4019h] [bp-4137h]@26 __int16 v47; // [sp+401Dh] [bp-4133h]@26 int v48; // [sp+401Fh] [bp-4131h]@26 int v49; // [sp+4023h] [bp-412Dh]@26 __int16 v50; // [sp+4027h] [bp-4129h]@26 char v51; // [sp+6014h] [bp-213Ch]@18 int v52; // [sp+6019h] [bp-2137h]@18 char v53; // [sp+601Dh] [bp-2133h]@18 __int16 v54; // [sp+601Eh] [bp-2132h]@18 int v55; // [sp+6020h] [bp-2130h]@18 int v56; // [sp+6024h] [bp-212Ch]@18 __int16 v57; // [sp+6028h] [bp-2128h]@18 __int16 v58; // [sp+602Ah] [bp-2126h]@18 int v59; // [sp+602Ch] [bp-2124h]@18 int rgbValue; // [sp+8018h] [bp-138h]@8 int v61; // [sp+801Ch] [bp-134h]@8 int v62; // [sp+8020h] [bp-130h]@8 __int16 v63; // [sp+8024h] [bp-12Ch]@8 int v64; // [sp+8028h] [bp-128h]@8 int v65; // [sp+802Ch] [bp-124h]@8 int v66; // [sp+8030h] [bp-120h]@8 int v67; // [sp+8034h] [bp-11Ch]@8 int v68; // [sp+8038h] [bp-118h]@8 char v69; // [sp+8040h] [bp-110h]@24 unsigned int v70; // [sp+8140h] [bp-10h]@1 int v71; // [sp+814Ch] [bp-4h]@18 int v72; // [sp+8150h] [bp+0h]@1 v70 = (unsigned int)&v72 ^ __security_cookie; v32 = (unsigned int)&v72 ^ __security_cookie; v34 = this; result = sub_43B000(this, a2); if ( !result ) return result; v4 = *(_WORD *)(a2 + 24); if ( v4 < dword_6EA3EC ) { v5 = dword_6EACDC + 40 * v4; if ( v5 ) { if ( *(_DWORD *)v5 ) { v6 = **(_WORD **)v5; v7 = v6 + 10000 * v4; if ( (_WORD)v6 == *(_WORD *)(a2 + 24) ) { v15 = *(_DWORD *)v5; if ( v15 ) { switch ( *(_DWORD *)(v15 + 102) ) { default: goto LABEL_7; case 1: case 0x15: v8 = 2; break; case 2: v8 = 3; break; case 0x18: v8 = 4; break; case 3: v8 = 300; break; case 0x22: v8 = 2000; break; case 0x21: v8 = 2500; break; case 0x23: v8 = 2600; break; } goto LABEL_8; } } else { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v7); } } } } LABEL_7: v8 = 1; LABEL_8: v9 = *(_DWORD *)(a2 + 14); rgbValue = *(_DWORD *)(a2 + 10); v10 = *(_DWORD *)(a2 + 4); v61 = v9; v11 = *(_DWORD *)(a2 + 32); v63 = v8; v12 = *(_DWORD *)(a2 + 36); v62 = v10; v13 = *(_DWORD *)(a2 + 20); v64 = v11; v65 = v12; v14 = *(_DWORD *)v34; v66 = v13; v67 = 0; sub_460FE0(v14 + 4684, &rgbValue); switch ( v68 ) { case 0: sub_44E180((int)&v40); v16 = *(_DWORD *)(a2 + 2); v17 = *(_WORD *)(a2 + 6); v43 = *(_WORD *)(a2 + 8); v71 = 0; v41 = v16; v42 = v17; sub_44E310((int)&v40, 0x3423u, 8u, 0); v33 = sub_43BFB0(*(_DWORD *)(v34 + 4), (int)&v40); sub_44E180((int)&v51); LOBYTE(v71) = 1; sub_44E310((int)&v51, 0x449u, 0x17u, 0); v18 = *(_DWORD *)(a2 + 4); v19 = *(_DWORD *)(a2 + 10); v54 = *(_WORD *)(a2 + 24); v52 = v18; v20 = *(_DWORD *)(a2 + 14); v57 = 0; v55 = v19; LOWORD(v19) = *(_WORD *)(a2 + 18); v56 = v20; v21 = *(_DWORD *)(a2 + 20); v53 = 0; v58 = v19; v59 = v21; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v51); v22 = 0; if ( *(_BYTE *)(a2 + 40) ) { v23 = a2 + 41; do { if ( v22 >= 8 ) break; LOWORD(v24) = sub_466950(*(_DWORD *)v34 + 4684, *(_DWORD *)v23, *(_DWORD *)(v23 + 4)); if ( v24 ) { sprintf( &v69, "ERROR - CPFsCharacter::fc_NC_ITEMDB_SELLALL_REQ, CHEST INVEN : DBError=%d, Owner=%d, ItemKey=%I64d", v24, *(_DWORD *)(a2 + 4), *(_DWORD *)v23, *(_DWORD *)(v23 + 4), v32); sub_446350(1, "Msg", "%s", &v69); } ++v22; v23 += 10; } while ( v22 < *(_BYTE *)(a2 + 40) ); } sub_44E180((int)&v44); LOBYTE(v71) = 2; sub_44E310((int)&v44, 0xC80Eu, 0x14u, 0); v25 = *(_DWORD *)(a2 + 26); v26 = *(_DWORD *)(a2 + 4); v47 = *(_WORD *)(a2 + 24); v45 = v25; v27 = *(_DWORD *)(a2 + 20); v46 = v26; LOWORD(v26) = *(_WORD *)(a2 + 30); v48 = v27; v49 = 0; v50 = v26; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v44); LOBYTE(v71) = 1; nullsub_1(&v44); LOBYTE(v71) = 0; nullsub_1(&v51); v71 = -1; nullsub_1(&v40); return v33; case 1: v28 = 902; break; case 2: v28 = 903; break; case 3: v28 = 904; break; default: v28 = 905; break; } sub_44E180((int)&v35); v29 = *(_DWORD *)(a2 + 2); v30 = *(_WORD *)(a2 + 8); v37 = *(_WORD *)(a2 + 6); v71 = 3; v36 = v29; v39 = v30; v38 = v28; sub_44E310((int)&v35, 0x3424u, 0xAu, 0); v31 = sub_43BFB0(*(_DWORD *)(v34 + 4), (int)&v35); v71 = -1; nullsub_1(&v35); return v31; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (00409E50) -------------------------------------------------------- signed int __thiscall sub_409E50(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@3 int v6; // edx@3 __int16 v7; // bx@3 int v8; // edx@3 int v9; // eax@3 __int16 v10; // dx@4 int v11; // eax@4 signed int v12; // edi@4 __int16 v13; // dx@4 int v14; // eax@4 int v15; // ecx@4 __int16 v16; // dx@4 int v17; // eax@4 int v18; // eax@6 __int16 v19; // dx@6 int v20; // eax@6 signed __int16 v21; // bx@9 int v22; // eax@14 __int16 v23; // dx@14 signed int v24; // esi@14 __int16 v25; // [sp+0h] [bp-8050h]@2 int v26; // [sp+4h] [bp-804Ch]@2 char v27; // [sp+8h] [bp-8048h]@14 int v28; // [sp+Dh] [bp-8043h]@14 __int16 v29; // [sp+11h] [bp-803Fh]@14 __int16 v30; // [sp+13h] [bp-803Dh]@14 __int16 v31; // [sp+15h] [bp-803Bh]@14 char v32; // [sp+200Ch] [bp-6044h]@4 int v33; // [sp+2011h] [bp-603Fh]@4 __int16 v34; // [sp+2015h] [bp-603Bh]@4 __int16 v35; // [sp+2017h] [bp-6039h]@4 char v36; // [sp+4010h] [bp-4040h]@6 int v37; // [sp+4015h] [bp-403Bh]@6 int v38; // [sp+4019h] [bp-4037h]@6 __int16 v39; // [sp+401Dh] [bp-4033h]@6 int v40; // [sp+401Fh] [bp-4031h]@6 int v41; // [sp+4023h] [bp-402Dh]@6 __int16 v42; // [sp+4027h] [bp-4029h]@6 char v43; // [sp+6014h] [bp-203Ch]@4 int v44; // [sp+6019h] [bp-2037h]@4 char v45; // [sp+601Dh] [bp-2033h]@4 __int16 v46; // [sp+601Eh] [bp-2032h]@4 int v47; // [sp+6020h] [bp-2030h]@4 int v48; // [sp+6024h] [bp-202Ch]@4 __int16 v49; // [sp+6028h] [bp-2028h]@4 __int16 v50; // [sp+602Ah] [bp-2026h]@4 int v51; // [sp+602Ch] [bp-2024h]@4 int rgbValue; // [sp+8018h] [bp-38h]@3 int v53; // [sp+801Ch] [bp-34h]@3 int v54; // [sp+8020h] [bp-30h]@3 __int16 v55; // [sp+8024h] [bp-2Ch]@3 int v56; // [sp+8028h] [bp-28h]@3 int v57; // [sp+802Ch] [bp-24h]@3 int v58; // [sp+8030h] [bp-20h]@3 int v59; // [sp+8034h] [bp-1Ch]@3 unsigned int v60; // [sp+8040h] [bp-10h]@1 int v61; // [sp+804Ch] [bp-4h]@4 int v62; // [sp+8050h] [bp+0h]@1 v60 = (unsigned int)&v62 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( sub_4038C0(*(_WORD *)(a2 + 22), a2 + 34, (int)&v26, (int)&v25) ) { v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(a2 + 14); v7 = v26; rgbValue = *(_DWORD *)(a2 + 10); v54 = v5; v53 = v6; v8 = *(_DWORD *)(a2 + 24); v55 = v25; v57 = 0; v59 = 0; v9 = *(_DWORD *)v3; v58 = v8; v56 = v26; switch ( sub_4610B0(v9 + 4684, &rgbValue) ) { case 0: sub_44E180((int)&v32); v10 = *(_WORD *)(a2 + 8); v11 = *(_DWORD *)(a2 + 2); v34 = *(_WORD *)(a2 + 6); v61 = 0; v33 = v11; v35 = v10; sub_44E310((int)&v32, 0x3426u, 8u, 0); v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v32); sub_44E180((int)&v43); LOBYTE(v61) = 1; sub_44E310((int)&v43, 0x449u, 0x17u, 0); v13 = *(_WORD *)(a2 + 22); v14 = *(_DWORD *)(a2 + 10); v44 = *(_DWORD *)(a2 + 4); v15 = *(_DWORD *)(a2 + 14); v46 = v13; v16 = *(_WORD *)(a2 + 20); v48 = v15; v47 = v14; v17 = *(_DWORD *)(a2 + 24); v45 = 0; v49 = v7; v50 = v16; v51 = v17; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v43); sub_44E180((int)&v36); LOBYTE(v61) = 2; sub_44E310((int)&v36, 0xC80Eu, 0x14u, 0); v18 = *(_DWORD *)(a2 + 28); v19 = *(_WORD *)(a2 + 22); v38 = *(_DWORD *)(a2 + 4); v42 = *(_WORD *)(a2 + 32); v37 = v18; v20 = *(_DWORD *)(a2 + 24); v39 = v19; v40 = v20; v41 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v36); LOBYTE(v61) = 1; nullsub_1(&v36); LOBYTE(v61) = 0; nullsub_1(&v43); v61 = -1; nullsub_1(&v32); return v12; case 1: v21 = 906; break; case 2: v21 = 907; break; case 3: v21 = 908; break; default: v21 = 909; break; } } else { v21 = 910; } sub_44E180((int)&v27); v22 = *(_DWORD *)(a2 + 2); v23 = *(_WORD *)(a2 + 8); v29 = *(_WORD *)(a2 + 6); v61 = 3; v28 = v22; v31 = v23; v30 = v21; sub_44E310((int)&v27, 0x3427u, 0xAu, 0); v24 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v27); v61 = -1; nullsub_1(&v27); result = v24; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040A170) -------------------------------------------------------- signed int __thiscall sub_40A170(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // eax@3 int v8; // eax@4 unsigned __int16 v9; // ST0C_2@7 int v10; // ebx@7 int v11; // eax@12 int v12; // edx@12 int v13; // ecx@12 unsigned int v14; // eax@12 int v15; // eax@12 int v16; // eax@15 int v17; // edx@15 __int16 v18; // dx@18 __int16 v19; // ax@18 signed __int16 v20; // ax@19 __int16 v21; // dx@23 __int16 v22; // cx@23 char *v23; // [sp-18h] [bp-2068h]@18 unsigned int v24; // [sp-14h] [bp-2064h]@18 int rgbValue; // [sp+0h] [bp-2050h]@12 int v26; // [sp+4h] [bp-204Ch]@12 char v27[4]; // [sp+8h] [bp-2048h]@8 int v28; // [sp+Ch] [bp-2044h]@7 char v29; // [sp+10h] [bp-2040h]@15 int v30; // [sp+15h] [bp-203Bh]@15 int v31; // [sp+19h] [bp-2037h]@15 int v32; // [sp+1Dh] [bp-2033h]@15 __int16 v33; // [sp+21h] [bp-202Fh]@15 __int16 v34; // [sp+23h] [bp-202Dh]@15 int v35; // [sp+25h] [bp-202Bh]@15 int v36; // [sp+2014h] [bp-3Ch]@12 int v37; // [sp+2018h] [bp-38h]@12 int v38; // [sp+201Ch] [bp-34h]@12 char v39; // [sp+2020h] [bp-30h]@12 __int16 v40; // [sp+2022h] [bp-2Eh]@12 char v41; // [sp+2024h] [bp-2Ch]@23 __int16 v42; // [sp+2025h] [bp-2Bh]@23 int v43; // [sp+2027h] [bp-29h]@23 __int16 v44; // [sp+202Bh] [bp-25h]@23 __int16 v45; // [sp+202Dh] [bp-23h]@23 __int16 v46; // [sp+202Fh] [bp-21h]@23 char v47; // [sp+2034h] [bp-1Ch]@18 __int16 v48; // [sp+2035h] [bp-1Bh]@18 int v49; // [sp+2037h] [bp-19h]@18 __int16 v50; // [sp+203Bh] [bp-15h]@18 __int16 v51; // [sp+203Dh] [bp-13h]@18 unsigned int v52; // [sp+2040h] [bp-10h]@1 int v53; // [sp+204Ch] [bp-4h]@15 int v54; // [sp+2050h] [bp+0h]@1 v52 = (unsigned int)&v54 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 18); v6 = *(_DWORD *)(a2 + 22); if ( (v6 & *(_DWORD *)(a2 + 18)) == -1 ) { v20 = 581; } else { v7 = (unsigned __int8)sub_460BC0(*(_DWORD *)v3 + 4684, v5, v6, *(_DWORD *)(a2 + 8)) - 1; if ( v7 ) { v8 = v7 - 1; if ( v8 ) { if ( v8 != 1 ) { if ( *(_DWORD *)(a2 + 32) <= 1u || (v9 = *(_WORD *)(a2 + 30), v28 = 0, (v10 = *(_DWORD *)sub_402D20((int)&unk_6EA3E8, v9)) != 0) && sub_403AA0(*(_WORD *)(a2 + 30), (int)v27) && sub_403800((void *)v3, *(_DWORD *)(a2 + 18), *(_DWORD *)(a2 + 22), v27[0], (int)&v28) && *(_DWORD *)(a2 + 32) == v28 && *(_DWORD *)(v10 + 106) >= (unsigned int)v28 ) { rgbValue = *(_DWORD *)(a2 + 4); v11 = *(_DWORD *)v3 + 4684; v26 = 0; sub_453050(v11, &rgbValue); v12 = *(_DWORD *)(a2 + 18); v13 = *(_DWORD *)(a2 + 12); v37 = *(_DWORD *)(a2 + 22); v14 = *(_WORD *)(a2 + 26); v36 = v12; v38 = v13; LOBYTE(v12) = (v14 >> 10) & 0x3F; v40 = v14 & 0x3FF; v15 = *(_DWORD *)v3; v39 = v12; if ( sub_460890(v15 + 4684, &v36, 0) ) { if ( (*(_WORD *)(a2 + 26) & 0xFC00) != 9216 || (*(_WORD *)(a2 + 28) & 0xFC00) != 9216 ) { sub_44E180((int)&v29); v53 = 0; sub_44E310((int)&v29, 0x44Cu, 0x14u, 0); v16 = *(_DWORD *)(a2 + 18); v17 = *(_DWORD *)(a2 + 4); v32 = *(_DWORD *)(a2 + 22); v34 = *(_WORD *)(a2 + 26); v31 = v16; LOWORD(v16) = *(_WORD *)(a2 + 28); v30 = v17; v33 = v16; v35 = v26; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v29); v53 = -1; nullsub_1(&v29); } v18 = *(_WORD *)(a2 + 6); v19 = *(_WORD *)(a2 + 16); v49 = *(_DWORD *)(a2 + 2); v50 = v18; v24 = 11; v51 = v19; v47 = 10; v48 = 13353; v23 = &v47; goto LABEL_24; } } } v20 = 585; } else { v20 = 584; } } else { v20 = 583; } } v21 = *(_WORD *)(a2 + 6); v43 = *(_DWORD *)(a2 + 2); v22 = *(_WORD *)(a2 + 16); v44 = v21; v45 = v20; v24 = 13; v46 = v22; v41 = 12; v42 = 13354; v23 = &v41; LABEL_24: result = sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v23, v24); } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040A440) -------------------------------------------------------- signed int __thiscall sub_40A440(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // eax@3 int v8; // eax@4 int v9; // ecx@6 int v10; // edx@6 int v11; // eax@7 int v12; // eax@8 unsigned __int16 v13; // ST0C_2@11 int v14; // edi@11 signed __int16 v15; // ax@12 unsigned __int16 v16; // ST0C_2@18 int v17; // edi@18 int v18; // ecx@23 int v19; // edx@23 unsigned int v20; // eax@23 unsigned int v21; // ecx@23 int v22; // eax@23 int v23; // edx@23 unsigned int v24; // eax@23 int v25; // eax@23 int v26; // eax@27 int v27; // edx@29 int v28; // eax@29 void *v29; // ecx@29 int v30; // edx@31 int v31; // eax@31 __int16 v32; // dx@34 __int16 v33; // ax@34 char *v34; // edx@34 __int16 v35; // dx@46 __int16 v36; // ax@46 unsigned int v37; // [sp-14h] [bp-207Ch]@34 int rgbValue; // [sp+0h] [bp-2068h]@27 int v39; // [sp+4h] [bp-2064h]@27 char v40[4]; // [sp+8h] [bp-2060h]@13 int v41; // [sp+Ch] [bp-205Ch]@11 char v42; // [sp+10h] [bp-2058h]@29 int v43; // [sp+15h] [bp-2053h]@29 int v44; // [sp+19h] [bp-204Fh]@29 int v45; // [sp+1Dh] [bp-204Bh]@29 __int16 v46; // [sp+21h] [bp-2047h]@29 __int16 v47; // [sp+23h] [bp-2045h]@29 int v48; // [sp+25h] [bp-2043h]@29 int v49; // [sp+2014h] [bp-54h]@23 int v50; // [sp+2018h] [bp-50h]@23 int v51; // [sp+201Ch] [bp-4Ch]@23 char v52; // [sp+2020h] [bp-48h]@23 __int16 v53; // [sp+2022h] [bp-46h]@23 int v54; // [sp+2024h] [bp-44h]@23 int v55; // [sp+2028h] [bp-40h]@23 int v56; // [sp+202Ch] [bp-3Ch]@23 char v57; // [sp+2030h] [bp-38h]@23 __int16 v58; // [sp+2032h] [bp-36h]@23 char v59; // [sp+2034h] [bp-34h]@24 char v60; // [sp+203Ch] [bp-2Ch]@46 __int16 v61; // [sp+203Dh] [bp-2Bh]@46 int v62; // [sp+203Fh] [bp-29h]@46 __int16 v63; // [sp+2043h] [bp-25h]@46 __int16 v64; // [sp+2045h] [bp-23h]@46 __int16 v65; // [sp+2047h] [bp-21h]@46 char v66; // [sp+204Ch] [bp-1Ch]@34 __int16 v67; // [sp+204Dh] [bp-1Bh]@34 int v68; // [sp+204Fh] [bp-19h]@34 __int16 v69; // [sp+2053h] [bp-15h]@34 __int16 v70; // [sp+2055h] [bp-13h]@34 unsigned int v71; // [sp+2058h] [bp-10h]@1 int v72; // [sp+2064h] [bp-4h]@29 int v73; // [sp+2068h] [bp+0h]@1 v71 = (unsigned int)&v73 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 18); v6 = *(_DWORD *)(a2 + 22); if ( (v6 & *(_DWORD *)(a2 + 18)) == -1 ) { v15 = 2116; } else { v7 = (unsigned __int8)sub_460BC0(*(_DWORD *)v3 + 4684, v5, v6, *(_DWORD *)(a2 + 8)) - 1; if ( v7 ) { v8 = v7 - 1; if ( v8 ) { if ( v8 == 1 ) { v15 = 2122; } else { v9 = *(_DWORD *)(a2 + 28); v10 = *(_DWORD *)(a2 + 32); if ( (v10 & *(_DWORD *)(a2 + 28)) == -1 ) { v15 = 2117; } else { v11 = (unsigned __int8)sub_460BC0(*(_DWORD *)v3 + 4684, v9, v10, *(_DWORD *)(a2 + 12)) - 1; if ( v11 ) { v12 = v11 - 1; if ( v12 ) { if ( v12 == 1 ) { v15 = 2123; } else { if ( (*(_DWORD *)(a2 + 42) <= 1u || (v13 = *(_WORD *)(a2 + 38), v41 = 0, (v14 = *(_DWORD *)sub_402D20((int)&unk_6EA3E8, v13)) != 0) && sub_403AA0(*(_WORD *)(a2 + 38), (int)v40) && sub_403800((void *)v3, *(_DWORD *)(a2 + 18), *(_DWORD *)(a2 + 22), v40[0], (int)&v41) && *(_DWORD *)(a2 + 42) == v41 && *(_DWORD *)(v14 + 106) >= (unsigned int)v41) && (*(_DWORD *)(a2 + 46) <= 1u || (v16 = *(_WORD *)(a2 + 40), v41 = 0, (v17 = *(_DWORD *)sub_402D20((int)&unk_6EA3E8, v16)) != 0) && sub_403AA0(*(_WORD *)(a2 + 40), (int)v40) && sub_403800((void *)v3, *(_DWORD *)(a2 + 28), *(_DWORD *)(a2 + 32), v40[0], (int)&v41) && *(_DWORD *)(a2 + 46) == v41 && *(_DWORD *)(v17 + 106) >= (unsigned int)v41) && (v18 = *(_DWORD *)(a2 + 18), v19 = *(_DWORD *)(a2 + 22), v51 = *(_DWORD *)(a2 + 12), v20 = *(_WORD *)(a2 + 26), v49 = v18, v21 = v20, v53 = v20 & 0x3FF, v22 = *(_DWORD *)(a2 + 32), v50 = v19, v23 = *(_DWORD *)(a2 + 28), v55 = v22, v24 = *(_WORD *)(a2 + 36), v54 = v23, v52 = (v21 >> 10) & 0x3F, v56 = *(_DWORD *)(a2 + 8), LOBYTE(v23) = (v24 >> 10) & 0x3F, v58 = v24 & 0x3FF, v25 = *(_DWORD *)v3, v57 = v23, sub_460A90(v25 + 4684, &v49)) ) { if ( v59 == 1 ) { v15 = 2124; } else { if ( v59 == 2 ) { v15 = 2125; } else { if ( v59 != 3 ) { rgbValue = *(_DWORD *)(a2 + 4); v26 = *(_DWORD *)v3 + 4684; v39 = 0; sub_453050(v26, &rgbValue); if ( (*(_WORD *)(a2 + 26) & 0xFC00) != 9216 || (*(_WORD *)(a2 + 36) & 0xFC00) != 9216 ) { sub_44E180((int)&v42); v72 = 0; sub_44E310((int)&v42, 0x44Cu, 0x14u, 0); v27 = *(_DWORD *)(a2 + 18); v28 = *(_DWORD *)(a2 + 22); v43 = *(_DWORD *)(a2 + 4); v48 = v39; v29 = (void *)dword_6E9EC0; v44 = v27; LOWORD(v27) = *(_WORD *)(a2 + 36); v45 = v28; LOWORD(v28) = *(_WORD *)(a2 + 26); v46 = v27; v47 = v28; if ( dword_6E9EC0 ) { sub_44B7E0((void *)dword_6E9EC0, (int)&v42); v29 = (void *)dword_6E9EC0; } v30 = *(_DWORD *)(a2 + 32); v44 = *(_DWORD *)(a2 + 28); v31 = *(_DWORD *)(a2 + 4); v45 = v30; LOWORD(v30) = *(_WORD *)(a2 + 26); v43 = v31; LOWORD(v31) = *(_WORD *)(a2 + 36); v46 = v30; v47 = v31; v48 = v39; if ( v29 ) sub_44B7E0(v29, (int)&v42); v72 = -1; nullsub_1(&v42); } v32 = *(_WORD *)(a2 + 6); v33 = *(_WORD *)(a2 + 16); v68 = *(_DWORD *)(a2 + 2); v69 = v32; v70 = v33; v66 = 10; v67 = 13356; v37 = 11; v34 = &v66; goto LABEL_47; } v15 = 2126; } } } else { v15 = 2127; } } } else { v15 = 2121; } } else { v15 = 2119; } } } } else { v15 = 2120; } } else { v15 = 2118; } } v35 = *(_WORD *)(a2 + 6); v62 = *(_DWORD *)(a2 + 2); v64 = v15; v36 = *(_WORD *)(a2 + 16); v63 = v35; v65 = v36; v60 = 12; v61 = 13357; v37 = 13; v34 = &v60; LABEL_47: result = sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v34, v37); } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040A880) -------------------------------------------------------- signed int __thiscall sub_40A880(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 signed int v5; // ebx@2 int v6; // edi@3 int v7; // ecx@4 __int16 v8; // dx@4 int v9; // eax@4 unsigned int v10; // eax@8 signed __int16 v11; // di@9 int v12; // edx@11 int v13; // ecx@13 int v14; // eax@13 int v15; // eax@18 __int16 v16; // dx@18 signed int v17; // eax@18 void *v18; // ecx@18 signed int v19; // esi@19 int v20; // edx@21 signed int v21; // ecx@24 int v22; // edi@31 int v23; // edx@31 int v24; // eax@31 unsigned int v25; // ebx@32 unsigned int v26; // eax@32 unsigned int v27; // edx@32 int v28; // eax@32 int v29; // eax@32 int v30; // eax@36 int v31; // eax@36 int v32; // ecx@36 __int16 v33; // dx@36 void *v34; // ecx@36 bool v35; // zf@36 int v36; // edx@43 unsigned int v37; // eax@43 unsigned int v38; // edx@43 int v39; // eax@43 int v40; // eax@43 int v41; // eax@44 int v42; // edx@44 __int16 v43; // cx@44 unsigned int v44; // ecx@45 unsigned int v45; // edx@45 unsigned int v46; // ebx@46 unsigned int v47; // eax@46 unsigned int v48; // ecx@46 int v49; // eax@46 int v50; // eax@50 int v51; // edx@51 __int16 v52; // ax@51 char v53; // cl@51 int v54; // eax@51 int v55; // edx@52 __int16 v56; // ax@52 const char *v57; // [sp-18h] [bp-41A4h]@15 int v58; // [sp-14h] [bp-41A0h]@15 unsigned int v59; // [sp-10h] [bp-419Ch]@1 int v60; // [sp+0h] [bp-418Ch]@1 char v61; // [sp+4h] [bp-4188h]@52 int v62; // [sp+9h] [bp-4183h]@52 __int16 v63; // [sp+Dh] [bp-417Fh]@52 __int16 v64; // [sp+Fh] [bp-417Dh]@52 char v65; // [sp+2008h] [bp-2184h]@18 int v66; // [sp+200Dh] [bp-217Fh]@18 int v67; // [sp+2011h] [bp-217Bh]@18 int v68; // [sp+2015h] [bp-2177h]@18 __int16 v69; // [sp+2019h] [bp-2173h]@36 __int16 v70; // [sp+201Bh] [bp-2171h]@36 int v71; // [sp+400Ch] [bp-180h]@32 int v72; // [sp+4010h] [bp-17Ch]@32 char v73; // [sp+4014h] [bp-178h]@32 __int16 v74; // [sp+4016h] [bp-176h]@32 int v75; // [sp+401Ch] [bp-170h]@32 int v76; // [sp+4020h] [bp-16Ch]@32 char v77; // [sp+4024h] [bp-168h]@32 __int16 v78; // [sp+4026h] [bp-166h]@32 __int16 v79; // [sp+4028h] [bp-164h]@32 __int64 v80; // [sp+402Ch] [bp-160h]@32 int v81; // [sp+4034h] [bp-158h]@32 int v82; // [sp+403Ch] [bp-150h]@51 int v83; // [sp+4040h] [bp-14Ch]@51 char v84; // [sp+4044h] [bp-148h]@51 __int16 v85; // [sp+4046h] [bp-146h]@51 int v86; // [sp+404Ch] [bp-140h]@43 int v87; // [sp+4050h] [bp-13Ch]@43 char v88; // [sp+4054h] [bp-138h]@43 __int16 v89; // [sp+4056h] [bp-136h]@43 __int16 v90; // [sp+4058h] [bp-134h]@43 unsigned __int64 v91; // [sp+405Ch] [bp-130h]@43 int v92; // [sp+4064h] [bp-128h]@43 char v93; // [sp+4068h] [bp-124h]@47 int v94; // [sp+406Ch] [bp-120h]@4 int v95; // [sp+4070h] [bp-11Ch]@4 int rgbValue; // [sp+4074h] [bp-118h]@4 int v97; // [sp+4078h] [bp-114h]@36 char v98; // [sp+407Ch] [bp-110h]@9 unsigned int v99; // [sp+417Ch] [bp-10h]@1 int v100; // [sp+4188h] [bp-4h]@18 int v101; // [sp+418Ch] [bp+0h]@1 v99 = (unsigned int)&v101 ^ __security_cookie; v59 = (unsigned int)&v101 ^ __security_cookie; v3 = this; v60 = this; result = sub_43B000(this, a2); if ( result ) { v5 = 0; if ( *(_BYTE *)(a2 + 36) ) { v6 = a2 + 45; while ( 1 ) { v7 = *(_DWORD *)(v6 - 4); v8 = *(_BYTE *)v6; v94 = *(_DWORD *)(v6 - 8); v9 = *(_DWORD *)v60; v95 = v7; HIWORD(rgbValue) = v8; LOBYTE(rgbValue) = 9; if ( !sub_4607E0(v9 + 4684, &v94) ) goto LABEL_17; ++v5; v6 += 9; if ( v5 >= *(_BYTE *)(a2 + 36) ) { v3 = v60; break; } } } if ( *(_DWORD *)(a2 + 20) == 1 ) { v10 = *(_WORD *)(a2 + 18); if ( (_WORD)v10 == -1 ) { sprintf( &v98, "ERROR - CPFsCharacter::fc_NC_ITEMDB_EQUIP_REQ : ItemDataBox::ItemDataBoxIndex = NULL (nItemID=%d)", 65535, v59); sub_446350(1, "Msg", "%s", &v98); v11 = 660; LABEL_18: sub_44E180((int)&v65); v15 = *(_DWORD *)(a2 + 2); v16 = *(_WORD *)(a2 + 34); LOWORD(v67) = *(_WORD *)(a2 + 6); v100 = 2; v66 = v15; LOWORD(v68) = v16; HIWORD(v67) = v11; sub_44E310((int)&v65, 0x3412u, 0xAu, 0); v17 = sub_43BFB0(*(_DWORD *)(v60 + 4), (int)&v65); v18 = &v65; LABEL_19: v19 = v17; v100 = -1; nullsub_1(v18); return v19; } if ( v10 >= dword_6EA3EC || (v12 = dword_6EACDC + 40 * v10) == 0 || !*(_DWORD *)v12 ) goto LABEL_15; v13 = **(_WORD **)v12; v14 = v13 + 10000 * v10; if ( (_WORD)v13 != *(_WORD *)(a2 + 18) ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v14); LABEL_15: v58 = *(_WORD *)(a2 + 18); v57 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_EQUIP_REQ : ItemDataBox::ItemDataBoxIndex = NULL (nItemID=%d)"; LABEL_16: sprintf(&v98, v57, v58, v59); sub_446350(1, "Msg", "%s", &v98); LABEL_17: v11 = 650; goto LABEL_18; } v20 = *(_DWORD *)v12; if ( !v20 ) { v58 = *(_WORD *)(a2 + 18); v57 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_EQUIP_REQ : pidbi->data = NULL (nItemID=%d)"; goto LABEL_16; } switch ( *(_DWORD *)(v20 + 102) ) { default: goto LABEL_17; case 4: v21 = 426; break; case 5: v21 = 522; break; case 6: v21 = 621; break; case 7: v21 = 721; break; case 8: v21 = 821; break; case 0xA: v21 = 1002; break; case 0x17: v21 = 1603; break; } v22 = *(_DWORD *)(a2 + 24); v23 = *(_DWORD *)(a2 + 28); v35 = (v23 & *(_DWORD *)(a2 + 24)) == -1; v24 = *(_DWORD *)(a2 + 8); dword_6EAD34 = v21; if ( v35 ) { v36 = *(_DWORD *)(a2 + 12); v86 = v24; v37 = *(_WORD *)(a2 + 16); v87 = v36; v38 = v37; v89 = v37 & 0x3FF; v39 = *(_BYTE *)(a2 + 20); v88 = (v38 >> 10) & 0x3F; v91 = v39; v40 = *(_DWORD *)v60; v90 = v21; v92 = 0; if ( !(unsigned __int8)sub_462D70(v40 + 4684, &v86) ) goto LABEL_17; sub_44E180((int)&v65); v100 = 1; sub_44E310((int)&v65, 0x554u, 0x10u, 0); v41 = *(_DWORD *)(a2 + 4); v42 = *(_DWORD *)(a2 + 12); v67 = *(_DWORD *)(a2 + 8); v43 = *(_WORD *)(a2 + 16); v66 = v41; LOWORD(v41) = *(_WORD *)(a2 + 32); v70 = v43; v34 = (void *)dword_6E9EC0; v68 = v42; v69 = v41; v35 = dword_6E9EC0 == 0; goto LABEL_37; } v71 = v24; v72 = *(_DWORD *)(a2 + 12); v25 = *(_WORD *)(a2 + 16); v74 = v25 & 0x3FF; v26 = *(_WORD *)(a2 + 32); v76 = v23; v27 = v26; v78 = v26 & 0x3FF; v28 = *(_BYTE *)(a2 + 20); v77 = (v27 >> 10) & 0x3F; v75 = v22; v79 = v21; v80 = v28; v29 = *(_DWORD *)v60; v73 = (v25 >> 10) & 0x3F; v81 = 0; if ( !(unsigned __int8)sub_462FB0(v29 + 4684, &v71) ) goto LABEL_17; if ( v81 != 1 ) { if ( v81 != 2 ) { if ( v81 != 3 ) { rgbValue = *(_DWORD *)(a2 + 4); v30 = *(_DWORD *)v60 + 4684; v97 = 0; sub_453050(v30, &rgbValue); sub_44E180((int)&v65); v100 = 0; sub_44E310((int)&v65, 0x554u, 0x10u, 0); v31 = *(_DWORD *)(a2 + 8); v32 = *(_DWORD *)(a2 + 12); v66 = *(_DWORD *)(a2 + 4); v33 = *(_WORD *)(a2 + 32); v67 = v31; LOWORD(v31) = *(_WORD *)(a2 + 16); v68 = v32; v34 = (void *)dword_6E9EC0; v69 = v33; v70 = v31; v35 = dword_6E9EC0 == 0; LABEL_37: if ( !v35 ) sub_44B7E0(v34, (int)&v65); v100 = -1; nullsub_1(&v65); v3 = v60; goto LABEL_52; } LABEL_40: v11 = 653; goto LABEL_18; } LABEL_41: v11 = 652; goto LABEL_18; } LABEL_42: v11 = 651; goto LABEL_18; } v44 = *(_DWORD *)(a2 + 24); v45 = *(_DWORD *)(a2 + 28); if ( (v45 & *(_DWORD *)(a2 + 24)) == -1 ) { v51 = *(_DWORD *)(a2 + 8); v83 = *(_DWORD *)(a2 + 12); v52 = *(_WORD *)(a2 + 16) & 0x3FF; v53 = ((unsigned int)*(_WORD *)(a2 + 16) >> 10) & 0x3F; v82 = v51; v85 = v52; v54 = *(_DWORD *)v3; v84 = v53; if ( !sub_4607E0(v54 + 4684, &v82) ) goto LABEL_17; } else { v86 = *(_DWORD *)(a2 + 8); v87 = *(_DWORD *)(a2 + 12); v46 = *(_WORD *)(a2 + 16); v89 = v46 & 0x3FF; v47 = *(_WORD *)(a2 + 32); v91 = __PAIR__(v45, v44); v48 = v47 >> 10; HIWORD(v92) = v47 & 0x3FF; v49 = *(_DWORD *)v3; LOBYTE(v92) = v48 & 0x3F; v88 = (v46 >> 10) & 0x3F; if ( !sub_460990(v49 + 4684, &v86) ) goto LABEL_17; if ( v93 == 1 ) goto LABEL_42; if ( v93 == 2 ) goto LABEL_41; if ( v93 == 3 ) goto LABEL_40; v50 = *(_DWORD *)v3 + 4684; rgbValue = *(_DWORD *)(a2 + 4); v97 = 0; sub_453050(v50, &rgbValue); } LABEL_52: sub_44E180((int)&v61); v55 = *(_DWORD *)(a2 + 2); v56 = *(_WORD *)(a2 + 6); v64 = *(_WORD *)(a2 + 34); v100 = 3; v62 = v55; v63 = v56; sub_44E310((int)&v61, 0x3411u, 8u, 0); v17 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v61); v18 = &v61; goto LABEL_19; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; // 6EAD34: using guessed type int dword_6EAD34; //----- (0040AF40) -------------------------------------------------------- signed int __thiscall sub_40AF40(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 unsigned int v6; // edx@2 __int16 v7; // ax@2 int v8; // eax@2 int v9; // eax@3 __int16 v10; // dx@3 signed int v11; // eax@3 void *v12; // ecx@3 __int16 v13; // dx@4 __int16 v14; // ax@4 signed int v15; // esi@5 char v16; // [sp+0h] [bp-4028h]@3 int v17; // [sp+5h] [bp-4023h]@3 __int16 v18; // [sp+9h] [bp-401Fh]@3 __int16 v19; // [sp+Bh] [bp-401Dh]@3 char v20; // [sp+2004h] [bp-2024h]@4 int v21; // [sp+2009h] [bp-201Fh]@4 __int16 v22; // [sp+200Dh] [bp-201Bh]@4 __int16 v23; // [sp+200Fh] [bp-2019h]@4 __int16 v24; // [sp+2011h] [bp-2017h]@4 int rgbValue; // [sp+4008h] [bp-20h]@2 int v26; // [sp+400Ch] [bp-1Ch]@2 char v27; // [sp+4010h] [bp-18h]@2 __int16 v28; // [sp+4012h] [bp-16h]@2 unsigned int v29; // [sp+4018h] [bp-10h]@1 int v30; // [sp+4024h] [bp-4h]@3 int v31; // [sp+4028h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 12); rgbValue = *(_DWORD *)(a2 + 8); v6 = (unsigned int)*(_WORD *)(a2 + 16) >> 10; v7 = *(_WORD *)(a2 + 16) & 0x3FF; v26 = v5; v28 = v7; v8 = *(_DWORD *)v3; v27 = v6 & 0x3F; if ( sub_4607E0(v8 + 4684, &rgbValue) ) { sub_44E180((int)&v16); v9 = *(_DWORD *)(a2 + 2); v10 = *(_WORD *)(a2 + 18); v18 = *(_WORD *)(a2 + 6); v30 = 0; v17 = v9; v19 = v10; sub_44E310((int)&v16, 0x3414u, 8u, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v12 = &v16; } else { sub_44E180((int)&v20); v13 = *(_WORD *)(a2 + 6); v14 = *(_WORD *)(a2 + 18); v21 = *(_DWORD *)(a2 + 2); v23 = 650; v30 = 1; v22 = v13; v24 = v14; sub_44E310((int)&v20, 0x3415u, 0xAu, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v20); v12 = &v20; } v15 = v11; v30 = -1; nullsub_1(v12); result = v15; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0040B0C0) -------------------------------------------------------- signed int __thiscall sub_40B0C0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 unsigned __int16 v5; // ST28_2@3 int v6; // edi@3 int v7; // eax@7 signed int v8; // esi@7 int v9; // eax@8 int v10; // edx@8 int v11; // eax@8 int v12; // eax@8 signed __int16 v13; // di@11 int v14; // eax@14 signed int v15; // esi@14 int v16; // eax@15 signed int v17; // edi@15 int v18; // eax@15 unsigned int v19; // [sp-10h] [bp-8150h]@1 int v20; // [sp+0h] [bp-8140h]@1 char v21[4]; // [sp+4h] [bp-813Ch]@2 unsigned int v22; // [sp+8h] [bp-8138h]@2 int v23; // [sp+Ch] [bp-8134h]@3 char v24; // [sp+10h] [bp-8130h]@14 int v25; // [sp+15h] [bp-812Bh]@14 __int16 v26; // [sp+19h] [bp-8127h]@14 __int16 v27; // [sp+1Bh] [bp-8125h]@14 char v28; // [sp+2014h] [bp-612Ch]@15 int v29; // [sp+2019h] [bp-6127h]@15 __int16 v30; // [sp+201Dh] [bp-6123h]@15 char v31; // [sp+201Fh] [bp-6121h]@15 __int16 v32; // [sp+208Bh] [bp-60B5h]@15 char v33; // [sp+208Dh] [bp-60B3h]@15 char v34; // [sp+4018h] [bp-4128h]@7 int v35; // [sp+401Dh] [bp-4123h]@7 __int16 v36; // [sp+4021h] [bp-411Fh]@7 __int16 v37; // [sp+4023h] [bp-411Dh]@7 char v38; // [sp+601Ch] [bp-2124h]@15 int v39; // [sp+6021h] [bp-211Fh]@15 char v40[4]; // [sp+6025h] [bp-211Bh]@15 int v41; // [sp+6029h] [bp-2117h]@15 int v42; // [sp+602Dh] [bp-2113h]@15 int v43; // [sp+6031h] [bp-210Fh]@15 int v44; // [sp+6035h] [bp-210Bh]@15 int v45; // [sp+6039h] [bp-2107h]@15 int v46; // [sp+603Dh] [bp-2103h]@15 __int16 v47; // [sp+6041h] [bp-20FFh]@15 __int16 v48; // [sp+6043h] [bp-20FDh]@15 __int16 v49; // [sp+6045h] [bp-20FBh]@15 int v50; // [sp+8020h] [bp-120h]@8 int v51; // [sp+8024h] [bp-11Ch]@8 int v52; // [sp+8028h] [bp-118h]@8 char v53; // [sp+8030h] [bp-110h]@14 unsigned int v54; // [sp+8130h] [bp-10h]@1 int v55; // [sp+813Ch] [bp-4h]@7 int v56; // [sp+8140h] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v19 = (unsigned int)&v56 ^ __security_cookie; v3 = this; v20 = this; result = sub_43B000(this, a2); if ( result ) { sub_4038C0(*(_WORD *)(a2 + 8), a2 + 30, (int)&v22, (int)v21); if ( v22 <= 1 || (v5 = *(_WORD *)(a2 + 8), v23 = 0, (v6 = *(_DWORD *)sub_402D20((int)&unk_6EA3E8, v5)) != 0) && sub_403800((void *)v3, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v21[0], (int)&v23) && v22 == v23 && *(_DWORD *)(v6 + 106) >= v22 ) { v9 = *(_DWORD *)(a2 + 4); v10 = *(_DWORD *)(a2 + 14); v50 = *(_DWORD *)(a2 + 10); v52 = v9; v11 = *(_DWORD *)v3; v51 = v10; LOBYTE(v12) = sub_461180(v11 + 4684, (int)&v50); if ( v12 ) { if ( v12 == 1 ) { v13 = 774; } else { if ( v12 == 2 ) v13 = 775; else v13 = 776; } sprintf( &v53, "FAILED - fc_NC_ITEMDB_DROPALL_REQ, ItemKey=%I64d, Owner=%d, err=%d, nRet=%d", *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v52, (unsigned __int16)v13, v12, v19); sub_446350(1, "Msg", "%s", &v53); sub_44E180((int)&v24); v14 = *(_DWORD *)(a2 + 2); v26 = *(_WORD *)(a2 + 6); v55 = 3; v25 = v14; v27 = v13; sub_44E310((int)&v24, 0x3418u, 8u, 0); v15 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v24); v55 = -1; nullsub_1(&v24); result = v15; } else { sub_44E180((int)&v28); v16 = *(_DWORD *)(a2 + 2); v30 = *(_WORD *)(a2 + 6); v29 = v16; memcpy(&v31, (const void *)(a2 + 20), 0x6Cu); v32 = *(_WORD *)(a2 + 128); v33 = *(_BYTE *)(a2 + 130); v55 = 1; sub_44E310((int)&v28, 0x3417u, 0x75u, 0); v17 = sub_43BFB0(*(_DWORD *)(v20 + 4), (int)&v28); sub_44E180((int)&v38); LOBYTE(v55) = 2; sub_44E310((int)&v38, 0x447u, 0x26u, 0); v39 = *(_DWORD *)(a2 + 4); v42 = 0; v41 = 0; *(_DWORD *)v40 = 0; strncpy(v40, "Need", 0xCu); v18 = *(_DWORD *)(a2 + 10); v46 = *(_DWORD *)(a2 + 14); v49 = *(_WORD *)(a2 + 8); v45 = v18; LOWORD(v18) = *(_WORD *)(a2 + 18); v43 = 0; v44 = 0; v47 = 0; v48 = v18; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v38); LOBYTE(v55) = 1; nullsub_1(&v38); v55 = -1; nullsub_1(&v28); result = v17; } } else { sub_44E180((int)&v34); v7 = *(_DWORD *)(a2 + 2); v36 = *(_WORD *)(a2 + 6); v55 = 0; v35 = v7; v37 = 840; sub_44E310((int)&v34, 0x3418u, 8u, 0); v8 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v34); v55 = -1; nullsub_1(&v34); result = v8; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040B450) -------------------------------------------------------- signed int __thiscall sub_40B450(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 const void *v5; // esi@2 signed __int16 v6; // di@3 unsigned int v7; // eax@8 int v8; // ecx@9 int v9; // edx@9 int v10; // edi@9 int v11; // eax@9 int v12; // eax@9 int v13; // eax@10 int v14; // eax@14 signed int v15; // esi@14 signed int v16; // ebx@15 int v17; // edx@15 unsigned int v18; // [sp+0h] [bp-60ACh]@4 __int16 v19; // [sp+4h] [bp-60A8h]@4 char v20; // [sp+8h] [bp-60A4h]@14 int v21; // [sp+Dh] [bp-609Fh]@14 __int16 v22; // [sp+11h] [bp-609Bh]@14 __int16 v23; // [sp+13h] [bp-6099h]@14 char v24; // [sp+200Ch] [bp-40A0h]@15 char v25; // [sp+4010h] [bp-209Ch]@15 int v26; // [sp+4015h] [bp-2097h]@15 char v27; // [sp+4019h] [bp-2093h]@15 int v28; // [sp+4025h] [bp-2087h]@15 int v29; // [sp+4029h] [bp-2083h]@15 int v30; // [sp+402Dh] [bp-207Fh]@15 int v31; // [sp+4031h] [bp-207Bh]@15 __int16 v32; // [sp+4035h] [bp-2077h]@15 __int16 v33; // [sp+4037h] [bp-2075h]@15 __int16 v34; // [sp+4039h] [bp-2073h]@15 char v35; // [sp+6014h] [bp-98h]@2 int v36; // [sp+607Ch] [bp-30h]@9 int v37; // [sp+6080h] [bp-2Ch]@9 int v38; // [sp+6084h] [bp-28h]@9 __int16 v39; // [sp+6088h] [bp-24h]@9 int v40; // [sp+608Ch] [bp-20h]@9 int v41; // [sp+6090h] [bp-1Ch]@9 unsigned int v42; // [sp+609Ch] [bp-10h]@1 int v43; // [sp+60A8h] [bp-4h]@14 int v44; // [sp+60ACh] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = (const void *)(a2 + 2); if ( !sub_4669C0( (void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), &v35) ) { LABEL_3: v6 = 779; LABEL_14: sub_44E180((int)&v20); v14 = *(_DWORD *)v5; v22 = *(_WORD *)(a2 + 6); v43 = 2; v21 = v14; v23 = v6; sub_44E310((int)&v20, 0x341Bu, 8u, 0); v15 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v20); v43 = -1; nullsub_1(&v20); return v15; } if ( !sub_4038C0(*(_WORD *)(a2 + 8), (int)&v35, (int)&v18, (int)&v19) ) { v6 = 780; goto LABEL_14; } if ( v18 != *(_DWORD *)(a2 + 34) || (v7 = *(_DWORD *)(a2 + 30), v18 <= v7) ) { v6 = 784; goto LABEL_14; } v8 = *(_DWORD *)(a2 + 10); v9 = *(_DWORD *)(a2 + 14); v10 = v18 - v7; v38 = *(_DWORD *)(a2 + 4); v36 = v8; v39 = v19; v11 = *(_DWORD *)v3; v37 = v9; v40 = v10; v41 = 0; LOBYTE(v12) = sub_4611D0(v11 + 4684, (int)&v36); if ( v12 ) { v13 = v12 - 1; if ( !v13 ) { v6 = 777; goto LABEL_14; } if ( v13 == 1 ) { v6 = 778; goto LABEL_14; } goto LABEL_3; } sub_44E180((int)&v24); v43 = 0; sub_44E310((int)&v24, 0x341Au, 6u, v5); v16 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v24); sub_44E180((int)&v25); LOBYTE(v43) = 1; sub_44E310((int)&v25, 0x447u, 0x26u, 0); v26 = *(_DWORD *)(a2 + 4); sub_4029C0(&v27, "Need"); v17 = *(_DWORD *)(a2 + 10); v31 = *(_DWORD *)(a2 + 14); v34 = *(_WORD *)(a2 + 8); v30 = v17; LOWORD(v17) = *(_WORD *)(a2 + 20); v28 = 0; v29 = 0; v32 = v10; v33 = v17; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v25); LOBYTE(v43) = 0; nullsub_1(&v25); v43 = -1; nullsub_1(&v24); result = v16; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040B6E0) -------------------------------------------------------- signed int __thiscall sub_40B6E0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 const void *v6; // esi@2 unsigned int v7; // eax@2 int v8; // ST00_4@2 int v9; // eax@2 signed int v10; // edi@3 int v11; // edx@3 int v12; // eax@3 __int16 v13; // dx@6 signed int v14; // esi@6 char v15; // [sp+0h] [bp-6034h]@3 char v16; // [sp+2004h] [bp-4030h]@6 int v17; // [sp+2009h] [bp-402Bh]@6 __int16 v18; // [sp+200Dh] [bp-4027h]@6 __int16 v19; // [sp+200Fh] [bp-4025h]@6 char v20; // [sp+4008h] [bp-202Ch]@3 int v21; // [sp+400Dh] [bp-2027h]@3 char v22[4]; // [sp+4011h] [bp-2023h]@3 int v23; // [sp+4015h] [bp-201Fh]@3 int v24; // [sp+4019h] [bp-201Bh]@3 int v25; // [sp+401Dh] [bp-2017h]@3 int v26; // [sp+4021h] [bp-2013h]@3 int v27; // [sp+4025h] [bp-200Fh]@3 int v28; // [sp+4029h] [bp-200Bh]@3 __int16 v29; // [sp+402Dh] [bp-2007h]@3 __int16 v30; // [sp+4031h] [bp-2003h]@3 int rgbValue; // [sp+600Ch] [bp-28h]@2 int v32; // [sp+6010h] [bp-24h]@2 int v33; // [sp+6014h] [bp-20h]@2 char v34; // [sp+6018h] [bp-1Ch]@2 __int16 v35; // [sp+601Ah] [bp-1Ah]@2 int v36; // [sp+601Ch] [bp-18h]@2 int v37; // [sp+6020h] [bp-14h]@2 unsigned int v38; // [sp+6024h] [bp-10h]@1 int v39; // [sp+6030h] [bp-4h]@3 int v40; // [sp+6034h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 38); v6 = (const void *)(a2 + 2); rgbValue = *(_DWORD *)(a2 + 34); v33 = *(_DWORD *)(a2 + 8); v7 = *(_WORD *)(a2 + 32); v32 = v5; v35 = v7 & 0x3FF; v36 = *(_WORD *)(a2 + 42); v8 = *(_DWORD *)v3 + 4684; v34 = (v7 >> 10) & 0x3F; v37 = 0; LOWORD(v9) = sub_46A440(v8, &rgbValue, a2 + 46, 0); if ( v9 ) { sub_44E180((int)&v16); v13 = *(_WORD *)(a2 + 6); v17 = *(_DWORD *)v6; v39 = 2; v18 = v13; v19 = 839; sub_44E310((int)&v16, 0x341Eu, 8u, 0); v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v39 = -1; nullsub_1(&v16); result = v14; } else { sub_44E180((int)&v15); v39 = 0; sub_44E310((int)&v15, 0x341Du, 6u, v6); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v15); sub_44E180((int)&v20); LOBYTE(v39) = 1; sub_44E310((int)&v20, 0x446u, 0x26u, 0); v21 = *(_DWORD *)(a2 + 8); v24 = 0; v23 = 0; *(_DWORD *)v22 = 0; strncpy(v22, "Need", 0xCu); v11 = *(_DWORD *)(a2 + 34); v12 = *(_DWORD *)(a2 + 38); v29 = 0; v27 = v11; LOWORD(v11) = *(_WORD *)(a2 + 42); v25 = 0; v26 = 0; v28 = v12; v30 = v11; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v20); LOBYTE(v39) = 0; nullsub_1(&v20); v39 = -1; nullsub_1(&v15); result = v10; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040B900) -------------------------------------------------------- signed int __thiscall sub_40B900(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 const void *v5; // esi@2 unsigned __int16 v6; // ST0C_2@3 __int16 v7; // bx@4 int v8; // edx@7 __int16 v9; // ax@7 signed int v10; // eax@7 void *v11; // ecx@7 int v12; // edx@8 int v13; // eax@8 int v14; // eax@8 signed __int16 v15; // bx@10 __int16 v16; // dx@12 signed int v17; // esi@13 char v18[4]; // [sp+0h] [bp-604Ch]@2 unsigned int v19; // [sp+4h] [bp-6048h]@2 int v20; // [sp+8h] [bp-6044h]@3 int v21; // [sp+Ch] [bp-6040h]@3 char v22; // [sp+10h] [bp-603Ch]@12 int v23; // [sp+15h] [bp-6037h]@12 __int16 v24; // [sp+19h] [bp-6033h]@12 __int16 v25; // [sp+1Bh] [bp-6031h]@12 char v26; // [sp+2014h] [bp-4038h]@7 int v27; // [sp+2019h] [bp-4033h]@7 __int16 v28; // [sp+201Dh] [bp-402Fh]@7 __int16 v29; // [sp+201Fh] [bp-402Dh]@7 char v30; // [sp+4018h] [bp-2034h]@9 int v31; // [sp+601Ch] [bp-30h]@8 int v32; // [sp+6020h] [bp-2Ch]@8 __int16 v33; // [sp+6024h] [bp-28h]@8 unsigned int v34; // [sp+602Ch] [bp-20h]@8 int v35; // [sp+6030h] [bp-1Ch]@8 unsigned int v36; // [sp+603Ch] [bp-10h]@1 int v37; // [sp+6048h] [bp-4h]@7 int v38; // [sp+604Ch] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = (const void *)(a2 + 2); if ( sub_4038C0(*(_WORD *)(a2 + 8), a2 + 34, (int)&v19, (int)v18) ) { v6 = *(_WORD *)(a2 + 8); v21 = 0; v20 = *(_DWORD *)sub_402D20((int)&unk_6EA3E8, v6); if ( !v20 || (v7 = *(_WORD *)v18, !sub_403800((void *)v3, *(_DWORD *)(a2 + 22), *(_DWORD *)(a2 + 26), v18[0], (int)&v21)) || *(_DWORD *)(a2 + 18) != v21 || *(_DWORD *)(v20 + 106) < v19 ) { sub_44E180((int)&v26); v8 = *(_DWORD *)v5; v9 = *(_WORD *)(a2 + 6); v29 = 840; v37 = 0; v27 = v8; v28 = v9; sub_44E310((int)&v26, 0x3421u, 8u, 0); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v26); v11 = &v26; LABEL_13: v17 = v10; v37 = -1; nullsub_1(v11); return v17; } v12 = *(_DWORD *)(a2 + 26); v31 = *(_DWORD *)(a2 + 22); v34 = v19; v13 = *(_DWORD *)v3; v32 = v12; v33 = v7; v35 = 0; LOWORD(v14) = sub_461230(v13 + 4684, (int)&v31); if ( !v14 ) { sub_44E180((int)&v30); v37 = 1; sub_44E310((int)&v30, 0x3420u, 6u, v5); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v30); v11 = &v30; goto LABEL_13; } v15 = 840; } else { v15 = 841; } sub_44E180((int)&v22); v16 = *(_WORD *)(a2 + 6); v23 = *(_DWORD *)v5; v37 = 2; v24 = v16; v25 = v15; sub_44E310((int)&v22, 0x3421u, 8u, 0); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v22); v11 = &v22; goto LABEL_13; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0040BB30) -------------------------------------------------------- signed int __thiscall sub_40BB30(int this, int a2, int a3) { signed int result; // eax@1 __int16 v4; // dx@2 unsigned int v5; // eax@2 int v6; // ecx@3 int v7; // ecx@4 int v8; // ecx@5 signed __int16 v9; // ax@7 int v10; // ecx@8 __int16 v11; // dx@8 __int16 v12; // ax@8 int v13; // ecx@8 signed __int16 v14; // di@13 unsigned __int16 v15; // ST0C_2@21 __int16 v16; // ax@27 __int16 v17; // dx@27 int v18; // eax@28 int v19; // edx@28 int v20; // ecx@28 int v21; // eax@28 int v22; // edx@28 int v23; // edi@28 int v24; // eax@28 __int16 v25; // dx@29 int v26; // eax@29 int v27; // ecx@29 int v28; // eax@29 int v29; // ecx@29 signed int v30; // edi@29 __int16 v31; // ax@29 int v32; // edx@29 int v33; // ecx@29 int v34; // eax@29 char *v35; // [sp-18h] [bp-20ACh]@8 unsigned int v36; // [sp-14h] [bp-20A8h]@8 int v37; // [sp+0h] [bp-2094h]@21 int v38; // [sp+4h] [bp-2090h]@21 int v39; // [sp+8h] [bp-208Ch]@3 int v40; // [sp+Ch] [bp-2088h]@1 char v41; // [sp+10h] [bp-2084h]@29 int v42; // [sp+15h] [bp-207Fh]@29 char v43; // [sp+19h] [bp-207Bh]@29 int v44; // [sp+25h] [bp-206Fh]@29 int v45; // [sp+29h] [bp-206Bh]@29 __int16 v46; // [sp+2Dh] [bp-2067h]@29 int v47; // [sp+2Fh] [bp-2065h]@29 int v48; // [sp+33h] [bp-2061h]@29 int v49; // [sp+37h] [bp-205Dh]@29 int v50; // [sp+3Bh] [bp-2059h]@29 __int16 v51; // [sp+3Fh] [bp-2055h]@29 int v52; // [sp+41h] [bp-2053h]@29 int rgbValue; // [sp+2014h] [bp-80h]@28 int v54; // [sp+2018h] [bp-7Ch]@28 int v55; // [sp+201Ch] [bp-78h]@28 int v56; // [sp+2020h] [bp-74h]@28 int v57; // [sp+2024h] [bp-70h]@28 int v58; // [sp+2028h] [bp-6Ch]@28 __int16 v59; // [sp+202Ch] [bp-68h]@28 int v60; // [sp+2034h] [bp-60h]@28 int v61; // [sp+2038h] [bp-5Ch]@28 int v62; // [sp+203Ch] [bp-58h]@28 int v63; // [sp+2040h] [bp-54h]@28 char v64; // [sp+204Ch] [bp-48h]@29 __int16 v65; // [sp+204Dh] [bp-47h]@29 int v66; // [sp+204Fh] [bp-45h]@29 __int16 v67; // [sp+2053h] [bp-41h]@29 __int16 v68; // [sp+2055h] [bp-3Fh]@29 int v69; // [sp+2057h] [bp-3Dh]@29 int v70; // [sp+205Bh] [bp-39h]@29 __int16 v71; // [sp+205Fh] [bp-35h]@29 char v72; // [sp+2064h] [bp-30h]@8 __int16 v73; // [sp+2065h] [bp-2Fh]@8 int v74; // [sp+2067h] [bp-2Dh]@8 __int16 v75; // [sp+206Bh] [bp-29h]@8 __int16 v76; // [sp+206Dh] [bp-27h]@8 __int16 v77; // [sp+206Fh] [bp-25h]@8 char v78; // [sp+2074h] [bp-20h]@27 __int16 v79; // [sp+2075h] [bp-1Fh]@27 int v80; // [sp+2077h] [bp-1Dh]@27 __int16 v81; // [sp+207Bh] [bp-19h]@27 __int16 v82; // [sp+207Dh] [bp-17h]@27 __int16 v83; // [sp+207Fh] [bp-15h]@27 unsigned int v84; // [sp+2084h] [bp-10h]@1 int v85; // [sp+2090h] [bp-4h]@29 int v86; // [sp+2094h] [bp+0h]@1 v84 = (unsigned int)&v86 ^ __security_cookie; v40 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_WORD *)(a2 + 18); v5 = *(_WORD *)(a2 + 18); if ( v5 < dword_6EA3EC ) { v6 = dword_6EACDC + 40 * v5; v39 = v6; if ( v6 ) { v7 = *(_DWORD *)v6; if ( v7 ) { v8 = *(_WORD *)v7; if ( (_WORD)v8 == v4 ) { if ( *(_DWORD *)v39 ) { switch ( *(_DWORD *)(*(_DWORD *)v39 + 102) ) { default: goto LABEL_7; case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: v14 = 1; break; case 1: case 0x15: v14 = 2; break; case 2: v14 = 3; break; case 0x18: v14 = 4; break; case 3: v14 = 300; break; case 0x22: v14 = 2000; break; case 0x21: v14 = 2500; break; case 0x23: v14 = 2600; break; } v15 = *(_WORD *)(a2 + 18); v38 = 0; v39 = 0; v37 = *(_DWORD *)sub_402D20((int)&unk_6EA3E8, v15); if ( !v37 || !sub_403800((void *)v40, *(_DWORD *)(a2 + 20), *(_DWORD *)(a2 + 24), v14, (int)&v38) || !sub_403800((void *)v40, *(_DWORD *)(a2 + 28), *(_DWORD *)(a2 + 32), v14, (int)&v39) || *(_DWORD *)(a2 + 36) != v38 || *(_DWORD *)(a2 + 40) != v39 || *(_DWORD *)(v37 + 106) < (unsigned int)(v38 + v39) ) { v16 = *(_WORD *)(a2 + 6); v80 = *(_DWORD *)(a2 + 2); v17 = *(_WORD *)(a2 + 16); v82 = 1031; v81 = v16; v83 = v17; v36 = 13; v35 = &v78; v13 = *(_DWORD *)(v40 + 4); v78 = 12; v79 = 13360; return sub_43BFE0(v13, (int)v35, v36); } v18 = *(_DWORD *)(a2 + 8); v19 = *(_DWORD *)(a2 + 28); v54 = *(_DWORD *)(a2 + 12); v20 = *(_DWORD *)(a2 + 20); rgbValue = v18; v21 = *(_DWORD *)(a2 + 32); v55 = v19; v22 = *(_DWORD *)(a2 + 24); v59 = v14; v23 = v40; v57 = v20; v56 = v21; v24 = *(_DWORD *)v40; v58 = v22; v60 = 0; v61 = 0; v62 = 0; v63 = 0; switch ( sub_461260(v24 + 4684, &rgbValue) ) { case 0: v25 = *(_WORD *)(a2 + 16); v26 = *(_DWORD *)(a2 + 2); v67 = *(_WORD *)(a2 + 6); v27 = *(_DWORD *)(a2 + 24); v66 = v26; v28 = *(_DWORD *)(a2 + 20); v70 = v27; v68 = v25; v69 = v28; v29 = *(_DWORD *)(v23 + 4); v71 = v62; v64 = 20; v65 = 13359; v30 = sub_43BFE0(v29, (int)&v64, 0x15u); sub_44E180((int)&v41); v85 = 0; sub_44E310((int)&v41, 0x456u, 0x30u, 0); v42 = *(_DWORD *)(a2 + 4); sub_4029C0(&v43, "Need"); v31 = *(_WORD *)(a2 + 18); v32 = *(_DWORD *)(a2 + 24); v47 = *(_DWORD *)(a2 + 20); v33 = *(_DWORD *)(a2 + 32); v46 = v31; v34 = *(_DWORD *)(a2 + 28); v50 = v33; v48 = v32; v49 = v34; v44 = 0; v45 = 0; v51 = v60; v52 = (unsigned __int16)v62; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v41); v85 = -1; nullsub_1(&v41); return v30; case 1: v9 = 1027; break; case 2: v9 = 1028; break; case 3: v9 = 1029; break; case 4: v9 = 1030; break; case 5: v9 = 1038; break; case 6: v9 = 1039; break; case 7: v9 = 1040; break; case 8: v9 = 1041; break; default: v9 = 1031; break; } LABEL_8: v10 = *(_DWORD *)(a2 + 2); v11 = *(_WORD *)(a2 + 6); v76 = v9; v12 = *(_WORD *)(a2 + 16); v74 = v10; v75 = v11; v77 = v12; v36 = 13; v73 = 13360; v13 = *(_DWORD *)(v40 + 4); v72 = 12; v35 = &v72; return sub_43BFE0(v13, (int)v35, v36); } } else { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * v5 + v8); } } } } LABEL_7: v9 = 1026; goto LABEL_8; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (0040BF80) -------------------------------------------------------- signed int __thiscall sub_40BF80(int this, int a2, int a3) { signed int result; // eax@1 signed __int16 v4; // ax@3 unsigned int v5; // eax@4 int v6; // edi@5 int v7; // ecx@7 int v8; // eax@7 __int16 v9; // dx@10 __int16 v10; // ax@10 char *v11; // edx@10 int v12; // edi@13 signed __int16 v13; // di@15 unsigned __int16 v14; // ST0C_2@23 unsigned int v15; // edx@26 unsigned int v16; // eax@27 unsigned int v17; // ecx@28 int v18; // eax@30 __int16 v19; // cx@31 __int16 v20; // ax@31 int v21; // ecx@32 int v22; // edx@32 int v23; // ecx@32 int v24; // edx@32 int v25; // ecx@32 int v26; // edi@32 int v27; // ST08_4@32 __int16 v28; // dx@33 int v29; // eax@33 int v30; // ecx@33 int v31; // edx@33 int v32; // eax@33 int v33; // eax@33 int v34; // ecx@33 signed int v35; // edi@33 int v36; // edx@33 int v37; // eax@33 int v38; // edx@33 int v39; // [sp+0h] [bp-20A8h]@23 int v40; // [sp+4h] [bp-20A4h]@23 int v41; // [sp+8h] [bp-20A0h]@23 int v42; // [sp+Ch] [bp-209Ch]@1 char v43; // [sp+10h] [bp-2098h]@33 int v44; // [sp+15h] [bp-2093h]@33 char v45; // [sp+19h] [bp-208Fh]@33 int v46; // [sp+25h] [bp-2083h]@33 int v47; // [sp+29h] [bp-207Fh]@33 __int16 v48; // [sp+2Dh] [bp-207Bh]@33 int v49; // [sp+2Fh] [bp-2079h]@33 int v50; // [sp+33h] [bp-2075h]@33 int v51; // [sp+37h] [bp-2071h]@33 int v52; // [sp+3Bh] [bp-206Dh]@33 __int16 v53; // [sp+3Fh] [bp-2069h]@33 __int16 v54; // [sp+41h] [bp-2067h]@33 __int16 v55; // [sp+43h] [bp-2065h]@33 int rgbValue; // [sp+2014h] [bp-94h]@32 int v57; // [sp+2018h] [bp-90h]@32 int v58; // [sp+201Ch] [bp-8Ch]@32 __int16 v59; // [sp+2020h] [bp-88h]@32 int v60; // [sp+2024h] [bp-84h]@32 int v61; // [sp+2028h] [bp-80h]@32 int v62; // [sp+202Ch] [bp-7Ch]@32 int v63; // [sp+2030h] [bp-78h]@32 int v64; // [sp+2034h] [bp-74h]@32 __int16 v65; // [sp+2038h] [bp-70h]@32 int v66; // [sp+203Ch] [bp-6Ch]@32 int v67; // [sp+2040h] [bp-68h]@32 __int64 v68; // [sp+2044h] [bp-64h]@32 char v69; // [sp+2054h] [bp-54h]@33 __int16 v70; // [sp+2055h] [bp-53h]@33 int v71; // [sp+2057h] [bp-51h]@33 __int16 v72; // [sp+205Bh] [bp-4Dh]@33 __int16 v73; // [sp+205Dh] [bp-4Bh]@33 int v74; // [sp+205Fh] [bp-49h]@33 int v75; // [sp+2063h] [bp-45h]@33 int v76; // [sp+2067h] [bp-41h]@33 int v77; // [sp+206Bh] [bp-3Dh]@33 __int16 v78; // [sp+206Fh] [bp-39h]@33 __int16 v79; // [sp+2071h] [bp-37h]@33 __int16 v80; // [sp+2073h] [bp-35h]@33 char v81; // [sp+2078h] [bp-30h]@10 __int16 v82; // [sp+2079h] [bp-2Fh]@10 int v83; // [sp+207Bh] [bp-2Dh]@10 __int16 v84; // [sp+207Fh] [bp-29h]@10 __int16 v85; // [sp+2081h] [bp-27h]@10 __int16 v86; // [sp+2083h] [bp-25h]@10 char v87; // [sp+2088h] [bp-20h]@31 __int16 v88; // [sp+2089h] [bp-1Fh]@31 int v89; // [sp+208Bh] [bp-1Dh]@31 __int16 v90; // [sp+208Fh] [bp-19h]@31 __int16 v91; // [sp+2091h] [bp-17h]@31 __int16 v92; // [sp+2093h] [bp-15h]@31 unsigned int v93; // [sp+2098h] [bp-10h]@1 int v94; // [sp+20A4h] [bp-4h]@33 int v95; // [sp+20A8h] [bp+0h]@1 v93 = (unsigned int)&v95 ^ __security_cookie; v42 = this; result = sub_43B000(this, a2); if ( result ) { if ( !*(_WORD *)(a2 + 12) ) { v4 = 1042; goto LABEL_10; } v5 = *(_WORD *)(a2 + 10); if ( v5 < dword_6EA3EC ) { v6 = dword_6EACDC + 40 * v5; if ( v6 ) { if ( *(_DWORD *)v6 ) { v7 = **(_WORD **)v6; v8 = v7 + 10000 * v5; if ( (_WORD)v7 == *(_WORD *)(a2 + 10) ) { v12 = *(_DWORD *)v6; if ( v12 ) { switch ( *(_DWORD *)(v12 + 102) ) { default: goto LABEL_9; case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: v13 = 1; break; case 1: case 0x15: v13 = 2; break; case 2: v13 = 3; break; case 0x18: v13 = 4; break; case 3: v13 = 300; break; case 0x22: v13 = 2000; break; case 0x21: v13 = 2500; break; case 0x23: v13 = 2600; break; } v14 = *(_WORD *)(a2 + 10); v40 = 0; v41 = 0; v39 = *(_DWORD *)sub_402D20((int)&unk_6EA3E8, v14); if ( !v39 || !sub_403800((void *)v42, *(_DWORD *)(a2 + 18), *(_DWORD *)(a2 + 22), v13, (int)&v40) || !sub_403800((void *)v42, *(_DWORD *)(a2 + 30), *(_DWORD *)(a2 + 34), v13, (int)&v41) || (v15 = *(_DWORD *)(a2 + 38), v15 != v40) || (v16 = *(_DWORD *)(a2 + 42), v16 != v41) || (v17 = *(_DWORD *)(v39 + 106), v17 < v15) || v17 < v16 || (v18 = *(_WORD *)(a2 + 12), v17 < v18 + v41) ) { v19 = *(_WORD *)(a2 + 6); v89 = *(_DWORD *)(a2 + 2); v20 = *(_WORD *)(a2 + 8); v90 = v19; v91 = 1037; v92 = v20; v87 = 12; v88 = 13363; v11 = &v87; return sub_43BFE0(*(_DWORD *)(v42 + 4), (int)v11, 0xDu); } v21 = *(_DWORD *)(a2 + 18); v57 = *(_DWORD *)(a2 + 22); v22 = *(_DWORD *)(a2 + 30); rgbValue = v21; v23 = *(_DWORD *)(a2 + 14); v62 = v22; v24 = *(_DWORD *)(a2 + 26); v58 = v23; v25 = *(_DWORD *)(a2 + 34); v64 = v24; v59 = v13; v65 = v13; v26 = v42; v63 = v25; v68 = v18; v27 = *(_DWORD *)v42 + 4684; v60 = 0; v61 = 0; v66 = 0; v67 = 0; switch ( sub_461370(v27, &rgbValue) ) { case 0: v28 = *(_WORD *)(a2 + 8); v29 = *(_DWORD *)(a2 + 2); v72 = *(_WORD *)(a2 + 6); v30 = *(_DWORD *)(a2 + 22); v73 = v28; v31 = *(_DWORD *)(a2 + 30); v71 = v29; v32 = *(_DWORD *)(a2 + 18); v75 = v30; LOWORD(v30) = *(_WORD *)(a2 + 12); v76 = v31; v74 = v32; v33 = *(_DWORD *)(a2 + 34); v78 = v30; v77 = v33; v79 = v60; v70 = 13362; v34 = *(_DWORD *)(v26 + 4); v80 = v66; v69 = 32; v35 = sub_43BFE0(v34, (int)&v69, 0x21u); sub_44E180((int)&v43); v94 = 0; sub_44E310((int)&v43, 0x456u, 0x30u, 0); v44 = *(_DWORD *)(a2 + 4); sub_4029C0(&v45, "Need"); v36 = *(_DWORD *)(a2 + 30); v37 = *(_DWORD *)(a2 + 34); v48 = *(_WORD *)(a2 + 10); v51 = *(_DWORD *)(a2 + 18); v49 = v36; v38 = *(_DWORD *)(a2 + 22); v50 = v37; LOWORD(v37) = *(_WORD *)(a2 + 12); v52 = v38; v54 = v66; v46 = 0; v47 = 0; v53 = v37; v55 = v60; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v43); v94 = -1; nullsub_1(&v43); return v35; case 1: v4 = 1033; break; case 2: v4 = 1034; break; case 3: v4 = 1035; break; case 4: v4 = 1036; break; case 5: v4 = 1043; break; case 6: v4 = 1044; break; case 7: v4 = 1045; break; case 8: v4 = 1046; break; case 9: v4 = 1047; break; default: v4 = 1037; break; } LABEL_10: v9 = *(_WORD *)(a2 + 6); v83 = *(_DWORD *)(a2 + 2); v85 = v4; v10 = *(_WORD *)(a2 + 8); v84 = v9; v86 = v10; v81 = 12; v82 = 13363; v11 = &v81; return sub_43BFE0(*(_DWORD *)(v42 + 4), (int)v11, 0xDu); } } else { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v8); } } } } LABEL_9: v4 = 1032; goto LABEL_10; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (0040C430) -------------------------------------------------------- signed int __thiscall sub_40C430(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 char v5; // [sp+8h] [bp-4h]@2 v3 = a2; result = sub_43B000(this, a2); if ( result ) { sub_4038C0(*(_WORD *)(v3 + 40), v3 + 46, (int)&v5, (int)&a2); result = 1; } return result; } //----- (0040C480) -------------------------------------------------------- signed int __thiscall sub_40C480(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@3 signed int v6; // edi@3 __int16 v7; // dx@3 void *v8; // ecx@5 int v9; // eax@6 char v10; // [sp+8h] [bp-601Ch]@3 int v11; // [sp+Dh] [bp-6017h]@3 __int16 v12; // [sp+11h] [bp-6013h]@3 char v13; // [sp+200Ch] [bp-4018h]@6 int v14; // [sp+2011h] [bp-4013h]@6 __int16 v15; // [sp+2015h] [bp-400Fh]@6 __int16 v16; // [sp+2017h] [bp-400Dh]@6 char v17; // [sp+4010h] [bp-2014h]@3 int v18; // [sp+4015h] [bp-200Fh]@3 char v19[4]; // [sp+4019h] [bp-200Bh]@3 int v20; // [sp+401Dh] [bp-2007h]@3 int v21; // [sp+4021h] [bp-2003h]@3 int v22; // [sp+4025h] [bp-1FFFh]@3 int v23; // [sp+4029h] [bp-1FFBh]@3 int v24; // [sp+402Dh] [bp-1FF7h]@3 int v25; // [sp+4031h] [bp-1FF3h]@3 __int16 v26; // [sp+4035h] [bp-1FEFh]@3 __int16 v27; // [sp+4037h] [bp-1FEDh]@3 __int16 v28; // [sp+4039h] [bp-1FEBh]@3 unsigned int v29; // [sp+6014h] [bp-10h]@1 int v30; // [sp+6020h] [bp-4h]@3 int v31; // [sp+6024h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( sub_457D20(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 20), 0) ) { sub_44E180((int)&v10); v5 = *(_DWORD *)(a2 + 2); v12 = *(_WORD *)(a2 + 6); v30 = 0; v11 = v5; sub_44E310((int)&v10, 0x3439u, 7u, 0); v6 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v10); sub_44E180((int)&v17); LOBYTE(v30) = 1; sub_44E310((int)&v17, 0x446u, 0x26u, 0); v18 = *(_DWORD *)(a2 + 8); v21 = 0; v20 = 0; *(_DWORD *)v19 = 0; strncpy(v19, "Need Cen", 0xCu); v7 = *(_WORD *)(a2 + 20); v28 = word_6EACE0; v22 = 0; v23 = 0; v24 = 0; v25 = 0; v26 = v7; v27 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v17); LOBYTE(v30) = 0; nullsub_1(&v17); v8 = &v10; } else { sub_44E180((int)&v13); v9 = *(_DWORD *)(a2 + 2); v15 = *(_WORD *)(a2 + 6); v30 = 2; v14 = v9; v16 = 1601; sub_44E310((int)&v13, 0x343Au, 8u, 0); v6 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v13); v8 = &v13; } v30 = -1; nullsub_1(v8); result = v6; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 6EACE0: using guessed type __int16 word_6EACE0; //----- (0040C680) -------------------------------------------------------- signed int __thiscall sub_40C680(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@4 signed int v6; // ebx@4 int v7; // esi@5 void *v8; // ecx@8 __int16 v9; // dx@9 signed int v10; // eax@9 int v11; // edx@11 __int16 v12; // ax@11 int v13; // esi@12 __int16 v14; // dx@16 int v15; // [sp-20h] [bp-6044h]@2 int v16; // [sp-1Ch] [bp-6040h]@2 int v17; // [sp-18h] [bp-603Ch]@2 __int64 v18; // [sp+0h] [bp-6024h]@4 char v19; // [sp+8h] [bp-601Ch]@16 int v20; // [sp+Dh] [bp-6017h]@16 __int16 v21; // [sp+11h] [bp-6013h]@16 __int16 v22; // [sp+13h] [bp-6011h]@16 char v23; // [sp+200Ch] [bp-4018h]@4 int v24; // [sp+2011h] [bp-4013h]@4 __int16 v25; // [sp+2015h] [bp-400Fh]@4 char v26; // [sp+4010h] [bp-2014h]@5 int v27; // [sp+4015h] [bp-200Fh]@5 __int64 v28; // [sp+4019h] [bp-200Bh]@5 __int64 v29; // [sp+4021h] [bp-2003h]@5 int v30; // [sp+4029h] [bp-1FFBh]@5 int v31; // [sp+402Dh] [bp-1FF7h]@5 unsigned int v32; // [sp+6014h] [bp-10h]@1 int v33; // [sp+6020h] [bp-4h]@4 int v34; // [sp+6024h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v17 = *(_DWORD *)(a2 + 12); v16 = *(_DWORD *)(a2 + 8); v15 = *(_DWORD *)v3 + 4684; if ( *(_BYTE *)(a2 + 16) ) { if ( sub_457D20(v15, v16, v17, 0) ) { sub_44E180((int)&v23); v5 = *(_DWORD *)(a2 + 2); v25 = *(_WORD *)(a2 + 6); v33 = 0; v24 = v5; sub_44E310((int)&v23, 0x347Bu, 7u, 0); v6 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v23); if ( sub_457C80(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), &v18) ) { sub_44E180((int)&v26); LOBYTE(v33) = 1; sub_44E310((int)&v26, 0x462u, 0x1Cu, 0); v7 = *(_DWORD *)(a2 + 12); v27 = *(_DWORD *)(a2 + 8); v28 = v18 + (unsigned int)v7; v29 = v18; v30 = v7; v31 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v26); LOBYTE(v33) = 0; nullsub_1(&v26); } v8 = &v23; goto LABEL_18; } sub_44E180((int)&v26); v9 = *(_WORD *)(a2 + 6); v27 = *(_DWORD *)(a2 + 2); v33 = 2; LOWORD(v28) = v9; WORD1(v28) = 1603; sub_44E310((int)&v26, 0x347Cu, 8u, 0); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v26); v8 = &v26; } else { if ( sub_457DC0(v15, v16, v17, 0) ) { sub_44E180((int)&v23); v11 = *(_DWORD *)(a2 + 2); v12 = *(_WORD *)(a2 + 6); v33 = 3; v24 = v11; v25 = v12; sub_44E310((int)&v23, 0x347Bu, 7u, 0); v6 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v23); if ( sub_457C80(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), &v18) ) { sub_44E180((int)&v26); LOBYTE(v33) = 4; sub_44E310((int)&v26, 0x462u, 0x1Cu, 0); v13 = *(_DWORD *)(a2 + 12); v27 = *(_DWORD *)(a2 + 8); v28 = v18 + (unsigned int)v13; v29 = v18; v30 = v13; v31 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v26); LOBYTE(v33) = 3; nullsub_1(&v26); } v8 = &v23; goto LABEL_18; } sub_44E180((int)&v19); v14 = *(_WORD *)(a2 + 6); v20 = *(_DWORD *)(a2 + 2); v33 = 5; v21 = v14; v22 = 1603; sub_44E310((int)&v19, 0x347Cu, 8u, 0); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v19); v8 = &v19; } v6 = v10; LABEL_18: v33 = -1; nullsub_1(v8); result = v6; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040CA00) -------------------------------------------------------- signed int __thiscall sub_40CA00(int this, int a2, int a3) { int v4; // edi@5 int v5; // ebx@5 signed __int16 v6; // di@8 int v7; // edi@10 int v8; // ecx@11 int v9; // edx@11 int v10; // ebx@13 int v11; // eax@18 int v12; // eax@19 int v13; // eax@21 int v14; // eax@22 int v15; // eax@26 int v16; // edx@26 __int16 v17; // cx@26 int v18; // edx@26 int v19; // ecx@26 int v20; // edx@26 int v21; // eax@26 int v22; // eax@31 int v23; // eax@32 int v24; // eax@35 int v25; // ecx@35 __int16 v26; // dx@35 int v27; // eax@35 int v28; // eax@37 int v29; // eax@38 int v30; // edx@41 int v31; // eax@41 __int16 v32; // cx@41 int v33; // eax@41 bool v34; // zf@44 int v35; // ecx@44 int v36; // eax@45 int v37; // edx@45 int v38; // ecx@45 int v39; // eax@45 int v40; // ecx@45 int v41; // edi@54 int v42; // eax@55 int v43; // edx@62 __int16 v44; // cx@62 int v45; // edx@62 int v46; // ecx@62 __int16 v47; // ax@62 int v48; // edx@62 int v49; // eax@66 int v50; // ecx@66 __int16 v51; // dx@66 int v52; // eax@66 int v53; // ecx@67 int v54; // edx@67 int v55; // eax@67 __int16 v56; // cx@68 int v57; // eax@68 int v58; // ST24_4@68 __int16 v59; // dx@73 int v60; // edi@73 __int16 v61; // ax@73 int v62; // ecx@73 __int16 v63; // ax@74 __int16 v64; // cx@74 int v65; // ecx@75 int v66; // edx@75 int v67; // ecx@75 int v68; // eax@75 int v69; // edx@75 signed int v70; // ebx@80 int v71; // edi@81 signed int v72; // eax@82 int v73; // eax@86 int v74; // eax@87 __int16 v75; // dx@89 int v76; // eax@89 int v77; // ecx@89 __int16 v78; // dx@89 void *v79; // ecx@89 int v80; // eax@91 __int16 v81; // dx@91 int v82; // eax@91 int v83; // edx@91 __int16 v84; // ax@91 __int16 v85; // dx@92 int v86; // eax@92 int v87; // ecx@92 __int16 v88; // dx@92 __int16 v89; // ax@94 int v90; // edx@94 int v91; // ecx@94 int v92; // edx@99 __int16 v93; // ax@99 __int16 v94; // cx@99 int v95; // ecx@99 __int16 v96; // cx@100 __int16 v97; // dx@100 char *v98; // [sp-18h] [bp-62D4h]@74 int v99; // [sp-14h] [bp-62D0h]@67 unsigned int v100; // [sp-14h] [bp-62D0h]@74 int v101; // [sp-14h] [bp-62D0h]@93 unsigned int v102; // [sp-10h] [bp-62CCh]@1 int v103; // [sp+0h] [bp-62BCh]@0 signed int v104; // [sp+4h] [bp-62B8h]@9 int v105; // [sp+4h] [bp-62B8h]@53 int rgbValue; // [sp+8h] [bp-62B4h]@0 signed int rgbValuea; // [sp+8h] [bp-62B4h]@55 int v108; // [sp+Ch] [bp-62B0h]@1 signed int v109; // [sp+10h] [bp-62ACh]@11 signed __int16 v110; // [sp+10h] [bp-62ACh]@50 char v111; // [sp+14h] [bp-62A8h]@44 int v112; // [sp+19h] [bp-62A3h]@45 int v113; // [sp+1Dh] [bp-629Fh]@45 int v114; // [sp+21h] [bp-629Bh]@44 int v115; // [sp+25h] [bp-6297h]@44 int v116; // [sp+29h] [bp-6293h]@45 int v117; // [sp+2Dh] [bp-628Fh]@45 char v118; // [sp+2018h] [bp-42A4h]@44 int v119; // [sp+201Dh] [bp-429Fh]@45 int v120; // [sp+2021h] [bp-429Bh]@45 int v121; // [sp+2025h] [bp-4297h]@44 int v122; // [sp+2029h] [bp-4293h]@44 int v123; // [sp+202Dh] [bp-428Fh]@45 int v124; // [sp+2031h] [bp-428Bh]@45 char v125; // [sp+401Ch] [bp-22A0h]@80 int v126; // [sp+4021h] [bp-229Bh]@89 int v127; // [sp+4025h] [bp-2297h]@89 __int16 v128; // [sp+4029h] [bp-2293h]@89 int v129; // [sp+402Bh] [bp-2291h]@89 int v130; // [sp+402Fh] [bp-228Dh]@89 __int16 v131; // [sp+4033h] [bp-2289h]@89 int v132; // [sp+6020h] [bp-29Ch]@26 int v133; // [sp+6024h] [bp-298h]@26 int v134; // [sp+6028h] [bp-294h]@26 char v135; // [sp+602Ch] [bp-290h]@26 __int16 v136; // [sp+602Eh] [bp-28Eh]@26 int v137; // [sp+6030h] [bp-28Ch]@26 int v138; // [sp+6034h] [bp-288h]@26 int v139; // [sp+6038h] [bp-284h]@26 char v140; // [sp+603Ch] [bp-280h]@26 __int16 v141; // [sp+603Eh] [bp-27Eh]@26 char v142; // [sp+6040h] [bp-27Ch]@27 int v143; // [sp+6048h] [bp-274h]@62 int v144; // [sp+604Ch] [bp-270h]@62 int v145; // [sp+6050h] [bp-26Ch]@62 char v146; // [sp+6054h] [bp-268h]@62 __int16 v147; // [sp+6056h] [bp-266h]@62 int v148; // [sp+6058h] [bp-264h]@62 int v149; // [sp+605Ch] [bp-260h]@62 int v150; // [sp+6060h] [bp-25Ch]@62 char v151; // [sp+6064h] [bp-258h]@62 __int16 v152; // [sp+6066h] [bp-256h]@62 char v153; // [sp+6068h] [bp-254h]@63 int v154; // [sp+6070h] [bp-24Ch]@41 int v155; // [sp+6074h] [bp-248h]@41 int v156; // [sp+6078h] [bp-244h]@41 char v157; // [sp+607Ch] [bp-240h]@41 __int16 v158; // [sp+607Eh] [bp-23Eh]@41 int v159; // [sp+6080h] [bp-23Ch]@35 int v160; // [sp+6084h] [bp-238h]@35 int v161; // [sp+6088h] [bp-234h]@35 char v162; // [sp+608Ch] [bp-230h]@35 __int16 v163; // [sp+608Eh] [bp-22Eh]@35 char v164; // [sp+6090h] [bp-22Ch]@73 __int16 v165; // [sp+6091h] [bp-22Bh]@73 int v166; // [sp+6093h] [bp-229h]@73 __int16 v167; // [sp+6097h] [bp-225h]@73 __int16 v168; // [sp+6099h] [bp-223h]@73 __int16 v169; // [sp+609Bh] [bp-221h]@73 char v170; // [sp+60A0h] [bp-21Ch]@99 __int16 v171; // [sp+60A1h] [bp-21Bh]@99 int v172; // [sp+60A3h] [bp-219h]@99 __int16 v173; // [sp+60A7h] [bp-215h]@99 __int16 v174; // [sp+60A9h] [bp-213h]@99 char v175; // [sp+60ACh] [bp-210h]@65 char v176; // [sp+61ACh] [bp-110h]@52 unsigned int v177; // [sp+62ACh] [bp-10h]@1 int v178; // [sp+62B8h] [bp-4h]@44 int v179; // [sp+62BCh] [bp+0h]@1 v177 = (unsigned int)&v179 ^ __security_cookie; v102 = (unsigned int)&v179 ^ __security_cookie; v108 = this; if ( !sub_43B000(this, a2) ) return 0; if ( *(_QWORD *)(a2 + 19) ) { if ( *(_BYTE *)(a2 + 18) == 65 ) { v4 = *(_DWORD *)(a2 + 4); v5 = *(_DWORD *)(a2 + 10); } else { v4 = *(_DWORD *)(a2 + 10); v5 = *(_DWORD *)(a2 + 4); } rgbValue = v5; v103 = v4; if ( !sub_457E60(*(_DWORD *)v108 + 4684, v4, v5, *(_DWORD *)(a2 + 19), *(_DWORD *)(a2 + 23)) ) { v6 = 2122; goto LABEL_73; } } v104 = 0; if ( !*(_BYTE *)(a2 + 43) ) { LABEL_43: if ( *(_QWORD *)(a2 + 19) ) { sub_44E180((int)&v118); v178 = 0; sub_44E180((int)&v111); LOBYTE(v178) = 1; sub_44E310((int)&v118, 0x460u, 0x18u, 0); sub_44E310((int)&v111, 0x461u, 0x18u, 0); v34 = *(_BYTE *)(a2 + 18) == 65; v35 = *(_DWORD *)(a2 + 23); v121 = *(_DWORD *)(a2 + 19); v122 = v35; v114 = v121; v115 = v35; if ( v34 ) { v36 = *(_DWORD *)(a2 + 10); v37 = *(_DWORD *)(a2 + 31); v120 = *(_DWORD *)(a2 + 4); v112 = v120; v38 = *(_DWORD *)(a2 + 27); v119 = v36; v113 = v36; v39 = *(_DWORD *)(a2 + 35); v116 = v38; v40 = *(_DWORD *)(a2 + 39); v117 = v37; v123 = v39; v124 = v40; } else { v65 = *(_DWORD *)(a2 + 10); v66 = *(_DWORD *)(a2 + 27); v119 = *(_DWORD *)(a2 + 4); v120 = v65; v112 = v65; v67 = *(_DWORD *)(a2 + 35); v113 = v119; v68 = *(_DWORD *)(a2 + 31); v116 = v66; v69 = *(_DWORD *)(a2 + 39); v117 = v68; v123 = v67; v124 = v69; } if ( dword_6E9EC0 ) { sub_44B7E0((void *)dword_6E9EC0, (int)&v118); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v111); } LOBYTE(v178) = 0; nullsub_1(&v111); v178 = -1; nullsub_1(&v118); } sub_44E180((int)&v125); v70 = 0; v178 = 2; if ( !*(_BYTE *)(a2 + 43) ) { LABEL_99: v178 = -1; nullsub_1(&v125); v92 = *(_DWORD *)(a2 + 2); v93 = *(_WORD *)(a2 + 6); v60 = v108; v171 = 13373; v94 = *(_WORD *)(a2 + 14); v172 = v92; v174 = v94; v95 = *(_DWORD *)(v108 + 4); v170 = 10; v173 = v93; if ( sub_43BFE0(v95, (int)&v170, 0xBu) ) { v96 = *(_WORD *)(a2 + 12); v97 = *(_WORD *)(a2 + 16); v172 = *(_DWORD *)(a2 + 8); v100 = 11; v173 = v96; v174 = v97; v98 = &v170; return sub_43BFE0(*(_DWORD *)(v60 + 4), (int)v98, v100); } return 0; } v71 = a2 + 57; while ( 1 ) { v72 = 0; if ( (*(_DWORD *)(v71 - 9) & *(_DWORD *)(v71 - 13)) != -1 ) v72 = 1; if ( (*(_DWORD *)(v71 + 4) & *(_DWORD *)v71) != -1 ) v72 += 2; v73 = v72 - 1; if ( !v73 ) break; v74 = v73 - 1; if ( v74 ) { if ( v74 != 1 ) goto LABEL_98; sub_44E310((int)&v125, 0x44Au, 0x14u, 0); v75 = *(_WORD *)(v71 - 5); v76 = *(_DWORD *)(a2 + 4); v127 = *(_DWORD *)(a2 + 10); v77 = *(_DWORD *)(v71 - 9); v128 = v75; v78 = *(_WORD *)(v71 - 3); v130 = v77; v79 = (void *)dword_6E9EC0; v126 = v76; v129 = *(_DWORD *)(v71 - 13); v131 = v78; if ( dword_6E9EC0 ) { sub_44B7E0((void *)dword_6E9EC0, (int)&v125); v79 = (void *)dword_6E9EC0; } v80 = *(_DWORD *)(a2 + 4); v126 = *(_DWORD *)(a2 + 10); v81 = *(_WORD *)(v71 + 8); v127 = v80; v82 = *(_DWORD *)v71; v128 = v81; v83 = *(_DWORD *)(v71 + 4); v129 = v82; v84 = *(_WORD *)(v71 + 10); goto LABEL_95; } sub_44E310((int)&v125, 0x44Au, 0x14u, 0); v85 = *(_WORD *)(v71 + 8); v86 = *(_DWORD *)(a2 + 10); v127 = *(_DWORD *)(a2 + 4); v87 = *(_DWORD *)(v71 + 4); v128 = v85; v88 = *(_WORD *)(v71 + 10); v130 = v87; v79 = (void *)dword_6E9EC0; v126 = v86; v129 = *(_DWORD *)v71; v131 = v88; if ( dword_6E9EC0 ) { v101 = (int)&v125; LABEL_97: sub_44B7E0(v79, v101); } LABEL_98: ++v70; v71 += 26; if ( v70 >= *(_BYTE *)(a2 + 43) ) goto LABEL_99; } sub_44E310((int)&v125, 0x44Au, 0x14u, 0); v89 = *(_WORD *)(v71 - 5); v90 = *(_DWORD *)(a2 + 10); v126 = *(_DWORD *)(a2 + 4); v91 = *(_DWORD *)(v71 - 13); v127 = v90; v83 = *(_DWORD *)(v71 - 9); v128 = v89; v84 = *(_WORD *)(v71 - 3); v129 = v91; v79 = (void *)dword_6E9EC0; LABEL_95: v131 = v84; v130 = v83; if ( v79 ) { v101 = (int)&v125; goto LABEL_97; } goto LABEL_98; } v7 = a2 + 57; while ( 1 ) { v8 = *(_DWORD *)(v7 - 13); v9 = *(_DWORD *)(v7 - 9); v109 = 0; if ( (v9 & *(_DWORD *)(v7 - 13)) != -1 ) v109 = 1; v10 = *(_DWORD *)(v7 + 4); if ( (v10 & *(_DWORD *)v7) != -1 ) v109 += 2; if ( v109 == 1 ) break; if ( v109 == 2 ) { v22 = (unsigned __int8)sub_460BC0(*(_DWORD *)v108 + 4684, *(_DWORD *)v7, v10, *(_DWORD *)(a2 + 10)) - 1; if ( !v22 || (v23 = v22 - 1) == 0 || v23 == 1 ) goto LABEL_36; if ( !sub_403E30( (void *)v108, *(_DWORD *)v7, *(_DWORD *)(v7 + 4), *(_WORD *)(v7 + 8), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 4)) ) goto LABEL_49; v24 = *(_DWORD *)(v7 + 4); v25 = *(_DWORD *)(a2 + 4); v159 = *(_DWORD *)v7; v26 = *(_BYTE *)(v7 - 1); v161 = v25; v160 = v24; v27 = *(_DWORD *)v108; v163 = v26; v162 = 9; if ( !sub_460890(v27 + 4684, &v159, 0) ) { LABEL_36: v6 = 2128; goto LABEL_50; } } else { if ( v109 == 3 ) { v11 = (unsigned __int8)sub_460BC0(*(_DWORD *)v108 + 4684, v8, v9, *(_DWORD *)(a2 + 4)) - 1; if ( !v11 || (v12 = v11 - 1) == 0 || v12 == 1 ) goto LABEL_49; v13 = (unsigned __int8)sub_460BC0( *(_DWORD *)v108 + 4684, *(_DWORD *)v7, *(_DWORD *)(v7 + 4), *(_DWORD *)(a2 + 10)) - 1; if ( !v13 || (v14 = v13 - 1) == 0 || v14 == 1 ) goto LABEL_36; if ( !sub_403E30( (void *)v108, *(_DWORD *)(v7 - 13), *(_DWORD *)(v7 - 9), *(_WORD *)(v7 - 5), *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10)) || !sub_403E30( (void *)v108, *(_DWORD *)v7, *(_DWORD *)(v7 + 4), *(_WORD *)(v7 + 8), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 4)) ) goto LABEL_49; v15 = *(_DWORD *)v7; v16 = *(_DWORD *)(a2 + 4); v133 = *(_DWORD *)(v7 + 4); v17 = *(_BYTE *)(v7 - 1); v132 = v15; v134 = v16; v18 = *(_DWORD *)(v7 - 13); v135 = 9; v140 = 9; LOWORD(v15) = *(_BYTE *)(v7 + 12); v136 = v17; v19 = *(_DWORD *)(v7 - 9); v137 = v18; v20 = *(_DWORD *)(a2 + 10); v138 = v19; v141 = v15; v21 = *(_DWORD *)v108; v139 = v20; if ( !sub_460A90(v21 + 4684, &v132) ) { v6 = 2123; goto LABEL_50; } if ( v142 == 1 ) { v6 = 2124; goto LABEL_50; } if ( v142 == 2 ) { v6 = 2125; goto LABEL_50; } if ( v142 == 3 ) { v6 = 2126; goto LABEL_50; } } } LABEL_42: v7 += 26; ++v104; if ( v104 >= *(_BYTE *)(a2 + 43) ) goto LABEL_43; } v28 = (unsigned __int8)sub_460BC0(*(_DWORD *)v108 + 4684, v8, v9, *(_DWORD *)(a2 + 4)) - 1; if ( v28 ) { v29 = v28 - 1; if ( v29 ) { if ( v29 != 1 ) { if ( sub_403E30( (void *)v108, *(_DWORD *)(v7 - 13), *(_DWORD *)(v7 - 9), *(_WORD *)(v7 - 5), *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10)) ) { v30 = *(_DWORD *)(v7 - 9); v31 = *(_DWORD *)(a2 + 10); v154 = *(_DWORD *)(v7 - 13); v32 = *(_BYTE *)(v7 + 12); v155 = v30; v156 = v31; v33 = *(_DWORD *)v108; v158 = v32; v157 = 9; if ( sub_460890(v33 + 4684, &v154, 0) ) goto LABEL_42; } } } } LABEL_49: v6 = 2127; LABEL_50: v110 = v6; if ( *(_QWORD *)(a2 + 19) && !sub_457E60(*(_DWORD *)v108 + 4684, rgbValue, v103, *(_DWORD *)(a2 + 19), *(_DWORD *)(a2 + 23)) ) { sprintf(&v176, "¿À·", rgbValue, v103, *(_DWORD *)(a2 + 19), *(_DWORD *)(a2 + 23), v102); sub_446350(1, "Msg", "%s", &v176); } v105 = v104 - 1; if ( v105 >= 0 ) { v41 = 26 * v105 + a2 + 57; while ( 1 ) { v42 = *(_DWORD *)(v41 - 13); rgbValuea = 0; if ( (*(_DWORD *)(v41 - 9) & *(_DWORD *)(v41 - 13)) != -1 ) rgbValuea = 1; if ( (*(_DWORD *)(v41 + 4) & *(_DWORD *)v41) != -1 ) rgbValuea += 2; if ( rgbValuea == 1 ) { v160 = *(_DWORD *)(v41 - 9); v56 = *(_BYTE *)(v41 - 1); v159 = v42; v57 = *(_DWORD *)(a2 + 4); v163 = v56; v161 = v57; v58 = *(_DWORD *)v108 + 4684; v162 = 9; if ( !sub_460890(v58, &v159, 0) ) { v53 = *(_DWORD *)(v41 - 9); v54 = *(_DWORD *)(v41 - 13); v99 = *(_DWORD *)(a2 + 10); v55 = *(_DWORD *)(a2 + 4); goto LABEL_70; } } else { if ( rgbValuea != 2 ) { if ( rgbValuea == 3 ) { v43 = *(_DWORD *)(a2 + 4); v144 = *(_DWORD *)(v41 - 9); v44 = *(_BYTE *)(v41 - 1); v143 = v42; v145 = v43; v45 = *(_DWORD *)v41; v147 = v44; v46 = *(_DWORD *)(v41 + 4); v146 = 9; v151 = 9; v47 = *(_BYTE *)(v41 + 12); v148 = v45; v48 = *(_DWORD *)(a2 + 10); v149 = v46; v150 = v48; v152 = v47; if ( sub_460A90(*(_DWORD *)v108 + 4684, &v143) ) { if ( (unsigned __int8)(v153 - 1) <= 2u ) { sprintf( &v176, "¿À·", *(_DWORD *)(a2 + 4), *(_DWORD *)(v41 - 13), *(_DWORD *)(v41 - 9), *(_DWORD *)(a2 + 10), *(_DWORD *)v41, *(_DWORD *)(v41 + 4), v102); sub_446350(1, "Msg", "%s", &v176); } } else { sprintf( &v175, "¿À·", *(_DWORD *)(a2 + 4), *(_DWORD *)(v41 - 13), *(_DWORD *)(v41 - 9), *(_DWORD *)(a2 + 10), *(_DWORD *)v41, *(_DWORD *)(v41 + 4), v102); sub_446350(1, "Msg", "%s", &v175); } } goto LABEL_71; } v49 = *(_DWORD *)v41; v50 = *(_DWORD *)(a2 + 10); v155 = *(_DWORD *)(v41 + 4); v51 = *(_BYTE *)(v41 + 12); v154 = v49; v52 = *(_DWORD *)v108; v156 = v50; v158 = v51; v157 = 9; if ( !sub_460890(v52 + 4684, &v154, 0) ) { v53 = *(_DWORD *)(v41 + 4); v54 = *(_DWORD *)v41; v99 = *(_DWORD *)(a2 + 4); v55 = *(_DWORD *)(a2 + 10); LABEL_70: sprintf(&v176, "¿À·", v55, v54, v53, v99, v102); sub_446350(1, "Msg", "%s", &v176); goto LABEL_71; } } LABEL_71: v41 -= 26; --v105; if ( v105 < 0 ) { v6 = v110; break; } } } LABEL_73: v59 = *(_WORD *)(a2 + 6); v166 = *(_DWORD *)(a2 + 2); v169 = v6; v60 = v108; v165 = 13372; v61 = *(_WORD *)(a2 + 14); v62 = *(_DWORD *)(v108 + 4); v164 = 12; v167 = v59; v168 = v61; if ( !sub_43BFE0(v62, (int)&v164, 0xDu) ) return 0; v63 = *(_WORD *)(a2 + 12); v64 = *(_WORD *)(a2 + 16); v166 = *(_DWORD *)(a2 + 8); v100 = 13; v167 = v63; v168 = v64; v98 = &v164; return sub_43BFE0(*(_DWORD *)(v60 + 4), (int)v98, v100); } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040D560) -------------------------------------------------------- signed int __thiscall sub_40D560(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 unsigned __int16 v5; // ST10_2@4 int v6; // ebx@4 __int16 v7; // cx@8 __int16 v8; // dx@8 signed __int16 v9; // bx@10 int v10; // eax@10 int v11; // edx@10 __int16 v12; // cx@15 __int16 v13; // dx@15 char *v14; // [sp-18h] [bp-2058h]@8 unsigned int v15; // [sp-14h] [bp-2054h]@8 char v16[4]; // [sp+0h] [bp-2040h]@2 int v17; // [sp+4h] [bp-203Ch]@4 unsigned int v18; // [sp+8h] [bp-2038h]@2 char v19; // [sp+Ch] [bp-2034h]@10 int v20; // [sp+11h] [bp-202Fh]@10 int v21; // [sp+15h] [bp-202Bh]@10 int v22; // [sp+19h] [bp-2027h]@10 __int16 v23; // [sp+1Dh] [bp-2023h]@10 __int16 v24; // [sp+1Fh] [bp-2021h]@10 char v25; // [sp+2010h] [bp-30h]@15 __int16 v26; // [sp+2011h] [bp-2Fh]@15 int v27; // [sp+2013h] [bp-2Dh]@15 __int16 v28; // [sp+2017h] [bp-29h]@15 __int16 v29; // [sp+2019h] [bp-27h]@15 __int16 v30; // [sp+201Bh] [bp-25h]@15 char v31; // [sp+2020h] [bp-20h]@8 __int16 v32; // [sp+2021h] [bp-1Fh]@8 int v33; // [sp+2023h] [bp-1Dh]@8 __int16 v34; // [sp+2027h] [bp-19h]@8 __int16 v35; // [sp+2029h] [bp-17h]@8 __int16 v36; // [sp+202Bh] [bp-15h]@8 unsigned int v37; // [sp+2030h] [bp-10h]@1 int v38; // [sp+203Ch] [bp-4h]@10 int v39; // [sp+2040h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( sub_4038C0(*(_WORD *)(a2 + 16), a2 + 22, (int)&v18, (int)v16) ) { if ( v18 > 1 ) { v5 = *(_WORD *)(a2 + 16); v17 = 0; v6 = *(_DWORD *)sub_402D20((int)&unk_6EA3E8, v5); if ( !v6 || !sub_403800((void *)v3, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v16[0], (int)&v17) || v18 >= v17 || *(_DWORD *)(v6 + 106) < v18 ) { v7 = *(_WORD *)(a2 + 6); v8 = *(_WORD *)(a2 + 20); v33 = *(_DWORD *)(a2 + 2); v34 = v7; v35 = v8; v15 = 13; v36 = 1798; v31 = 12; v32 = 13376; v14 = &v31; return sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v14, v15); } } if ( sub_468E40(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), *(_WORD *)(a2 + 16), a2 + 22) ) { v9 = 1798; } else { v9 = 1792; sub_44E180((int)&v19); v38 = 0; sub_44E310((int)&v19, 0x459u, 0x10u, 0); v10 = *(_DWORD *)(a2 + 4); v11 = *(_DWORD *)(a2 + 12); v21 = *(_DWORD *)(a2 + 8); v24 = v18; v20 = v10; LOWORD(v10) = *(_WORD *)(a2 + 16); v22 = v11; v23 = v10; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v19); v38 = -1; nullsub_1(&v19); } } else { v9 = 1797; } v12 = *(_WORD *)(a2 + 6); v13 = *(_WORD *)(a2 + 20); v27 = *(_DWORD *)(a2 + 2); v28 = v12; v15 = 13; v29 = v13; v30 = v9; v25 = 12; v26 = 13376; v14 = &v25; return sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v14, v15); } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040D780) -------------------------------------------------------- signed int __thiscall sub_40D780(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 signed __int16 v6; // bx@3 int v7; // eax@3 int v8; // edx@3 int v9; // eax@7 __int16 v10; // dx@7 int v11; // ecx@7 char v12; // [sp+0h] [bp-2024h]@3 int v13; // [sp+5h] [bp-201Fh]@3 int v14; // [sp+9h] [bp-201Bh]@3 int v15; // [sp+Dh] [bp-2017h]@3 __int16 v16; // [sp+11h] [bp-2013h]@3 char v17; // [sp+2004h] [bp-20h]@7 __int16 v18; // [sp+2005h] [bp-1Fh]@7 int v19; // [sp+2007h] [bp-1Dh]@7 __int16 v20; // [sp+200Bh] [bp-19h]@7 __int16 v21; // [sp+200Dh] [bp-17h]@7 __int16 v22; // [sp+200Fh] [bp-15h]@7 unsigned int v23; // [sp+2014h] [bp-10h]@1 int v24; // [sp+2020h] [bp-4h]@3 int v25; // [sp+2024h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { LOWORD(v5) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12)); if ( v5 ) { v6 = 1799; } else { v6 = 1792; sub_44E180((int)&v12); v24 = 0; sub_44E310((int)&v12, 0x45Au, 0xEu, 0); v7 = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)(a2 + 12); v14 = *(_DWORD *)(a2 + 8); v13 = v7; LOWORD(v7) = *(_WORD *)(a2 + 18); v15 = v8; v16 = v7; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v12); v24 = -1; nullsub_1(&v12); } v9 = *(_DWORD *)(a2 + 2); v10 = *(_WORD *)(a2 + 16); v20 = *(_WORD *)(a2 + 6); v19 = v9; v11 = *(_DWORD *)(v3 + 4); v21 = v10; v22 = v6; v17 = 12; v18 = 13376; result = sub_43BFE0(v11, (int)&v17, 0xDu); } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040D8C0) -------------------------------------------------------- signed int __thiscall sub_40D8C0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 bool v5; // al@2 __int16 v6; // dx@2 bool v7; // zf@2 int v8; // eax@2 int v9; // ecx@3 signed int v10; // eax@3 unsigned int v11; // ecx@3 signed int v12; // ebx@3 unsigned int v13; // eax@3 int v14; // eax@3 int v15; // ecx@4 int rgbValue; // [sp+8h] [bp-2Ch]@3 unsigned __int64 v17; // [sp+10h] [bp-24h]@3 int v18; // [sp+18h] [bp-1Ch]@3 int v19; // [sp+1Ch] [bp-18h]@3 char v20; // [sp+20h] [bp-14h]@3 __int16 v21; // [sp+21h] [bp-13h]@3 int v22; // [sp+23h] [bp-11h]@2 __int16 v23; // [sp+27h] [bp-Dh]@2 __int16 v24; // [sp+29h] [bp-Bh]@2 __int16 v25; // [sp+2Bh] [bp-9h]@4 unsigned int v26; // [sp+30h] [bp-4h]@1 int v27; // [sp+34h] [bp+0h]@1 v26 = (unsigned int)&v27 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = sub_457DC0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 15), *(_DWORD *)(a2 + 19)); v6 = *(_WORD *)(a2 + 23); v7 = v5 == 0; v8 = *(_DWORD *)(a2 + 2); v23 = *(_WORD *)(a2 + 6); v24 = v6; v22 = v8; if ( v7 ) { v21 = 13379; v15 = *(_DWORD *)(v3 + 4); v25 = 1860; v20 = 12; v12 = sub_43BFE0(v15, (int)&v20, 0xDu); } else { v9 = *(_DWORD *)(v3 + 4); v20 = 10; v21 = 13378; v10 = sub_43BFE0(v9, (int)&v20, 0xBu); v11 = *(_DWORD *)(a2 + 15); v12 = v10; v13 = *(_DWORD *)(a2 + 19); rgbValue = *(_DWORD *)(a2 + 8); v18 = 10; v17 = 100 * __PAIR__(v13, v11) / 0x3E8; v14 = *(_DWORD *)v3; v19 = 0; sub_4564B0(v14 + 4684, &rgbValue); } result = v12; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0040D9E0) -------------------------------------------------------- signed int __thiscall sub_40D9E0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@3 __int16 v6; // ax@5 char v7; // cl@5 size_t v8; // ebx@5 char v9; // dl@5 __int16 v10; // ax@8 signed int v11; // ebx@11 char *v12; // [sp-18h] [bp-123D4h]@3 unsigned int v13; // [sp-14h] [bp-123D0h]@3 unsigned int v14; // [sp-10h] [bp-123CCh]@1 int v15; // [sp+0h] [bp-123BCh]@2 int v16; // [sp+4h] [bp-123B8h]@5 size_t v17; // [sp+8h] [bp-123B4h]@4 char v18; // [sp+Ch] [bp-123B0h]@5 int v19; // [sp+11h] [bp-123ABh]@5 __int16 v20; // [sp+15h] [bp-123A7h]@5 char v21; // [sp+17h] [bp-123A5h]@5 char v22; // [sp+18h] [bp-123A4h]@5 int v23; // [sp+19h] [bp-123A3h]@5 int v24; // [sp+1Dh] [bp-1239Fh]@5 char v25; // [sp+21h] [bp-1239Bh]@5 char v26; // [sp+2010h] [bp-103ACh]@3 __int16 v27; // [sp+2011h] [bp-103ABh]@3 int v28; // [sp+2013h] [bp-103A9h]@3 __int16 v29; // [sp+2017h] [bp-103A5h]@3 __int16 v30; // [sp+2019h] [bp-103A3h]@3 char v31; // [sp+201Ch] [bp-103A0h]@8 __int16 v32; // [sp+201Dh] [bp-1039Fh]@8 int v33; // [sp+201Fh] [bp-1039Dh]@8 __int16 v34; // [sp+2023h] [bp-10399h]@8 __int16 v35; // [sp+2025h] [bp-10397h]@8 _BYTE v36[65668]; // [sp+2028h] [bp-10394h]@4 char v37; // [sp+120ACh] [bp-310h]@8 char v38; // [sp+121ACh] [bp-210h]@12 char v39; // [sp+122ACh] [bp-110h]@3 unsigned int v40; // [sp+123ACh] [bp-10h]@1 int v41; // [sp+123B8h] [bp-4h]@5 int v42; // [sp+123BCh] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v14 = (unsigned int)&v42 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( !sub_4590F0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 9), &v15) ) { sprintf(&v39, "FAILED - fc_NC_ITEMDB_OPENSTORAGE_REQ, GetUserMoney, nUserNo=%d", *(_DWORD *)(a2 + 9), v14); sub_446350(1, "Msg", "%s", &v39); v5 = *(_WORD *)(a2 + 6); v28 = *(_DWORD *)(a2 + 2); v29 = v5; v13 = 11; v30 = 2049; v26 = 10; v27 = 13381; v12 = &v26; return sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v12, v13); } if ( !sub_403180( (void *)v3, *(_DWORD *)(a2 + 9), (int)v36, (int)&v17, 36 * *(_BYTE *)(a2 + 8), 36 * *(_BYTE *)(a2 + 8) + 35) ) { LABEL_8: sprintf(&v37, "FAILED - fc_NC_ITEMDB_OPENSTORAGE_REQ, Get, nUserNo=%d", *(_DWORD *)(a2 + 9), v14); sub_446350(1, "Msg", "%s", &v37); v10 = *(_WORD *)(a2 + 6); v33 = *(_DWORD *)(a2 + 2); v34 = v10; v13 = 11; v35 = 2049; v31 = 10; v32 = 13381; v12 = &v31; return sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v12, v13); } sub_44E180((int)&v18); v41 = 0; sub_44E310((int)&v18, 0x3446u, 0x11u, 0); v6 = *(_WORD *)(a2 + 6); v7 = *(_BYTE *)(a2 + 8); v8 = v17; v19 = *(_DWORD *)(a2 + 2); v9 = *(_BYTE *)(a2 + 13); v20 = v6; v21 = v7; v22 = v9; v23 = v15; v24 = v16; v25 = v36[2]; if ( !sub_44E280((int)&v18, &v36[3], v17) ) { sprintf( &v39, "* FATAL ERROR - CPFsCharacter::fc_NC_ITEMDB_OPENSTORAGE_REQ - OVER MAX PACKET SIZE=%d, nUserNo=%d", v8, *(_DWORD *)(a2 + 9), v14); sub_446350(1, "Msg", "%s", &v39); LABEL_7: v41 = -1; nullsub_1(&v18); goto LABEL_8; } v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v18); if ( !v11 ) { sprintf( &v38, "* FATAL ERROR - CPFsCharacter::fc_NC_ITEMDB_OPENSTORAGE_REQ - SEND FAILED, nUserNo=%d", *(_DWORD *)(a2 + 9), v14); sub_446350(1, "Msg", "%s", &v38); goto LABEL_7; } v41 = -1; nullsub_1(&v18); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0040DCB0) -------------------------------------------------------- signed int __thiscall sub_40DCB0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // ecx@2 int v7; // eax@3 int v8; // ebx@4 __int16 v9; // dx@5 size_t v10; // ebx@5 __int16 v11; // cx@8 signed int v12; // ebx@9 __int16 v13; // ax@12 __int16 v14; // dx@13 char *v15; // [sp-18h] [bp-36D4h]@8 unsigned int v16; // [sp-14h] [bp-36D0h]@8 unsigned int v17; // [sp-10h] [bp-36CCh]@1 int v18; // [sp+0h] [bp-36BCh]@3 int v19; // [sp+4h] [bp-36B8h]@3 size_t v20; // [sp+8h] [bp-36B4h]@4 char v21; // [sp+Ch] [bp-36B0h]@5 int v22; // [sp+11h] [bp-36ABh]@5 __int16 v23; // [sp+15h] [bp-36A7h]@5 int v24; // [sp+17h] [bp-36A5h]@5 int v25; // [sp+1Bh] [bp-36A1h]@5 int v26; // [sp+1Fh] [bp-369Dh]@5 int v27; // [sp+23h] [bp-3699h]@5 char v28; // [sp+27h] [bp-3695h]@5 int rgbValue; // [sp+2010h] [bp-16ACh]@2 int v30; // [sp+2038h] [bp-1684h]@3 int v31; // [sp+203Ch] [bp-1680h]@3 int v32; // [sp+2370h] [bp-134Ch]@3 int v33; // [sp+2378h] [bp-1344h]@3 int v34; // [sp+237Ch] [bp-1340h]@3 int v35; // [sp+2380h] [bp-133Ch]@3 char v36; // [sp+2388h] [bp-1334h]@8 __int16 v37; // [sp+2389h] [bp-1333h]@8 int v38; // [sp+238Bh] [bp-1331h]@8 __int16 v39; // [sp+238Fh] [bp-132Dh]@8 __int16 v40; // [sp+2391h] [bp-132Bh]@8 char v41; // [sp+2394h] [bp-1328h]@12 __int16 v42; // [sp+2395h] [bp-1327h]@12 int v43; // [sp+2397h] [bp-1325h]@12 int v44; // [sp+2398h] [bp-1324h]@4 __int16 v45; // [sp+239Dh] [bp-131Fh]@12 _BYTE v46[4108]; // [sp+23A0h] [bp-131Ch]@4 char v47; // [sp+33ACh] [bp-310h]@10 char v48; // [sp+34ACh] [bp-210h]@8 char v49; // [sp+35ACh] [bp-110h]@6 unsigned int v50; // [sp+36ACh] [bp-10h]@1 int v51; // [sp+36B8h] [bp-4h]@5 int v52; // [sp+36BCh] [bp+0h]@1 v50 = (unsigned int)&v52 ^ __security_cookie; v17 = (unsigned int)&v52 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { rgbValue = *(_DWORD *)(a2 + 8); v5 = sub_451F50(*(_DWORD *)v3 + 4684, &rgbValue); v6 = *(_DWORD *)(a2 + 8); if ( v5 ) { v19 = v31; v33 = 0; v34 = 0; v35 = 0; v7 = *(_DWORD *)v3; v18 = v30; v32 = v6; if ( sub_452850(v7 + 4684, &v32) ) { v8 = v33; v44 = v34; if ( sub_403280((void *)v3, *(_DWORD *)(a2 + 8), (int)v46, (int)&v20) ) { sub_44E180((int)&v21); v51 = 0; sub_44E310((int)&v21, 0x3473u, 0x17u, 0); v9 = *(_WORD *)(a2 + 6); v22 = *(_DWORD *)(a2 + 2); v26 = v8; v10 = v20; v25 = v19; v23 = v9; v24 = v18; v27 = v44; v28 = v46[2]; if ( sub_44E280((int)&v21, &v46[3], v20) ) { v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v21); if ( v12 ) { v51 = -1; nullsub_1(&v21); return v12; } sprintf( &v47, "* FATAL ERROR - CPFsCharacter::fc_NC_ITEMDB_OPEN_GUILD_STORAGE_REQ - SEND FAILED, nGuildNo=%d", *(_DWORD *)(a2 + 8), v17); sub_446350(1, "Msg", "%s", &v47); } else { sprintf( &v49, "* FATAL ERROR - CPFsCharacter::fc_NC_ITEMDB_OPEN_GUILD_STORAGE_REQ - OVER MAX PACKET SIZE=%d, nGuildNo=%d", v10, *(_DWORD *)(a2 + 8), v17); sub_446350(1, "Msg", "%s", &v49); } v51 = -1; nullsub_1(&v21); } sprintf(&v48, "FAILED - fc_NC_ITEMDB_OPEN_GUILD_STORAGE_REQ, Get, nGuildNo=%d", *(_DWORD *)(a2 + 8), v17); sub_446350(1, "Msg", "%s", &v48); v11 = *(_WORD *)(a2 + 6); v38 = *(_DWORD *)(a2 + 2); v39 = v11; v16 = 11; v40 = 2049; v36 = 10; v37 = 13426; v15 = &v36; goto LABEL_15; } sprintf(&v49, "ERROR - CPFsCharacter::fc_NC_ITEMDB_OPEN_GUILD_STORAGE_REQ, GuildNo=%d", *(_DWORD *)(a2 + 8), v17); sub_446350(1, "Msg", "%s", &v49); v13 = *(_WORD *)(a2 + 6); v43 = *(_DWORD *)(a2 + 2); *(_WORD *)((char *)&v44 + 3) = v13; v16 = 11; v45 = 2049; v42 = 13426; v15 = &v41; } else { sprintf(&v49, "ERROR - CPFsCharacter::fc_NC_ITEMDB_OPEN_GUILD_STORAGE_REQ, GuildNo=%d", *(_DWORD *)(a2 + 8), v17); sub_446350(1, "Msg", "%s", &v49); v14 = *(_WORD *)(a2 + 6); v43 = *(_DWORD *)(a2 + 2); *(_WORD *)((char *)&v44 + 3) = v14; v16 = 11; v45 = 2049; v42 = 13426; v15 = &v41; } v41 = 10; LABEL_15: result = sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v15, v16); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0040E050) -------------------------------------------------------- signed int __thiscall sub_40E050(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // eax@2 int v9; // edx@2 int v10; // ecx@2 int v11; // eax@2 int v12; // edx@2 int v13; // ecx@2 int v14; // eax@2 int v15; // edx@2 int v16; // ecx@2 int v17; // eax@2 int v18; // ecx@2 unsigned __int16 v19; // ax@2 unsigned __int16 v20; // ax@5 unsigned __int16 v21; // ax@8 unsigned __int16 v22; // ax@11 unsigned __int16 v23; // ST14_2@14 signed int v24; // eax@14 int v25; // edx@14 __int16 v26; // cx@14 bool v27; // zf@14 __int16 v28; // ax@14 int v29; // ecx@15 int v30; // eax@16 int v31; // eax@16 unsigned __int16 v32; // bx@20 int v33; // eax@20 int v34; // ecx@21 int v35; // edi@22 int v36; // ecx@23 void *v37; // edi@29 signed __int16 v38; // ax@39 signed int v39; // eax@40 int v40; // ecx@57 int v41; // [sp+8h] [bp-204h]@1 int v42; // [sp+Ch] [bp-200h]@3 char v43; // [sp+10h] [bp-1FCh]@34 int v44; // [sp+12h] [bp-1FAh]@31 int rgbValue; // [sp+78h] [bp-194h]@2 int v46; // [sp+80h] [bp-18Ch]@2 int v47; // [sp+84h] [bp-188h]@2 int v48; // [sp+88h] [bp-184h]@2 char v49; // [sp+8Ch] [bp-180h]@14 __int64 v50; // [sp+90h] [bp-17Ch]@2 char v51; // [sp+98h] [bp-174h]@14 int v52; // [sp+A0h] [bp-16Ch]@2 int v53; // [sp+A4h] [bp-168h]@2 int v54; // [sp+A8h] [bp-164h]@2 int v55; // [sp+ACh] [bp-160h]@2 int v56; // [sp+B0h] [bp-15Ch]@2 int v57; // [sp+B4h] [bp-158h]@2 int v58; // [sp+B8h] [bp-154h]@2 int v59; // [sp+BCh] [bp-150h]@2 int v60; // [sp+C0h] [bp-14Ch]@2 int v61; // [sp+C4h] [bp-148h]@2 int v62; // [sp+C8h] [bp-144h]@2 int v63; // [sp+CCh] [bp-140h]@2 __int16 v64; // [sp+D0h] [bp-13Ch]@2 __int16 v65; // [sp+D2h] [bp-13Ah]@2 __int16 v66; // [sp+D4h] [bp-138h]@2 __int16 v67; // [sp+D6h] [bp-136h]@2 __int16 v68; // [sp+D8h] [bp-134h]@2 __int16 v69; // [sp+DAh] [bp-132h]@2 __int16 v70; // [sp+DCh] [bp-130h]@11 __int16 v71; // [sp+DEh] [bp-12Eh]@11 int v72; // [sp+E0h] [bp-12Ch]@14 char v73; // [sp+E8h] [bp-124h]@15 __int16 v74; // [sp+E9h] [bp-123h]@15 int v75; // [sp+EBh] [bp-121h]@15 __int16 v76; // [sp+EFh] [bp-11Dh]@15 __int16 v77; // [sp+F1h] [bp-11Bh]@15 __int16 v78; // [sp+F3h] [bp-119h]@15 char v79; // [sp+F8h] [bp-114h]@57 __int16 v80; // [sp+F9h] [bp-113h]@57 int v81; // [sp+FBh] [bp-111h]@16 __int16 v82; // [sp+FFh] [bp-10Dh]@16 __int16 v83; // [sp+101h] [bp-10Bh]@16 __int16 v84; // [sp+103h] [bp-109h]@44 char v85; // [sp+108h] [bp-104h]@32 unsigned int v86; // [sp+208h] [bp-4h]@1 int v87; // [sp+20Ch] [bp+0h]@1 v86 = (unsigned int)&v87 ^ __security_cookie; v3 = this; v41 = this; result = sub_43B000(this, a2); if ( !result ) return result; v5 = *(_DWORD *)(a2 + 14); v6 = *(_DWORD *)(a2 + 10); rgbValue = *(_DWORD *)(a2 + 4); v48 = *(_BYTE *)(a2 + 21); v7 = *(_BYTE *)(a2 + 22); v47 = v5; v50 = v7; v8 = *(_BYTE *)(a2 + 23); v53 = 0; v9 = *(_DWORD *)(a2 + 28); v46 = v6; v10 = *(_DWORD *)(a2 + 24); v52 = v8; v11 = *(_DWORD *)(a2 + 32); v55 = v9; v12 = *(_DWORD *)(a2 + 40); v54 = v10; v13 = *(_DWORD *)(a2 + 36); v56 = v11; v14 = *(_DWORD *)(a2 + 44); v58 = v12; v15 = *(_DWORD *)(a2 + 52); v57 = v13; v16 = *(_DWORD *)(a2 + 48); v59 = v14; v17 = *(_DWORD *)(a2 + 56); v61 = v15; LOWORD(v15) = *(_BYTE *)(a2 + 70); v60 = v16; v18 = *(_DWORD *)(a2 + 60); v62 = v17; LOWORD(v17) = *(_BYTE *)(a2 + 71); v63 = v18; LOWORD(v18) = *(_BYTE *)(a2 + 72); v65 = v15; v67 = v17; v69 = v18; v66 = -2; v19 = *(_WORD *)(a2 + 64); v64 = -2; v68 = -2; if ( v19 != -1 && sub_403AA0(v19, (int)&v42) ) v64 = v42; v20 = *(_WORD *)(a2 + 66); if ( v20 != -1 && sub_403AA0(v20, (int)&v42) ) v66 = v42; v21 = *(_WORD *)(a2 + 68); if ( v21 != -1 && sub_403AA0(v21, (int)&v42) ) v68 = v42; v22 = *(_WORD *)(a2 + 73); v71 = *(_BYTE *)(a2 + 75); v70 = -2; if ( v22 != -1 && sub_403AA0(v22, (int)&v42) ) v70 = v42; v23 = *(_WORD *)(a2 + 18); v72 = -1; v24 = sub_403CD0(v23, (int)&v49, (int)&v51, (int)&v42); v25 = *(_DWORD *)(a2 + 2); v26 = *(_WORD *)(a2 + 8); v27 = v24 == 0; v28 = *(_WORD *)(a2 + 6); if ( v27 ) { v77 = *(_WORD *)(a2 + 8); v75 = v25; v76 = v28; v29 = *(_DWORD *)(v3 + 4); v78 = 2248; v73 = 12; v74 = 13384; return sub_43BFE0(v29, (int)&v73, 0xDu); } v82 = *(_WORD *)(a2 + 6); v30 = *(_DWORD *)v3; v81 = v25; v83 = v26; v31 = sub_4614B0(v30 + 4684, &rgbValue); if ( *(_BYTE *)(a2 + 76) == 1 && !v31 ) { if ( *(_BYTE *)(a2 + 77) >= 0xFu ) { v31 = 1; goto LABEL_37; } v32 = *(_WORD *)(a2 + 18); v33 = *(_WORD *)(a2 + 18); v42 = v33; if ( (unsigned __int16)v33 >= (unsigned int)dword_6EA3EC || (v34 = dword_6EACDC + 40 * (unsigned __int16)v33) == 0 ) goto LABEL_26; v35 = *(_DWORD *)v34; if ( !*(_DWORD *)v34 ) { LABEL_25: v3 = v41; LABEL_26: v31 = 1; goto LABEL_37; } v36 = *(_WORD *)v35; if ( (_WORD)v36 != v32 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v36 + 10000 * (unsigned __int16)v33); goto LABEL_25; } if ( *(_DWORD *)(v35 + 102) == 4 ) { v37 = sub_44BD50(dword_6EC2C8, v32); if ( v37 ) { if ( sub_4669C0( (void *)(*(_DWORD *)v41 + 4720), *(_DWORD *)v41 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), &v44) ) { if ( *(_BYTE *)(a2 + 22) ) (*(void (__thiscall **)(void *, char *, _DWORD, _DWORD))(*(_DWORD *)v37 + 128))( v37, &v43, *(_BYTE *)(a2 + 77), *(_WORD *)(a2 + 78)); else (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v37 + 132))(v37, &v43); LOWORD(v31) = sub_468E40( *(_DWORD *)v41 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_WORD *)(a2 + 18), (int)&v44); v3 = v41; } else { sprintf( &v85, "FAILED - fc_NC_ITEMDB_UPGRADE_REQ, Get upgrade item option fail, ItemKey=%I64d", *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); sub_446350(1, "Msg", "%s", &v85); v31 = 9; v3 = v41; } } else { v31 = 1; v3 = v41; } } else { v3 = v41; v31 = 1; } } LABEL_37: switch ( v31 ) { case 0: if ( v48 == 1 ) { v38 = 2247; goto LABEL_56; } v39 = *(_BYTE *)(a2 + 20); if ( v39 <= 2 ) { if ( v39 == 2 ) { v38 = 2244; goto LABEL_56; } if ( !*(_BYTE *)(a2 + 20) ) { v84 = 2245; goto LABEL_57; } if ( v39 == 1 ) { v84 = 2243; goto LABEL_57; } goto LABEL_48; } if ( v39 != 255 ) { LABEL_48: v84 = 2245; goto LABEL_57; } v84 = 2246; LABEL_57: v80 = 13384; v40 = *(_DWORD *)(v3 + 4); v79 = 12; result = sub_43BFE0(v40, (int)&v79, 0xDu); break; case 1: v38 = 2248; goto LABEL_56; case 2: v84 = 2248; goto LABEL_57; case 3: v84 = 2251; goto LABEL_57; case 5: case 8: v84 = 2252; goto LABEL_57; case 6: case 9: v84 = 2252; goto LABEL_57; default: v38 = 2252; LABEL_56: v84 = v38; goto LABEL_57; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (0040E5B0) -------------------------------------------------------- signed int __thiscall sub_40E5B0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // ax@2 int v6; // ecx@2 char v7; // [sp+8h] [bp-14h]@2 __int16 v8; // [sp+9h] [bp-13h]@2 int v9; // [sp+Bh] [bp-11h]@2 __int16 v10; // [sp+Fh] [bp-Dh]@2 __int16 v11; // [sp+11h] [bp-Bh]@2 __int16 v12; // [sp+13h] [bp-9h]@2 unsigned int v13; // [sp+18h] [bp-4h]@1 int v14; // [sp+1Ch] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = sub_468E40(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_WORD *)(a2 + 18), a2 + 20); v9 = *(_DWORD *)(a2 + 2); v11 = *(_WORD *)(a2 + 8); v7 = 12; v10 = *(_WORD *)(a2 + 6); v12 = (v5 != 0) + 2305; v6 = *(_DWORD *)(v3 + 4); v8 = 13386; result = sub_43BFE0(v6, (int)&v7, 0xDu); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0040E690) -------------------------------------------------------- signed int __thiscall sub_40E690(void *this, int a2) { int v2; // eax@1 int v3; // ebx@1 int v4; // ecx@1 bool v5; // zf@1 int v6; // esi@1 signed int result; // eax@3 int v8; // edx@6 char v9; // al@6 int v10; // eax@10 int v11; // ecx@16 int v12; // eax@16 __int64 v13; // ST14_8@19 int v14; // eax@19 int v15; // esi@25 int v16; // edi@26 int v17; // eax@27 int v18; // [sp-14h] [bp-2168h]@8 unsigned int v19; // [sp-10h] [bp-2164h]@1 int v20; // [sp+0h] [bp-2154h]@1 __int64 v21; // [sp+4h] [bp-2150h]@1 int v22; // [sp+Ch] [bp-2148h]@1 char v23; // [sp+10h] [bp-2144h]@11 unsigned int v24; // [sp+15h] [bp-213Fh]@11 unsigned __int64 v25; // [sp+19h] [bp-213Bh]@11 __int64 v26; // [sp+21h] [bp-2133h]@11 int v27; // [sp+29h] [bp-212Bh]@16 int v28; // [sp+2Dh] [bp-2127h]@16 int rgbValue; // [sp+2014h] [bp-140h]@19 unsigned __int64 v30; // [sp+201Ch] [bp-138h]@19 int v31; // [sp+2024h] [bp-130h]@19 int v32; // [sp+2028h] [bp-12Ch]@19 unsigned int v33; // [sp+202Ch] [bp-128h]@6 int v34; // [sp+2030h] [bp-124h]@6 int v35; // [sp+2034h] [bp-120h]@6 char v36; // [sp+2038h] [bp-11Ch]@6 __int16 v37; // [sp+203Ah] [bp-11Ah]@6 int v38; // [sp+203Ch] [bp-118h]@6 int v39; // [sp+2040h] [bp-114h]@6 char v40; // [sp+2044h] [bp-110h]@3 unsigned int v41; // [sp+2144h] [bp-10h]@1 int v42; // [sp+2150h] [bp-4h]@11 int v43; // [sp+2154h] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v19 = (unsigned int)&v43 ^ __security_cookie; v20 = *(_BYTE *)(a2 + 22); v2 = *(_DWORD *)(a2 + 14); v3 = (int)this; v4 = *(_DWORD *)(a2 + 18); v5 = *(_QWORD *)(a2 + 14) == 0i64; v6 = a2 + 23; v22 = v3; HIDWORD(v21) = a2 + 23; if ( !v5 ) { if ( !sub_457DC0(*(_DWORD *)v22 + 4684, *(_DWORD *)(a2 + 6), v2, v4) ) { sprintf( &v40, "ERROR - CPFsCharacter::CreateItemList, SubCharMoney - NO MONEY, Owner=%d, ReqMoney=%d", *(_DWORD *)(a2 + 6), *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18), v19); sub_446350(1, "Msg", "%s", &v40); return 0; } v3 = v22; } v22 = 0; if ( v20 <= 0 ) { LABEL_14: if ( *(_QWORD *)(a2 + 14) ) { if ( sub_457C80(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 6), &v21) ) { sub_44E180((int)&v23); v42 = 1; sub_44E310((int)&v23, 0x462u, 0x1Cu, 0); v11 = *(_DWORD *)(a2 + 18); v24 = *(_DWORD *)(a2 + 6); v12 = *(_DWORD *)(a2 + 14); v28 = v11; v26 = v21; v25 = v21 + __PAIR__(v11, *(_DWORD *)(a2 + 14)); v27 = v12; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v23); v42 = -1; nullsub_1(&v23); } v13 = *(_QWORD *)(a2 + 14); rgbValue = *(_DWORD *)(a2 + 6); v31 = 10; v30 = 100 * v13 / 0x3E8ui64; v14 = *(_DWORD *)v3 + 4684; v32 = 0; sub_4564B0(v14, &rgbValue); } result = 1; } else { while ( 1 ) { v18 = (v8 = *(_DWORD *)(a2 + 6), v33 = *(_DWORD *)(v6 + 3), v34 = *(_DWORD *)(v6 + 7), v35 = v8, v9 = (*(_WORD *)(v6 + 1) >> 10) & 0x3F, v36 = v9, v37 = *(_WORD *)(v6 + 1) & 0x3FF, v38 = *(_WORD *)(v6 + 11), v39 = 0, v9 == 2) || v9 == 10; LOWORD(v10) = sub_46A440(*(_DWORD *)v3 + 4684, &v33, v6 + 13, v18); if ( v10 ) break; sub_44E180((int)&v23); v42 = 0; sub_44E310((int)&v23, 0x44Fu, 0x14u, 0); v24 = *(_DWORD *)(a2 + 6); v25 = __PAIR__(v33, v24); WORD2(v26) = v38; LODWORD(v26) = v34; WORD3(v26) = *(_WORD *)(v6 + 1); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v23); v6 += *(_BYTE *)v6 + 1; v42 = -1; nullsub_1(&v23); ++v22; if ( v22 >= v20 ) goto LABEL_14; } if ( *(_QWORD *)(a2 + 14) && !sub_457D20(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 6), *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18)) ) { sprintf( &v40, "ERROR - CPFsCharacter::CreateItemList, AddCharMoney for ROLLBACK, Owner=%d, Money=%d", *(_DWORD *)(a2 + 6), *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18), v19); sub_446350(1, "Msg", "%s", &v40); } v15 = HIDWORD(v21); if ( v22 > 0 ) { v16 = v22; do { LOWORD(v17) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(v15 + 3), *(_DWORD *)(v15 + 7)); if ( v17 ) { sprintf( &v40, "ERROR - CPFsCharacter::CreateItemList, ¾ÆÀÌÅÛµé ¸¸µé±âÁß ¿¡·¯³ª¼­ ÀÌ¹Ì ¸¸µé¾îÁ", *(_DWORD *)(v15 + 3), *(_DWORD *)(v15 + 7), v19); sub_446350(1, "Msg", "%s", &v40); } v15 += 114 * *(_BYTE *)v15; --v16; } while ( v16 ); } result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040EAD0) -------------------------------------------------------- signed int __thiscall sub_40EAD0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // edi@2 bool v6; // zf@2 int v7; // eax@3 int *v8; // ebx@3 int v9; // ecx@5 int v10; // edx@5 int v11; // eax@5 int v12; // edx@6 int v13; // edi@9 int v14; // edx@10 int v15; // ecx@10 unsigned int v16; // eax@10 int v17; // eax@10 int v18; // ecx@11 int v19; // eax@12 int v20; // ebx@14 int *v21; // edi@15 int v22; // eax@16 int v23; // ecx@16 char v24; // dl@16 __int16 v25; // cx@19 __int16 v26; // dx@19 int v27; // ecx@19 int v28; // edx@22 int v29; // eax@22 int v30; // eax@24 char *v31; // ebx@25 int v32; // edi@25 int v33; // ecx@26 int v34; // edx@26 __int16 v35; // ax@26 int v36; // ecx@28 __int16 v37; // ax@30 __int16 v38; // cx@30 int v39; // [sp-18h] [bp-21E0h]@19 unsigned int v40; // [sp-14h] [bp-21DCh]@19 unsigned int v41; // [sp-10h] [bp-21D8h]@1 int rgbValue; // [sp+0h] [bp-21C8h]@24 int v43; // [sp+4h] [bp-21C4h]@24 int v44; // [sp+8h] [bp-21C0h]@2 int v45; // [sp+Ch] [bp-21BCh]@1 int i; // [sp+10h] [bp-21B8h]@3 char v47; // [sp+14h] [bp-21B4h]@22 int v48; // [sp+19h] [bp-21AFh]@22 int v49; // [sp+1Dh] [bp-21ABh]@22 int v50; // [sp+21h] [bp-21A7h]@22 int v51; // [sp+25h] [bp-21A3h]@22 int v52; // [sp+29h] [bp-219Fh]@26 char v53; // [sp+2018h] [bp-1B0h]@19 __int16 v54; // [sp+2019h] [bp-1AFh]@19 int v55; // [sp+201Bh] [bp-1ADh]@19 __int16 v56; // [sp+201Fh] [bp-1A9h]@19 __int16 v57; // [sp+2021h] [bp-1A7h]@19 __int16 v58; // [sp+2023h] [bp-1A5h]@19 int v59; // [sp+2028h] [bp-1A0h]@10 int v60; // [sp+202Ch] [bp-19Ch]@10 int v61; // [sp+2030h] [bp-198h]@10 char v62; // [sp+2034h] [bp-194h]@10 __int16 v63; // [sp+2035h] [bp-193h]@30 __int16 v64; // [sp+2036h] [bp-192h]@10 int v65; // [sp+2038h] [bp-190h]@3 int v66[2]; // [sp+203Ch] [bp-18Ch]@20 char v67; // [sp+2046h] [bp-182h]@25 char v68; // [sp+20B8h] [bp-110h]@17 unsigned int v69; // [sp+21B8h] [bp-10h]@1 int v70; // [sp+21C4h] [bp-4h]@22 int v71; // [sp+21C8h] [bp+0h]@1 v69 = (unsigned int)&v71 ^ __security_cookie; v41 = (unsigned int)&v71 ^ __security_cookie; v3 = this; v45 = this; result = sub_43B000(this, a2); if ( result ) { v5 = 0; v6 = *(_BYTE *)(a2 + 22) == 0; v44 = 0; if ( v6 ) { LABEL_8: v6 = *(_BYTE *)(a2 + 22) == 0; v44 = 0; if ( v6 ) { LABEL_12: LOWORD(v19) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18)); if ( !v19 ) { sub_44E180((int)&v47); v70 = 0; sub_44E310((int)&v47, 0x445u, 0x10u, 0); v28 = *(_DWORD *)(a2 + 14); v29 = *(_DWORD *)(a2 + 18); v48 = *(_DWORD *)(a2 + 8); v49 = v28; v50 = v29; v51 = 68043; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v47); v70 = -1; nullsub_1(&v47); v30 = *(_DWORD *)v3 + 4684; rgbValue = *(_DWORD *)(a2 + 8); v43 = 0; sub_453050(v30, &rgbValue); v6 = *(_BYTE *)(a2 + 22) == 0; i = 0; if ( !v6 ) { v31 = &v67; v32 = a2 + 31; do { sub_44E180((int)&v47); v70 = 1; sub_44E310((int)&v47, 0x44Cu, 0x14u, 0); v33 = *(_DWORD *)(v32 - 4); v34 = *(_DWORD *)(a2 + 8); v49 = *(_DWORD *)(v32 - 8); v35 = (unsigned __int8)*(v31 - 2); v50 = v33; v48 = v34; LOWORD(v34) = *(_WORD *)v32; LOWORD(v51) = ((v51 & 0x3FF | (unsigned __int16)(v35 << 10)) ^ *(_WORD *)v31) & 0x3FF ^ (v51 & 0x3FF | (unsigned __int16)(v35 << 10)); HIWORD(v51) = v34; v52 = v43; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v47); v70 = -1; nullsub_1(&v47); v36 = *(_BYTE *)(a2 + 22); v31 += 16; v32 += 10; ++i; } while ( i < v36 ); v3 = v45; } v37 = *(_WORD *)(a2 + 6); v38 = *(_WORD *)(a2 + 12); *(int *)((char *)&v60 + 3) = *(_DWORD *)(a2 + 2); *(_WORD *)((char *)&v61 + 3) = v37; v40 = 11; v63 = v38; v27 = *(_DWORD *)(v3 + 4); LOBYTE(v60) = 10; *(_WORD *)((char *)&v60 + 1) = 13393; v39 = (int)&v60; goto LABEL_31; } i = 2483; } else { v13 = a2 + 31; while ( 1 ) { v14 = *(_DWORD *)(a2 + 8); v15 = *(_DWORD *)(v13 - 4); v59 = *(_DWORD *)(v13 - 8); v16 = *(_WORD *)v13; v61 = v14; v60 = v15; LOBYTE(v14) = (v16 >> 10) & 0x3F; v64 = v16 & 0x3FF; v17 = *(_DWORD *)v3; v62 = v14; if ( !sub_460890(v17 + 4684, &v59, 0) ) break; v18 = *(_BYTE *)(a2 + 22); v13 += 10; ++v44; if ( v44 >= v18 ) goto LABEL_12; } i = 2482; } } else { v7 = a2 + 23; v8 = &v65; for ( i = a2 + 23; ; v7 = i ) { v9 = *(_DWORD *)v7; v10 = *(_DWORD *)(v7 + 4); v11 = *(_DWORD *)v45; *v8 = v9; v8[1] = v10; if ( !sub_460710(v11 + 4684, v8) ) break; v12 = *(_BYTE *)(a2 + 22); i += 10; ++v5; v8 += 4; if ( v5 >= v12 ) { v3 = v45; goto LABEL_8; } } sprintf( &v68, "ERROR - fc_NC_ITEMDB_GETFROMCHEST_REQ, p_Item_GetStorageAndOwner, ChestOwner=%d, ChestKey=%I64d, Chest's ItemIndex=%d, Chest's ItemKey=%I64d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18), v5, *(&v65 + 4 * v5), v66[4 * v5], v41); sub_446350(1, "Msg", "%s", &v68); i = 2484; } v20 = 0; if ( v44 > 0 ) { v21 = &v65; do { v22 = *v21; v23 = v21[1]; v61 = v21[2]; v24 = *((_BYTE *)v21 + 12); v59 = v22; LOWORD(v22) = *((_WORD *)v21 + 7); v60 = v23; v62 = v24; v64 = v22; if ( !sub_460890(*(_DWORD *)v45 + 4684, &v59, 0) ) { sprintf( &v68, "ERROR - fc_NC_ITEMDB_GETFROMCHEST_REQ, ROLLBACK's p_Item_SetStorageAndOwner, ChestOwner=%d, ChestKey=%I64d, Chest's ItemIndex=%d, Chest's ItemKey=%I64d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18), v20, v59, v60, v41); sub_446350(1, "Msg", "%s", &v68); } ++v20; v21 += 4; } while ( v20 < v44 ); } v25 = *(_WORD *)(a2 + 6); v26 = *(_WORD *)(a2 + 12); v55 = *(_DWORD *)(a2 + 2); v56 = v25; v57 = v26; v58 = i; v40 = 13; v54 = 13394; v27 = *(_DWORD *)(v45 + 4); v53 = 12; v39 = (int)&v53; LABEL_31: result = sub_43BFE0(v27, v39, v40); } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 40EAD0: using guessed type int var_18C[2]; //----- (0040EFB0) -------------------------------------------------------- signed int __thiscall sub_40EFB0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 int v7; // eax@2 __int16 v8; // cx@2 int v9; // eax@2 int v10; // eax@2 int v11; // ecx@2 int v12; // eax@2 int v13; // esi@6 char *v14; // ebx@6 int v15; // ecx@7 int v16; // eax@7 int v17; // eax@7 __int16 v18; // ax@9 __int16 v19; // si@9 int v20; // eax@9 int v21; // eax@11 int v22; // eax@11 signed int v23; // esi@16 int v24; // [sp-14h] [bp-2268h]@5 unsigned int v25; // [sp-10h] [bp-2264h]@1 int v26; // [sp+0h] [bp-2254h]@6 int v27; // [sp+4h] [bp-2250h]@6 char v28; // [sp+8h] [bp-224Ch]@2 int v29; // [sp+Dh] [bp-2247h]@2 __int16 v30; // [sp+11h] [bp-2243h]@2 int v31; // [sp+13h] [bp-2241h]@2 int v32; // [sp+17h] [bp-223Dh]@2 __int16 v33; // [sp+1Bh] [bp-2239h]@2 __int16 v34; // [sp+1Dh] [bp-2237h]@2 char v35; // [sp+1Fh] [bp-2235h]@14 char v36; // [sp+20h] [bp-2234h]@6 int v37; // [sp+200Ch] [bp-248h]@9 int v38; // [sp+2010h] [bp-244h]@9 __int16 v39; // [sp+2014h] [bp-240h]@9 char v40; // [sp+2016h] [bp-23Eh]@9 char v41; // [sp+207Ch] [bp-1D8h]@4 int v42; // [sp+207Dh] [bp-1D7h]@7 int v43[24]; // [sp+2081h] [bp-1D3h]@7 int rgbValue; // [sp+20E4h] [bp-170h]@2 int v45; // [sp+20E8h] [bp-16Ch]@2 int v46; // [sp+2114h] [bp-140h]@7 int v47; // [sp+2118h] [bp-13Ch]@7 char v48; // [sp+2120h] [bp-134h]@9 int v49; // [sp+2122h] [bp-132h]@9 char v50; // [sp+2144h] [bp-110h]@3 unsigned int v51; // [sp+2244h] [bp-10h]@1 int v52; // [sp+2250h] [bp-4h]@2 int v53; // [sp+2254h] [bp+0h]@1 v51 = (unsigned int)&v53 ^ __security_cookie; v25 = (unsigned int)&v53 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v28); v52 = 0; sub_44E310((int)&v28, 0x346Eu, 0x13u, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 8); v29 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 12); v30 = v5; v8 = *(_WORD *)(a2 + 16); v32 = v7; v9 = *(_DWORD *)(a2 + 8); v31 = v6; rgbValue = v9; v10 = *(_DWORD *)v3; v33 = v8; v11 = *(_DWORD *)(a2 + 12); v34 = 2485; v45 = v11; LOBYTE(v12) = sub_466970(v10 + 4684, &rgbValue); if ( v12 ) { if ( !sub_4669C0( (void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), &v41) ) { sprintf( &v50, "ERROR - fc_NC_ITEMDB_CHESTITEM_REQ, Get Chest OPT Failed, Key=%I64d, nCharNo=%d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), *(_DWORD *)(a2 + 4), v25); sub_446350(1, "Msg", "%s", &v50); v34 = 2487; v24 = (int)&v28; LABEL_16: v23 = sub_43BFB0(*(_DWORD *)(v3 + 4), v24); v52 = -1; nullsub_1(&v28); return v23; } v13 = 0; v14 = &v36; v27 = 0; v26 = 0; if ( v41 & 0xF ) { do { v15 = v43[2 * v13]; v46 = *(&v42 + 2 * v13); v16 = *(_DWORD *)v3 + 4684; v47 = v15; LOBYTE(v17) = sub_466970(v16, &v46); if ( v17 ) { v18 = *(_WORD *)(v14 + 1) & 0x3FF | ((signed __int16)v48 << 10); *(_WORD *)(v14 + 1) = v18; *(_WORD *)(v14 + 1) = v18 ^ (v49 ^ v18) & 0x3FF; v38 = v47; v19 = HIWORD(v49); v39 = HIWORD(v49); v20 = *(_DWORD *)v3 + 4684; v37 = v46; if ( sub_4669C0((void *)(v20 + 36), v20, v46, v47, &v40) ) { v21 = (int)sub_44BD50(dword_6EC2C8, v19); v22 = sub_44BCD0((int)&v37, v21, v19, (int)(v14 + 3)); ++v27; *v14 = v22 - (_BYTE)v14 - 1; v14 = (char *)v22; } else { v34 = 2488; } v13 = v26; } else { v34 = 2488; } ++v13; v26 = v13; } while ( v13 < (v41 & 0xF) ); } v35 = v27; sub_44E310((int)&v28, 0x346Eu, v14 - (char *)&v29, 0); } else { sprintf( &v50, "ERROR - fc_NC_ITEMDB_CHESTITEM_REQ, Get Chest Data Failed, Key=%I64d, nCharNo=%d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), *(_DWORD *)(a2 + 4), v25); sub_446350(1, "Msg", "%s", &v50); v34 = 2486; } v24 = (int)&v28; goto LABEL_16; } return result; } // 4DE38C: using guessed type int __security_cookie; // 40EFB0: using guessed type int var_1D3[24]; //----- (0040F2F0) -------------------------------------------------------- signed int __thiscall sub_40F2F0(void *this, int a2) { int v2; // ebx@1 void *v3; // esi@1 int v4; // ebx@1 int v5; // eax@1 signed int v6; // eax@1 signed int v7; // edi@3 void *v8; // ebx@4 signed int i; // eax@10 int v10; // ecx@12 int j; // eax@12 __int16 v12; // di@13 const char *v14; // [sp-10h] [bp-168h]@9 int v15; // [sp-Ch] [bp-164h]@9 signed int v16; // [sp-8h] [bp-160h]@9 int v17; // [sp-4h] [bp-15Ch]@9 int v18; // [sp+Ch] [bp-14Ch]@1 int rgbValue; // [sp+14h] [bp-144h]@1 int v20; // [sp+18h] [bp-140h]@1 int v21; // [sp+1Ch] [bp-13Ch]@1 int v22; // [sp+20h] [bp-138h]@1 __int16 TargetValue[16]; // [sp+24h] [bp-134h]@4 char v24; // [sp+44h] [bp-114h]@16 __int16 v25[8]; // [sp+144h] [bp-14h]@11 unsigned int v26; // [sp+154h] [bp-4h]@1 int v27; // [sp+158h] [bp+0h]@1 v26 = (unsigned int)&v27 ^ __security_cookie; v2 = *(_BYTE *)(a2 + 22); v3 = this; rgbValue = *(_DWORD *)(a2 + 6); v4 = v2 - 1; v5 = *(_DWORD *)this + 4684; v20 = 10; v21 = v4; v22 = 0; v18 = v4; v6 = (unsigned __int8)sub_4633E0(v5, &rgbValue); if ( v22 || !v6 ) { v17 = v22; v16 = v6; v15 = *(_DWORD *)(a2 + 6); v14 = "ERROR - CPFsCharacter::CreateChestItemList, Get empty chest info, Owner=%d, nRet=%d, StorageEmptyList.nRet=%d"; goto LABEL_16; } v7 = 0; if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { v8 = TargetValue; do { if ( v7 >= 8 ) break; sub_44E4E0(*(_DWORD *)v3 + 4684, v8); ++v7; v8 = (char *)v8 + 4; } while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); v4 = v18; } sub_44E4D0(*(_DWORD *)v3 + 4684); if ( v7 != v4 ) { v17 = v4; v16 = v7; v15 = *(_DWORD *)(a2 + 6); v14 = "ERROR - CPFsCharacter::CreateChestItemList, Owner is full empty chest, Owner=%d, EmptyCount=%d, NumOfMakeItem-1=%d"; LABEL_16: sprintf(&v24, v14, v15, v16, v17); sub_446350(1, "Msg", "%s", &v24); return 0; } for ( i = 0; i < v7; ++i ) v25[i] = TargetValue[2 * i] & 0x3FF | 0x2800; v10 = 0; for ( j = a2 + 23; v10 < v4; *(_WORD *)(j + 1) = v12 ) { j += *(_BYTE *)j + 1; v12 = v25[v10++]; } return sub_40E690(v3, a2); } // 4DE38C: using guessed type int __security_cookie; // 40F2F0: using guessed type __int16 TargetValue[16]; // 40F2F0: using guessed type __int16 var_14[8]; //----- (0040F490) -------------------------------------------------------- signed int __thiscall sub_40F490(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // edx@2 __int16 v7; // cx@2 bool v8; // zf@2 int v9; // eax@3 int v10; // ecx@3 int v11; // eax@5 int v12; // edx@5 int v13; // ST18_4@5 int v14; // ST14_4@5 int v15; // ecx@5 int v16; // ST08_4@5 signed int v17; // esi@6 signed int v18; // esi@13 int v19; // eax@14 int v20; // edx@14 int v21; // ecx@14 int v22; // ecx@14 int v23; // edx@14 int v24; // eax@14 int v25; // eax@16 int v26; // edx@16 int v27; // ecx@16 int v28; // eax@16 int v29; // ecx@16 int v30; // eax@16 int v31; // eax@16 unsigned int v32; // [sp-10h] [bp-4148h]@1 char v33; // [sp+0h] [bp-4138h]@14 int v34; // [sp+5h] [bp-4133h]@14 int v35; // [sp+9h] [bp-412Fh]@14 int v36; // [sp+Dh] [bp-412Bh]@14 int v37; // [sp+11h] [bp-4127h]@14 __int16 v38; // [sp+15h] [bp-4123h]@14 __int16 v39; // [sp+17h] [bp-4121h]@14 int v40; // [sp+19h] [bp-411Fh]@14 int v41; // [sp+1Dh] [bp-411Bh]@14 __int16 v42; // [sp+21h] [bp-4117h]@14 int v43; // [sp+23h] [bp-4115h]@14 int v44; // [sp+27h] [bp-4111h]@14 char v45; // [sp+2004h] [bp-2134h]@2 int v46; // [sp+2009h] [bp-212Fh]@2 __int16 v47; // [sp+200Dh] [bp-212Bh]@2 int v48; // [sp+200Fh] [bp-2129h]@2 __int16 v49; // [sp+2013h] [bp-2125h]@2 __int16 v50; // [sp+2015h] [bp-2123h]@2 __int16 v51; // [sp+2017h] [bp-2121h]@2 int v52; // [sp+2019h] [bp-211Fh]@3 int v53; // [sp+201Dh] [bp-211Bh]@3 int v54; // [sp+2021h] [bp-2117h]@3 __int16 v55; // [sp+2025h] [bp-2113h]@3 __int16 v56; // [sp+2027h] [bp-2111h]@5 int rgbValue; // [sp+4008h] [bp-130h]@5 int v58; // [sp+400Ch] [bp-12Ch]@5 int v59; // [sp+4010h] [bp-128h]@5 int v60; // [sp+4014h] [bp-124h]@5 int v61; // [sp+4018h] [bp-120h]@5 int v62; // [sp+401Ch] [bp-11Ch]@5 char v63; // [sp+4020h] [bp-118h]@5 __int16 v64; // [sp+4022h] [bp-116h]@5 int v65; // [sp+4024h] [bp-114h]@5 char v66; // [sp+4028h] [bp-110h]@8 unsigned int v67; // [sp+4128h] [bp-10h]@1 int v68; // [sp+4134h] [bp-4h]@2 int v69; // [sp+4138h] [bp+0h]@1 v67 = (unsigned int)&v69 ^ __security_cookie; v32 = (unsigned int)&v69 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v45); v5 = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 8); v47 = *(_WORD *)(a2 + 6); v7 = *(_WORD *)(a2 + 24); v8 = *(_BYTE *)(a2 + 26) == 1; v46 = v5; LOWORD(v5) = *(_WORD *)(a2 + 12); v48 = v6; LOWORD(v6) = *(_WORD *)(a2 + 22); v68 = 0; v49 = v5; v51 = v7; v50 = v6; if ( v8 ) { v9 = *(_DWORD *)(a2 + 27); v10 = *(_DWORD *)(a2 + 31); v52 = 4; v53 = v9; v54 = v10; v55 = 0; } else { v52 = 1; v53 = 0; v54 = 0; v55 = 0; } v11 = *(_DWORD *)(a2 + 18); v59 = *(_DWORD *)(a2 + 46); v60 = *(_DWORD *)(a2 + 50); v61 = *(_DWORD *)(a2 + 27); v12 = *(_DWORD *)(a2 + 31); v13 = v11; v56 = 2625; v14 = *(_DWORD *)(a2 + 14); rgbValue = v11; LOWORD(v11) = *(_WORD *)(a2 + 35); v62 = v12; LOWORD(v12) = *(_BYTE *)(a2 + 37); v58 = v14; v15 = *(_DWORD *)(a2 + 31); v64 = v12; v16 = *(_DWORD *)(a2 + 27); v63 = 9; v65 = 0; if ( sub_403E30((void *)v3, v16, v15, v11, v14, v13) ) { if ( (unsigned __int8)sub_4635F0(*(_DWORD *)v3 + 4684, &rgbValue) ) { sub_44E310((int)&v45, 0x3456u, 0x20u, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v45); sub_44E180((int)&v33); LOBYTE(v68) = 1; sub_44E310((int)&v33, 0x45Bu, 0x26u, 0); v19 = *(_DWORD *)(a2 + 27); v20 = *(_DWORD *)(a2 + 14); v34 = *(_DWORD *)(a2 + 18); v37 = *(_DWORD *)(a2 + 31); v21 = *(_DWORD *)(a2 + 46); v36 = v19; LOWORD(v19) = *(_WORD *)(a2 + 38); v40 = v21; v22 = *(_DWORD *)(a2 + 66); v35 = v20; LOWORD(v20) = *(_WORD *)(a2 + 35); v44 = v22; v38 = v20; v23 = *(_DWORD *)(a2 + 50); v39 = v19; v42 = v19; v24 = *(_DWORD *)(a2 + 62); v41 = v23; v43 = v24; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v33); LOBYTE(v68) = 0; nullsub_1(&v33); sub_44E180((int)&v33); LOBYTE(v68) = 2; sub_44E310((int)&v33, 0x45Cu, 0x26u, 0); v25 = *(_DWORD *)(a2 + 14); v26 = *(_DWORD *)(a2 + 27); v35 = *(_DWORD *)(a2 + 18); v38 = *(_WORD *)(a2 + 35); v27 = *(_DWORD *)(a2 + 50); v34 = v25; v28 = *(_DWORD *)(a2 + 31); v41 = v27; v29 = *(_DWORD *)(a2 + 58); v36 = v26; LOWORD(v26) = *(_WORD *)(a2 + 38); v37 = v28; v30 = *(_DWORD *)(a2 + 46); v44 = v29; v39 = v26; v40 = v30; v31 = *(_DWORD *)(a2 + 54); v42 = 0; v43 = v31; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v33); LOBYTE(v68) = 0; nullsub_1(&v33); v68 = -1; nullsub_1(&v45); result = 1; } else { sprintf( &v66, "ERROR - CPFsCharacter::fc_NC_ITEMDB_BOOTHTRADE_ALL_REQ, boothBuyer=%d", *(_DWORD *)(a2 + 18), v32); sub_446350(1, "Msg", "%s", &v66); switch ( v65 + 2624 ) { case 3: v56 = 2628; break; case 1: v56 = 2634; break; case 0: v56 = 2638; break; default: v56 = 2628; break; } sub_44E310((int)&v45, 0x3456u, 0x20u, 0); v18 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v45); v68 = -1; nullsub_1(&v45); result = v18; } } else { v56 = 2638; sub_44E310((int)&v45, 0x3456u, 0x20u, 0); v17 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v45); v68 = -1; nullsub_1(&v45); result = v17; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0040F8D0) -------------------------------------------------------- signed int __thiscall sub_40F8D0(int this, int a2, int a3) { signed int result; // eax@1 int v4; // eax@2 int v5; // edx@2 __int16 v6; // cx@2 const void *v7; // ebx@2 bool v8; // zf@2 int v9; // eax@3 int v10; // ecx@3 __int16 v11; // dx@3 __int16 v12; // di@5 unsigned int v13; // eax@5 int v14; // edx@6 int v15; // ecx@8 int v16; // eax@8 int v17; // ecx@10 signed int v18; // esi@11 int v19; // edx@12 signed __int16 v20; // ax@14 int v21; // edx@15 int v22; // ecx@15 int v23; // eax@15 int v24; // edx@15 int v25; // ecx@15 int v26; // eax@15 int v27; // edx@15 int v28; // ecx@15 int v29; // ecx@15 int v30; // eax@15 signed __int16 v31; // cx@26 int v32; // edx@32 int v33; // eax@32 int v34; // ecx@32 int v35; // ecx@32 int v36; // edx@32 int v37; // edx@32 int v38; // edx@34 int v39; // eax@34 int v40; // ecx@34 int v41; // ecx@34 int v42; // edx@34 int v43; // edx@34 int v44; // [sp-14h] [bp-4170h]@10 unsigned int v45; // [sp-10h] [bp-416Ch]@1 int v46; // [sp+0h] [bp-415Ch]@1 char v47; // [sp+4h] [bp-4158h]@2 int v48; // [sp+9h] [bp-4153h]@2 __int16 v49; // [sp+Dh] [bp-414Fh]@2 int v50; // [sp+Fh] [bp-414Dh]@2 __int16 v51; // [sp+13h] [bp-4149h]@2 __int16 v52; // [sp+15h] [bp-4147h]@2 __int16 v53; // [sp+17h] [bp-4145h]@2 int v54; // [sp+19h] [bp-4143h]@3 int v55; // [sp+1Dh] [bp-413Fh]@3 int v56; // [sp+21h] [bp-413Bh]@3 __int16 v57; // [sp+25h] [bp-4137h]@3 __int16 v58; // [sp+27h] [bp-4135h]@5 char v59; // [sp+2008h] [bp-2154h]@32 int v60; // [sp+200Dh] [bp-214Fh]@32 int v61; // [sp+2011h] [bp-214Bh]@32 int v62; // [sp+2015h] [bp-2147h]@32 int v63; // [sp+2019h] [bp-2143h]@32 __int16 v64; // [sp+201Dh] [bp-213Fh]@32 __int16 v65; // [sp+201Fh] [bp-213Dh]@32 int v66; // [sp+2021h] [bp-213Bh]@32 int v67; // [sp+2025h] [bp-2137h]@32 __int16 v68; // [sp+2029h] [bp-2133h]@32 int v69; // [sp+202Bh] [bp-2131h]@32 int v70; // [sp+202Fh] [bp-212Dh]@32 int rgbValue; // [sp+400Ch] [bp-150h]@15 int v72; // [sp+4014h] [bp-148h]@15 int v73; // [sp+4018h] [bp-144h]@15 __int16 v74; // [sp+401Ch] [bp-140h]@15 int v75; // [sp+4020h] [bp-13Ch]@15 int v76; // [sp+4024h] [bp-138h]@15 int v77; // [sp+4028h] [bp-134h]@15 __int16 v78; // [sp+402Ch] [bp-130h]@15 int v79; // [sp+4034h] [bp-128h]@15 int v80; // [sp+4038h] [bp-124h]@15 __int64 v81; // [sp+403Ch] [bp-120h]@15 char v82; // [sp+4044h] [bp-118h]@15 int v83; // [sp+4048h] [bp-114h]@15 char v84; // [sp+404Ch] [bp-110h]@16 unsigned int v85; // [sp+414Ch] [bp-10h]@1 int v86; // [sp+4158h] [bp-4h]@2 int v87; // [sp+415Ch] [bp+0h]@1 v85 = (unsigned int)&v87 ^ __security_cookie; v45 = (unsigned int)&v87 ^ __security_cookie; v46 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v47); v4 = *(_DWORD *)(a2 + 2); v5 = *(_DWORD *)(a2 + 8); v49 = *(_WORD *)(a2 + 6); v6 = *(_WORD *)(a2 + 24); v7 = 0; v8 = *(_BYTE *)(a2 + 26) == 1; v48 = v4; LOWORD(v4) = *(_WORD *)(a2 + 12); v50 = v5; LOWORD(v5) = *(_WORD *)(a2 + 22); v86 = 0; v51 = v4; v53 = v6; v52 = v5; if ( v8 ) { v9 = *(_DWORD *)(a2 + 29); v10 = *(_DWORD *)(a2 + 33); v11 = *(_WORD *)(a2 + 45); v54 = 5; v55 = v9; v56 = v10; v57 = v11; } else { v54 = 2; v55 = 0; v56 = 0; v57 = 0; } v12 = *(_WORD *)(a2 + 27); v13 = *(_WORD *)(a2 + 27); v58 = 2625; if ( v13 >= dword_6EA3EC || (v14 = dword_6EACDC + 40 * v13) == 0 || !*(_DWORD *)v14 ) goto LABEL_10; v15 = **(_WORD **)v14; v16 = v15 + 10000 * v13; v7 = 0; if ( (_WORD)v15 != v12 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v16); LABEL_10: v58 = 2659; sub_44E310((int)&v47, 0x3456u, 0x20u, v7); v44 = (int)&v47; v17 = *(_DWORD *)(v46 + 4); LABEL_11: v18 = sub_43BFB0(v17, v44); v86 = -1; nullsub_1(&v47); return v18; } v19 = *(_DWORD *)v14; if ( !v19 ) goto LABEL_10; switch ( *(_DWORD *)(v19 + 102) ) { default: goto LABEL_10; case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: v20 = 1; break; case 1: case 0x15: v20 = 2; break; case 2: v20 = 3; break; case 0x18: v20 = 4; break; case 3: v20 = 300; break; case 0x22: v20 = 2000; break; case 0x21: v20 = 2500; break; case 0x23: v20 = 2600; break; } v21 = *(_DWORD *)(a2 + 37); v22 = *(_DWORD *)(a2 + 18); v74 = v20; v78 = v20; v23 = *(_DWORD *)(a2 + 47); v72 = v21; v24 = *(_DWORD *)(a2 + 14); rgbValue = v22; v25 = *(_DWORD *)(a2 + 41); v79 = v23; v26 = *(_WORD *)(a2 + 45); v75 = v24; v27 = *(_DWORD *)(a2 + 33); v73 = v25; v28 = *(_DWORD *)(a2 + 29); v77 = v27; v76 = v28; v29 = *(_DWORD *)(a2 + 51); v81 = v26; v30 = *(_DWORD *)v46; v80 = v29; v82 = *(_BYTE *)(a2 + 55); v83 = 0; if ( !(unsigned __int8)sub_463850(v30 + 4684, &rgbValue) ) { sprintf( &v84, "ERROR - CPFsCharacter::fc_NC_ITEMDB_BOOTHTRADE_MERGE_REQ, boothBuyer=%d", *(_DWORD *)(a2 + 18), v45); sub_446350(1, "Msg", "%s", &v84); switch ( v83 + 2627 ) { case 4: v58 = 2634; break; case 3: v58 = 2638; break; case 2: v31 = 2639; goto LABEL_30; case 1: v58 = 2640; break; case 0: v58 = 2639; break; default: v31 = 2628; LABEL_30: v58 = v31; break; } sub_44E310((int)&v47, 0x3456u, 0x20u, 0); v17 = *(_DWORD *)(v46 + 4); v44 = (int)&v47; goto LABEL_11; } sub_44E310((int)&v47, 0x3456u, 0x20u, 0); sub_43BFB0(*(_DWORD *)(v46 + 4), (int)&v47); sub_44E180((int)&v59); LOBYTE(v86) = 1; sub_44E310((int)&v59, 0x45Bu, 0x26u, 0); v32 = *(_DWORD *)(a2 + 14); v33 = *(_DWORD *)(a2 + 37); v60 = *(_DWORD *)(a2 + 18); v63 = *(_DWORD *)(a2 + 41); v34 = *(_DWORD *)(a2 + 47); v61 = v32; LOWORD(v32) = *(_WORD *)(a2 + 27); v62 = v33; LOWORD(v33) = *(_WORD *)(a2 + 45); v66 = v34; v35 = *(_DWORD *)(a2 + 68); v64 = v32; v36 = *(_DWORD *)(a2 + 51); v65 = v33; LOWORD(v33) = *(_WORD *)(a2 + 58); v69 = v35; v67 = v36; v37 = *(_DWORD *)(a2 + 72); v68 = v33; v70 = v37; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v59); LOBYTE(v86) = 0; nullsub_1(&v59); sub_44E180((int)&v59); LOBYTE(v86) = 2; sub_44E310((int)&v59, 0x45Cu, 0x26u, 0); v38 = *(_DWORD *)(a2 + 18); v39 = *(_DWORD *)(a2 + 29); v60 = *(_DWORD *)(a2 + 14); v63 = *(_DWORD *)(a2 + 33); v40 = *(_DWORD *)(a2 + 47); v61 = v38; LOWORD(v38) = *(_WORD *)(a2 + 27); v62 = v39; LOWORD(v39) = *(_WORD *)(a2 + 45); v66 = v40; v41 = *(_DWORD *)(a2 + 60); v64 = v38; v42 = *(_DWORD *)(a2 + 51); v65 = v39; LOWORD(v39) = *(_WORD *)(a2 + 56); v69 = v41; v67 = v42; v43 = *(_DWORD *)(a2 + 64); v68 = v39; v70 = v43; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v59); LOBYTE(v86) = 0; nullsub_1(&v59); v86 = -1; nullsub_1(&v47); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (0040FE30) -------------------------------------------------------- signed int __thiscall sub_40FE30(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // eax@2 int v6; // edx@2 __int16 v7; // cx@2 bool v8; // zf@2 int v9; // eax@3 int v10; // ecx@3 __int16 v11; // dx@3 int v12; // edx@5 int v13; // ecx@6 signed int v14; // esi@7 unsigned int v15; // eax@8 int v16; // edi@9 int v17; // ecx@11 int v18; // eax@11 signed int v19; // esi@14 int v20; // edi@15 signed __int16 v21; // ax@17 int v22; // ecx@18 int v23; // edi@18 int v24; // edx@18 int v25; // edx@18 int v26; // eax@18 int v27; // ecx@18 int v28; // ecx@18 int v29; // eax@18 int v30; // ecx@18 signed __int16 v31; // cx@28 int v32; // edx@36 int v33; // eax@36 int v34; // ecx@36 int v35; // ecx@36 int v36; // edx@36 int v37; // edx@36 int v38; // edx@38 int v39; // eax@38 int v40; // ecx@38 int v41; // ecx@38 int v42; // edx@38 int v43; // edx@38 int v44; // [sp-14h] [bp-41E8h]@6 unsigned int v45; // [sp-10h] [bp-41E4h]@1 char v46; // [sp+0h] [bp-41D4h]@5 int v47; // [sp+68h] [bp-416Ch]@1 char v48; // [sp+6Ch] [bp-4168h]@36 int v49; // [sp+71h] [bp-4163h]@36 int v50; // [sp+75h] [bp-415Fh]@36 int v51; // [sp+79h] [bp-415Bh]@36 int v52; // [sp+7Dh] [bp-4157h]@36 __int16 v53; // [sp+81h] [bp-4153h]@36 __int16 v54; // [sp+83h] [bp-4151h]@36 int v55; // [sp+85h] [bp-414Fh]@36 int v56; // [sp+89h] [bp-414Bh]@36 __int16 v57; // [sp+8Dh] [bp-4147h]@36 int v58; // [sp+8Fh] [bp-4145h]@36 int v59; // [sp+93h] [bp-4141h]@36 char v60; // [sp+2070h] [bp-2164h]@2 int v61; // [sp+2075h] [bp-215Fh]@2 __int16 v62; // [sp+2079h] [bp-215Bh]@2 int v63; // [sp+207Bh] [bp-2159h]@2 __int16 v64; // [sp+207Fh] [bp-2155h]@2 __int16 v65; // [sp+2081h] [bp-2153h]@2 __int16 v66; // [sp+2083h] [bp-2151h]@2 int v67; // [sp+2085h] [bp-214Fh]@3 int v68; // [sp+2089h] [bp-214Bh]@3 int v69; // [sp+208Dh] [bp-2147h]@3 __int16 v70; // [sp+2091h] [bp-2143h]@3 __int16 v71; // [sp+2093h] [bp-2141h]@5 int rgbValue; // [sp+4074h] [bp-160h]@18 int v73; // [sp+407Ch] [bp-158h]@18 int v74; // [sp+4080h] [bp-154h]@18 char v75; // [sp+4084h] [bp-150h]@18 __int16 v76; // [sp+4086h] [bp-14Eh]@18 int v77; // [sp+4088h] [bp-14Ch]@18 int v78; // [sp+408Ch] [bp-148h]@18 __int16 v79; // [sp+4090h] [bp-144h]@18 int v80; // [sp+4094h] [bp-140h]@18 int v81; // [sp+409Ch] [bp-138h]@18 int v82; // [sp+40A0h] [bp-134h]@18 __int16 v83; // [sp+40A4h] [bp-130h]@18 int v84; // [sp+40ACh] [bp-128h]@18 int v85; // [sp+40B0h] [bp-124h]@18 __int64 v86; // [sp+40B4h] [bp-120h]@18 int v87; // [sp+40BCh] [bp-118h]@18 char v88; // [sp+40C4h] [bp-110h]@19 unsigned int v89; // [sp+41C4h] [bp-10h]@1 int v90; // [sp+41D0h] [bp-4h]@2 int v91; // [sp+41D4h] [bp+0h]@1 v89 = (unsigned int)&v91 ^ __security_cookie; v45 = (unsigned int)&v91 ^ __security_cookie; v3 = this; v47 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v60); v5 = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 8); v62 = *(_WORD *)(a2 + 6); v7 = *(_WORD *)(a2 + 24); v8 = *(_BYTE *)(a2 + 26) == 1; v61 = v5; LOWORD(v5) = *(_WORD *)(a2 + 12); v63 = v6; LOWORD(v6) = *(_WORD *)(a2 + 22); v90 = 0; v64 = v5; v66 = v7; v65 = v6; if ( v8 ) { v9 = *(_DWORD *)(a2 + 29); v10 = *(_DWORD *)(a2 + 33); v11 = *(_WORD *)(a2 + 75); v67 = 6; v68 = v9; v69 = v10; v70 = v11; } else { v67 = 3; v68 = 0; v69 = 0; v70 = 0; } v12 = *(_WORD *)(a2 + 75); v71 = 2625; if ( !sub_403C00(*(_WORD *)(a2 + 71), (int)&v46, v12) ) { v71 = 2659; sub_44E310((int)&v60, 0x3456u, 0x20u, 0); v13 = *(_DWORD *)(v3 + 4); v44 = (int)&v60; LABEL_7: v14 = sub_43BFB0(v13, v44); v90 = -1; nullsub_1(&v60); return v14; } v15 = *(_WORD *)(a2 + 27); if ( v15 >= dword_6EA3EC || (v16 = dword_6EACDC + 40 * v15) == 0 || !*(_DWORD *)v16 ) goto LABEL_14; v17 = **(_WORD **)v16; v18 = v17 + 10000 * v15; if ( (_WORD)v17 != *(_WORD *)(a2 + 27) ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v18); LABEL_13: v3 = v47; LABEL_14: v71 = 2659; sub_44E310((int)&v60, 0x3456u, 0x20u, 0); v19 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v60); v90 = -1; nullsub_1(&v60); return v19; } v20 = *(_DWORD *)v16; if ( !v20 ) goto LABEL_13; switch ( *(_DWORD *)(v20 + 102) ) { default: goto LABEL_13; case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: v21 = 1; break; case 1: case 0x15: v21 = 2; break; case 2: v21 = 3; break; case 0x18: v21 = 4; break; case 3: v21 = 300; break; case 0x22: v21 = 2000; break; case 0x21: v21 = 2500; break; case 0x23: v21 = 2600; break; } v22 = *(_DWORD *)(a2 + 63); v23 = v47; rgbValue = *(_DWORD *)(a2 + 18); v24 = *(_DWORD *)(a2 + 67); v73 = v22; LOWORD(v22) = *(_WORD *)(a2 + 61); v74 = v24; v79 = v21; v83 = v21; v25 = *(_DWORD *)(a2 + 14); v84 = *(_DWORD *)(a2 + 77); v26 = *(_WORD *)(a2 + 75); v76 = v22 & 0x3FF; v27 = *(_WORD *)(a2 + 27); v80 = v25; v82 = *(_DWORD *)(a2 + 33); v77 = v27; v28 = *(_DWORD *)(a2 + 29); v86 = v26; v29 = *(_DWORD *)v47; v81 = v28; v30 = *(_DWORD *)(a2 + 81); v75 = 9; v78 = 0; v85 = v30; v87 = 0; if ( !(unsigned __int8)sub_463AF0(v29 + 4684, &rgbValue) ) { sprintf(&v88, "ERROR - CPFsCharacter::fc_NC_ITEMDB_BOOTHTRADE_LOT_REQ, boothBuyer=%d", *(_DWORD *)(a2 + 18), v45); sub_446350(1, "Msg", "%s", &v88); switch ( v87 + 2629 ) { case 6: v71 = 2634; break; case 5: v31 = 2638; goto LABEL_34; case 4: v71 = 2639; break; case 0: case 3: v71 = 2640; break; case 2: v31 = 2639; goto LABEL_34; case 1: v71 = 2642; break; default: v31 = 2628; LABEL_34: v71 = v31; break; } sub_44E310((int)&v60, 0x3456u, 0x20u, 0); v13 = *(_DWORD *)(v23 + 4); v44 = (int)&v60; goto LABEL_7; } sub_44E310((int)&v60, 0x3456u, 0x20u, 0); sub_43BFB0(*(_DWORD *)(v23 + 4), (int)&v60); sub_44E180((int)&v48); LOBYTE(v90) = 1; sub_44E310((int)&v48, 0x45Bu, 0x26u, 0); v32 = *(_DWORD *)(a2 + 14); v33 = *(_DWORD *)(a2 + 63); v49 = *(_DWORD *)(a2 + 18); v52 = *(_DWORD *)(a2 + 67); v34 = *(_DWORD *)(a2 + 77); v50 = v32; LOWORD(v32) = *(_WORD *)(a2 + 71); v51 = v33; LOWORD(v33) = *(_WORD *)(a2 + 75); v55 = v34; v35 = *(_DWORD *)(a2 + 97); v53 = v32; v36 = *(_DWORD *)(a2 + 81); v54 = v33; LOWORD(v33) = *(_WORD *)(a2 + 87); v58 = v35; v56 = v36; v37 = *(_DWORD *)(a2 + 101); v57 = v33; v59 = v37; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v48); LOBYTE(v90) = 0; nullsub_1(&v48); sub_44E180((int)&v48); LOBYTE(v90) = 2; sub_44E310((int)&v48, 0x45Cu, 0x26u, 0); v38 = *(_DWORD *)(a2 + 18); v39 = *(_DWORD *)(a2 + 29); v49 = *(_DWORD *)(a2 + 14); v52 = *(_DWORD *)(a2 + 33); v40 = *(_DWORD *)(a2 + 77); v50 = v38; LOWORD(v38) = *(_WORD *)(a2 + 27); v51 = v39; LOWORD(v39) = *(_WORD *)(a2 + 75); v55 = v40; v41 = *(_DWORD *)(a2 + 89); v53 = v38; v42 = *(_DWORD *)(a2 + 81); v54 = v39; LOWORD(v39) = *(_WORD *)(a2 + 85); v58 = v41; v56 = v42; v43 = *(_DWORD *)(a2 + 93); v57 = v39; v59 = v43; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v48); LOBYTE(v90) = 0; nullsub_1(&v48); v90 = -1; nullsub_1(&v60); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (00410430) -------------------------------------------------------- signed int __thiscall sub_410430(int this, int a2, int a3) { signed int result; // eax@1 unsigned int v4; // eax@2 int v5; // edi@3 int v6; // ecx@5 int v7; // eax@5 __int16 v8; // dx@7 __int16 v9; // ax@7 int v10; // ecx@7 int v11; // edi@11 char v12; // si@13 unsigned __int16 v13; // ST2C_2@21 int v14; // edi@21 unsigned int v15; // eax@23 unsigned int v16; // edi@24 __int16 v17; // cx@26 __int16 v18; // ax@26 int v19; // edx@27 int v20; // ecx@27 int v21; // edi@28 signed __int16 v22; // ax@29 int v23; // esi@30 int v24; // eax@30 int v25; // ecx@33 int v26; // edx@33 unsigned int v27; // eax@33 int v28; // edx@33 int v29; // eax@33 int v30; // eax@33 int v31; // eax@34 unsigned __int16 v32; // di@34 int v33; // eax@34 __int16 v34; // dx@37 __int16 v35; // ax@38 __int16 v36; // cx@38 int v37; // edx@38 int v38; // eax@38 int v39; // ecx@38 signed int v40; // edi@38 int v41; // eax@38 int v42; // edx@38 int v43; // ecx@38 int v44; // eax@38 int v45; // ecx@38 int v46; // edx@38 int v47; // ecx@38 int v48; // edx@38 int v49; // eax@38 char *v50; // [sp-18h] [bp-22B4h]@7 unsigned int v51; // [sp-14h] [bp-22B0h]@7 unsigned int v52; // [sp-10h] [bp-22ACh]@1 unsigned int v53; // [sp+0h] [bp-229Ch]@28 int v54; // [sp+4h] [bp-2298h]@28 int v55; // [sp+8h] [bp-2294h]@1 int v56; // [sp+Ch] [bp-2290h]@21 char v57; // [sp+10h] [bp-228Ch]@38 int v58; // [sp+15h] [bp-2287h]@38 int v59; // [sp+19h] [bp-2283h]@38 int v60; // [sp+1Dh] [bp-227Fh]@38 int v61; // [sp+21h] [bp-227Bh]@38 int v62; // [sp+25h] [bp-2277h]@38 int v63; // [sp+29h] [bp-2273h]@38 __int16 v64; // [sp+2Dh] [bp-226Fh]@38 int v65; // [sp+2Fh] [bp-226Dh]@38 int v66; // [sp+33h] [bp-2269h]@38 int v67; // [sp+37h] [bp-2265h]@38 int v68; // [sp+3Bh] [bp-2261h]@38 __int16 v69; // [sp+3Fh] [bp-225Dh]@38 __int16 v70; // [sp+41h] [bp-225Bh]@38 int v71; // [sp+2014h] [bp-288h]@28 char v72; // [sp+2078h] [bp-224h]@28 int v73; // [sp+207Ch] [bp-220h]@28 char v74; // [sp+20E0h] [bp-1BCh]@28 int v75; // [sp+20E4h] [bp-1B8h]@27 char v76; // [sp+2148h] [bp-154h]@28 int rgbValue; // [sp+214Ch] [bp-150h]@33 int v78; // [sp+2150h] [bp-14Ch]@33 int v79; // [sp+2154h] [bp-148h]@33 char v80; // [sp+2158h] [bp-144h]@33 __int16 v81; // [sp+215Ah] [bp-142h]@33 int v82; // [sp+215Ch] [bp-140h]@33 int v83; // [sp+2160h] [bp-13Ch]@33 char v84; // [sp+2164h] [bp-138h]@37 __int16 v85; // [sp+2165h] [bp-137h]@37 int v86; // [sp+2167h] [bp-135h]@37 __int16 v87; // [sp+216Bh] [bp-131h]@37 __int16 v88; // [sp+216Dh] [bp-12Fh]@37 __int16 v89; // [sp+216Fh] [bp-12Dh]@37 char v90; // [sp+2174h] [bp-128h]@38 __int16 v91; // [sp+2175h] [bp-127h]@38 int v92; // [sp+2177h] [bp-125h]@38 __int16 v93; // [sp+217Bh] [bp-121h]@38 char v94; // [sp+217Ch] [bp-120h]@7 __int16 v95; // [sp+217Dh] [bp-11Fh]@7 int v96; // [sp+217Fh] [bp-11Dh]@7 int v97; // [sp+2183h] [bp-119h]@7 __int16 v98; // [sp+2187h] [bp-115h]@7 char v99; // [sp+218Ch] [bp-110h]@35 unsigned int v100; // [sp+228Ch] [bp-10h]@1 int v101; // [sp+2298h] [bp-4h]@38 int v102; // [sp+229Ch] [bp+0h]@1 v100 = (unsigned int)&v102 ^ __security_cookie; v52 = (unsigned int)&v102 ^ __security_cookie; v55 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_WORD *)(a2 + 18); if ( v4 >= dword_6EA3EC || (v5 = dword_6EACDC + 40 * v4) == 0 || !*(_DWORD *)v5 ) goto LABEL_7; v6 = **(_WORD **)v5; v7 = v6 + 10000 * v4; if ( (_WORD)v6 != *(_WORD *)(a2 + 18) ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v7); LABEL_7: v8 = *(_WORD *)(a2 + 6); v9 = *(_WORD *)(a2 + 16); v96 = *(_DWORD *)(a2 + 2); HIWORD(v97) = 1092; v10 = *(_DWORD *)(v55 + 4); LOWORD(v97) = v8; v98 = v9; v51 = 13; v95 = 13366; v50 = &v94; LABEL_8: v94 = 12; return sub_43BFE0(v10, (int)v50, v51); } v11 = *(_DWORD *)v5; if ( !v11 ) goto LABEL_7; switch ( *(_DWORD *)(v11 + 102) ) { default: goto LABEL_7; case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: v12 = 1; break; case 1: case 0x15: v12 = 2; break; case 2: v12 = 3; break; case 0x18: v12 = 4; break; case 3: v12 = 44; break; case 0x22: v12 = -48; break; case 0x21: v12 = -60; break; case 0x23: v12 = 40; break; } v13 = *(_WORD *)(a2 + 18); v56 = 0; v14 = *(_DWORD *)sub_402D20((int)&unk_6EA3E8, v13); if ( !v14 || !sub_403800((void *)v55, *(_DWORD *)(a2 + 20), *(_DWORD *)(a2 + 24), v12, (int)&v56) || (v15 = *(_WORD *)(a2 + 68), v15 != v56) || (v16 = *(_DWORD *)(v14 + 106), v16 < v15) || v16 < *(_WORD *)(a2 + 66) ) { v17 = *(_WORD *)(a2 + 16); v18 = *(_WORD *)(a2 + 6); v96 = *(_DWORD *)(a2 + 2); v98 = v17; LOWORD(v97) = v18; HIWORD(v97) = 1097; v51 = 13; v50 = &v94; v10 = *(_DWORD *)(v55 + 4); v95 = 13366; goto LABEL_8; } v19 = *(_DWORD *)(a2 + 24); v20 = *(_DWORD *)(a2 + 20); v56 = *(_WORD *)(a2 + 62); if ( !sub_4669C0((void *)(*(_DWORD *)v55 + 4720), *(_DWORD *)v55 + 4684, v20, v19, &v75) ) goto LABEL_36; memcpy(&v73, &v75, 0x64u); v74 = v76; memcpy(&v71, &v75, 0x64u); v72 = v76; v21 = v55; sub_4038C0(v56, (int)&v75, (int)&v53, (int)&v54); if ( v53 <= *(_WORD *)(a2 + 66) ) { v22 = 1101; LABEL_37: v34 = *(_WORD *)(a2 + 6); v86 = *(_DWORD *)(a2 + 2); v89 = *(_WORD *)(a2 + 16); v10 = *(_DWORD *)(v55 + 4); v87 = v34; v88 = v22; v51 = 13; v84 = 12; v85 = 13366; v50 = &v84; return sub_43BFE0(v10, (int)v50, v51); } v23 = v53 - *(_WORD *)(a2 + 66); v54 = *(_WORD *)(a2 + 66); sub_403C00(v56, (int)&v73, v23); sub_403C00(v56, (int)&v71, v54); LOWORD(v24) = sub_468E40(*(_DWORD *)v21 + 4684, *(_DWORD *)(a2 + 20), *(_DWORD *)(a2 + 24), v56, (int)&v73); if ( v24 ) { if ( v24 == 1 ) { v22 = 1098; goto LABEL_37; } LABEL_36: v22 = 1099; goto LABEL_37; } v25 = *(_DWORD *)(a2 + 58); v26 = *(_DWORD *)(a2 + 12); rgbValue = *(_DWORD *)(a2 + 54); v27 = *(_WORD *)(a2 + 52); v78 = v25; v79 = v26; v28 = *(_WORD *)(a2 + 62); v80 = (v27 >> 10) & 0x3F; v81 = v27 & 0x3FF; v29 = *(_DWORD *)v21; v82 = v28; v83 = 0; LOWORD(v30) = sub_46A440(v29 + 4684, &rgbValue, (int)&v71, 0); if ( v30 ) { v31 = *(_DWORD *)v21; v32 = v56; LOWORD(v33) = sub_468E40(v31 + 4684, *(_DWORD *)(a2 + 20), *(_DWORD *)(a2 + 24), v56, (int)&v75); if ( v33 ) { sprintf( &v99, "ERROR - fc_NC_ITEMDB_SPLIT_REQ, ¾ÆÀÌÅÛ ³ª´©±â Áß »", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 20), *(_DWORD *)(a2 + 24), v32, v23, v53, v52); sub_446350(1, "Msg", "%s", &v99); } goto LABEL_36; } v35 = *(_WORD *)(a2 + 6); v36 = *(_WORD *)(a2 + 16); v92 = *(_DWORD *)(a2 + 2); v37 = *(_DWORD *)(a2 + 20); v95 = v36; v96 = v37; v93 = v35; v38 = *(_DWORD *)(a2 + 24); v91 = 13365; v39 = *(_DWORD *)(v21 + 4); v97 = v38; v98 = v23; v90 = 20; v40 = sub_43BFE0(v39, (int)&v90, 0x15u); sub_44E180((int)&v57); v101 = 0; sub_44E310((int)&v57, 0x457u, 0x2Eu, 0); v41 = *(_DWORD *)(a2 + 4); v42 = *(_DWORD *)(a2 + 36); v59 = *(_DWORD *)(a2 + 32); v43 = *(_DWORD *)(a2 + 44); v58 = v41; v44 = *(_DWORD *)(a2 + 40); v62 = v43; v45 = *(_DWORD *)(a2 + 20); v60 = v42; v46 = *(_DWORD *)(a2 + 48); v61 = v44; v65 = v45; v47 = *(_DWORD *)(a2 + 58); v63 = v46; v48 = *(_DWORD *)(a2 + 24); v68 = v47; v64 = v56; v49 = *(_DWORD *)(a2 + 54); v66 = v48; v67 = v49; v69 = v54; v70 = v23; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v57); v101 = -1; nullsub_1(&v57); result = v40; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (00410A00) -------------------------------------------------------- signed int __thiscall sub_410A00(int this, int a2, int a3) { signed int result; // eax@1 int v4; // eax@2 int v5; // edx@2 int v6; // esi@3 int v7; // ecx@5 int v8; // ebx@5 unsigned int v9; // eax@5 int v10; // ecx@5 int v11; // ST1C_4@5 int v12; // eax@5 int v13; // ebx@8 int v14; // esi@9 int v15; // eax@10 int v16; // eax@15 int v17; // esi@18 int v18; // esi@22 int v19; // ecx@23 __int16 v20; // dx@23 int v21; // eax@23 int v22; // eax@26 __int16 v23; // dx@26 __int16 v24; // cx@28 __int16 v25; // dx@28 signed int v26; // esi@28 unsigned int v27; // [sp-10h] [bp-4250h]@1 int v28; // [sp+0h] [bp-4240h]@2 int v29; // [sp+4h] [bp-423Ch]@1 signed __int16 v30; // [sp+8h] [bp-4238h]@2 int v31; // [sp+8h] [bp-4238h]@9 int v32; // [sp+Ch] [bp-4234h]@2 char v33; // [sp+10h] [bp-4230h]@28 int v34; // [sp+15h] [bp-422Bh]@28 __int16 v35; // [sp+19h] [bp-4227h]@28 __int16 v36; // [sp+1Bh] [bp-4225h]@28 __int16 v37; // [sp+1Dh] [bp-4223h]@28 char v38; // [sp+2014h] [bp-222Ch]@2 int v39; // [sp+2019h] [bp-2227h]@23 int v40; // [sp+201Dh] [bp-2223h]@23 int v41; // [sp+2021h] [bp-221Fh]@23 int v42; // [sp+2025h] [bp-221Bh]@23 __int16 v43; // [sp+2029h] [bp-2217h]@23 __int16 v44; // [sp+202Bh] [bp-2215h]@23 int rgbValue; // [sp+4018h] [bp-228h]@5 int v46; // [sp+401Ch] [bp-224h]@5 int v47; // [sp+4020h] [bp-220h]@5 char v48; // [sp+4024h] [bp-21Ch]@5 __int16 v49; // [sp+4026h] [bp-21Ah]@5 int v50; // [sp+4028h] [bp-218h]@5 int v51; // [sp+402Ch] [bp-214h]@5 char v52; // [sp+4030h] [bp-210h]@8 char v53; // [sp+4130h] [bp-110h]@11 unsigned int v54; // [sp+4230h] [bp-10h]@1 int v55; // [sp+423Ch] [bp-4h]@2 int v56; // [sp+4240h] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v27 = (unsigned int)&v56 ^ __security_cookie; v29 = this; result = sub_43B000(this, a2); if ( result ) { v30 = 8512; sub_44E180((int)&v38); v4 = *(_BYTE *)(a2 + 20); v5 = 0; v55 = 0; v32 = v4; v28 = 0; if ( v4 <= 0 ) { v8 = v4; LABEL_15: LOWORD(v16) = sub_466950(*(_DWORD *)v29 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); if ( !v16 ) { if ( v32 > 0 ) { v18 = a2 + 21; do { sub_44E310((int)&v38, 0x44Fu, 0x14u, 0); v19 = *(_DWORD *)(v18 + 30); v20 = *(_WORD *)(v18 + 34); v39 = *(_DWORD *)v18; v40 = v39; v21 = *(_DWORD *)(v18 + 26); v42 = v19; v41 = v21; LOWORD(v21) = *(_WORD *)(v18 + 24); v43 = v20; v44 = v21; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v38); v18 += 38; --v32; } while ( v32 ); } sub_44E310((int)&v38, 0x445u, 0x10u, 0); v22 = *(_DWORD *)(a2 + 10); v23 = *(_WORD *)(a2 + 18); v41 = *(_DWORD *)(a2 + 14); v40 = v22; v39 = v8; LOWORD(v42) = v23; HIWORD(v42) = 1; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v38); goto LABEL_28; } sprintf( &v53, "ERROR - fc_NC_ITEMDB_MYSTERY_VAULT_MAKEITEM_REQ º¼Æ® ¾ÆÀÌÅÛ Á", *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_WORD *)(a2 + 18), *(_DWORD *)(a2 + 21), v16, v27); sub_446350(1, "Msg", "%s", &v53); v13 = v28; } else { v6 = a2 + 21; while ( 1 ) { v7 = *(_DWORD *)(v6 + 30); v8 = *(_DWORD *)v6; rgbValue = *(_DWORD *)(v6 + 26); v9 = *(_WORD *)(v6 + 24); v46 = v7; v48 = (v9 >> 10) & 0x3F; v10 = *(_WORD *)(v6 + 36); v49 = v9 & 0x3FF; v50 = *(_WORD *)(v6 + 34); v11 = *(_DWORD *)v29 + 4684; v47 = v8; v51 = v5; LOWORD(v12) = sub_46A440(v11, &rgbValue, v10 + a2 + 2, v5); if ( v12 ) break; v6 += 38; ++v28; if ( v28 >= v32 ) goto LABEL_15; v5 = 0; } sprintf(&v52, "ERROR - fc_NC_ITEMDB_MYSTERY_VAULT_MAKEITEM_REQ ¾ÆÀÌÅÛ »", rgbValue, v46, v50, v47, v12, v27); sub_446350(1, "Msg", "%s", &v52); v13 = v28; if ( v28 > 0 ) { v14 = a2 + 47; v31 = v28; do { LOWORD(v15) = sub_466950(*(_DWORD *)v29 + 4684, *(_DWORD *)v14, *(_DWORD *)(v14 + 4)); if ( v15 ) { sprintf( &v53, "ERROR - fc_NC_ITEMDB_MYSTERY_VAULT_MAKEITEM_REQ »", *(_DWORD *)v14, *(_DWORD *)(v14 + 4), *(_WORD *)(v14 + 8), *(_DWORD *)(v14 - 26), v15); sub_446350(1, "Msg", "%s", &v53); } v14 += 38; --v31; } while ( v31 ); } } v30 = 8513; if ( v13 > 0 ) { v17 = a2 + 47; do { sub_466950(*(_DWORD *)v29 + 4684, *(_DWORD *)v17, *(_DWORD *)(v17 + 4)); v17 += 38; --v13; } while ( v13 ); } LABEL_28: sub_44E180((int)&v33); v24 = *(_WORD *)(a2 + 6); v25 = *(_WORD *)(a2 + 8); v34 = *(_DWORD *)(a2 + 2); v35 = v24; LOBYTE(v55) = 1; v36 = v25; v37 = v30; sub_44E310((int)&v33, 0x349Fu, 0xAu, 0); v26 = sub_43BFB0(*(_DWORD *)(v29 + 4), (int)&v33); LOBYTE(v55) = 0; nullsub_1(&v33); v55 = -1; nullsub_1(&v38); result = v26; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00410E20) -------------------------------------------------------- signed int __thiscall sub_410E20(void *this, int rgbValue, int a3, int a4) { int v4; // eax@1 char v6; // [sp+4h] [bp-84h]@2 unsigned int v7; // [sp+84h] [bp-4h]@1 int v8; // [sp+88h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; LOBYTE(v4) = sub_4585C0(*(_DWORD *)this + 4684, rgbValue, &a3); if ( !v4 ) { sprintf(&v6, "CharSubExp ERROR:CharNo=%d, Exp=%I64d", rgbValue, a3, a4); sub_446350(1, "Msg", "%s", &v6); } return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00410EA0) -------------------------------------------------------- signed int __thiscall sub_410EA0(void *this, int rgbValue, int a3) { char v4; // [sp+8h] [bp-84h]@2 unsigned int v5; // [sp+88h] [bp-4h]@1 int v6; // [sp+8Ch] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; if ( !sub_457FB0(*(_DWORD *)this + 4684, rgbValue, a3) ) { sprintf(&v4, "AddCharFame ERROR:CharNo=%d, Fame=%d", rgbValue, a3); sub_446350(1, "Msg", "%s", &v4); } return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00410F30) -------------------------------------------------------- signed int __thiscall sub_410F30(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@2 signed __int16 v11; // dx@4 int v12; // eax@11 int v13; // edx@11 signed int v14; // esi@14 unsigned int v15; // [sp-Ch] [bp-4144h]@1 char v16; // [sp+0h] [bp-4138h]@11 int v17; // [sp+5h] [bp-4133h]@11 int v18; // [sp+9h] [bp-412Fh]@11 int v19; // [sp+Dh] [bp-412Bh]@11 int v20; // [sp+11h] [bp-4127h]@11 int v21; // [sp+15h] [bp-4123h]@11 char v22; // [sp+2004h] [bp-2134h]@2 int v23; // [sp+2009h] [bp-212Fh]@2 __int16 v24; // [sp+200Dh] [bp-212Bh]@2 __int16 v25; // [sp+200Fh] [bp-2129h]@2 int v26; // [sp+2011h] [bp-2127h]@11 int v27; // [sp+2015h] [bp-2123h]@11 __int16 v28; // [sp+2019h] [bp-211Fh]@5 int rgbValue; // [sp+4008h] [bp-130h]@2 int v30; // [sp+400Ch] [bp-12Ch]@2 int v31; // [sp+4010h] [bp-128h]@2 int v32; // [sp+4014h] [bp-124h]@2 int v33; // [sp+4018h] [bp-120h]@11 int v34; // [sp+401Ch] [bp-11Ch]@11 unsigned __int8 v35; // [sp+4020h] [bp-118h]@3 char v36; // [sp+4028h] [bp-110h]@10 unsigned int v37; // [sp+4128h] [bp-10h]@1 int v38; // [sp+4134h] [bp-4h]@2 int v39; // [sp+4138h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v15 = (unsigned int)&v39 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v22); v38 = 0; sub_44E310((int)&v22, 0x3460u, 0x12u, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_WORD *)(a2 + 8); v23 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 10); v24 = v5; v8 = *(_DWORD *)(a2 + 4); rgbValue = v7; v9 = *(_DWORD *)(a2 + 18); v30 = v8; v32 = v9; v10 = *(_DWORD *)v3 + 4684; v25 = v6; v31 = *(_DWORD *)(a2 + 14); if ( sub_458F50(v10, &rgbValue) ) { v27 = v34; v26 = v33; v28 = 3968; sub_44E180((int)&v16); LOBYTE(v38) = 1; sub_44E310((int)&v16, 0x45Eu, 0x14u, 0); v12 = *(_DWORD *)(a2 + 4); v13 = *(_DWORD *)(a2 + 10); v18 = *(_DWORD *)(a2 + 14); v21 = v34; v17 = v12; v19 = v13; v20 = v33; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v16); LOBYTE(v38) = 0; nullsub_1(&v16); } else { switch ( v35 ) { case 1u: v11 = 3977; goto LABEL_9; case 2u: v28 = 3978; break; case 3u: v11 = 3979; goto LABEL_9; case 4u: v28 = 3980; break; default: v11 = 3976; LABEL_9: v28 = v11; break; } sprintf( &v36, "FAILED - fc_NC_ITEMDB_DEPOSIT_REQ, nUserNo=%d, nCharNo=%d, nDepositMoney=%I64d, nRet=%d", rgbValue, v30, v31, v32, v35, v15); sub_446350(1, "Msg", "%s", &v36); } v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v22); v38 = -1; nullsub_1(&v22); result = v14; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00411190) -------------------------------------------------------- signed int __thiscall sub_411190(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@2 signed __int16 v11; // dx@4 int v12; // eax@11 int v13; // edx@11 signed int v14; // esi@14 unsigned int v15; // [sp-Ch] [bp-4144h]@1 char v16; // [sp+0h] [bp-4138h]@11 int v17; // [sp+5h] [bp-4133h]@11 int v18; // [sp+9h] [bp-412Fh]@11 int v19; // [sp+Dh] [bp-412Bh]@11 int v20; // [sp+11h] [bp-4127h]@11 int v21; // [sp+15h] [bp-4123h]@11 char v22; // [sp+2004h] [bp-2134h]@2 int v23; // [sp+2009h] [bp-212Fh]@2 __int16 v24; // [sp+200Dh] [bp-212Bh]@2 __int16 v25; // [sp+200Fh] [bp-2129h]@2 int v26; // [sp+2011h] [bp-2127h]@11 int v27; // [sp+2015h] [bp-2123h]@11 __int16 v28; // [sp+2019h] [bp-211Fh]@5 int rgbValue; // [sp+4008h] [bp-130h]@2 int v30; // [sp+400Ch] [bp-12Ch]@2 int v31; // [sp+4010h] [bp-128h]@2 int v32; // [sp+4014h] [bp-124h]@2 int v33; // [sp+4018h] [bp-120h]@11 int v34; // [sp+401Ch] [bp-11Ch]@11 unsigned __int8 v35; // [sp+4020h] [bp-118h]@3 char v36; // [sp+4028h] [bp-110h]@10 unsigned int v37; // [sp+4128h] [bp-10h]@1 int v38; // [sp+4134h] [bp-4h]@2 int v39; // [sp+4138h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v15 = (unsigned int)&v39 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v22); v38 = 0; sub_44E310((int)&v22, 0x3462u, 0x12u, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_WORD *)(a2 + 8); v23 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 10); v24 = v5; v8 = *(_DWORD *)(a2 + 4); rgbValue = v7; v9 = *(_DWORD *)(a2 + 18); v30 = v8; v32 = v9; v10 = *(_DWORD *)v3 + 4684; v25 = v6; v31 = *(_DWORD *)(a2 + 14); if ( sub_459020(v10, &rgbValue) ) { v27 = v34; v26 = v33; v28 = 3968; sub_44E180((int)&v16); LOBYTE(v38) = 1; sub_44E310((int)&v16, 0x45Fu, 0x14u, 0); v12 = *(_DWORD *)(a2 + 4); v13 = *(_DWORD *)(a2 + 10); v18 = *(_DWORD *)(a2 + 14); v21 = v34; v17 = v12; v19 = v13; v20 = v33; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v16); LOBYTE(v38) = 0; nullsub_1(&v16); } else { switch ( v35 ) { case 1u: v11 = 3984; goto LABEL_9; case 2u: v28 = 3985; break; case 3u: v11 = 3986; goto LABEL_9; case 4u: v28 = 3987; break; default: v11 = 3988; LABEL_9: v28 = v11; break; } sprintf( &v36, "FAILED - fc_NC_ITEMDB_WITHDRAW_REQ, nUserNo=%d, nCharNo=%d, nWithdrawMoney=%I64d, nRet=%d", rgbValue, v30, v31, v32, v35, v15); sub_446350(1, "Msg", "%s", &v36); } v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v22); v38 = -1; nullsub_1(&v22); result = v14; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004113F0) -------------------------------------------------------- signed int __thiscall sub_4113F0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 signed __int16 v10; // dx@4 int v11; // eax@13 int v12; // edx@13 signed int v13; // esi@16 unsigned int v14; // [sp-Ch] [bp-414Ch]@1 char v15; // [sp+0h] [bp-4140h]@13 int v16; // [sp+5h] [bp-413Bh]@13 int v17; // [sp+9h] [bp-4137h]@13 int v18; // [sp+Dh] [bp-4133h]@13 int v19; // [sp+11h] [bp-412Fh]@13 int v20; // [sp+15h] [bp-412Bh]@13 char v21; // [sp+2004h] [bp-213Ch]@2 int v22; // [sp+2009h] [bp-2137h]@2 __int16 v23; // [sp+200Dh] [bp-2133h]@2 __int16 v24; // [sp+200Fh] [bp-2131h]@2 int v25; // [sp+2011h] [bp-212Fh]@13 int v26; // [sp+2015h] [bp-212Bh]@13 __int16 v27; // [sp+2019h] [bp-2127h]@5 int rgbValue; // [sp+4008h] [bp-138h]@2 int v29; // [sp+400Ch] [bp-134h]@2 int v30; // [sp+4010h] [bp-130h]@2 int v31; // [sp+4014h] [bp-12Ch]@2 int v32; // [sp+4020h] [bp-120h]@13 int v33; // [sp+4024h] [bp-11Ch]@13 unsigned __int8 v34; // [sp+4028h] [bp-118h]@3 char v35; // [sp+4030h] [bp-110h]@12 unsigned int v36; // [sp+4130h] [bp-10h]@1 int v37; // [sp+413Ch] [bp-4h]@2 int v38; // [sp+4140h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v14 = (unsigned int)&v38 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v21); v37 = 0; sub_44E310((int)&v21, 0x3475u, 0x12u, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_WORD *)(a2 + 8); v22 = *(_DWORD *)(a2 + 2); rgbValue = *(_DWORD *)(a2 + 10); v7 = *(_DWORD *)(a2 + 18); v23 = v5; v8 = *(_DWORD *)(a2 + 4); v31 = v7; v9 = *(_DWORD *)v3; v29 = v8; v24 = v6; v30 = *(_DWORD *)(a2 + 14); if ( sub_452420(v9 + 4684, &rgbValue) ) { v26 = v33; v25 = v32; v27 = 5248; sub_44E180((int)&v15); LOBYTE(v37) = 1; sub_44E310((int)&v15, 0x4AAu, 0x14u, 0); v11 = *(_DWORD *)(a2 + 4); v12 = *(_DWORD *)(a2 + 14); v18 = *(_DWORD *)(a2 + 10); v20 = v33; v16 = v11; v17 = v12; v19 = v32; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v15); LOBYTE(v37) = 0; nullsub_1(&v15); } else { switch ( v34 ) { case 1u: v10 = 3993; goto LABEL_11; case 2u: v27 = 3994; break; case 3u: v10 = 3995; goto LABEL_11; case 4u: v27 = 3996; break; case 5u: v10 = 3997; goto LABEL_11; case 6u: v27 = 3998; break; default: v10 = 3992; LABEL_11: v27 = v10; break; } sprintf( &v35, "FAILED - fc_NC_ITEMDB_GUILD_STORAGE_WITHDRAW_REQ, nGuildNo=%d, nCharNo=%d, nWithdrawMoney=%I64d, nRet=%d", rgbValue, v29, v30, v31, v34, v14); sub_446350(1, "Msg", "%s", &v35); } v13 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v21); v37 = -1; nullsub_1(&v21); result = v13; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00411670) -------------------------------------------------------- signed int __thiscall sub_411670(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@4 __int16 v6; // dx@4 signed int v7; // eax@4 signed int v8; // ebx@4 __int16 v9; // cx@6 unsigned int v10; // [sp-10h] [bp-2128h]@1 int v11; // [sp+0h] [bp-2118h]@2 char v12; // [sp+4h] [bp-2114h]@2 int v13; // [sp+9h] [bp-210Fh]@3 __int16 v14; // [sp+Dh] [bp-210Bh]@4 __int16 v15; // [sp+Fh] [bp-2109h]@4 char v16; // [sp+11h] [bp-2107h]@2 unsigned __int16 v17; // [sp+12h] [bp-2106h]@4 char v18; // [sp+2008h] [bp-110h]@6 unsigned int v19; // [sp+2108h] [bp-10h]@1 int v20; // [sp+2114h] [bp-4h]@2 int v21; // [sp+2118h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v10 = (unsigned int)&v21 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v12); v20 = 0; v16 = 1; v11 = 0; while ( sub_468CB0( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), (int)&v13, (int)&v11, *(_WORD *)(a2 + 12), *(_WORD *)(a2 + 14)) ) { v5 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 6); v15 = 4161; v13 = v5; v14 = v6; sub_44E310((int)&v12, 0x3464u, 16 * v17 + 11, 0); v7 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v12); v11 += v17; v8 = v7; v16 &= 0xFEu; if ( v16 & 2 ) goto LABEL_7; } v9 = *(_WORD *)(a2 + 6); v13 = *(_DWORD *)(a2 + 2); v14 = v9; v15 = 4170; sub_44E310((int)&v12, 0x3464u, 16 * v17 + 11, 0); v8 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v12); sprintf(&v18, "FAILED - ChargeItemGetList, nUserNo=%d, nCharNo=%d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 4), v10); sub_446350(1, "Msg", "%s", &v18); LABEL_7: v20 = -1; nullsub_1(&v12); result = v8; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00411830) -------------------------------------------------------- signed int __thiscall sub_411830(int this, int a2, int a3) { signed int result; // eax@1 int v4; // eax@2 int v5; // ebx@2 int v6; // esi@3 int v7; // ecx@4 int v8; // edx@4 unsigned int v9; // eax@4 unsigned int v10; // ecx@4 int v11; // eax@4 int v12; // edx@4 int v13; // ST2C_4@4 int v14; // eax@4 int v15; // ST38_4@7 int v16; // ST34_4@7 int v17; // esi@9 int v18; // eax@10 int v19; // edx@15 int v20; // eax@15 int v21; // esi@18 int v22; // ebx@18 int v23; // ecx@19 __int16 v24; // dx@19 int v25; // eax@19 __int16 v26; // cx@23 __int16 v27; // dx@23 int v28; // eax@23 int v29; // ecx@23 int v30; // edx@23 int v31; // eax@23 signed int v32; // esi@23 unsigned int v33; // [sp-10h] [bp-4148h]@1 int v34; // [sp+0h] [bp-4138h]@2 int v35; // [sp+4h] [bp-4134h]@1 char v36; // [sp+8h] [bp-4130h]@2 int v37; // [sp+Dh] [bp-412Bh]@23 __int16 v38; // [sp+11h] [bp-4127h]@23 __int16 v39; // [sp+13h] [bp-4125h]@23 int v40; // [sp+15h] [bp-4123h]@23 int v41; // [sp+19h] [bp-411Fh]@23 int v42; // [sp+1Dh] [bp-411Bh]@23 int v43; // [sp+21h] [bp-4117h]@23 __int16 v44; // [sp+25h] [bp-4113h]@2 char v45; // [sp+200Ch] [bp-212Ch]@15 int v46; // [sp+2011h] [bp-2127h]@15 int v47; // [sp+2015h] [bp-2123h]@15 int v48; // [sp+2019h] [bp-211Fh]@15 int v49; // [sp+201Dh] [bp-211Bh]@15 __int16 v50; // [sp+2021h] [bp-2117h]@19 __int16 v51; // [sp+2023h] [bp-2115h]@19 int rgbValue; // [sp+4010h] [bp-128h]@4 int v53; // [sp+4014h] [bp-124h]@4 int v54; // [sp+4018h] [bp-120h]@4 char v55; // [sp+401Ch] [bp-11Ch]@4 __int16 v56; // [sp+401Eh] [bp-11Ah]@4 int v57; // [sp+4020h] [bp-118h]@4 int v58; // [sp+4024h] [bp-114h]@4 char v59; // [sp+4028h] [bp-110h]@7 unsigned int v60; // [sp+4128h] [bp-10h]@1 int v61; // [sp+4134h] [bp-4h]@2 int v62; // [sp+4138h] [bp+0h]@1 v60 = (unsigned int)&v62 ^ __security_cookie; v33 = (unsigned int)&v62 ^ __security_cookie; v35 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v36); v44 = 4161; v4 = *(_BYTE *)(a2 + 30); v5 = 0; v61 = 0; v34 = v4; if ( v4 <= 0 ) { LABEL_6: if ( sub_468E30(*(_DWORD *)v35 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)) ) { sub_44E180((int)&v45); LOBYTE(v61) = 1; sub_44E310((int)&v45, 0x4BEu, 0x10u, 0); v19 = *(_DWORD *)(a2 + 14); v20 = *(_DWORD *)(a2 + 18); v46 = *(_DWORD *)(a2 + 4); v49 = *(_DWORD *)(a2 + 22); v47 = v19; v48 = v20; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v45); if ( v34 > 0 ) { v21 = a2 + 31; v22 = v34; do { sub_44E310((int)&v45, 0x44Fu, 0x14u, 0); v23 = *(_DWORD *)(v21 + 30); v24 = *(_WORD *)(v21 + 34); v46 = *(_DWORD *)v21; v47 = v46; v25 = *(_DWORD *)(v21 + 26); v49 = v23; v48 = v25; LOWORD(v25) = *(_WORD *)(v21 + 24); v50 = v24; v51 = v25; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v45); v21 += 38; --v22; } while ( v22 ); } LOBYTE(v61) = 0; nullsub_1(&v45); goto LABEL_23; } v15 = *(_DWORD *)(a2 + 4); v16 = *(_DWORD *)(a2 + 14); v44 = 4168; sprintf(&v59, "FAILED - ChargeItemDraw, nUserNo=%d, nOrderNo=%d, nCharNo=%d", *(_DWORD *)(a2 + 10), v16, v15, v33); sub_446350(1, "Msg", "%s", &v59); } else { v6 = a2 + 55; while ( 1 ) { v7 = *(_DWORD *)(v6 + 2); v8 = *(_DWORD *)(v6 + 6); v54 = *(_DWORD *)(v6 - 24); v9 = *(_WORD *)v6; rgbValue = v7; v10 = v9; v56 = v9 & 0x3FF; v11 = *(_WORD *)(v6 + 12); v53 = v8; v12 = *(_WORD *)(v6 + 10); v55 = (v10 >> 10) & 0x3F; v57 = v12; v13 = *(_DWORD *)v35 + 4684; v58 = 0; LOWORD(v14) = sub_46A440(v13, &rgbValue, v11 + a2 + 2, 0); if ( v14 ) break; ++v5; v6 += 38; if ( v5 >= v34 ) goto LABEL_6; } sprintf( &v59, "ERROR - fc_NC_ITEMDB_CHARGED_WITHDRAW_REQ Create FAILED-(nUserNo=%d, nOrderNo=%d, Key=%I64d, id=%d, Owner=%d, Inven=%d,%d, Error=%d )", *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), rgbValue, v53, v57, v54, v55, v56, v14, v33); sub_446350(1, "Msg", "%s", &v59); v44 = 4169; } if ( v5 > 0 ) { v17 = a2 + 57; do { LOWORD(v18) = sub_466950(*(_DWORD *)v35 + 4684, *(_DWORD *)v17, *(_DWORD *)(v17 + 4)); if ( v18 ) { sprintf( &v59, "ERROR - fc_NC_ITEMDB_CHARGED_WITHDRAW_REQ »", *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_DWORD *)v17, *(_DWORD *)(v17 + 4), *(_WORD *)(v17 + 8), *(_DWORD *)(v17 - 26), v18); sub_446350(1, "Msg", "%s", &v59); } v17 += 38; --v5; } while ( v5 ); } LABEL_23: v26 = *(_WORD *)(a2 + 6); v27 = *(_WORD *)(a2 + 8); v37 = *(_DWORD *)(a2 + 2); v28 = *(_DWORD *)(a2 + 14); v38 = v26; v29 = *(_DWORD *)(a2 + 18); v39 = v27; v30 = *(_DWORD *)(a2 + 22); v40 = v28; v31 = *(_DWORD *)(a2 + 26); v41 = v29; v42 = v30; v43 = v31; sub_44E310((int)&v36, 0x3466u, 0x1Au, 0); v32 = sub_43BFB0(*(_DWORD *)(v35 + 4), (int)&v36); v61 = -1; nullsub_1(&v36); result = v32; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00411C20) -------------------------------------------------------- signed int __thiscall sub_411C20(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // ST2C_4@2 char v6; // ST28_1@2 int v7; // ST24_4@2 const void *v8; // eax@2 const void *v9; // edi@2 __int16 v10; // cx@3 __int16 v11; // dx@3 int v12; // ecx@3 int v13; // edx@3 int v14; // eax@3 __int16 v15; // cx@3 int v16; // edi@6 int v17; // eax@8 __int16 v18; // cx@12 __int16 v19; // ax@12 int v20; // ecx@12 unsigned int v21; // [sp-10h] [bp-412Ch]@1 signed int v22; // [sp+0h] [bp-411Ch]@5 char v23; // [sp+4h] [bp-4118h]@3 int v24; // [sp+9h] [bp-4113h]@3 int v25; // [sp+Dh] [bp-410Fh]@3 int v26; // [sp+11h] [bp-410Bh]@3 __int16 v27; // [sp+15h] [bp-4107h]@3 __int16 v28; // [sp+17h] [bp-4105h]@3 char v29; // [sp+2008h] [bp-2114h]@2 int v30; // [sp+200Dh] [bp-210Fh]@3 __int16 v31; // [sp+2011h] [bp-210Bh]@3 __int16 v32; // [sp+2013h] [bp-2109h]@3 __int16 v33; // [sp+2015h] [bp-2107h]@12 char v34; // [sp+400Ch] [bp-110h]@9 unsigned int v35; // [sp+410Ch] [bp-10h]@1 int v36; // [sp+4118h] [bp-4h]@2 int v37; // [sp+411Ch] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v21 = (unsigned int)&v37 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v29); v5 = *(_DWORD *)(a2 + 14); v6 = *(_DWORD *)(a2 + 10); v7 = *(_DWORD *)v3 + 4684; v36 = 0; LOWORD(v8) = sub_466950(v7, v6, v5); v9 = v8; if ( v8 ) { sub_44E310((int)&v29, 0x346Cu, 0xAu, 0); v18 = *(_WORD *)(a2 + 8); v19 = *(_WORD *)(a2 + 6); v30 = *(_DWORD *)(a2 + 2); v32 = v18; v20 = *(_DWORD *)(v3 + 4); v31 = v19; v33 = (signed __int16)v9; sub_43BFB0(v20, (int)&v29); sprintf( &v34, "ERROR - fc_NC_ITEMDB_ITEMBREAK_REQ, DBError=%d, Owner=%d, ItemKey=%I64d, ItemID=%d, Lot=%d", v9, *(_DWORD *)(a2 + 18), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_WORD *)(a2 + 22), *(_WORD *)(a2 + 24), v21); sub_446350(1, "Msg", "%s", &v34); } else { sub_44E310((int)&v29, 0x346Bu, 8u, 0); v10 = *(_WORD *)(a2 + 6); v11 = *(_WORD *)(a2 + 8); v30 = *(_DWORD *)(a2 + 2); v31 = v10; v12 = *(_DWORD *)(v3 + 4); v32 = v11; sub_43BFB0(v12, (int)&v29); sub_44E180((int)&v23); LOBYTE(v36) = 1; sub_44E310((int)&v23, 0x445u, 0x10u, v9); v13 = *(_DWORD *)(a2 + 10); v14 = *(_DWORD *)(a2 + 14); v24 = *(_DWORD *)(a2 + 18); v15 = *(_WORD *)(a2 + 22); v25 = v13; LOWORD(v13) = *(_WORD *)(a2 + 24); v27 = v15; v26 = v14; v28 = v13; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v23); v22 = 0; if ( *(_BYTE *)(a2 + 26) ) { v16 = a2 + 27; do { if ( v22 >= 8 ) break; LOWORD(v17) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)v16, *(_DWORD *)(v16 + 4)); if ( v17 ) { sprintf( &v34, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMBREAK_REQ, CHEST INVEN : DBError=%d, Owner=%d, ItemKey=%I64d", v17, *(_DWORD *)(a2 + 18), *(_DWORD *)v16, *(_DWORD *)(v16 + 4), v21); sub_446350(1, "Msg", "%s", &v34); } v16 += 10; ++v22; } while ( v22 < *(_BYTE *)(a2 + 26) ); } LOBYTE(v36) = 0; nullsub_1(&v23); } v36 = -1; nullsub_1(&v29); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00411EA0) -------------------------------------------------------- signed int __thiscall sub_411EA0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // ax@3 bool v6; // cl@3 int v7; // eax@3 int v8; // eax@3 __int16 v9; // cx@4 int v10; // eax@4 int v11; // eax@5 __int16 v12; // cx@7 __int16 v13; // ax@7 char v14; // dl@7 signed int v15; // edi@7 bool v16; // zf@7 int v17; // eax@13 signed int v18; // esi@13 __time32_t Time; // [sp+0h] [bp-604Ch]@5 char v20; // [sp+4h] [bp-6048h]@13 int v21; // [sp+9h] [bp-6043h]@13 __int16 v22; // [sp+Dh] [bp-603Fh]@13 char v23; // [sp+2008h] [bp-4044h]@7 int v24; // [sp+200Dh] [bp-403Fh]@7 __int16 v25; // [sp+2011h] [bp-403Bh]@7 __int16 v26; // [sp+2013h] [bp-4039h]@7 char v27; // [sp+2015h] [bp-4037h]@7 char v28; // [sp+400Ch] [bp-2040h]@7 int v29; // [sp+4011h] [bp-203Bh]@7 char v30[4]; // [sp+4015h] [bp-2037h]@10 int v31; // [sp+4019h] [bp-2033h]@10 int v32; // [sp+401Dh] [bp-202Fh]@10 int v33; // [sp+4021h] [bp-202Bh]@10 int v34; // [sp+4025h] [bp-2027h]@10 __int16 v35; // [sp+4029h] [bp-2023h]@8 char v36; // [sp+402Bh] [bp-2021h]@10 int rgbValue; // [sp+6010h] [bp-3Ch]@4 __int16 v38; // [sp+6014h] [bp-38h]@4 char v39; // [sp+6016h] [bp-36h]@5 int v40; // [sp+6018h] [bp-34h]@5 __int64 v41; // [sp+6020h] [bp-2Ch]@5 int v42; // [sp+6028h] [bp-24h]@5 int v43; // [sp+602Ch] [bp-20h]@5 int v44; // [sp+6030h] [bp-1Ch]@3 __int16 v45; // [sp+6034h] [bp-18h]@3 bool v46; // [sp+6036h] [bp-16h]@3 __int16 v47; // [sp+6038h] [bp-14h]@3 unsigned int v48; // [sp+603Ch] [bp-10h]@1 int v49; // [sp+6048h] [bp-4h]@7 int v50; // [sp+604Ch] [bp+0h]@1 v48 = (unsigned int)&v50 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( !result ) return result; if ( *(_BYTE *)(a2 + 14) == 1 ) { v44 = *(_DWORD *)(a2 + 8); v5 = *(_WORD *)(a2 + 15); v45 = *(_WORD *)(a2 + 12) + 30000; v6 = v5 != -1; v47 = v5 + 30000; v7 = *(_DWORD *)v3 + 4684; v46 = v6; LOBYTE(v8) = sub_4516E0(v7, &v44); } else { v9 = *(_WORD *)(a2 + 12); rgbValue = *(_DWORD *)(a2 + 8); v10 = *(_DWORD *)v3 + 4684; v38 = v9; if ( sub_451430(v10, &rgbValue) ) { LABEL_13: sub_44E180((int)&v20); v17 = *(_DWORD *)(a2 + 2); v22 = *(_WORD *)(a2 + 6); v49 = 2; v21 = v17; sub_44E310((int)&v20, 0x4803u, 7u, 0); v18 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v20); v49 = -1; nullsub_1(&v20); return v18; } _time32(&Time); v41 = Time; v11 = *(_DWORD *)v3 + 4684; v39 = 1; v40 = 0; v42 = 0; v43 = 0; LOBYTE(v8) = sub_451580(v11, &rgbValue); } if ( !v8 ) goto LABEL_13; sub_44E180((int)&v23); v12 = *(_WORD *)(a2 + 12); v13 = *(_WORD *)(a2 + 6); v24 = *(_DWORD *)(a2 + 2); v14 = *(_BYTE *)(a2 + 14); v26 = v12; v49 = 0; v25 = v13; v27 = v14; sub_44E310((int)&v23, 0x4802u, 9u, 0); v15 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v23); sub_44E180((int)&v28); LOBYTE(v49) = 1; sub_44E310((int)&v28, 0x432u, 0x1Bu, 0); v16 = *(_BYTE *)(a2 + 14) == 1; v29 = *(_DWORD *)(a2 + 8); if ( v16 ) v35 = *(_WORD *)(a2 + 12) + 30000; else v35 = *(_WORD *)(a2 + 12); v36 = 1; v32 = 0; v31 = 0; *(_DWORD *)v30 = 0; strncpy(v30, "Need", 0xCu); v33 = 0; v34 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v28); LOBYTE(v49) = 0; nullsub_1(&v28); v49 = -1; nullsub_1(&v23); return v15; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00412140) -------------------------------------------------------- signed int __thiscall sub_412140(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 int v7; // eax@2 int v8; // eax@2 __int16 v9; // cx@3 int v10; // ST1C_4@6 int v11; // ST18_4@6 int v12; // ecx@7 unsigned int v13; // [sp-10h] [bp-213Ch]@1 int rgbValue; // [sp+0h] [bp-212Ch]@2 __int16 v15; // [sp+4h] [bp-2128h]@2 char v16; // [sp+8h] [bp-2124h]@3 int v17; // [sp+Dh] [bp-211Fh]@3 char v18[4]; // [sp+11h] [bp-211Bh]@3 int v19; // [sp+15h] [bp-2117h]@3 int v20; // [sp+19h] [bp-2113h]@3 int v21; // [sp+1Dh] [bp-210Fh]@3 int v22; // [sp+21h] [bp-210Bh]@3 __int16 v23; // [sp+25h] [bp-2107h]@3 char v24; // [sp+27h] [bp-2105h]@3 char v25; // [sp+200Ch] [bp-120h]@7 __int16 v26; // [sp+200Dh] [bp-11Fh]@7 int v27; // [sp+200Fh] [bp-11Dh]@2 __int16 v28; // [sp+2013h] [bp-119h]@2 __int16 v29; // [sp+2015h] [bp-117h]@2 __int16 v30; // [sp+2017h] [bp-115h]@3 char v31; // [sp+201Ch] [bp-110h]@6 unsigned int v32; // [sp+211Ch] [bp-10h]@1 int v33; // [sp+2128h] [bp-4h]@3 int v34; // [sp+212Ch] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v13 = (unsigned int)&v34 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 4); v27 = *(_DWORD *)(a2 + 2); v29 = *(_WORD *)(a2 + 8); v15 = v29; v7 = *(_DWORD *)v3; v28 = v5; rgbValue = v6; LOBYTE(v8) = sub_4517A0(v7 + 4684, &rgbValue); if ( v8 ) { v30 = 5377; sub_44E180((int)&v16); v33 = 0; sub_44E310((int)&v16, 0x433u, 0x1Bu, 0); v9 = *(_WORD *)(a2 + 8); v17 = *(_DWORD *)(a2 + 4); v23 = v9; v24 = 1; v20 = 0; v19 = 0; *(_DWORD *)v18 = 0; strncpy(v18, "Need", 0xCu); v21 = 0; v22 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v16); v33 = -1; nullsub_1(&v16); } else { v10 = *(_WORD *)(a2 + 8); v11 = *(_DWORD *)(a2 + 4); v30 = 5380; sprintf(&v31, "FAILED - fc_NC_SKILL_ERASE_REQ, nCharNo=%d, nSkill=%d", v11, v10, v13); sub_446350(1, "Msg", "%s", &v31); } v12 = *(_DWORD *)(v3 + 4); v25 = 12; v26 = 18470; result = sub_43BFE0(v12, (int)&v25, 0xDu); } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00412300) -------------------------------------------------------- signed int __thiscall sub_412300(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 __int16 v6; // cx@3 __int16 v7; // dx@4 char *v8; // [sp-8h] [bp-2Ch]@3 char v9; // [sp+8h] [bp-1Ch]@4 __int16 v10; // [sp+9h] [bp-1Bh]@4 int v11; // [sp+Bh] [bp-19h]@4 __int16 v12; // [sp+Fh] [bp-15h]@4 char v13; // [sp+14h] [bp-10h]@3 __int16 v14; // [sp+15h] [bp-Fh]@3 int v15; // [sp+17h] [bp-Dh]@3 __int16 v16; // [sp+1Bh] [bp-9h]@3 unsigned int v17; // [sp+20h] [bp-4h]@1 int v18; // [sp+24h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { LOBYTE(v5) = sub_451980(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4)); if ( v5 ) { v6 = *(_WORD *)(a2 + 6); v15 = *(_DWORD *)(a2 + 2); v16 = v6; v13 = 8; v14 = 18445; v8 = &v13; } else { v7 = *(_WORD *)(a2 + 6); v11 = *(_DWORD *)(a2 + 2); v12 = v7; v9 = 8; v10 = 18444; v8 = &v9; } result = sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v8, 9u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004123B0) -------------------------------------------------------- signed int __thiscall sub_4123B0(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 int v6; // eax@2 signed int result; // eax@3 int v8; // ebx@4 int v9; // esi@5 int v10; // eax@6 int v11; // [sp+14h] [bp+Ch]@4 v4 = a3; v5 = this; if ( *(_BYTE *)(a3 + 8) & 0x80 && (LOWORD(v6) = sub_468E40( *(_DWORD *)this + 4684, *(_DWORD *)(a3 + 11), *(_DWORD *)(a3 + 15), *(_WORD *)(a3 + 9), *(_WORD *)(a3 + 19) + a2 + 2), (*(_DWORD *)a4 = v6) != 0) ) { result = 1; } else { v11 = *(_BYTE *)(a3 + 8) & 0x7F; v8 = 0; if ( (*(_BYTE *)(v4 + 8) & 0x7F) <= 0 ) { LABEL_8: result = 0; } else { v9 = v4 + 23; while ( 1 ) { LOWORD(v10) = sub_466950(*(_DWORD *)v5 + 4684, *(_DWORD *)v9, *(_DWORD *)(v9 + 4)); *(_DWORD *)a4 = v10; if ( v10 ) break; ++v8; v9 += 8; if ( v8 >= v11 ) goto LABEL_8; } result = 2; } } return result; } //----- (00412450) -------------------------------------------------------- signed int __thiscall sub_412450(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // edx@4 char v7; // cl@4 unsigned int v8; // eax@4 char v9; // ch@4 int v10; // eax@4 int v11; // eax@4 int v12; // ecx@9 __int16 v13; // dx@9 __int16 v14; // ax@9 int v15; // ecx@9 int v16; // [sp+8h] [bp-138h]@2 int rgbValue; // [sp+Ch] [bp-134h]@4 __int16 v18; // [sp+10h] [bp-130h]@4 char v19; // [sp+28h] [bp-118h]@4 char v20; // [sp+29h] [bp-117h]@4 char v21; // [sp+2Ah] [bp-116h]@4 char v22; // [sp+2Bh] [bp-115h]@4 char v23; // [sp+2Ch] [bp-114h]@9 __int16 v24; // [sp+2Dh] [bp-113h]@9 __int16 v25; // [sp+2Fh] [bp-111h]@9 int v26; // [sp+31h] [bp-10Fh]@9 __int16 v27; // [sp+35h] [bp-10Bh]@9 __int16 v28; // [sp+37h] [bp-109h]@9 __int16 v29; // [sp+39h] [bp-107h]@5 char v30; // [sp+3Bh] [bp-105h]@9 char v31; // [sp+3Ch] [bp-104h]@7 unsigned int v32; // [sp+13Ch] [bp-4h]@1 int v33; // [sp+140h] [bp+0h]@1 v32 = (unsigned int)&v33 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = sub_4123B0((void *)v3, a2, a2 + 19, (int)&v16) - 1; if ( v5 ) { if ( v5 == 1 ) { sprintf( &v31, "ERROR - fc_NC_SKILL_EMPOWALLOC_DB_REQ »ç¿ëÅÛ »èÁ¦½ÇÆÐ - ( Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 30), *(_DWORD *)(a2 + 34), v16); sub_446350(1, "Msg", "%s", &v31); v29 = 2184; } else { v6 = *(_DWORD *)(a2 + 4); v7 = *(_BYTE *)(a2 + 15); v18 = *(_WORD *)(a2 + 13); v8 = *(_WORD *)(a2 + 15); rgbValue = v6; LOBYTE(v6) = v8; v19 = v7 & 0xF; v9 = BYTE1(v8); v22 = (v8 >> 12) & 0xF; v10 = *(_DWORD *)v3; v20 = (unsigned __int8)v6 >> 4; v21 = v9 & 0xF; LOBYTE(v11) = sub_451890(v10 + 4684, &rgbValue); if ( v11 ) v29 = 2177; else v29 = 2181; } } else { sprintf( &v31, "ERROR - fc_NC_SKILL_EMPOWALLOC_DB_REQ »ç¿ëÅÛ ¼Ó¼ºº¯°æ ¿¡·¯ - ( Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 30), *(_DWORD *)(a2 + 34), *(_WORD *)(a2 + 28), v16); sub_446350(1, "Msg", "%s", &v31); v29 = 2183; } v12 = *(_DWORD *)(a2 + 4); v13 = *(_WORD *)(a2 + 8); v25 = *(_WORD *)(a2 + 2); v14 = *(_WORD *)(a2 + 10); v26 = v12; LOBYTE(v12) = *(_BYTE *)(a2 + 12); v28 = v14; v27 = v13; v30 = v12; v15 = *(_DWORD *)(v3 + 4); v23 = 15; v24 = 18451; result = sub_43BFE0(v15, (int)&v23, 0x10u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00412630) -------------------------------------------------------- signed int __thiscall sub_412630(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 char v6; // dl@2 int v7; // eax@2 int v8; // eax@2 __int16 v9; // cx@2 int v10; // edx@2 int v11; // ecx@2 signed __int16 v12; // ax@4 int v13; // ecx@9 int rgbValue; // [sp+8h] [bp-2Ch]@2 int v15; // [sp+Ch] [bp-28h]@2 char v16; // [sp+10h] [bp-24h]@2 char v17; // [sp+1Ch] [bp-18h]@9 __int16 v18; // [sp+1Dh] [bp-17h]@9 __int16 v19; // [sp+1Fh] [bp-15h]@2 __int16 v20; // [sp+21h] [bp-13h]@2 int v21; // [sp+23h] [bp-11h]@2 int v22; // [sp+27h] [bp-Dh]@2 __int16 v23; // [sp+2Bh] [bp-9h]@3 unsigned int v24; // [sp+30h] [bp-4h]@1 int v25; // [sp+34h] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 10); v6 = *(_BYTE *)(a2 + 14); rgbValue = *(_DWORD *)(a2 + 6); v7 = *(_DWORD *)v3; v15 = v5; v16 = v6; v8 = sub_451BD0(v7 + 4684, &rgbValue); v9 = *(_WORD *)(a2 + 4); v19 = *(_WORD *)(a2 + 2); v10 = *(_DWORD *)(a2 + 6); v20 = v9; v11 = *(_DWORD *)(a2 + 10); v21 = v10; v22 = v11; switch ( v8 ) { case 0: v23 = 2369; break; case 1: v12 = 2370; goto LABEL_8; case 2: v23 = 2371; break; case 3: v23 = 2375; break; default: v12 = 2377; LABEL_8: v23 = v12; break; } v18 = 21521; v13 = *(_DWORD *)(v3 + 4); v17 = 16; result = sub_43BFE0(v13, (int)&v17, 0x11u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00412720) -------------------------------------------------------- signed int __thiscall sub_412720(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 __int16 v6; // dx@2 int v7; // eax@2 __int16 v8; // cx@2 int v9; // edx@2 int v10; // ecx@2 int v11; // edx@2 int v12; // eax@2 int v13; // ecx@2 int v14; // edx@2 int v15; // eax@2 int v16; // ecx@2 int v17; // edx@2 int v18; // eax@2 char v19; // cl@3 int v20; // ecx@7 int v21; // eax@7 int v22; // edx@7 int v23; // eax@7 char v24; // [sp+0h] [bp-2078h]@7 int v25; // [sp+5h] [bp-2073h]@7 int v26; // [sp+9h] [bp-206Fh]@7 int v27; // [sp+Dh] [bp-206Bh]@7 int v28; // [sp+11h] [bp-2067h]@7 int v29; // [sp+15h] [bp-2063h]@7 __int16 v30; // [sp+19h] [bp-205Fh]@7 int rgbValue; // [sp+2004h] [bp-74h]@2 int v32; // [sp+2008h] [bp-70h]@2 int v33; // [sp+200Ch] [bp-6Ch]@2 int v34; // [sp+2010h] [bp-68h]@2 __int16 v35; // [sp+2014h] [bp-64h]@2 int v36; // [sp+2018h] [bp-60h]@2 char v37[32]; // [sp+201Ch] [bp-5Ch]@3 char v38; // [sp+203Ch] [bp-3Ch]@7 __int16 v39; // [sp+203Dh] [bp-3Bh]@7 int v40; // [sp+203Fh] [bp-39h]@2 __int16 v41; // [sp+2043h] [bp-35h]@2 __int16 v42; // [sp+2045h] [bp-33h]@5 __int16 v43; // [sp+2047h] [bp-31h]@2 __int16 v44; // [sp+2049h] [bp-2Fh]@2 __int16 v45; // [sp+204Bh] [bp-2Dh]@2 int v46; // [sp+2050h] [bp-28h]@2 int v47; // [sp+2054h] [bp-24h]@2 int v48; // [sp+2058h] [bp-20h]@2 int v49; // [sp+205Ch] [bp-1Ch]@2 int v50; // [sp+2060h] [bp-18h]@2 char v51; // [sp+2064h] [bp-14h]@2 unsigned int v52; // [sp+2068h] [bp-10h]@1 int v53; // [sp+2074h] [bp-4h]@7 int v54; // [sp+2078h] [bp+0h]@1 v52 = (unsigned int)&v54 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 6); v6 = *(_WORD *)(a2 + 8); v40 = *(_DWORD *)(a2 + 2); v44 = *(_WORD *)(a2 + 52); v7 = *(_DWORD *)(a2 + 38); v41 = v5; v8 = *(_WORD *)(a2 + 54); v43 = v6; v9 = *(_DWORD *)(a2 + 34); v32 = v7; LOWORD(v7) = *(_WORD *)(a2 + 50); v45 = v8; v10 = *(_DWORD *)(a2 + 42); rgbValue = v9; v11 = *(_DWORD *)(a2 + 46); v35 = v7; v12 = *(_DWORD *)(a2 + 18); v33 = v10; v13 = *(_DWORD *)(a2 + 10); v34 = v11; v14 = *(_DWORD *)(a2 + 14); v47 = v12; v15 = *(_DWORD *)(a2 + 30); v36 = v13; v16 = *(_DWORD *)(a2 + 22); v46 = v14; v17 = *(_DWORD *)(a2 + 26); v50 = v15; v48 = v16; v49 = v17; v51 = 0; v18 = 0; do { v19 = *((_BYTE *)&v46 + v18); v37[v18++] = v19; } while ( v19 ); if ( sub_460550(*(_DWORD *)v3 + 4684, &rgbValue) ) v42 = 2490; else v42 = 2489; v39 = 23558; v20 = *(_DWORD *)(v3 + 4); v38 = 16; sub_43BFE0(v20, (int)&v38, 0x11u); sub_44E180((int)&v24); v53 = 0; sub_44E310((int)&v24, 0x454u, 0x16u, 0); v21 = *(_DWORD *)(a2 + 10); v22 = *(_DWORD *)(a2 + 38); v26 = *(_DWORD *)(a2 + 34); v29 = *(_DWORD *)(a2 + 46); v25 = v21; v23 = *(_DWORD *)(a2 + 42); v27 = v22; LOWORD(v22) = *(_WORD *)(a2 + 50); v28 = v23; v30 = v22; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v24); v53 = -1; nullsub_1(&v24); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; // 412720: using guessed type char var_5C[32]; //----- (004128D0) -------------------------------------------------------- signed int __thiscall sub_4128D0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 __int16 v5; // dx@2 __int16 v6; // ax@2 __int16 v7; // dx@2 __int16 v8; // ax@2 int v9; // edx@2 int v10; // eax@2 int v11; // edx@2 int v12; // eax@2 int v13; // edx@2 int v14; // edi@2 int v15; // eax@6 bool v16; // zf@7 int v17; // edx@8 int v18; // eax@8 void *v19; // ecx@8 int v20; // edx@10 int v21; // eax@10 signed __int16 v22; // ax@14 int v23; // ecx@19 int v24; // [sp-14h] [bp-207Ch]@9 int v25; // [sp+0h] [bp-2068h]@2 int v26; // [sp+4h] [bp-2064h]@2 char v27; // [sp+8h] [bp-2060h]@7 int v28; // [sp+Dh] [bp-205Bh]@8 int v29; // [sp+11h] [bp-2057h]@8 int v30; // [sp+15h] [bp-2053h]@8 __int16 v31; // [sp+19h] [bp-204Fh]@8 __int16 v32; // [sp+1Bh] [bp-204Dh]@10 int rgbValue; // [sp+200Ch] [bp-5Ch]@2 int v34; // [sp+2010h] [bp-58h]@2 __int16 v35; // [sp+2014h] [bp-54h]@2 int v36; // [sp+201Ch] [bp-4Ch]@2 int v37; // [sp+2020h] [bp-48h]@2 char v38; // [sp+2024h] [bp-44h]@2 __int16 v39; // [sp+2026h] [bp-42h]@6 int v40; // [sp+202Ch] [bp-3Ch]@6 int v41; // [sp+2030h] [bp-38h]@6 char v42; // [sp+203Ch] [bp-2Ch]@19 __int16 v43; // [sp+203Dh] [bp-2Bh]@19 int v44; // [sp+203Fh] [bp-29h]@2 __int16 v45; // [sp+2043h] [bp-25h]@2 __int16 v46; // [sp+2045h] [bp-23h]@2 __int16 v47; // [sp+2047h] [bp-21h]@2 __int16 v48; // [sp+2049h] [bp-1Fh]@2 int v49; // [sp+204Bh] [bp-1Dh]@2 int v50; // [sp+204Fh] [bp-19h]@2 __int16 v51; // [sp+2053h] [bp-15h]@2 __int16 v52; // [sp+2055h] [bp-13h]@2 unsigned int v53; // [sp+2058h] [bp-10h]@1 int v54; // [sp+2064h] [bp-4h]@7 int v55; // [sp+2068h] [bp+0h]@1 v53 = (unsigned int)&v55 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 6); v44 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 8); v45 = v5; v7 = *(_WORD *)(a2 + 10); v46 = v6; v8 = *(_WORD *)(a2 + 12); v47 = v7; v9 = *(_DWORD *)(a2 + 14); v48 = v8; v10 = *(_DWORD *)(a2 + 18); v49 = v9; v50 = v10; LOWORD(v10) = *(_WORD *)(a2 + 22); v52 = 2529; v11 = *(_DWORD *)(a2 + 14); v51 = v10; v35 = v10; v12 = *(_DWORD *)(a2 + 24); rgbValue = v11; v13 = *(_DWORD *)(a2 + 18); v36 = v12; LOBYTE(v12) = *(_BYTE *)(a2 + 34); v14 = 0; v34 = v13; v37 = *(_DWORD *)(a2 + 28); v38 = v12; v26 = 0; v25 = 0; if ( !(_BYTE)v12 ) { if ( !sub_4038C0(*(_WORD *)(a2 + 32), a2 + 37, (int)&v26, (int)&v25) ) { v52 = 2530; LABEL_19: v43 = 23560; v23 = *(_DWORD *)(v3 + 4); v42 = 26; return sub_43BFE0(v23, (int)&v42, 0x1Bu); } v14 = v26; } v15 = *(_DWORD *)v3 + 4684; v39 = v25; v40 = v14; v41 = 0; switch ( sub_460620(v15, &rgbValue) ) { case 0: sub_44E180((int)&v27); v16 = *(_BYTE *)(a2 + 34) == 0; v54 = 0; if ( v16 ) { sub_44E310((int)&v27, 0x459u, 0x10u, 0); v20 = *(_DWORD *)(a2 + 24); v21 = *(_DWORD *)(a2 + 28); v28 = *(_DWORD *)(a2 + 4); v31 = *(_WORD *)(a2 + 32); v19 = (void *)dword_6E9EC0; v29 = v20; v30 = v21; v32 = v14; if ( !dword_6E9EC0 ) goto LABEL_13; v24 = (int)&v27; } else { sub_44E310((int)&v27, 0x45Au, 0xEu, 0); v17 = *(_DWORD *)(a2 + 4); v18 = *(_DWORD *)(a2 + 24); v30 = *(_DWORD *)(a2 + 28); v19 = (void *)dword_6E9EC0; v28 = v17; LOWORD(v17) = *(_WORD *)(a2 + 32); v29 = v18; v31 = v17; if ( !dword_6E9EC0 ) goto LABEL_13; v24 = (int)&v27; } sub_44B7E0(v19, v24); LABEL_13: v54 = -1; nullsub_1(&v27); break; case 1: v22 = 2531; goto LABEL_18; case 2: v52 = 2532; goto LABEL_19; case 3: v52 = 2533; goto LABEL_19; case 4: v22 = 2534; LABEL_18: v52 = v22; goto LABEL_19; default: goto LABEL_19; } goto LABEL_19; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00412B40) -------------------------------------------------------- signed int __thiscall sub_412B40(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 int v7; // edi@2 __int16 v8; // ax@2 int v9; // ecx@2 int v10; // esi@2 char v11; // ST0C_1@2 int v12; // eax@2 int v13; // eax@2 int v14; // ecx@5 char v15; // [sp+8h] [bp-20h]@5 __int16 v16; // [sp+9h] [bp-1Fh]@5 int v17; // [sp+Bh] [bp-1Dh]@2 __int16 v18; // [sp+Fh] [bp-19h]@2 int v19; // [sp+11h] [bp-17h]@2 int v20; // [sp+15h] [bp-13h]@2 __int16 v21; // [sp+19h] [bp-Fh]@2 int v22; // [sp+1Bh] [bp-Dh]@2 __int16 v23; // [sp+1Fh] [bp-9h]@3 unsigned int v24; // [sp+24h] [bp-4h]@1 int v25; // [sp+28h] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 8); v17 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 8); v20 = *(_DWORD *)(a2 + 12); v8 = *(_WORD *)(a2 + 16); v18 = v5; v9 = *(_DWORD *)(a2 + 18); v10 = *(_DWORD *)(a2 + 12); v19 = v6; v11 = v8; v21 = v8; v12 = *(_DWORD *)v3 + 4684; v22 = v9; LOWORD(v13) = sub_4602A0(v12, v7, v10, v11, 0, v9); if ( v13 ) v23 = 2545; else v23 = 2544; v14 = *(_DWORD *)(v3 + 4); v15 = 24; v16 = 23562; result = sub_43BFE0(v14, (int)&v15, 0x19u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00412C00) -------------------------------------------------------- signed int __thiscall sub_412C00(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 __int16 v6; // cx@2 int v7; // edx@2 int v8; // eax@2 int v9; // eax@2 char v10; // cl@3 int v11; // ecx@7 int rgbValue; // [sp+8h] [bp-40h]@2 int v13; // [sp+Ch] [bp-3Ch]@2 __int16 v14; // [sp+10h] [bp-38h]@2 int v15; // [sp+14h] [bp-34h]@2 char v16[32]; // [sp+18h] [bp-30h]@3 char v17; // [sp+38h] [bp-10h]@7 __int16 v18; // [sp+39h] [bp-Fh]@7 int v19; // [sp+3Bh] [bp-Dh]@2 __int16 v20; // [sp+3Fh] [bp-9h]@2 __int16 v21; // [sp+41h] [bp-7h]@5 unsigned int v22; // [sp+44h] [bp-4h]@1 int v23; // [sp+48h] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 8); v7 = *(_DWORD *)(a2 + 16); v19 = v5; v8 = *(_DWORD *)(a2 + 12); v15 = v7; v20 = v6; v13 = v8; v9 = a2 + 20; v14 = 0; do { v10 = *(_BYTE *)v9; *(&v16[v9 - 20] - a2) = *(_BYTE *)v9; ++v9; } while ( v10 ); if ( sub_4603D0(*(_DWORD *)v3 + 4684, &rgbValue) ) v21 = 2547; else v21 = 2546; v18 = 23564; v11 = *(_DWORD *)(v3 + 4); v17 = 10; result = sub_43BFE0(v11, (int)&v17, 0xBu); } return result; } // 4DE38C: using guessed type int __security_cookie; // 412C00: using guessed type char var_30[32]; //----- (00412CD0) -------------------------------------------------------- signed int __thiscall sub_412CD0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 __int16 v6; // dx@3 int v7; // ecx@3 int v8; // edx@4 char v9; // cl@4 int v10; // ecx@4 signed int v11; // edi@4 char v12; // dl@4 char v13; // al@4 unsigned int v14; // [sp-10h] [bp-20C0h]@1 char v15; // [sp+4h] [bp-20ACh]@4 int v16; // [sp+9h] [bp-20A7h]@4 char v17[4]; // [sp+Dh] [bp-20A3h]@4 int v18; // [sp+11h] [bp-209Fh]@4 int v19; // [sp+15h] [bp-209Bh]@4 int v20; // [sp+19h] [bp-2097h]@4 int v21; // [sp+1Dh] [bp-2093h]@4 char v22; // [sp+21h] [bp-208Fh]@4 char v23; // [sp+22h] [bp-208Eh]@4 char v24; // [sp+2008h] [bp-A8h]@3 __int16 v25; // [sp+2009h] [bp-A7h]@3 int v26; // [sp+200Bh] [bp-A5h]@3 __int16 v27; // [sp+200Fh] [bp-A1h]@3 char v28; // [sp+2011h] [bp-9Fh]@3 char v29; // [sp+2014h] [bp-9Ch]@4 __int16 v30; // [sp+2015h] [bp-9Bh]@4 int v31; // [sp+2017h] [bp-99h]@4 __int16 v32; // [sp+201Bh] [bp-95h]@4 char v33; // [sp+201Dh] [bp-93h]@4 char v34; // [sp+2020h] [bp-90h]@3 unsigned int v35; // [sp+20A0h] [bp-10h]@1 int v36; // [sp+20ACh] [bp-4h]@4 int v37; // [sp+20B0h] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v14 = (unsigned int)&v37 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { LOBYTE(v5) = sub_458640(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), *(_BYTE *)(a2 + 8)); if ( v5 ) { v8 = *(_DWORD *)(a2 + 2); v9 = *(_BYTE *)(a2 + 8); v32 = *(_WORD *)(a2 + 6); v31 = v8; v33 = v9; v10 = *(_DWORD *)(v3 + 4); v29 = 9; v30 = 4183; v11 = sub_43BFE0(v10, (int)&v29, 0xAu); sub_44E180((int)&v15); v36 = 0; sub_44E310((int)&v15, 0x420u, 0x1Au, 0); v12 = *(_BYTE *)(a2 + 8); v13 = *(_BYTE *)(a2 + 9); v16 = *(_DWORD *)(a2 + 4); v23 = v12; v22 = v13; v19 = 0; v18 = 0; *(_DWORD *)v17 = 0; strncpy(v17, "UNUSE", 0xCu); v20 = 0; v21 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v15); v36 = -1; nullsub_1(&v15); result = v11; } else { sprintf( &v34, "fc_NC_CHAR_CLASSCHANGE_REQ ERROR:CharNo=%d, Class=%d", *(_DWORD *)(a2 + 4), *(_BYTE *)(a2 + 8), v14); sub_446350(1, "Msg", "%s", &v34); v6 = *(_WORD *)(a2 + 6); v26 = *(_DWORD *)(a2 + 2); *(_BYTE *)(a2 + 8) = 0; v7 = *(_DWORD *)(v3 + 4); v27 = v6; v28 = 0; v24 = 9; v25 = 4183; result = sub_43BFE0(v7, (int)&v24, 0xAu); } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00412EC0) -------------------------------------------------------- signed int __thiscall sub_412EC0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 unsigned __int8 v5; // cl@2 unsigned __int8 v6; // al@2 int v7; // eax@2 int rgbValue; // [sp+8h] [bp-11Ch]@2 unsigned __int8 v9; // [sp+Ch] [bp-118h]@2 unsigned __int8 v10; // [sp+Dh] [bp-117h]@2 int v11; // [sp+10h] [bp-114h]@2 int v12; // [sp+14h] [bp-110h]@2 unsigned __int8 v13; // [sp+18h] [bp-10Ch]@3 char v14; // [sp+20h] [bp-104h]@3 unsigned int v15; // [sp+120h] [bp-4h]@1 int v16; // [sp+124h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_BYTE *)(a2 + 8); rgbValue = *(_DWORD *)(a2 + 4); v6 = *(_BYTE *)(a2 + 9); v10 = *(_BYTE *)(a2 + 9) & 0x3F; v9 = v5; v11 = v6 >> 6; v7 = *(_DWORD *)v3; v12 = 0; if ( !sub_458160(v7 + 4684, &rgbValue) ) { sprintf( &v14, "ERROR - CPFsCharacter::fc_NC_CT_DB_SET_CMD, nCharNo=%d, (%d,%d,%I64d), nRet=%d", rgbValue, v9, v10, v11, v12, v13); sub_446350(1, "Msg", "%s", &v14); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00412FC0) -------------------------------------------------------- signed int __thiscall sub_412FC0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 unsigned __int8 v6; // al@4 int v7; // eax@6 unsigned __int8 v8; // al@8 int v9; // eax@10 char v10; // [sp+8h] [bp-104h]@3 unsigned int v11; // [sp+108h] [bp-4h]@1 int v12; // [sp+10Ch] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { LOBYTE(v5) = sub_46BBF0( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), *(_BYTE *)(a2 + 8), *(_BYTE *)(a2 + 9), *(_WORD *)(a2 + 10)); if ( !v5 ) { sprintf( &v10, "ERROR - fc_NC_CT_SET_CURRENT_DB_CMD: m_DBFChar.SetCharTitleCurrent, nCharNo=%d", *(_DWORD *)(a2 + 4)); sub_446350(1, "Msg", "%s", &v10); } v6 = *(_BYTE *)(a2 + 12); if ( v6 ) { if ( v6 < 0x80u ) { LOBYTE(v7) = sub_46BB30(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), *(_WORD *)(a2 + 12)); if ( !v7 ) { sprintf(&v10, "ERROR - fc_NC_CT_SET_CURRENT_DB_CMD: m_DBFChar.SetCharTitles, nCharNo=%d", *(_DWORD *)(a2 + 4)); sub_446350(1, "Msg", "%s", &v10); } } } v8 = *(_BYTE *)(a2 + 14); if ( v8 && v8 < 0x80u ) { LOBYTE(v9) = sub_46BB30(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), *(_WORD *)(a2 + 14)); if ( !v9 ) { sprintf(&v10, "ERROR - fc_NC_CT_SET_CURRENT_DB_CMD: m_DBFChar.SetCharTitles, nCharNo=%d", *(_DWORD *)(a2 + 4)); sub_446350(1, "Msg", "%s", &v10); } } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00413110) -------------------------------------------------------- signed int __thiscall sub_413110(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 bool v5; // zf@2 int v6; // eax@2 int v7; // ecx@3 signed int v8; // edi@3 int v9; // ecx@4 char v10; // [sp+Ch] [bp-110h]@3 __int16 v11; // [sp+Dh] [bp-10Fh]@3 int v12; // [sp+Fh] [bp-10Dh]@2 __int16 v13; // [sp+13h] [bp-109h]@2 __int16 v14; // [sp+15h] [bp-107h]@3 char v15; // [sp+18h] [bp-104h]@3 unsigned int v16; // [sp+118h] [bp-4h]@1 int v17; // [sp+11Ch] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = sub_4582B0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), *(_BYTE *)(a2 + 8)) == 0; v6 = *(_DWORD *)(a2 + 2); v13 = *(_WORD *)(a2 + 6); v12 = v6; if ( v5 ) { v7 = *(_DWORD *)(v3 + 4); v14 = 2756; v10 = 10; v11 = 4192; v8 = sub_43BFE0(v7, (int)&v10, 0xBu); sprintf( &v15, "ERROR - CPFsCharacter::fc_NC_CHAR_STAT_INCPOINT_DB_REQ, nCharNo=%d, StatPointType=%d", *(_DWORD *)(a2 + 4), *(_BYTE *)(a2 + 8)); sub_446350(1, "Msg", "%s", &v15); result = v8; } else { v9 = *(_DWORD *)(v3 + 4); LOBYTE(v14) = *(_BYTE *)(a2 + 8); v10 = 9; v11 = 4190; result = sub_43BFE0(v9, (int)&v10, 0xAu); } } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00413240) -------------------------------------------------------- signed int __thiscall sub_413240(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 signed __int16 v5; // di@2 char v6; // cl@3 int v7; // edx@3 int v8; // eax@3 bool v9; // al@3 int v10; // ebx@3 char v11; // cl@11 int v12; // edx@11 int v13; // eax@11 int v14; // eax@11 bool v15; // al@11 int v16; // edx@20 __int16 v17; // ax@20 signed int v18; // esi@20 __int16 v19; // dx@21 char v20; // al@21 signed int v21; // edi@21 bool v22; // zf@21 int v23; // edx@22 int v24; // eax@22 __int16 v25; // cx@22 int v26; // ecx@23 int v27; // edx@23 __int16 v28; // ax@23 __int16 v29; // [sp+0h] [bp-4064h]@10 int v30; // [sp+4h] [bp-4060h]@10 int v31; // [sp+8h] [bp-405Ch]@1 char v32; // [sp+Ch] [bp-4058h]@21 int v33; // [sp+11h] [bp-4053h]@22 int v34; // [sp+15h] [bp-404Fh]@22 int v35; // [sp+19h] [bp-404Bh]@22 __int16 v36; // [sp+1Dh] [bp-4047h]@22 __int16 v37; // [sp+1Fh] [bp-4045h]@23 char v38; // [sp+2010h] [bp-2054h]@19 int v39; // [sp+2015h] [bp-204Fh]@20 __int16 v40; // [sp+2019h] [bp-204Bh]@20 __int16 v41; // [sp+201Bh] [bp-2049h]@20 __int16 v42; // [sp+201Dh] [bp-2047h]@20 int v43; // [sp+4014h] [bp-50h]@11 char v44; // [sp+4018h] [bp-4Ch]@11 int v45; // [sp+401Ch] [bp-48h]@11 int v46; // [sp+4020h] [bp-44h]@11 __int16 v47; // [sp+4024h] [bp-40h]@11 int v48; // [sp+402Ch] [bp-38h]@11 int v49; // [sp+4030h] [bp-34h]@11 char v50; // [sp+4034h] [bp-30h]@12 int rgbValue; // [sp+403Ch] [bp-28h]@3 char v52; // [sp+4040h] [bp-24h]@3 int v53; // [sp+4044h] [bp-20h]@3 int v54; // [sp+4048h] [bp-1Ch]@3 char v55; // [sp+404Ch] [bp-18h]@4 unsigned int v56; // [sp+4054h] [bp-10h]@1 int v57; // [sp+4060h] [bp-4h]@19 int v58; // [sp+4064h] [bp+0h]@1 v56 = (unsigned int)&v58 ^ __security_cookie; v3 = this; v31 = this; result = sub_43B000(this, a2); if ( result ) { v5 = 4250; if ( *(_BYTE *)(a2 + 21) ) { v6 = *(_BYTE *)(a2 + 8); v7 = *(_DWORD *)(a2 + 11); rgbValue = *(_DWORD *)(a2 + 4); v54 = *(_DWORD *)(a2 + 15); v8 = *(_DWORD *)v3; v52 = v6; v53 = v7; v9 = sub_4625F0(v8 + 4684, &rgbValue); v10 = v9; if ( !v9 ) { switch ( v55 ) { case 1: v5 = 4243; break; case 2: v5 = 4244; break; case 3: v5 = 4245; break; } } } else { if ( sub_4038C0(*(_WORD *)(a2 + 19), a2 + 24, (int)&v30, (int)&v29) ) { v11 = *(_BYTE *)(a2 + 8); v12 = *(_DWORD *)(a2 + 11); v43 = *(_DWORD *)(a2 + 4); v13 = *(_DWORD *)(a2 + 15); v44 = v11; v46 = v13; v14 = *(_DWORD *)v3; v47 = v29; v45 = v12; v48 = v30; v49 = 0; v15 = sub_4626B0(v14 + 4684, &v43); v10 = v15; if ( !v15 ) { switch ( v50 ) { case 1: v5 = 4246; break; case 2: v5 = 4247; break; case 3: v5 = 4248; break; } } } else { v10 = 0; v5 = 4249; } } sub_44E180((int)&v38); v57 = 0; if ( v10 ) { v19 = *(_WORD *)(a2 + 6); v20 = *(_BYTE *)(a2 + 8); v39 = *(_DWORD *)(a2 + 2); *(__int16 *)((char *)&v41 + 1) = *(_WORD *)(a2 + 9); v40 = v19; LOBYTE(v41) = v20; sub_44E310((int)&v38, 0x1064u, 9u, 0); v21 = sub_43BFB0(*(_DWORD *)(v31 + 4), (int)&v38); sub_44E180((int)&v32); v22 = *(_BYTE *)(a2 + 21) == 0; LOBYTE(v57) = 1; if ( v22 ) { sub_44E310((int)&v32, 0x459u, 0x10u, 0); v26 = *(_DWORD *)(a2 + 11); v27 = *(_DWORD *)(a2 + 15); v33 = *(_DWORD *)(a2 + 4); v28 = *(_WORD *)(a2 + 19); v34 = v26; v35 = v27; v36 = v28; v37 = v30; } else { sub_44E310((int)&v32, 0x45Au, 0xEu, 0); v23 = *(_DWORD *)(a2 + 11); v24 = *(_DWORD *)(a2 + 15); v33 = *(_DWORD *)(a2 + 4); v25 = *(_WORD *)(a2 + 19); v34 = v23; v35 = v24; v36 = v25; } if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v32); LOBYTE(v57) = 0; nullsub_1(&v32); v57 = -1; nullsub_1(&v38); result = v21; } else { v16 = *(_DWORD *)(a2 + 2); v17 = *(_WORD *)(a2 + 6); v41 = *(_WORD *)(a2 + 9); v39 = v16; v40 = v17; v42 = v5; sub_44E310((int)&v38, 0x1066u, 0xAu, 0); v18 = sub_43BFB0(*(_DWORD *)(v31 + 4), (int)&v38); v57 = -1; nullsub_1(&v38); result = v18; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00413550) -------------------------------------------------------- signed int __thiscall sub_413550(int this, int a2, int a3) { char v3; // dl@2 char v4; // cl@2 char v5; // al@2 char v6; // dl@2 char v7; // cl@2 char v8; // al@2 unsigned __int16 v9; // dx@2 int v10; // ecx@2 int v11; // ebx@2 int v12; // eax@2 signed __int16 v13; // di@2 int v14; // edx@3 int v15; // eax@13 signed int result; // eax@17 int v17; // eax@22 __int16 v18; // dx@22 char v19; // cl@22 char v20; // cl@22 signed int v21; // ebx@30 int v22; // edi@31 int v23; // edx@35 int v24; // [sp-14h] [bp-4254h]@20 unsigned int v25; // [sp-10h] [bp-4250h]@1 unsigned __int16 v26; // [sp+0h] [bp-4240h]@2 int v27; // [sp+4h] [bp-423Ch]@3 int v28; // [sp+8h] [bp-4238h]@1 __int16 v29; // [sp+Ch] [bp-4234h]@9 char v30; // [sp+10h] [bp-4230h]@22 int v31; // [sp+15h] [bp-422Bh]@22 __int16 v32; // [sp+19h] [bp-4227h]@22 char v33; // [sp+1Bh] [bp-4225h]@22 char v34; // [sp+1Ch] [bp-4224h]@22 char v35; // [sp+1Dh] [bp-4223h]@22 char v36; // [sp+1Eh] [bp-4222h]@22 char v37; // [sp+1Fh] [bp-4221h]@22 __int16 v38; // [sp+20h] [bp-4220h]@22 __int16 v39; // [sp+22h] [bp-421Eh]@22 char v40; // [sp+2014h] [bp-222Ch]@30 int v41; // [sp+2019h] [bp-2227h]@35 int v42; // [sp+201Dh] [bp-2223h]@33 int v43; // [sp+2021h] [bp-221Fh]@35 __int16 v44; // [sp+2025h] [bp-221Bh]@35 __int16 v45; // [sp+2027h] [bp-2219h]@34 int rgbValue; // [sp+4018h] [bp-228h]@2 char v47; // [sp+401Ch] [bp-224h]@2 char v48; // [sp+401Dh] [bp-223h]@2 char v49; // [sp+401Eh] [bp-222h]@2 char v50; // [sp+401Fh] [bp-221h]@2 char v51; // [sp+4020h] [bp-220h]@2 char v52; // [sp+4021h] [bp-21Fh]@2 int v53; // [sp+4024h] [bp-21Ch]@2 __int16 v54; // [sp+4028h] [bp-218h]@2 char v55; // [sp+402Ah] [bp-216h]@2 int v56; // [sp+402Ch] [bp-214h]@13 char v57; // [sp+4030h] [bp-210h]@37 char v58; // [sp+4130h] [bp-110h]@10 unsigned int v59; // [sp+4230h] [bp-10h]@1 int v60; // [sp+423Ch] [bp-4h]@22 int v61; // [sp+4240h] [bp+0h]@1 v59 = (unsigned int)&v61 ^ __security_cookie; v25 = (unsigned int)&v61 ^ __security_cookie; v28 = this; if ( !sub_43B000(this, a2) ) return 0; v3 = *(_BYTE *)(a2 + 10); v4 = *(_BYTE *)(a2 + 9); rgbValue = *(_DWORD *)(a2 + 4); v5 = *(_BYTE *)(a2 + 8); v49 = v3; v6 = *(_BYTE *)(a2 + 13); v48 = v4; v7 = *(_BYTE *)(a2 + 12); v47 = v5; v8 = *(_BYTE *)(a2 + 11); v52 = v6; v9 = *(_WORD *)(a2 + 26); v51 = v7; v10 = *(_BYTE *)(a2 + 16); v11 = v9; v50 = v8; v12 = 0; v13 = 2753; v26 = v9; v53 = v9; v54 = 0; v55 = 0; if ( v10 > 0 ) { v14 = a2 + 28; v27 = a2 + 28; while ( v11 == *(_WORD *)(v14 - 2) ) { v55 += *(_BYTE *)v27; ++v12; v14 = v27 + 12; v27 += 12; if ( v12 >= v10 ) { v9 = v26; goto LABEL_8; } v11 = v53; } sprintf( &v58, "ERROR - CPFsCharacter::fc_NC_CHAR_FREESTAT_SET_DB_REQ : ItemID Not Matching - nCharNo %d, ItmeID_1 %d, ItmeID_2 %d", *(_DWORD *)(a2 + 4), v11, *(_WORD *)(a2 + 4 * (3 * v12 + 6) + 2), v25); sub_446350(1, "Msg", "%s", &v58); return 0; } LABEL_8: if ( *(_BYTE *)(a2 + 16) ) { if ( !sub_403AA0(v9, (int)&v29) ) { v13 = 2758; sprintf( &v58, "ERROR - CPFsCharacter::fc_NC_CHAR_FREESTAT_SET_DB_REQ : ItmeOption nCharacterNo %d ItemId %d", *(_DWORD *)(a2 + 4), *(_WORD *)(a2 + 26), v25); sub_446350(1, "Msg", "%s", &v58); } v54 = v29; } if ( !sub_4583D0(*(_DWORD *)v28 + 4684, &rgbValue) || (v15 = v56) != 0 ) { v13 = 2756; sprintf( &v58, "ERROR - CPFsCharacter::fc_NC_CHAR_FREESTAT_SET_DB_REQ : DB_ERROR nCharacterNo %d", *(_DWORD *)(a2 + 4), v25); sub_446350(1, "Msg", "%s", &v58); v15 = v56; } switch ( v15 + 1094 ) { case 83: sub_446350(1, "Msg", "%s", " FreeStat set error : invalid charno"); return 0; case 82: sub_446350(1, "Msg", "%s", " FreeStat set error : invalid stat"); return 0; case 81: v13 = 2754; v24 = (int)" FreeStat set error : too many stat"; goto LABEL_21; default: goto LABEL_22; case 80: sub_446350(1, "Msg", "%s", " FreeStat set error : not find char"); return 0; case 73: v13 = 4247; v24 = (int)" FreeStat set error : delete item lot"; goto LABEL_21; case 72: v13 = 4246; v24 = (int)" FreeStat set error : item lot"; goto LABEL_21; case 71: v13 = 4244; v24 = (int)" FreeStat set error : can not delete item"; goto LABEL_21; case 70: v13 = 2758; v24 = (int)" FreeStat set error : no init item"; LABEL_21: sub_446350(1, "Msg", "%s", v24); LABEL_22: sub_44E180((int)&v30); v17 = *(_DWORD *)(a2 + 2); v18 = *(_WORD *)(a2 + 14); v32 = *(_WORD *)(a2 + 6); v19 = *(_BYTE *)(a2 + 10); v31 = v17; LOBYTE(v17) = *(_BYTE *)(a2 + 9); v34 = v19; v20 = *(_BYTE *)(a2 + 13); v33 = v17; LOBYTE(v17) = *(_BYTE *)(a2 + 12); v38 = v18; LOBYTE(v18) = *(_BYTE *)(a2 + 11); v37 = v20; v60 = 0; v39 = v13; v35 = v18; v36 = v17; sub_44E310((int)&v30, 0x10D2u, 0xFu, 0); if ( sub_43BFB0(*(_DWORD *)(v28 + 4), (int)&v30) ) { sub_44E180((int)&v40); v21 = 0; LOBYTE(v60) = 1; if ( *(_BYTE *)(a2 + 16) ) { v22 = a2 + 26; do { if ( *(_BYTE *)(v22 - 9) ) { sub_44E310((int)&v40, 0x45Au, 0xEu, 0); v42 = *(_DWORD *)(v22 - 8); } else { sub_44E310((int)&v40, 0x459u, 0x10u, 0); v42 = *(_DWORD *)(v22 - 8); v45 = *(_BYTE *)(v22 + 2); } v23 = *(_DWORD *)(v22 - 4); v41 = *(_DWORD *)(a2 + 4); v44 = *(_WORD *)v22; v43 = v23; if ( !dword_6E9EC0 || !sub_44B7E0((void *)dword_6E9EC0, (int)&v40) ) { sprintf( &v57, "ERROR - CPFsCharacter::fc_NC_CHAR_FREESTAT_SET_DB_REQ : GameLog Send Fail nCharacterNo %d, nItemKey", *(_DWORD *)(a2 + 4), *(_DWORD *)(v22 - 8), *(_DWORD *)(v22 - 4), v25); sub_446350(1, "Msg", "%s", &v57); } ++v21; v22 += 12; } while ( v21 < *(_BYTE *)(a2 + 16) ); } LOBYTE(v60) = 0; nullsub_1(&v40); v60 = -1; nullsub_1(&v30); result = 1; } else { sprintf( &v58, "ERROR - CPFsCharacter::fc_NC_CHAR_FREESTAT_SET_DB_REQ : ZoneServer Send Fail nCharacterNo %d", *(_DWORD *)(a2 + 4), v25); sub_446350(1, "Msg", "%s", &v58); v60 = -1; nullsub_1(&v30); result = 0; } break; case 0: case 1: case 2: case 3: sprintf(&v58, " ÀÚÀ¯½ºÅÈ ¼³Á¤ ¿¡·¯ : DB_ERROR CharNo %d ErrorNo %d", *(_DWORD *)(a2 + 4), v15, v25); sub_446350(1, "Msg", "%s", &v58); result = 0; break; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00413B00) -------------------------------------------------------- signed int __thiscall sub_413B00(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 __int16 v5; // dx@2 char v6; // ST00_1@2 int v7; // ecx@2 bool v8; // al@2 int v9; // ecx@2 char v10; // [sp+8h] [bp-40Ch]@2 int v11; // [sp+9h] [bp-40Bh]@2 __int16 v12; // [sp+Dh] [bp-407h]@2 bool v13; // [sp+Fh] [bp-405h]@2 int v14; // [sp+10h] [bp-404h]@2 unsigned int v15; // [sp+410h] [bp-4h]@1 int v16; // [sp+414h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)v3 + 4684; v10 = 0; v11 = 1880622085; v12 = v5; v8 = sub_46B730(v7, v6, &v14); v9 = *(_DWORD *)(v3 + 4); v13 = v8; result = sub_43BFE0(v9, (int)&v10, 0x408u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00413BA0) -------------------------------------------------------- signed int __thiscall sub_413BA0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 __int16 v5; // dx@2 char v6; // ST00_1@2 int v7; // ecx@2 bool v8; // al@2 int v9; // ecx@2 char v10; // [sp+8h] [bp-24h]@2 int v11; // [sp+9h] [bp-23h]@2 __int16 v12; // [sp+Dh] [bp-1Fh]@2 bool v13; // [sp+Fh] [bp-1Dh]@2 int v14; // [sp+10h] [bp-1Ch]@2 unsigned int v15; // [sp+28h] [bp-4h]@1 int v16; // [sp+2Ch] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)v3 + 4684; v10 = 0; v11 = 1880752157; v12 = v5; v8 = sub_46B750(v7, v6, &v14); v9 = *(_DWORD *)(v3 + 4); v13 = v8; result = sub_43BFE0(v9, (int)&v10, 0x20u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00413C20) -------------------------------------------------------- signed int __thiscall sub_413C20(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 __int16 v5; // dx@2 char v6; // ST00_1@2 int v7; // ecx@2 bool v8; // al@2 int v9; // ecx@2 char v10; // [sp+8h] [bp-48h]@2 int v11; // [sp+9h] [bp-47h]@2 __int16 v12; // [sp+Dh] [bp-43h]@2 bool v13; // [sp+Fh] [bp-41h]@2 int v14; // [sp+10h] [bp-40h]@2 unsigned int v15; // [sp+4Ch] [bp-4h]@1 int v16; // [sp+50h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)v3 + 4684; v10 = 0; v11 = 1880883265; v12 = v5; v8 = sub_46B770(v7, v6, &v14); v9 = *(_DWORD *)(v3 + 4); v13 = v8; result = sub_43BFE0(v9, (int)&v10, 0x44u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00413CA0) -------------------------------------------------------- signed int __thiscall sub_413CA0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 __int16 v5; // dx@2 char v6; // ST00_1@2 int v7; // ecx@2 bool v8; // al@2 int v9; // ecx@2 char v10; // [sp+8h] [bp-10h]@2 int v11; // [sp+9h] [bp-Fh]@2 __int16 v12; // [sp+Dh] [bp-Bh]@2 bool v13; // [sp+Fh] [bp-9h]@2 int v14; // [sp+10h] [bp-8h]@2 unsigned int v15; // [sp+14h] [bp-4h]@1 int v16; // [sp+18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)v3 + 4684; v10 = 0; v11 = 1881014278; v12 = v5; v8 = sub_46B790(v7, v6, &v14); v9 = *(_DWORD *)(v3 + 4); v13 = v8; result = sub_43BFE0(v9, (int)&v10, 9u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00413D20) -------------------------------------------------------- signed int __thiscall sub_413D20(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 __int16 v5; // dx@2 char v6; // ST00_1@2 int v7; // ecx@2 bool v8; // al@2 int v9; // ecx@2 char v10; // [sp+8h] [bp-4Ch]@2 int v11; // [sp+9h] [bp-4Bh]@2 __int16 v12; // [sp+Dh] [bp-47h]@2 bool v13; // [sp+Fh] [bp-45h]@2 int v14; // [sp+10h] [bp-44h]@2 unsigned int v15; // [sp+50h] [bp-4h]@1 int v16; // [sp+54h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)v3 + 4684; v10 = 0; v11 = 1881145413; v12 = v5; v8 = sub_46B7B0(v7, v6, &v14); v9 = *(_DWORD *)(v3 + 4); v13 = v8; result = sub_43BFE0(v9, (int)&v10, 0x48u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00413DA0) -------------------------------------------------------- signed int __thiscall sub_413DA0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 __int16 v5; // dx@2 char v6; // ST00_1@2 int v7; // ecx@2 bool v8; // al@2 int v9; // ecx@2 char v10; // [sp+8h] [bp-194h]@2 int v11; // [sp+9h] [bp-193h]@2 __int16 v12; // [sp+Dh] [bp-18Fh]@2 bool v13; // [sp+Fh] [bp-18Dh]@2 int v14; // [sp+10h] [bp-18Ch]@2 unsigned int v15; // [sp+198h] [bp-4h]@1 int v16; // [sp+19Ch] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)v3 + 4684; v10 = 0; v11 = 1881276813; v12 = v5; v8 = sub_46B7D0(v7, v6, &v14); v9 = *(_DWORD *)(v3 + 4); v13 = v8; result = sub_43BFE0(v9, (int)&v10, 0x190u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00413E40) -------------------------------------------------------- signed int __thiscall sub_413E40(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 __int16 v5; // dx@2 char v6; // ST00_1@2 int v7; // ecx@2 bool v8; // al@2 int v9; // ecx@2 char v10; // [sp+8h] [bp-140h]@2 int v11; // [sp+9h] [bp-13Fh]@2 __int16 v12; // [sp+Dh] [bp-13Bh]@2 bool v13; // [sp+Fh] [bp-139h]@2 int v14; // [sp+10h] [bp-138h]@2 unsigned int v15; // [sp+144h] [bp-4h]@1 int v16; // [sp+148h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)v3 + 4684; v10 = 0; v11 = 1881407801; v12 = v5; v8 = sub_46B7F0(v7, v6, &v14); v9 = *(_DWORD *)(v3 + 4); v13 = v8; result = sub_43BFE0(v9, (int)&v10, 0x13Cu); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00413EE0) -------------------------------------------------------- signed int __thiscall sub_413EE0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_46B810(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), (void *)(a2 + 6)); result = 1; } return result; } //----- (00413F20) -------------------------------------------------------- signed int __thiscall sub_413F20(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_46B830(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), (void *)(a2 + 6)); result = 1; } return result; } //----- (00413F60) -------------------------------------------------------- signed int __thiscall sub_413F60(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_46B850(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), (void *)(a2 + 6)); result = 1; } return result; } //----- (00413FA0) -------------------------------------------------------- signed int __thiscall sub_413FA0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_46B870(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), (void *)(a2 + 6)); result = 1; } return result; } //----- (00413FE0) -------------------------------------------------------- signed int __thiscall sub_413FE0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_46B890(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), (void *)(a2 + 6)); result = 1; } return result; } //----- (00414020) -------------------------------------------------------- signed int __thiscall sub_414020(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_46B8B0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), (void *)(a2 + 6)); result = 1; } return result; } //----- (00414060) -------------------------------------------------------- signed int __thiscall sub_414060(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_46B8D0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), (void *)(a2 + 6)); result = 1; } return result; } //----- (004140A0) -------------------------------------------------------- signed int __thiscall sub_4140A0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_457F10(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6)); result = 1; } return result; } //----- (004140E0) -------------------------------------------------------- signed int __thiscall sub_4140E0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@2 int v11; // edx@2 int v12; // eax@2 int v13; // ST20_4@6 int v14; // ST18_4@6 signed int v15; // esi@7 unsigned int v16; // [sp-10h] [bp-2154h]@1 char v17; // [sp+0h] [bp-2144h]@2 __int16 v18; // [sp+5h] [bp-213Fh]@2 int v19; // [sp+7h] [bp-213Dh]@2 char v20; // [sp+Bh] [bp-2139h]@2 int rgbValue; // [sp+2004h] [bp-140h]@2 int v22; // [sp+2008h] [bp-13Ch]@2 int v23; // [sp+200Ch] [bp-138h]@2 int v24; // [sp+2010h] [bp-134h]@2 int v25; // [sp+2014h] [bp-130h]@2 int v26; // [sp+2018h] [bp-12Ch]@2 char v27; // [sp+201Ch] [bp-128h]@2 int v28; // [sp+2030h] [bp-114h]@2 char v29; // [sp+2034h] [bp-110h]@3 unsigned int v30; // [sp+2134h] [bp-10h]@1 int v31; // [sp+2140h] [bp-4h]@2 int v32; // [sp+2144h] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v16 = (unsigned int)&v32 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v17); v31 = 0; sub_44E310((int)&v17, 0x10B4u, 7u, 0); v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v19 = *(_DWORD *)(a2 + 24); rgbValue = v19; v7 = *(_DWORD *)(a2 + 8); v18 = v5; v8 = *(_DWORD *)(a2 + 12); v23 = v7; v9 = *(_DWORD *)(a2 + 20); v24 = v8; v26 = v9; v10 = *(_DWORD *)v3 + 4684; v22 = v6; v11 = *(_DWORD *)(a2 + 16); v20 = 0; v25 = v11; v27 = 0; v28 = 0; LOBYTE(v12) = sub_458EB0(v10, &rgbValue); if ( !v12 ) { sprintf( &v29, "ERROR - CPFsCharacter::fc_NC_CHAR_REGNUM_VARIFICATION_REQ DB Procedure Fail : CharNo(%d), CharID(%s), ZoneHandle(%d), nRet=%d", *(_DWORD *)(a2 + 24), &v22, *(_WORD *)(a2 + 2), v28, v16); sub_446350(1, "Msg", "%s", &v29); } if ( v28 ) { v13 = *(_WORD *)(a2 + 2); v14 = *(_DWORD *)(a2 + 24); v20 = 0; sprintf( &v29, "ERROR - CPFsCharacter::fc_NC_CHAR_REGNUM_VARIFICATION_REQ : CharNo(%d), CharID(%s), ZoneHandle(%d), nRet=%d", v14, &v22, v13, v28, v16); sub_446350(1, "Msg", "%s", &v29); } else { v20 = 1; } sub_44E310((int)&v17, 0x10B4u, 7u, 0); v15 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v17); v31 = -1; nullsub_1(&v17); result = v15; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004142B0) -------------------------------------------------------- int __thiscall sub_4142B0(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // edi@1 signed int v5; // edx@1 int v6; // ecx@3 signed int v7; // esi@3 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 28); *(_WORD *)(this + 32) = *(_WORD *)(a2 + 32); *(_DWORD *)(this + 34) = *(_DWORD *)(a2 + 34); *(_DWORD *)(this + 38) = *(_DWORD *)(a2 + 38); *(_BYTE *)(this + 42) = *(_BYTE *)(a2 + 42); *(_BYTE *)(this + 43) = *(_BYTE *)(a2 + 43); *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); *(_WORD *)(this + 48) = *(_WORD *)(a2 + 48); *(_DWORD *)(this + 50) = *(_DWORD *)(a2 + 50); *(_DWORD *)(this + 54) = *(_DWORD *)(a2 + 54); *(_DWORD *)(this + 58) = *(_DWORD *)(a2 + 58); *(_DWORD *)(this + 62) = *(_DWORD *)(a2 + 62); *(_DWORD *)(this + 66) = *(_DWORD *)(a2 + 66); *(_DWORD *)(this + 70) = *(_DWORD *)(a2 + 70); *(_DWORD *)(this + 74) = *(_DWORD *)(a2 + 74); *(_DWORD *)(this + 78) = *(_DWORD *)(a2 + 78); *(_DWORD *)(this + 82) = *(_DWORD *)(a2 + 82); *(_DWORD *)(this + 86) = *(_DWORD *)(a2 + 86); *(_BYTE *)(this + 90) = *(_BYTE *)(a2 + 90); *(_DWORD *)(this + 91) = *(_DWORD *)(a2 + 91); v3 = this + 95; v4 = a2 - this; v5 = 128; do { *(_BYTE *)v3 = *(_BYTE *)(v4 + v3); ++v3; --v5; } while ( v5 ); *(_DWORD *)(this + 223) = *(_DWORD *)(a2 + 223); *(_DWORD *)(this + 227) = *(_DWORD *)(a2 + 227); *(_DWORD *)(this + 231) = *(_DWORD *)(a2 + 231); *(_DWORD *)(this + 235) = *(_DWORD *)(a2 + 235); *(_DWORD *)(this + 239) = *(_DWORD *)(a2 + 239); *(_DWORD *)(this + 243) = *(_DWORD *)(a2 + 243); v6 = this + 247; v7 = 512; do { *(_BYTE *)v6 = *(_BYTE *)(v6 + v4); ++v6; --v7; } while ( v7 ); return result; } //----- (004143E0) -------------------------------------------------------- signed int __thiscall sub_4143E0(int this, int a2, int a3) { int v3; // edi@1 signed int v4; // esi@2 int v5; // ST0C_4@2 int v6; // eax@2 int v7; // ecx@4 int v8; // edx@5 int v9; // ebx@5 char *v10; // eax@5 signed int v11; // esi@11 signed int result; // eax@11 int v13; // [sp-14h] [bp-2038h]@3 char v14; // [sp+0h] [bp-2024h]@2 __int16 v15; // [sp+5h] [bp-201Fh]@2 char v16; // [sp+7h] [bp-201Dh]@4 __int16 v17; // [sp+8h] [bp-201Ch]@7 char v18[8186]; // [sp+Ah] [bp-201Ah]@5 int TargetValue; // [sp+2004h] [bp-20h]@5 int v20; // [sp+200Ch] [bp-18h]@5 int v21; // [sp+2010h] [bp-14h]@5 unsigned int v22; // [sp+2014h] [bp-10h]@1 int v23; // [sp+2020h] [bp-4h]@2 int v24; // [sp+2024h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v3 = this; if ( sub_43B000(this, a2) ) { sub_44E180((int)&v14); v15 = 3137; v4 = 0; v5 = *(_DWORD *)v3 + 4684; v23 = 0; LOBYTE(v6) = sub_452130(v5); if ( v6 ) { v7 = *(_DWORD *)v3 + 4684; v16 = 1; if ( sub_44E4A0(v7) ) { do { sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E5A0(*(_DWORD *)v3 + 4684, &v20); v8 = v20; v9 = v21; v10 = &v18[12 * v4]; *(_DWORD *)v10 = TargetValue; *((_DWORD *)v10 + 1) = v8; ++v4; *((_DWORD *)v10 + 2) = v9; if ( 12 * v4 + 5 >= 2046 && v4 > 1 ) { v17 = v4; sub_44E310((int)&v14, 0x74BDu, 12 * v4 + 5, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); v23 = -1; nullsub_1(&v14); goto LABEL_14; } v4 = 0; v16 = 0; } } while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v16 |= 2u; v17 = v4; sub_44E310((int)&v14, 0x74BDu, 12 * v4 + 5, 0); v13 = (int)&v14; } else { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_GUILD_DB_TOKEN_ALL_REQ"); v15 = 3139; sub_44E310((int)&v14, 0x74BDu, 5u, 0); v13 = (int)&v14; } v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), v13); v23 = -1; nullsub_1(&v14); result = v11; } else { LABEL_14: result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4143E0: using guessed type char var_201A[8186]; //----- (00414600) -------------------------------------------------------- int __thiscall sub_414600(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); return result; } //----- (00414640) -------------------------------------------------------- signed int __thiscall sub_414640(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@3 int v5; // ecx@4 int v7; // eax@7 int v8; // ST18_4@8 int v9; // eax@9 int v10; // edx@9 int v11; // eax@9 int v12; // ecx@12 unsigned int v13; // [sp-Ch] [bp-2134h]@1 int rgbValue; // [sp+0h] [bp-2128h]@7 char v15; // [sp+8h] [bp-2120h]@9 int v16; // [sp+Dh] [bp-211Bh]@9 int v17; // [sp+11h] [bp-2117h]@9 int v18; // [sp+15h] [bp-2113h]@9 int v19; // [sp+19h] [bp-210Fh]@9 int v20; // [sp+1Dh] [bp-210Bh]@9 char v21; // [sp+200Ch] [bp-11Ch]@12 __int16 v22; // [sp+200Dh] [bp-11Bh]@12 int v23; // [sp+200Fh] [bp-119h]@7 __int16 v24; // [sp+2013h] [bp-115h]@7 char v25; // [sp+2018h] [bp-110h]@5 unsigned int v26; // [sp+2118h] [bp-10h]@1 int v27; // [sp+2124h] [bp-4h]@9 int v28; // [sp+2128h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v13 = (unsigned int)&v28 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) || (v4 = a2 + 2, a2 == -2) ) return 0; v5 = *(_DWORD *)v3; if ( !*(_DWORD *)v3 ) { sprintf(&v25, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_DELETE_REQ, Error=%d", 12736, v13); sub_446350(1, "Msg", "%s", &v25); return 0; } v23 = *(_DWORD *)v4; rgbValue = v23; v24 = 3137; LOBYTE(v7) = sub_4522B0(v5 + 4684, &rgbValue); if ( v7 ) { sub_44E180((int)&v15); v27 = 0; sub_44E310((int)&v15, 0x48Du, 0x14u, 0); v9 = *(_DWORD *)v4; v10 = *(_DWORD *)(a2 + 10); v17 = *(_DWORD *)(a2 + 6); v20 = *(_DWORD *)(a2 + 18); v16 = v9; v11 = *(_DWORD *)(a2 + 14); v18 = v10; v19 = v11; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v15); v27 = -1; nullsub_1(&v15); } else { v8 = *(_DWORD *)v4; v24 = 3202; sprintf(&v25, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_DELETE_REQ, GuildNo=%d", v8, v13); sub_446350(1, "Msg", "%s", &v25); } v12 = *(_DWORD *)(v3 + 4); v21 = 8; v22 = 29787; return sub_43BFE0(v12, (int)&v21, 9u); } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00414800) -------------------------------------------------------- signed int __thiscall sub_414800(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // ax@2 int v6; // ebx@2 int v7; // eax@2 int v8; // eax@2 int v9; // ST1C_4@3 int v10; // ST18_4@3 int v11; // ecx@4 int rgbValue; // [sp+8h] [bp-130h]@2 char v13; // [sp+Ch] [bp-12Ch]@2 int v14; // [sp+10h] [bp-128h]@2 char v15; // [sp+24h] [bp-114h]@4 __int16 v16; // [sp+25h] [bp-113h]@4 __int16 v17; // [sp+27h] [bp-111h]@2 int v18; // [sp+29h] [bp-10Fh]@2 char v19; // [sp+2Dh] [bp-10Bh]@2 int v20; // [sp+2Eh] [bp-10Ah]@2 __int16 v21; // [sp+32h] [bp-106h]@2 char v22; // [sp+34h] [bp-104h]@3 unsigned int v23; // [sp+134h] [bp-4h]@1 int v24; // [sp+138h] [bp+0h]@1 v23 = (unsigned int)&v24 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 9); v19 = *(_BYTE *)(a2 + 8); v13 = v19; v17 = v5; v7 = *(_DWORD *)(a2 + 4); v20 = v6; v18 = v7; v21 = 3137; rgbValue = v7; sub_417FC0((__time32_t *)(a2 + 9), (int)&v14); LOBYTE(v8) = sub_452510(*(_DWORD *)v3 + 4684, &rgbValue); if ( !v8 ) { v9 = *(_BYTE *)(a2 + 8); v10 = *(_DWORD *)(a2 + 4); v21 = 3335; sprintf(&v22, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_DISMISS_REQ, GuildNo=%d, DismissStatus=%d", v10, v9); sub_446350(1, "Msg", "%s", &v22); } v11 = *(_DWORD *)(v3 + 4); v15 = 15; v16 = 29789; result = sub_43BFE0(v11, (int)&v15, 0x10u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00414920) -------------------------------------------------------- signed int __thiscall sub_414920(int this, int a2, int a3) { signed int result; // eax@1 int v4; // ecx@2 int v5; // edx@2 int v6; // edi@2 int v7; // eax@2 int v8; // eax@2 int v9; // eax@2 int v10; // ST24_4@3 int v11; // eax@3 int v12; // ST20_4@3 int v13; // ecx@5 int v14; // [sp+4h] [bp-158h]@1 int rgbValue; // [sp+8h] [bp-154h]@2 int v16; // [sp+Ch] [bp-150h]@2 int v17; // [sp+10h] [bp-14Ch]@2 int v18; // [sp+14h] [bp-148h]@2 int v19; // [sp+18h] [bp-144h]@4 int v20; // [sp+1Ch] [bp-140h]@4 int v21; // [sp+20h] [bp-13Ch]@4 int v22; // [sp+24h] [bp-138h]@4 char v23; // [sp+30h] [bp-12Ch]@5 __int16 v24; // [sp+31h] [bp-12Bh]@5 __int16 v25; // [sp+33h] [bp-129h]@2 int v26; // [sp+35h] [bp-127h]@2 int v27; // [sp+39h] [bp-123h]@2 int v28; // [sp+3Dh] [bp-11Fh]@2 int v29; // [sp+41h] [bp-11Bh]@2 int v30; // [sp+45h] [bp-117h]@4 int v31; // [sp+49h] [bp-113h]@4 int v32; // [sp+4Dh] [bp-10Fh]@4 int v33; // [sp+51h] [bp-10Bh]@4 __int16 v34; // [sp+55h] [bp-107h]@2 char v35; // [sp+58h] [bp-104h]@3 unsigned int v36; // [sp+158h] [bp-4h]@1 int v37; // [sp+15Ch] [bp+0h]@1 v36 = (unsigned int)&v37 ^ __security_cookie; v14 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_DWORD *)(a2 + 8); v5 = *(_DWORD *)(a2 + 12); v6 = *(_DWORD *)(a2 + 16); v25 = *(_WORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 4); v29 = v6; v18 = v6; v26 = v7; rgbValue = v7; v8 = *(_DWORD *)v14; v27 = v4; v16 = v4; v28 = v5; v34 = 3137; v17 = v5; LOBYTE(v9) = sub_452330(v8 + 4684, &rgbValue); if ( v9 ) { v30 = v19; v31 = v20; v32 = v21; v33 = v22; } else { v10 = *(_DWORD *)(a2 + 16); v11 = *(_DWORD *)(a2 + 4); v12 = *(_DWORD *)(a2 + 12); v34 = 3203; sprintf( &v35, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MONEY_ADD_REQ, GuildNo=%d, CharNo=%d, AddMoney=%I64d", v11, *(_DWORD *)(a2 + 8), v12, v10); sub_446350(1, "Msg", "%s", &v35); } v24 = 29791; v13 = *(_DWORD *)(v14 + 4); v23 = 38; result = sub_43BFE0(v13, (int)&v23, 0x27u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00414A80) -------------------------------------------------------- signed int __thiscall sub_414A80(int this, int a2, int a3) { signed int result; // eax@1 int v4; // ecx@2 int v5; // edx@2 int v6; // edi@2 int v7; // eax@2 int v8; // eax@2 int v9; // ST24_4@3 int v10; // eax@3 int v11; // ST20_4@3 int v12; // ecx@5 int v13; // [sp+4h] [bp-158h]@1 int rgbValue; // [sp+8h] [bp-154h]@2 int v15; // [sp+Ch] [bp-150h]@2 int v16; // [sp+10h] [bp-14Ch]@2 int v17; // [sp+14h] [bp-148h]@2 int v18; // [sp+18h] [bp-144h]@4 int v19; // [sp+1Ch] [bp-140h]@4 int v20; // [sp+20h] [bp-13Ch]@4 int v21; // [sp+24h] [bp-138h]@4 char v22; // [sp+30h] [bp-12Ch]@5 __int16 v23; // [sp+31h] [bp-12Bh]@5 __int16 v24; // [sp+33h] [bp-129h]@2 int v25; // [sp+35h] [bp-127h]@2 int v26; // [sp+39h] [bp-123h]@2 int v27; // [sp+3Dh] [bp-11Fh]@2 int v28; // [sp+41h] [bp-11Bh]@2 int v29; // [sp+45h] [bp-117h]@4 int v30; // [sp+49h] [bp-113h]@4 int v31; // [sp+4Dh] [bp-10Fh]@4 int v32; // [sp+51h] [bp-10Bh]@4 __int16 v33; // [sp+55h] [bp-107h]@2 char v34; // [sp+58h] [bp-104h]@3 unsigned int v35; // [sp+158h] [bp-4h]@1 int v36; // [sp+15Ch] [bp+0h]@1 v35 = (unsigned int)&v36 ^ __security_cookie; v13 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_DWORD *)(a2 + 8); v5 = *(_DWORD *)(a2 + 12); v6 = *(_DWORD *)(a2 + 16); v24 = *(_WORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 4); v28 = v6; v17 = v6; v25 = v7; rgbValue = v7; v8 = *(_DWORD *)v13; v26 = v4; v15 = v4; v27 = v5; v33 = 3137; v16 = v5; if ( sub_452420(v8 + 4684, &rgbValue) ) { v29 = v18; v30 = v19; v31 = v20; v32 = v21; } else { v9 = *(_DWORD *)(a2 + 16); v10 = *(_DWORD *)(a2 + 4); v11 = *(_DWORD *)(a2 + 12); v33 = 3204; sprintf( &v34, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MONEY_SUB_REQ, GuildNo=%d, CharNo=%d, SubMoney=%I64d", v10, *(_DWORD *)(a2 + 8), v11, v9); sub_446350(1, "Msg", "%s", &v34); } v23 = 29793; v12 = *(_DWORD *)(v13 + 4); v22 = 38; result = sub_43BFE0(v12, (int)&v22, 0x27u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00414BE0) -------------------------------------------------------- signed int __thiscall sub_414BE0(int this, int a2, int a3) { signed int result; // eax@1 size_t v4; // ST1C_4@2 int v5; // ecx@2 __time32_t v6; // eax@2 int v7; // ecx@2 int v8; // edx@2 size_t v9; // ST1C_4@2 int v10; // ecx@2 int v11; // edx@2 int v12; // eax@2 int v13; // ecx@2 int v14; // edx@2 int v15; // eax@2 unsigned __int8 v16; // cl@3 int v17; // eax@4 int v18; // ST18_4@5 signed int v19; // esi@6 unsigned int v20; // [sp-10h] [bp-2558h]@1 int v21; // [sp+0h] [bp-2548h]@1 char v22; // [sp+4h] [bp-2544h]@2 __int16 v23; // [sp+9h] [bp-253Fh]@2 __int16 v24; // [sp+Bh] [bp-253Dh]@2 int v25; // [sp+Dh] [bp-253Bh]@2 __time32_t v26; // [sp+11h] [bp-2537h]@2 int v27; // [sp+15h] [bp-2533h]@2 int v28; // [sp+19h] [bp-252Fh]@2 int v29; // [sp+1Dh] [bp-252Bh]@2 int v30; // [sp+21h] [bp-2527h]@2 int v31; // [sp+25h] [bp-2523h]@2 __int16 v32; // [sp+29h] [bp-251Fh]@2 unsigned __int8 v33[8157]; // [sp+2Bh] [bp-251Dh]@2 int rgbValue; // [sp+2008h] [bp-540h]@2 int v35; // [sp+201Ch] [bp-52Ch]@2 int v36; // [sp+2020h] [bp-528h]@2 int v37; // [sp+2024h] [bp-524h]@2 int v38; // [sp+2028h] [bp-520h]@2 int v39; // [sp+202Ch] [bp-51Ch]@2 char v40; // [sp+2030h] [bp-518h]@2 char v41[515]; // [sp+2031h] [bp-517h]@3 char v42; // [sp+2234h] [bp-314h]@5 unsigned int v43; // [sp+2538h] [bp-10h]@1 int v44; // [sp+2544h] [bp-4h]@2 int v45; // [sp+2548h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v20 = (unsigned int)&v45 ^ __security_cookie; v21 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v22); v4 = *(_WORD *)(a2 + 28) + 34; v44 = 0; sub_44E310((int)&v22, 0x7463u, v4, 0); v5 = *(_DWORD *)(a2 + 4); v24 = *(_WORD *)(a2 + 2); v25 = v5; v6 = _time32(0); v7 = *(_DWORD *)(a2 + 16); v8 = *(_DWORD *)(a2 + 8); v26 = v6; v28 = *(_DWORD *)(a2 + 12); v31 = *(_DWORD *)(a2 + 24); v9 = *(_WORD *)(a2 + 28); v29 = v7; v27 = v8; v30 = *(_DWORD *)(a2 + 20); v32 = v9; _mbsnbcpy(v33, (const unsigned __int8 *)(a2 + 30), v9); v33[*(_WORD *)(a2 + 28)] = 0; v10 = *(_DWORD *)(a2 + 4); v11 = *(_DWORD *)(a2 + 8); v23 = 3137; v36 = *(_DWORD *)(a2 + 12); v12 = *(_DWORD *)(a2 + 24); rgbValue = v10; v13 = *(_DWORD *)(a2 + 16); v35 = v11; v14 = *(_DWORD *)(a2 + 20); v39 = v12; v37 = v13; v38 = v14; v40 = 0; v15 = 0; do { v16 = v33[v15]; v41[v15++] = v16; } while ( v16 ); LOBYTE(v17) = sub_452EE0(*(_DWORD *)v21 + 4684, &rgbValue); if ( !v17 ) { v18 = *(_DWORD *)(a2 + 4); v23 = 3207; sprintf( &v42, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_NOTIFY_REQ, GuildNo=%d, CharID=%s, Notify=%s", v18, &v35, a2 + 30, v20); sub_446350(1, "Msg", "%s", &v42); } v19 = sub_43BFB0(*(_DWORD *)(v21 + 4), (int)&v22); v44 = -1; nullsub_1(&v22); result = v19; } return result; } // 4DE38C: using guessed type int __security_cookie; // 414BE0: using guessed type unsigned __int8 var_251D[8157]; // 414BE0: using guessed type char var_517[515]; //----- (00414DE0) -------------------------------------------------------- signed int __thiscall sub_414DE0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // eax@2 int v7; // eax@2 char v8; // cl@3 int v9; // eax@4 int v10; // ST1C_4@5 int v11; // ST18_4@5 int v12; // ecx@6 int rgbValue; // [sp+8h] [bp-220h]@2 char v14[132]; // [sp+Ch] [bp-21Ch]@3 char v15; // [sp+90h] [bp-198h]@6 __int16 v16; // [sp+91h] [bp-197h]@6 __int16 v17; // [sp+93h] [bp-195h]@2 int v18; // [sp+95h] [bp-193h]@2 int v19; // [sp+99h] [bp-18Fh]@2 __int16 v20; // [sp+9Dh] [bp-18Bh]@2 char v21; // [sp+A0h] [bp-188h]@5 unsigned int v22; // [sp+224h] [bp-4h]@1 int v23; // [sp+228h] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 8); v17 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v20 = 3137; v18 = v6; rgbValue = v6; v19 = v5; v7 = a2 + 14; do { v8 = *(_BYTE *)v7; *(&v14[v7 - 14] - a2) = *(_BYTE *)v7; ++v7; } while ( v8 ); LOBYTE(v9) = sub_452FA0(*(_DWORD *)v3 + 4684, &rgbValue); if ( !v9 ) { v10 = *(_DWORD *)(a2 + 8); v11 = *(_DWORD *)(a2 + 4); v20 = 3207; sprintf( &v21, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_INTRO_REQ, GuildNo=%d, CharNo=%d, Intro=%s", v11, v10, a2 + 14); sub_446350(1, "Msg", "%s", &v21); } v16 = 29797; v12 = *(_DWORD *)(v3 + 4); v15 = 14; result = sub_43BFE0(v12, (int)&v15, 0xFu); } return result; } // 4DE38C: using guessed type int __security_cookie; // 414DE0: using guessed type char var_21C[132]; //----- (00414F00) -------------------------------------------------------- signed int __thiscall sub_414F00(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // edx@2 int v10; // ecx@2 int v11; // eax@2 int v12; // eax@2 int v13; // ST1C_4@3 int v14; // ST18_4@3 int v15; // ecx@4 int rgbValue; // [sp+8h] [bp-15Ch]@2 int v17; // [sp+Ch] [bp-158h]@2 int v18; // [sp+1Ch] [bp-148h]@2 int v19; // [sp+2Ch] [bp-138h]@2 int v20; // [sp+3Ch] [bp-128h]@2 char v21; // [sp+44h] [bp-120h]@4 __int16 v22; // [sp+45h] [bp-11Fh]@4 __int16 v23; // [sp+47h] [bp-11Dh]@2 int v24; // [sp+49h] [bp-11Bh]@2 int v25; // [sp+4Dh] [bp-117h]@2 int v26; // [sp+51h] [bp-113h]@2 int v27; // [sp+55h] [bp-10Fh]@2 int v28; // [sp+59h] [bp-10Bh]@2 __int16 v29; // [sp+5Dh] [bp-107h]@2 char v30; // [sp+60h] [bp-104h]@3 unsigned int v31; // [sp+160h] [bp-4h]@1 int v32; // [sp+164h] [bp+0h]@1 v31 = (unsigned int)&v32 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 2); v23 = 3137; v7 = *(_DWORD *)(a2 + 10); v24 = v6; v8 = *(_DWORD *)(a2 + 14); v25 = v5; v9 = *(_DWORD *)(a2 + 18); v26 = v7; LOWORD(v7) = *(_WORD *)(a2 + 22); v27 = v8; v10 = *(_DWORD *)(a2 + 4); v28 = v9; v29 = v7; rgbValue = v10; sub_417FC0((__time32_t *)(a2 + 12), (int)&v17); sub_417FC0((__time32_t *)(a2 + 16), (int)&v18); sub_417FC0((__time32_t *)(a2 + 20), (int)&v19); v11 = *(_DWORD *)v3 + 4684; v20 = *(_DWORD *)(a2 + 8); LOBYTE(v12) = sub_452D20(v11, &rgbValue); if ( !v12 ) { v13 = *(_DWORD *)(a2 + 8); v14 = *(_DWORD *)(a2 + 4); v23 = 3367; sprintf(&v30, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_WAR_REQ, GuildNo=%d, EnemyNo=%d", v14, v13); sub_446350(1, "Msg", "%s", &v30); } v22 = 29799; v15 = *(_DWORD *)(v3 + 4); v21 = 26; result = sub_43BFE0(v15, (int)&v21, 0x1Bu); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00415060) -------------------------------------------------------- signed int __thiscall sub_415060(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // eax@2 int v7; // ST18_4@3 int v8; // ecx@4 __time32_t Time; // [sp+8h] [bp-130h]@2 int rgbValue; // [sp+Ch] [bp-12Ch]@2 char v11; // [sp+10h] [bp-128h]@2 int v12; // [sp+14h] [bp-124h]@2 char v13; // [sp+28h] [bp-110h]@4 __int16 v14; // [sp+29h] [bp-10Fh]@4 __int16 v15; // [sp+2Bh] [bp-10Dh]@2 int v16; // [sp+2Dh] [bp-10Bh]@2 __int16 v17; // [sp+31h] [bp-107h]@2 char v18; // [sp+34h] [bp-104h]@3 unsigned int v19; // [sp+134h] [bp-4h]@1 int v20; // [sp+138h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 6); v16 = *(_DWORD *)(a2 + 2); v17 = v5; v15 = 7752; Time = _time32(0); rgbValue = *(_DWORD *)(a2 + 2); v11 = 0; sub_417FC0(&Time, (int)&v12); LOBYTE(v6) = sub_452510(*(_DWORD *)v3 + 4684, &rgbValue); if ( !v6 ) { v7 = *(_DWORD *)(a2 + 2); v15 = 7756; sprintf(&v18, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_DELETE_CANCEL_REQ, GuildNo=%d, DismissStatus=%d", v7, 0); sub_446350(1, "Msg", "%s", &v18); } v8 = *(_DWORD *)(v3 + 4); v13 = 10; v14 = 29935; result = sub_43BFE0(v8, (int)&v13, 0xBu); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00415180) -------------------------------------------------------- signed int __thiscall sub_415180(int this, int a2, int a3) { int v3; // edi@1 int v4; // edi@4 __int16 v6; // dx@7 int v7; // eax@7 int v8; // eax@7 int v9; // ecx@7 int v10; // ST20_4@8 int v11; // edx@9 int v12; // eax@9 int v13; // ecx@9 int v14; // edx@9 int v15; // eax@9 int v16; // ecx@9 int v17; // eax@9 int v18; // eax@9 int v19; // ecx@11 int v20; // [sp+8h] [bp-148h]@1 int rgbValue; // [sp+Ch] [bp-144h]@7 int v22; // [sp+10h] [bp-140h]@7 char v23; // [sp+14h] [bp-13Ch]@7 char v24; // [sp+18h] [bp-138h]@9 int v25; // [sp+1Ch] [bp-134h]@9 int v26; // [sp+20h] [bp-130h]@9 int v27; // [sp+24h] [bp-12Ch]@9 int v28; // [sp+28h] [bp-128h]@9 int v29; // [sp+2Ch] [bp-124h]@9 int v30; // [sp+30h] [bp-120h]@9 int v31; // [sp+34h] [bp-11Ch]@9 int v32; // [sp+38h] [bp-118h]@9 char v33; // [sp+3Ch] [bp-114h]@11 __int16 v34; // [sp+3Dh] [bp-113h]@11 __int16 v35; // [sp+3Fh] [bp-111h]@7 int v36; // [sp+41h] [bp-10Fh]@7 int v37; // [sp+45h] [bp-10Bh]@7 char v38; // [sp+49h] [bp-107h]@7 __int16 v39; // [sp+4Ah] [bp-106h]@7 char v40; // [sp+4Ch] [bp-104h]@5 unsigned int v41; // [sp+14Ch] [bp-4h]@1 int v42; // [sp+150h] [bp+0h]@1 v41 = (unsigned int)&v42 ^ __security_cookie; v3 = this; v20 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; v4 = *(_DWORD *)v3; if ( !v4 ) { sprintf(&v40, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_JOIN_REQ, Error=%d", 12736); sub_446350(1, "Msg", "%s", &v40); return 0; } v6 = *(_WORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 4); v37 = *(_DWORD *)(a2 + 8); v22 = v37; v35 = v6; LOBYTE(v6) = *(_BYTE *)(a2 + 32); v36 = v7; rgbValue = v7; v38 = v6; v39 = 3137; v23 = v6; LOBYTE(v8) = sub_453250(v4 + 4684, &rgbValue); v9 = *(_DWORD *)(a2 + 4); if ( v8 ) { v11 = *(_DWORD *)(a2 + 8); v12 = *(_DWORD *)(a2 + 12); v25 = *(_DWORD *)(a2 + 4); v13 = *(_DWORD *)(a2 + 16); v26 = v11; v14 = *(_DWORD *)(a2 + 20); v27 = v12; v15 = *(_DWORD *)(a2 + 24); v28 = v13; v16 = *(_DWORD *)(a2 + 28); v29 = v14; v30 = v15; v17 = *(_DWORD *)v20; v31 = v16; v32 = 1; LOBYTE(v18) = sub_4559D0(v17 + 4684, &v24); if ( !v18 ) { sprintf( &v40, "ERROR - fc_NC_GUILD_DB_MEMBER_JOIN_REQ - SetGuildHistory, (nGuildNo=%d), (nCharNo=%d), (nMsgType=%d)", v25, v26, v32); sub_446350(1, "Msg", "%s", &v40); } } else { v10 = *(_DWORD *)(a2 + 8); v39 = 3205; sprintf(&v40, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_JOIN_REQ, GuildNo=%d, CharNo=%d", v9, v10); sub_446350(1, "Msg", "%s", &v40); } v34 = 29802; v19 = *(_DWORD *)(v20 + 4); v33 = 15; return sub_43BFE0(v19, (int)&v33, 0x10u); } // 4DE38C: using guessed type int __security_cookie; //----- (00415390) -------------------------------------------------------- signed int __thiscall sub_415390(int this, int a2, int a3) { int v3; // edi@1 int v4; // edx@4 int v6; // ecx@7 int v7; // eax@7 int v8; // eax@7 int v9; // ecx@7 int v10; // ST20_4@8 int v11; // edx@9 int v12; // eax@9 int v13; // edx@9 int v14; // ecx@9 int v15; // eax@9 int v16; // eax@9 int v17; // ecx@11 int rgbValue; // [sp+8h] [bp-144h]@7 int v19; // [sp+Ch] [bp-140h]@7 char v20; // [sp+14h] [bp-138h]@9 int v21; // [sp+18h] [bp-134h]@9 int v22; // [sp+1Ch] [bp-130h]@9 int v23; // [sp+20h] [bp-12Ch]@9 int v24; // [sp+24h] [bp-128h]@9 int v25; // [sp+28h] [bp-124h]@9 int v26; // [sp+2Ch] [bp-120h]@9 int v27; // [sp+30h] [bp-11Ch]@9 int v28; // [sp+34h] [bp-118h]@9 char v29; // [sp+38h] [bp-114h]@11 __int16 v30; // [sp+39h] [bp-113h]@11 __int16 v31; // [sp+3Bh] [bp-111h]@7 int v32; // [sp+3Dh] [bp-10Fh]@7 int v33; // [sp+41h] [bp-10Bh]@7 __int16 v34; // [sp+45h] [bp-107h]@7 char v35; // [sp+48h] [bp-104h]@5 unsigned int v36; // [sp+148h] [bp-4h]@1 int v37; // [sp+14Ch] [bp+0h]@1 v36 = (unsigned int)&v37 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; v4 = *(_DWORD *)v3; if ( !*(_DWORD *)v3 ) { sprintf(&v35, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_LEAVE_REQ, Error=%d", 12736); sub_446350(1, "Msg", "%s", &v35); return 0; } v6 = *(_DWORD *)(a2 + 8); v31 = *(_WORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 4); v33 = v6; v19 = v6; v32 = v7; rgbValue = v7; v34 = 3137; LOBYTE(v8) = sub_453310(v4 + 4684, &rgbValue); v9 = *(_DWORD *)(a2 + 4); if ( v8 ) { v11 = *(_DWORD *)(a2 + 8); v23 = *(_DWORD *)(a2 + 12); v12 = *(_DWORD *)(a2 + 24); v22 = v11; v13 = *(_DWORD *)(a2 + 20); v21 = v9; v14 = *(_DWORD *)(a2 + 16); v26 = v12; v15 = *(_DWORD *)v3; v25 = v13; v24 = v14; v27 = *(_DWORD *)(a2 + 28); v28 = 2; LOBYTE(v16) = sub_4559D0(v15 + 4684, &v20); if ( !v16 ) { sprintf( &v35, "ERROR - fc_NC_GUILD_DB_MEMBER_LEAVE_REQ - SetGuildHistory, (nGuildNo=%d), (nCharNo=%d), (nMsgType=%d)", v21, v22, v28); sub_446350(1, "Msg", "%s", &v35); } } else { v10 = *(_DWORD *)(a2 + 8); v34 = 3206; sprintf(&v35, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_LEAVE_REQ, GuildNo=%d, CharNo=%d", v9, v10); sub_446350(1, "Msg", "%s", &v35); } v17 = *(_DWORD *)(v3 + 4); v29 = 14; v30 = 29804; return sub_43BFE0(v17, (int)&v29, 0xFu); } // 4DE38C: using guessed type int __security_cookie; //----- (00415580) -------------------------------------------------------- signed int __thiscall sub_415580(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // eax@2 int v7; // eax@2 char v8; // cl@3 int v9; // eax@4 int v10; // ST1C_4@5 int v11; // ST18_4@5 int v12; // ecx@6 int rgbValue; // [sp+8h] [bp-1A4h]@2 char v14[68]; // [sp+10h] [bp-19Ch]@3 char v15; // [sp+54h] [bp-158h]@6 __int16 v16; // [sp+55h] [bp-157h]@6 __int16 v17; // [sp+57h] [bp-155h]@2 int v18; // [sp+59h] [bp-153h]@2 int v19; // [sp+5Dh] [bp-14Fh]@2 __int16 v20; // [sp+61h] [bp-14Bh]@2 char v21; // [sp+64h] [bp-148h]@5 unsigned int v22; // [sp+1A8h] [bp-4h]@1 int v23; // [sp+1ACh] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 8); v17 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v20 = 3137; v18 = v6; rgbValue = v6; v19 = v5; v7 = a2 + 14; do { v8 = *(_BYTE *)v7; *(&v14[v7 - 14] - a2) = *(_BYTE *)v7; ++v7; } while ( v8 ); LOBYTE(v9) = sub_4534E0(*(_DWORD *)v3 + 4684, &rgbValue); if ( !v9 ) { v10 = *(_DWORD *)(a2 + 8); v11 = *(_DWORD *)(a2 + 4); v20 = 3208; sprintf( &v21, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_INTRO_REQ, GuildNo=%d, CharNo=%d, MemberIntro=%s", v11, v10, a2 + 14); sub_446350(1, "Msg", "%s", &v21); } v16 = 29806; v12 = *(_DWORD *)(v3 + 4); v15 = 14; result = sub_43BFE0(v12, (int)&v15, 0xFu); } return result; } // 4DE38C: using guessed type int __security_cookie; // 415580: using guessed type char var_19C[68]; //----- (00415690) -------------------------------------------------------- signed int __thiscall sub_415690(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // eax@2 int v7; // eax@2 int v8; // ecx@4 int v9; // edx@4 int v10; // eax@4 int v11; // eax@4 int v12; // ecx@6 int v13; // eax@6 int v14; // eax@6 int v15; // edx@8 int v16; // ecx@8 int v17; // edi@8 int v18; // edx@8 int v19; // eax@8 int rgbValue; // [sp+8h] [bp-124h]@2 int v21; // [sp+Ch] [bp-120h]@2 unsigned __int8 v22; // [sp+10h] [bp-11Ch]@3 int v23; // [sp+14h] [bp-118h]@4 int v24; // [sp+18h] [bp-114h]@4 int v25; // [sp+1Ch] [bp-110h]@4 int v26; // [sp+20h] [bp-10Ch]@4 unsigned __int8 v27; // [sp+24h] [bp-108h]@5 char v28; // [sp+28h] [bp-104h]@3 unsigned int v29; // [sp+128h] [bp-4h]@1 int v30; // [sp+12Ch] [bp+0h]@1 v29 = (unsigned int)&v30 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)v3 + 4684; v21 = v5; LOBYTE(v7) = sub_452670(v6, &rgbValue); if ( !v7 ) { sprintf( &v28, "FAILED, fc_NC_GUILD_DB_RESULT_WRITE_CMD-SetGuildFame(nRet=%d), nGuildNo=%d, nFame=%d", v22, rgbValue, v21); sub_446350(1, "Msg", "%s", &v28); } v8 = *(_DWORD *)(a2 + 14); v9 = *(_DWORD *)(a2 + 2); v24 = *(_DWORD *)(a2 + 10); v10 = *(_DWORD *)v3; v25 = v8; v23 = v9; v26 = *(_DWORD *)(a2 + 18); LOBYTE(v11) = sub_452E10(v10 + 4684, &v23); if ( !v11 ) { sprintf( &v28, "FAILED, fc_NC_GUILD_DB_RESULT_WRITE_CMD-SetGuildWarResult(nRet=%d), nGuildNo=%d, nWin=%d, nLose=%d, nDraw=%d", v27, v23, v24, v25, v26); sub_446350(1, "Msg", "%s", &v28); } v12 = *(_DWORD *)(a2 + 26); rgbValue = *(_DWORD *)(a2 + 22); v13 = *(_DWORD *)v3 + 4684; v21 = v12; LOBYTE(v14) = sub_452670(v13, &rgbValue); if ( !v14 ) { sprintf( &v28, "FAILED, fc_NC_GUILD_DB_RESULT_WRITE_CMD-SetGuildFame(nRet=%d), nGuildNo=%d, nFame=%d", v22, rgbValue, v21); sub_446350(1, "Msg", "%s", &v28); } v15 = *(_DWORD *)(a2 + 22); v16 = *(_DWORD *)(a2 + 34); v17 = *(_DWORD *)v3; v24 = *(_DWORD *)(a2 + 30); v23 = v15; v18 = *(_DWORD *)(a2 + 38); v25 = v16; v26 = v18; LOBYTE(v19) = sub_452E10(v17 + 4684, &v23); if ( !v19 ) { sprintf( &v28, "FAILED, fc_NC_GUILD_DB_RESULT_WRITE_CMD-SetGuildWarResult(nRet=%d), nGuildNo=%d, nWin=%d, nLose=%d, nDraw=%d", v27, v23, v24, v25, v26); sub_446350(1, "Msg", "%s", &v28); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004158E0) -------------------------------------------------------- signed int __thiscall sub_4158E0(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@1 signed int result; // eax@1 int v6; // ebx@4 char *v7; // edi@5 unsigned __int16 v8; // ax@6 int v9; // ecx@6 int v10; // ecx@21 int v11; // eax@21 int i; // edi@23 signed int v13; // esi@26 unsigned int v14; // [sp-10h] [bp-24D0h]@1 char v15; // [sp+0h] [bp-24C0h]@24 char v16; // [sp+8h] [bp-24B8h]@24 int rgbValue; // [sp+Ch] [bp-24B4h]@21 int v18; // [sp+14h] [bp-24ACh]@1 int v19; // [sp+18h] [bp-24A8h]@5 char TargetValue; // [sp+1Eh] [bp-24A2h]@24 char v21; // [sp+1Fh] [bp-24A1h]@24 char v22; // [sp+20h] [bp-24A0h]@2 __int16 v23; // [sp+25h] [bp-249Bh]@2 int v24; // [sp+27h] [bp-2499h]@4 unsigned __int8 v25; // [sp+2Bh] [bp-2495h]@7 int v26[9]; // [sp+2Ch] [bp-2494h]@18 char v27; // [sp+50h] [bp-2470h]@16 char v28[154]; // [sp+51h] [bp-246Fh]@10 int v29; // [sp+EBh] [bp-23D5h]@21 __int16 v30; // [sp+EFh] [bp-23D1h]@25 char v31; // [sp+2024h] [bp-49Ch]@3 char v32; // [sp+2124h] [bp-39Ch]@22 int v33; // [sp+2224h] [bp-29Ch]@2 int v34; // [sp+2228h] [bp-298h]@4 int v35; // [sp+222Ch] [bp-294h]@4 char v36; // [sp+2234h] [bp-28Ch]@5 unsigned int v37; // [sp+24B0h] [bp-10h]@1 int v38; // [sp+24BCh] [bp-4h]@2 int v39; // [sp+24C0h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v14 = (unsigned int)&v39 ^ __security_cookie; v3 = a2; v4 = this; v18 = a2; result = sub_43B000(this, a2); if ( !result ) return result; sub_44E180((int)&v22); v38 = 0; memset(&v23, 0, 0xCCu); v23 = 3392; sub_44E310((int)&v22, 0x7486u, 0xCCu, 0); memset(&v33, 0, 0x28Cu); if ( !sub_453670(*(_DWORD *)v4 + 4684, (int)&v33) ) { sprintf(&v31, "ERROR - fc_NC_GUILD_TOURNAMENT_DB_GET_REQ, nGTNo=%d, nRet=%d", *(_DWORD *)(a2 + 2), v33, v14); sub_446350(1, "Msg", "%s", &v31); v23 = 3393; goto LABEL_26; } v24 = v34; v6 = 1; if ( v35 <= 0 ) goto LABEL_21; v7 = &v36; v19 = v35; do { v8 = *((_WORD *)v7 - 2); v9 = *(_DWORD *)v7; if ( !v8 ) { v25 = *(_DWORD *)v7; goto LABEL_19; } if ( v25 <= (unsigned __int8)v6 ) { if ( (unsigned __int16)(v8 - 1000) <= 0x3E7u ) { *(_DWORD *)(&v28[4 * (unsigned __int16)(v8 - 1000)] + (unsigned __int16)(v8 - 1000)) = v9; goto LABEL_19; } LABEL_17: if ( v8 < 0xFA0u ) goto LABEL_19; goto LABEL_18; } if ( v8 < 0x7D0u ) { if ( v8 < 0xBB8u ) goto LABEL_17; } else { if ( v8 < 0xBB8u ) { *(_DWORD *)(&v28[4 * (unsigned __int16)(v8 - 2000)] + (unsigned __int16)(v8 - 2000)) = v9; goto LABEL_19; } } if ( v8 < 0xFA0u ) { *(&v27 + 4 * (unsigned __int16)(v8 - 3000) + (unsigned __int16)(v8 - 3000)) = v9; goto LABEL_19; } LABEL_18: v26[(unsigned __int16)(v8 - 4000)] = v9; LABEL_19: v6 = 1; v7 += 8; --v19; } while ( v19 ); v3 = v18; LABEL_21: v10 = *(_DWORD *)(v3 + 2); v11 = *(_DWORD *)v4 + 4684; v29 = 0; rgbValue = v10; if ( !sub_453990(v11, &rgbValue) ) { sprintf(&v32, "ERROR - CPFsCharacter::fc_NC_GUILD_TOURNAMENT_DB_GET_REQ, GTNo(%d)", *(_DWORD *)(v3 + 2), v14); sub_446350(v6, "Msg", "%s", &v32); } for ( i = 0; sub_44E4A0(*(_DWORD *)v4 + 4684); i += v6 ) { sub_44E570(*(_DWORD *)v4 + 4684, &v16); sub_44E5A0(*(_DWORD *)v4 + 4684, &v15); sub_44E510(*(_DWORD *)v4 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v4 + 4684, &v21); } sub_44E4D0(*(_DWORD *)v4 + 4684); v30 = i; LABEL_26: v13 = sub_43BFB0(*(_DWORD *)(v4 + 4), (int)&v22); v38 = -1; nullsub_1(&v22); return v13; } // 4DE38C: using guessed type int __security_cookie; // 4158E0: using guessed type char var_246F[154]; // 4158E0: using guessed type int var_2494[9]; //----- (00415C00) -------------------------------------------------------- signed int __thiscall sub_415C00(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // eax@2 int v6; // edi@2 signed int v7; // eax@2 char *v8; // ecx@2 int v9; // esi@2 int v10; // edx@3 int v11; // eax@6 int v12; // ST18_4@7 signed int v13; // esi@8 unsigned int v14; // [sp-10h] [bp-2610h]@1 int v15; // [sp+0h] [bp-2600h]@1 char v16; // [sp+8h] [bp-25F8h]@2 __int16 v17; // [sp+Dh] [bp-25F3h]@2 int v18; // [sp+Fh] [bp-25F1h]@2 char rgbValue; // [sp+200Ch] [bp-5F4h]@2 int v20; // [sp+2010h] [bp-5F0h]@2 int v21; // [sp+2014h] [bp-5ECh]@6 char v22; // [sp+201Ch] [bp-5E4h]@2 char v23; // [sp+24F0h] [bp-110h]@7 unsigned int v24; // [sp+25F0h] [bp-10h]@1 int v25; // [sp+25FCh] [bp-4h]@2 int v26; // [sp+2600h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v14 = (unsigned int)&v26 ^ __security_cookie; v3 = a2; v15 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v16); v5 = *(_DWORD *)(a2 + 4); v6 = 0; v17 = 3392; v25 = 0; v18 = v5; sub_44E310((int)&v16, 0x7498u, 6u, 0); memset(&rgbValue, 0, 0x4E4u); v20 = *(_DWORD *)(a2 + 4); v7 = 0; v8 = &v22; v9 = a2 + 9; do { v10 = *(_DWORD *)v9; if ( *(_DWORD *)v9 ) { *((_WORD *)v8 - 2) = v7 + 2000; v3 = a2; *(_DWORD *)v8 = v10; ++v6; v8 += 8; } ++v7; v9 += 5; } while ( v7 < 16 ); v11 = *(_DWORD *)v15 + 4684; v21 = v6; if ( !sub_4535A0(v11, &rgbValue) ) { v12 = *(_DWORD *)(v3 + 4); v17 = 3394; sprintf(&v23, "ERROR - fc_NC_GUILD_TOURNAMENT_DB_SET_MATCH_REQ , nGTNo=%d", v12, v14); sub_446350(1, "Msg", "%s", &v23); } v13 = sub_43BFB0(*(_DWORD *)(v15 + 4), (int)&v16); v25 = -1; nullsub_1(&v16); result = v13; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00415D80) -------------------------------------------------------- signed int __thiscall sub_415D80(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 signed int v6; // eax@2 char *v7; // ecx@2 int v8; // edx@2 int v9; // eax@4 int v10; // ST18_4@5 signed int v11; // esi@6 unsigned int v12; // [sp-10h] [bp-2608h]@1 char v13; // [sp+0h] [bp-25F8h]@2 __int16 v14; // [sp+5h] [bp-25F3h]@2 int v15; // [sp+7h] [bp-25F1h]@2 char rgbValue; // [sp+2004h] [bp-5F4h]@2 int v17; // [sp+2008h] [bp-5F0h]@2 int v18; // [sp+200Ch] [bp-5ECh]@4 char v19; // [sp+2014h] [bp-5E4h]@2 char v20; // [sp+24E8h] [bp-110h]@5 unsigned int v21; // [sp+25E8h] [bp-10h]@1 int v22; // [sp+25F4h] [bp-4h]@2 int v23; // [sp+25F8h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v12 = (unsigned int)&v23 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v13); v5 = *(_DWORD *)(a2 + 4); v14 = 3392; v22 = 0; v15 = v5; sub_44E310((int)&v13, 0x749Au, 6u, 0); memset(&rgbValue, 0, 0x4E4u); v17 = *(_DWORD *)(a2 + 4); v6 = 0; v7 = &v19; v8 = a2 + 8; do { *((_WORD *)v7 - 2) = v6 + 4000; *(_DWORD *)v7 = *(_DWORD *)v8; ++v6; v7 += 8; v8 += 4; } while ( v6 < 9 ); v9 = *(_DWORD *)v3 + 4684; v18 = 9; if ( !sub_4535A0(v9, &rgbValue) ) { v10 = *(_DWORD *)(a2 + 4); v14 = 3394; sprintf(&v20, "ERROR - fc_NC_GUILD_TOURNAMENT_DB_SET_MATCH_REQ , nGTNo=%d", v10, v12); sub_446350(1, "Msg", "%s", &v20); } v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v13); v22 = -1; nullsub_1(&v13); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00415EF0) -------------------------------------------------------- signed int __thiscall sub_415EF0(int this, int a2, int a3) { signed int result; // eax@1 int v4; // eax@2 signed int v5; // edx@2 char *v6; // ecx@2 char *v7; // eax@2 int v8; // esi@2 int v9; // ebx@3 signed int v10; // esi@6 unsigned int v11; // [sp-10h] [bp-2614h]@1 int v12; // [sp+0h] [bp-2604h]@1 signed int v13; // [sp+8h] [bp-25FCh]@2 char v14; // [sp+Ch] [bp-25F8h]@2 __int16 v15; // [sp+11h] [bp-25F3h]@2 int v16; // [sp+13h] [bp-25F1h]@2 int rgbValue; // [sp+2010h] [bp-5F4h]@2 int v18; // [sp+2014h] [bp-5F0h]@2 int v19; // [sp+2018h] [bp-5ECh]@4 __int16 v20; // [sp+201Ch] [bp-5E8h]@2 int v21; // [sp+2020h] [bp-5E4h]@2 char v22; // [sp+2024h] [bp-5E0h]@2 char v23; // [sp+2028h] [bp-5DCh]@2 char v24; // [sp+24F4h] [bp-110h]@5 unsigned int v25; // [sp+25F4h] [bp-10h]@1 int v26; // [sp+2600h] [bp-4h]@2 int v27; // [sp+2604h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v11 = (unsigned int)&v27 ^ __security_cookie; v12 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v14); v16 = *(_DWORD *)(a2 + 4); v26 = 0; v15 = 3392; sub_44E310((int)&v14, 0x7488u, 6u, 0); memset(&rgbValue, 0, 0x4E4u); v4 = *(_DWORD *)(a2 + 4); v21 = *(_BYTE *)(a2 + 8); v18 = v4; v20 = 0; v5 = 0; v13 = 1; v6 = &v23; v7 = &v22; v8 = a2 + 9; do { v13 += 2; *(_WORD *)v7 = v5 + 1000; *(_DWORD *)v6 = *(_DWORD *)(v8 + 1); v9 = *(_BYTE *)v8; *((_WORD *)v7 + 4) = v5 + 3000; *((_DWORD *)v6 + 2) = v9; ++v5; v7 += 16; v6 += 16; v8 += 5; } while ( v5 < 31 ); v19 = v13; if ( !sub_4535A0(*(_DWORD *)v12 + 4684, &rgbValue) ) { v15 = 3394; sprintf(&v24, "ERROR - fc_NC_GUILD_TOURNAMENT_DB_SET_REQ, nGTNo=%d, nRet=%d", *(_DWORD *)(a2 + 4), rgbValue, v11); sub_446350(1, "Msg", "%s", &v24); } v10 = sub_43BFB0(*(_DWORD *)(v12 + 4), (int)&v14); v26 = -1; nullsub_1(&v14); result = v10; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004160D0) -------------------------------------------------------- signed int __thiscall sub_4160D0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 char v6; // dl@2 int v7; // ecx@2 __int16 v8; // dx@2 int v9; // eax@2 int v10; // ecx@3 int v11; // ST24_4@3 int v12; // ecx@4 int v13; // eax@4 int v14; // edx@4 signed int v15; // esi@7 unsigned int v16; // [sp-Ch] [bp-4138h]@1 char v17; // [sp+0h] [bp-412Ch]@4 int v18; // [sp+5h] [bp-4127h]@4 int v19; // [sp+9h] [bp-4123h]@4 int v20; // [sp+Dh] [bp-411Fh]@4 int v21; // [sp+11h] [bp-411Bh]@4 char v22; // [sp+2004h] [bp-2128h]@2 int v23; // [sp+2009h] [bp-2123h]@2 __int16 v24; // [sp+200Dh] [bp-211Fh]@2 char v25; // [sp+200Fh] [bp-211Dh]@2 __int16 v26; // [sp+2010h] [bp-211Ch]@2 int rgbValue; // [sp+4008h] [bp-124h]@2 __int16 v28; // [sp+400Ch] [bp-120h]@2 int v29; // [sp+4010h] [bp-11Ch]@2 int v30; // [sp+4014h] [bp-118h]@2 int v31; // [sp+4018h] [bp-114h]@2 char v32; // [sp+401Ch] [bp-110h]@3 unsigned int v33; // [sp+411Ch] [bp-10h]@1 int v34; // [sp+4128h] [bp-4h]@2 int v35; // [sp+412Ch] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v16 = (unsigned int)&v35 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v22); v5 = *(_WORD *)(a2 + 6); v6 = *(_BYTE *)(a2 + 8); v23 = *(_DWORD *)(a2 + 2); v24 = v5; v34 = 0; v25 = v6; v26 = 3392; sub_44E310((int)&v22, 0x748Fu, 9u, 0); v7 = *(_DWORD *)(a2 + 2); v8 = *(_WORD *)(a2 + 6) + 3000; v29 = *(_BYTE *)(a2 + 8); v9 = *(_DWORD *)v3; v28 = v8; rgbValue = v7; v30 = *(_DWORD *)(a2 + 9); v31 = 0; if ( sub_453F90(v9 + 4684, &rgbValue) ) { sub_44E180((int)&v17); LOBYTE(v34) = 1; sub_44E310((int)&v17, 0x4AEu, 0x10u, 0); v12 = *(_DWORD *)(a2 + 9); v13 = *(_WORD *)(a2 + 6); v18 = *(_DWORD *)(a2 + 2); v14 = *(_BYTE *)(a2 + 8); v20 = v12; v19 = v13; v21 = v14; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v17); LOBYTE(v34) = 0; nullsub_1(&v17); } else { v10 = *(_WORD *)(a2 + 6); v11 = *(_DWORD *)(a2 + 9); v26 = 3394; sprintf( &v32, "ERROR - fc_NC_GUILD_TOURNAMENT_DB_SET_RESULT_REQ , nGTNo=%d, nTeamPosition=%d, nResult=%d, nNo=%d, nRet=%d", rgbValue, v10, *(_BYTE *)(a2 + 8), v11, v31, v16); sub_446350(1, "Msg", "%s", &v32); } v15 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v22); v34 = -1; nullsub_1(&v22); result = v15; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004162C0) -------------------------------------------------------- signed int __thiscall sub_4162C0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // ecx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // edi@2 int v9; // eax@3 int v10; // ecx@4 char v11; // [sp+8h] [bp-134h]@4 __int16 v12; // [sp+9h] [bp-133h]@4 __int16 v13; // [sp+Bh] [bp-131h]@2 int v14; // [sp+Dh] [bp-12Fh]@2 __int16 v15; // [sp+11h] [bp-12Bh]@2 int v16; // [sp+13h] [bp-129h]@2 __int16 v17; // [sp+17h] [bp-125h]@2 char v18; // [sp+1Ch] [bp-120h]@3 int rgbValue; // [sp+11Ch] [bp-20h]@2 int v20; // [sp+120h] [bp-1Ch]@2 int v21; // [sp+124h] [bp-18h]@2 __int64 v22; // [sp+128h] [bp-14h]@2 int v23; // [sp+130h] [bp-Ch]@2 int v24; // [sp+134h] [bp-8h]@2 unsigned int v25; // [sp+138h] [bp-4h]@1 int v26; // [sp+13Ch] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 4); v6 = *(_WORD *)(a2 + 8); v13 = *(_WORD *)(a2 + 2); v17 = 3392; v20 = 0; v21 = 0; v22 = 0i64; rgbValue = 0; v23 = 0; v24 = 0; v7 = *(_DWORD *)v3; v8 = *(_DWORD *)(a2 + 10); v14 = v5; v20 = v5; v15 = v6; v16 = v8; v21 = 1; v22 = (unsigned __int16)(v6 + 1000); HIDWORD(v22) = v8; if ( !sub_4535A0(v7 + 4684, &rgbValue) ) { v9 = *(_DWORD *)(a2 + 4); v17 = 3397; sprintf( &v18, "ERROR - fc_NC_GUILD_TOURNAMENT_DB_JOIN_REQ, nGTNo=%d, nType=%d, nData=%d nRet=%d", v9, (unsigned __int16)v22, HIDWORD(v22), rgbValue); sub_446350(1, "Msg", "%s", &v18); } v10 = *(_DWORD *)(v3 + 4); v11 = 16; v12 = 29834; result = sub_43BFE0(v10, (int)&v11, 0x11u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00416400) -------------------------------------------------------- signed int __thiscall sub_416400(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 char v5; // dl@2 int v6; // edx@2 int v7; // eax@2 int v8; // ST18_4@3 signed int v9; // esi@4 unsigned int v10; // [sp-Ch] [bp-213Ch]@1 char v11; // [sp+0h] [bp-2130h]@2 __int16 v12; // [sp+5h] [bp-212Bh]@2 int v13; // [sp+7h] [bp-2129h]@2 char v14; // [sp+Bh] [bp-2125h]@2 char v15; // [sp+2004h] [bp-12Ch]@3 int rgbValue; // [sp+2104h] [bp-2Ch]@2 int v17; // [sp+2108h] [bp-28h]@2 int v18; // [sp+210Ch] [bp-24h]@2 int v19; // [sp+2110h] [bp-20h]@2 int v20; // [sp+2114h] [bp-1Ch]@2 int v21; // [sp+2118h] [bp-18h]@2 int v22; // [sp+211Ch] [bp-14h]@2 unsigned int v23; // [sp+2120h] [bp-10h]@1 int v24; // [sp+212Ch] [bp-4h]@2 int v25; // [sp+2130h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v10 = (unsigned int)&v25 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v11); v5 = *(_BYTE *)(a2 + 6); v13 = *(_DWORD *)(a2 + 2); v24 = 0; v12 = 3392; v14 = v5; sub_44E310((int)&v11, 0x748Cu, 8u, 0); v6 = *(_BYTE *)(a2 + 6); v17 = 0; v18 = 0; v19 = 0; v20 = 0; rgbValue = 0; v21 = 0; v22 = 0; v17 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)v3; LOWORD(v19) = 0; v20 = v6; v18 = 1; if ( !sub_4535A0(v7 + 4684, &rgbValue) ) { v8 = *(_DWORD *)(a2 + 2); v12 = 3394; sprintf(&v15, "ERROR - fc_NC_GUILD_TOURNAMENT_DB_SET_TYPE_REQ, nGTNo=%d, nRet=%d", v8, rgbValue, v10); sub_446350(1, "Msg", "%s", &v15); } v9 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v11); v24 = -1; nullsub_1(&v11); result = v9; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00416560) -------------------------------------------------------- signed int __thiscall sub_416560(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // eax@2 int v7; // eax@2 int rgbValue; // [sp+8h] [bp-8h]@2 __int16 v9; // [sp+Ch] [bp-4h]@2 v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)v3 + 4684; v9 = v5; LOBYTE(v7) = sub_464480(v6, &rgbValue); if ( v7 ) { OutputDebugStringA("p_Prison_UpdateCharPrisonMin OK\n"); result = 1; } else { OutputDebugStringA("p_Prison_UpdateCharPrisonMin FAIL\n"); result = 1; } } return result; } //----- (004165E0) -------------------------------------------------------- signed int __thiscall sub_4165E0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // eax@2 int v7; // eax@2 int v8; // edx@3 int v9; // eax@3 int v10; // ecx@3 const void *v11; // esi@3 int v12; // ecx@8 int rgbValue; // [sp+8h] [bp-B0h]@2 int v14; // [sp+Ch] [bp-ACh]@3 int v15; // [sp+10h] [bp-A8h]@3 int v16; // [sp+14h] [bp-A4h]@3 int v17; // [sp+18h] [bp-A0h]@3 char v18; // [sp+1Ch] [bp-9Ch]@3 char v19; // [sp+5Ch] [bp-5Ch]@8 __int16 v20; // [sp+5Dh] [bp-5Bh]@8 __int16 v21; // [sp+5Fh] [bp-59h]@2 __int16 v22; // [sp+61h] [bp-57h]@3 int v23; // [sp+63h] [bp-55h]@3 int v24; // [sp+67h] [bp-51h]@7 int v25; // [sp+6Bh] [bp-4Dh]@7 int v26; // [sp+6Fh] [bp-49h]@7 char v27; // [sp+73h] [bp-45h]@7 unsigned int v28; // [sp+B4h] [bp-4h]@1 int v29; // [sp+B8h] [bp+0h]@1 v28 = (unsigned int)&v29 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 4); v21 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)v3 + 4684; rgbValue = v5; v7 = sub_464500(v6, &rgbValue); if ( v7 == 1 ) { v8 = v15; v22 = 3504; v9 = v16; v23 = v14; v10 = v17; v11 = &v18; } else { if ( !v7 ) { v22 = 3506; LABEL_8: v12 = *(_DWORD *)(v3 + 4); v19 = 86; v20 = 31759; return sub_43BFE0(v12, (int)&v19, 0x57u); } v8 = dword_4AF298; v22 = 3504; v9 = dword_4AF29C; v23 = dword_4AF294; v10 = dword_4AF2A0; v11 = "Be Nonexistent Remark"; } v26 = v10; v24 = v8; v25 = v9; memcpy(&v27, v11, 0x40u); goto LABEL_8; } return result; } // 4AF294: using guessed type int dword_4AF294; // 4AF298: using guessed type int dword_4AF298; // 4AF29C: using guessed type int dword_4AF29C; // 4AF2A0: using guessed type int dword_4AF2A0; // 4DE38C: using guessed type int __security_cookie; //----- (004166F0) -------------------------------------------------------- signed int __thiscall sub_4166F0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 signed int v5; // esi@2 char v6; // [sp+0h] [bp-2014h]@2 unsigned int v7; // [sp+2004h] [bp-10h]@1 int v8; // [sp+2010h] [bp-4h]@2 int v9; // [sp+2014h] [bp+0h]@1 v7 = (unsigned int)&v9 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { *(_DWORD *)(a2 + 40) = timeGetTime(); *(_DWORD *)(a2 + 44) = timeGetTime(); sub_44E180((int)&v6); v8 = 0; sub_44E310((int)&v6, 0x812u, 0x56u, (const void *)(a2 + 2)); v5 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v6); v8 = -1; nullsub_1(&v6); result = v5; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004167B0) -------------------------------------------------------- signed int __thiscall sub_4167B0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 signed int v5; // esi@2 char v6; // [sp+0h] [bp-2014h]@2 unsigned int v7; // [sp+2004h] [bp-10h]@1 int v8; // [sp+2010h] [bp-4h]@2 int v9; // [sp+2014h] [bp+0h]@1 v7 = (unsigned int)&v9 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { *(_DWORD *)(a2 + 80) = timeGetTime(); *(_DWORD *)(a2 + 84) = timeGetTime(); sub_44E180((int)&v6); v8 = 0; sub_44E310((int)&v6, 0x813u, 0x7Eu, (const void *)(a2 + 2)); v5 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v6); v8 = -1; nullsub_1(&v6); result = v5; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00416870) -------------------------------------------------------- signed int __thiscall sub_416870(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 signed int v5; // esi@2 char v6; // [sp+0h] [bp-2014h]@2 unsigned int v7; // [sp+2004h] [bp-10h]@1 int v8; // [sp+2010h] [bp-4h]@2 int v9; // [sp+2014h] [bp+0h]@1 v7 = (unsigned int)&v9 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { *(_DWORD *)(a2 + 32) = timeGetTime(); *(_DWORD *)(a2 + 36) = timeGetTime(); sub_44E180((int)&v6); v8 = 0; sub_44E310((int)&v6, 0x814u, 0x26u, (const void *)(a2 + 2)); v5 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v6); v8 = -1; nullsub_1(&v6); result = v5; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00416930) -------------------------------------------------------- signed int __thiscall sub_416930(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 signed int v5; // esi@2 char v6; // [sp+0h] [bp-2014h]@2 unsigned int v7; // [sp+2004h] [bp-10h]@1 int v8; // [sp+2010h] [bp-4h]@2 int v9; // [sp+2014h] [bp+0h]@1 v7 = (unsigned int)&v9 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { *(_DWORD *)(a2 + 52) = timeGetTime(); *(_DWORD *)(a2 + 56) = timeGetTime(); sub_44E180((int)&v6); v8 = 0; sub_44E310((int)&v6, 0x815u, 0x3Au, (const void *)(a2 + 2)); v5 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v6); v8 = -1; nullsub_1(&v6); result = v5; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004169F0) -------------------------------------------------------- signed int __thiscall sub_4169F0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 unsigned __int16 v6; // dx@2 __int16 v7; // ax@2 unsigned int v8; // eax@2 int v9; // edx@2 unsigned int v10; // eax@2 int v11; // ST18_4@2 int v12; // eax@4 int v13; // edx@4 int v14; // ecx@4 int v15; // eax@4 int v16; // edx@4 int v17; // eax@4 char v18; // [sp+0h] [bp-2144h]@4 int v19; // [sp+5h] [bp-213Fh]@4 __int16 v20; // [sp+9h] [bp-213Bh]@4 int v21; // [sp+Bh] [bp-2139h]@4 int v22; // [sp+Fh] [bp-2135h]@4 int v23; // [sp+13h] [bp-2131h]@4 int v24; // [sp+17h] [bp-212Dh]@4 int v25; // [sp+1Bh] [bp-2129h]@4 int rgbValue; // [sp+2004h] [bp-140h]@2 int v27; // [sp+2008h] [bp-13Ch]@2 unsigned __int16 v28; // [sp+200Ch] [bp-138h]@2 __int64 v29; // [sp+2010h] [bp-134h]@2 __int64 v30; // [sp+2018h] [bp-12Ch]@2 __int64 v31; // [sp+2020h] [bp-124h]@2 __int64 v32; // [sp+2028h] [bp-11Ch]@2 char v33; // [sp+2034h] [bp-110h]@3 unsigned int v34; // [sp+2134h] [bp-10h]@1 int v35; // [sp+2140h] [bp-4h]@4 int v36; // [sp+2144h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 16); v6 = *(_WORD *)(a2 + 20); rgbValue = *(_DWORD *)(a2 + 2); v29 = 0i64; v31 = 0i64; v27 = v5; v30 = 0i64; v32 = 0i64; v7 = *(_WORD *)(a2 + 22); v28 = v6; v29 = (unsigned __int16)((unsigned __int8)v7 + 2000); v8 = *(_DWORD *)(a2 + 22); v9 = *(_DWORD *)(a2 + 22) >> 13; WORD1(v29) = (*(_DWORD *)(a2 + 22) >> 8) & 0x1F; HIDWORD(v29) = v9 & 0x3F; LOWORD(v9) = *(_WORD *)(a2 + 26); v30 = v8 >> 25; WORD3(v29) = (v8 >> 19) & 0x3F; v10 = *(_DWORD *)(a2 + 26); v31 = (unsigned __int16)((unsigned __int8)v9 + 2000); WORD1(v31) = (v10 >> 8) & 0x1F; HIDWORD(v31) = (v10 >> 13) & 0x3F; v32 = v10 >> 25; v11 = *(_DWORD *)v3 + 4684; WORD3(v31) = (v10 >> 19) & 0x3F; if ( sub_459190(v11, &rgbValue) ) { sub_44E180((int)&v18); v35 = 0; sub_44E310((int)&v18, 0x439u, 0x1Au, 0); v12 = *(_DWORD *)(a2 + 2); v13 = *(_DWORD *)(a2 + 16); v20 = *(_WORD *)(a2 + 20); v14 = *(_DWORD *)(a2 + 26); v19 = v12; v15 = *(_DWORD *)(a2 + 30); v23 = v14; v21 = v13; v16 = *(_DWORD *)(a2 + 6); v22 = v15; v17 = *(_DWORD *)(a2 + 10); v24 = v16; v25 = v17; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v18); v35 = -1; nullsub_1(&v18); } else { sprintf( &v33, "FAILED, fc_NC_CHARGED_SETBUFF_CMD, nCharNo=%d, nBuffKey=%d, nBuffID=%d, ItemID=%d, ItemKey=%I64d", rgbValue, v27, v28, *(_WORD *)(a2 + 14), *(_DWORD *)(a2 + 6), *(_DWORD *)(a2 + 10)); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00416C40) -------------------------------------------------------- signed int __thiscall sub_416C40(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // eax@2 int v7; // eax@4 __int16 v8; // dx@4 int v9; // eax@4 char v10; // [sp+0h] [bp-2144h]@4 int v11; // [sp+5h] [bp-213Fh]@4 __int16 v12; // [sp+9h] [bp-213Bh]@4 int v13; // [sp+Bh] [bp-2139h]@4 int v14; // [sp+Fh] [bp-2135h]@4 int rgbValue; // [sp+2004h] [bp-140h]@2 int v16; // [sp+2008h] [bp-13Ch]@2 char v17; // [sp+2034h] [bp-110h]@3 unsigned int v18; // [sp+2134h] [bp-10h]@1 int v19; // [sp+2140h] [bp-4h]@4 int v20; // [sp+2144h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)v3 + 4684; v16 = v5; if ( sub_459280(v6, &rgbValue) ) { sub_44E180((int)&v10); v19 = 0; sub_44E310((int)&v10, 0x43Au, 0xEu, 0); v7 = *(_DWORD *)(a2 + 2); v8 = *(_WORD *)(a2 + 10); v13 = *(_DWORD *)(a2 + 6); v11 = v7; v9 = *(_DWORD *)(a2 + 12); v12 = v8; v14 = v9; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v10); v19 = -1; nullsub_1(&v10); } else { sprintf(&v17, "FAILED, fc_NC_CHARGED_RESETBUFF_CMD, nCharNo=%d, nBuffKey=%d", rgbValue, v16); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00416D70) -------------------------------------------------------- signed int __thiscall sub_416D70(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 signed __int16 v5; // di@2 int v6; // ecx@3 int v7; // edx@3 int v8; // eax@3 bool v9; // al@3 int v10; // ebx@3 int v11; // edx@11 int v12; // ecx@11 int v13; // eax@11 bool v14; // al@11 int v15; // eax@20 __int16 v16; // dx@20 signed int v17; // esi@20 int v18; // edx@21 __int16 v19; // ax@21 signed int v20; // edi@21 bool v21; // zf@21 int v22; // edx@22 int v23; // eax@22 __int16 v24; // cx@22 int v25; // ecx@23 int v26; // edx@23 __int16 v27; // ax@23 __int16 v28; // [sp+0h] [bp-4064h]@10 int v29; // [sp+4h] [bp-4060h]@10 int v30; // [sp+8h] [bp-405Ch]@1 char v31; // [sp+Ch] [bp-4058h]@21 int v32; // [sp+11h] [bp-4053h]@22 int v33; // [sp+15h] [bp-404Fh]@22 int v34; // [sp+19h] [bp-404Bh]@22 __int16 v35; // [sp+1Dh] [bp-4047h]@22 __int16 v36; // [sp+1Fh] [bp-4045h]@23 char v37; // [sp+2010h] [bp-2054h]@19 int v38; // [sp+2015h] [bp-204Fh]@20 __int16 v39; // [sp+2019h] [bp-204Bh]@20 __int16 v40; // [sp+201Bh] [bp-2049h]@20 __int16 v41; // [sp+201Dh] [bp-2047h]@20 int v42; // [sp+4014h] [bp-50h]@11 int v43; // [sp+401Ch] [bp-48h]@11 int v44; // [sp+4020h] [bp-44h]@11 __int16 v45; // [sp+4024h] [bp-40h]@11 int v46; // [sp+402Ch] [bp-38h]@11 int v47; // [sp+4030h] [bp-34h]@11 char v48; // [sp+4034h] [bp-30h]@12 int rgbValue; // [sp+403Ch] [bp-28h]@3 int v50; // [sp+4044h] [bp-20h]@3 int v51; // [sp+4048h] [bp-1Ch]@3 char v52; // [sp+404Ch] [bp-18h]@4 unsigned int v53; // [sp+4054h] [bp-10h]@1 int v54; // [sp+4060h] [bp-4h]@19 int v55; // [sp+4064h] [bp+0h]@1 v53 = (unsigned int)&v55 ^ __security_cookie; v3 = this; v30 = this; result = sub_43B000(this, a2); if ( result ) { v5 = 4234; if ( *(_BYTE *)(a2 + 20) ) { v6 = *(_DWORD *)(a2 + 10); v7 = *(_DWORD *)(a2 + 14); rgbValue = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)v3; v50 = v6; v51 = v7; v9 = sub_4627A0(v8 + 4684, &rgbValue); v10 = v9; if ( !v9 ) { switch ( v52 ) { case 1: v5 = 4227; break; case 2: v5 = 4228; break; case 3: v5 = 4229; break; } } } else { if ( sub_4038C0(*(_WORD *)(a2 + 18), a2 + 23, (int)&v29, (int)&v28) ) { v11 = *(_DWORD *)(a2 + 14); v12 = *(_DWORD *)(a2 + 10); v42 = *(_DWORD *)(a2 + 4); v45 = v28; v13 = *(_DWORD *)v3; v44 = v11; v43 = v12; v46 = v29; v47 = 0; v14 = sub_462840(v13 + 4684, &v42); v10 = v14; if ( !v14 ) { switch ( v48 ) { case 1: v5 = 4230; break; case 2: v5 = 4231; break; case 3: v5 = 4232; break; } } } else { v10 = 0; v5 = 4233; } } sub_44E180((int)&v37); v54 = 0; if ( v10 ) { v18 = *(_DWORD *)(a2 + 2); v19 = *(_WORD *)(a2 + 6); v40 = *(_WORD *)(a2 + 8); v38 = v18; v39 = v19; sub_44E310((int)&v37, 0x9007u, 8u, 0); v20 = sub_43BFB0(*(_DWORD *)(v30 + 4), (int)&v37); sub_44E180((int)&v31); v21 = *(_BYTE *)(a2 + 20) == 0; LOBYTE(v54) = 1; if ( v21 ) { sub_44E310((int)&v31, 0x459u, 0x10u, 0); v25 = *(_DWORD *)(a2 + 10); v26 = *(_DWORD *)(a2 + 14); v32 = *(_DWORD *)(a2 + 4); v27 = *(_WORD *)(a2 + 18); v33 = v25; v34 = v26; v35 = v27; v36 = v29; } else { sub_44E310((int)&v31, 0x45Au, 0xEu, 0); v22 = *(_DWORD *)(a2 + 10); v23 = *(_DWORD *)(a2 + 14); v32 = *(_DWORD *)(a2 + 4); v24 = *(_WORD *)(a2 + 18); v33 = v22; v34 = v23; v35 = v24; } if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v31); LOBYTE(v54) = 0; nullsub_1(&v31); v54 = -1; nullsub_1(&v37); result = v20; } else { v15 = *(_DWORD *)(a2 + 2); v16 = *(_WORD *)(a2 + 8); v39 = *(_WORD *)(a2 + 6); v38 = v15; v40 = v16; v41 = v5; sub_44E310((int)&v37, 0x9009u, 0xAu, 0); v17 = sub_43BFB0(*(_DWORD *)(v30 + 4), (int)&v37); v54 = -1; nullsub_1(&v37); result = v17; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00417070) -------------------------------------------------------- signed int __thiscall sub_417070(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 signed __int16 v5; // di@2 int v6; // ecx@3 int v7; // edx@3 int v8; // eax@3 bool v9; // al@3 int v10; // ebx@3 int v11; // edx@11 int v12; // ecx@11 int v13; // eax@11 bool v14; // al@11 int v15; // eax@20 __int16 v16; // dx@20 signed int v17; // esi@20 int v18; // edx@21 __int16 v19; // ax@21 signed int v20; // edi@21 bool v21; // zf@21 int v22; // edx@22 int v23; // eax@22 __int16 v24; // cx@22 int v25; // ecx@23 int v26; // edx@23 __int16 v27; // ax@23 __int16 v28; // [sp+0h] [bp-4064h]@10 int v29; // [sp+4h] [bp-4060h]@10 int v30; // [sp+8h] [bp-405Ch]@1 char v31; // [sp+Ch] [bp-4058h]@21 int v32; // [sp+11h] [bp-4053h]@22 int v33; // [sp+15h] [bp-404Fh]@22 int v34; // [sp+19h] [bp-404Bh]@22 __int16 v35; // [sp+1Dh] [bp-4047h]@22 __int16 v36; // [sp+1Fh] [bp-4045h]@23 char v37; // [sp+2010h] [bp-2054h]@19 int v38; // [sp+2015h] [bp-204Fh]@20 __int16 v39; // [sp+2019h] [bp-204Bh]@20 __int16 v40; // [sp+201Bh] [bp-2049h]@20 __int16 v41; // [sp+201Dh] [bp-2047h]@20 int v42; // [sp+4014h] [bp-50h]@11 int v43; // [sp+401Ch] [bp-48h]@11 int v44; // [sp+4020h] [bp-44h]@11 __int16 v45; // [sp+4024h] [bp-40h]@11 int v46; // [sp+402Ch] [bp-38h]@11 int v47; // [sp+4030h] [bp-34h]@11 char v48; // [sp+4034h] [bp-30h]@12 int rgbValue; // [sp+403Ch] [bp-28h]@3 int v50; // [sp+4044h] [bp-20h]@3 int v51; // [sp+4048h] [bp-1Ch]@3 char v52; // [sp+404Ch] [bp-18h]@4 unsigned int v53; // [sp+4054h] [bp-10h]@1 int v54; // [sp+4060h] [bp-4h]@19 int v55; // [sp+4064h] [bp+0h]@1 v53 = (unsigned int)&v55 ^ __security_cookie; v3 = this; v30 = this; result = sub_43B000(this, a2); if ( result ) { v5 = 4242; if ( *(_BYTE *)(a2 + 20) ) { v6 = *(_DWORD *)(a2 + 10); v7 = *(_DWORD *)(a2 + 14); rgbValue = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)v3; v50 = v6; v51 = v7; v9 = sub_462910(v8 + 4684, &rgbValue); v10 = v9; if ( !v9 ) { switch ( v52 ) { case 1: v5 = 4235; break; case 2: v5 = 4236; break; case 3: v5 = 4237; break; } } } else { if ( sub_4038C0(*(_WORD *)(a2 + 18), a2 + 23, (int)&v29, (int)&v28) ) { v11 = *(_DWORD *)(a2 + 14); v12 = *(_DWORD *)(a2 + 10); v42 = *(_DWORD *)(a2 + 4); v45 = v28; v13 = *(_DWORD *)v3; v44 = v11; v43 = v12; v46 = v29; v47 = 0; v14 = sub_4629B0(v13 + 4684, &v42); v10 = v14; if ( !v14 ) { switch ( v48 ) { case 1: v5 = 4238; break; case 2: v5 = 4239; break; case 3: v5 = 4240; break; } } } else { v10 = 0; v5 = 4241; } } sub_44E180((int)&v37); v54 = 0; if ( v10 ) { v18 = *(_DWORD *)(a2 + 2); v19 = *(_WORD *)(a2 + 6); v40 = *(_WORD *)(a2 + 8); v38 = v18; v39 = v19; sub_44E310((int)&v37, 0x9008u, 8u, 0); v20 = sub_43BFB0(*(_DWORD *)(v30 + 4), (int)&v37); sub_44E180((int)&v31); v21 = *(_BYTE *)(a2 + 20) == 0; LOBYTE(v54) = 1; if ( v21 ) { sub_44E310((int)&v31, 0x459u, 0x10u, 0); v25 = *(_DWORD *)(a2 + 10); v26 = *(_DWORD *)(a2 + 14); v32 = *(_DWORD *)(a2 + 4); v27 = *(_WORD *)(a2 + 18); v33 = v25; v34 = v26; v35 = v27; v36 = v29; } else { sub_44E310((int)&v31, 0x45Au, 0xEu, 0); v22 = *(_DWORD *)(a2 + 10); v23 = *(_DWORD *)(a2 + 14); v32 = *(_DWORD *)(a2 + 4); v24 = *(_WORD *)(a2 + 18); v33 = v22; v34 = v23; v35 = v24; } if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v31); LOBYTE(v54) = 0; nullsub_1(&v31); v54 = -1; nullsub_1(&v37); result = v20; } else { v15 = *(_DWORD *)(a2 + 2); v16 = *(_WORD *)(a2 + 8); v39 = *(_WORD *)(a2 + 6); v38 = v15; v40 = v16; v41 = v5; sub_44E310((int)&v37, 0x900Au, 0xAu, 0); v17 = sub_43BFB0(*(_DWORD *)(v30 + 4), (int)&v37); v54 = -1; nullsub_1(&v37); result = v17; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00417370) -------------------------------------------------------- signed int __thiscall sub_417370(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // eax@2 char *v7; // edi@2 signed int v8; // eax@3 size_t v9; // ebx@21 int v10; // eax@22 int v11; // esi@23 int v12; // esi@24 signed int v13; // [sp+0h] [bp-1E830h]@21 int v14; // [sp+4h] [bp-1E82Ch]@1 void *v15; // [sp+8h] [bp-1E828h]@3 char v16; // [sp+Ch] [bp-1E824h]@2 int v17; // [sp+11h] [bp-1E81Fh]@2 __int16 v18; // [sp+15h] [bp-1E81Bh]@2 char v19; // [sp+17h] [bp-1E819h]@2 int v20; // [sp+18h] [bp-1E818h]@2 __int16 v21; // [sp+1Ch] [bp-1E814h]@5 __int16 v22; // [sp+1Fh] [bp-1E811h]@5 char v23[8188]; // [sp+21h] [bp-1E80Fh]@21 unsigned __int8 v24[116739]; // [sp+201Dh] [bp-1C813h]@2 unsigned int v25; // [sp+1E820h] [bp-10h]@1 int v26; // [sp+1E82Ch] [bp-4h]@2 int v27; // [sp+1E830h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v3 = this; v14 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v16); v26 = 0; sub_44E310((int)&v16, 0x1077u, 0x10u, 0); v5 = *(_DWORD *)(a2 + 2); v18 = *(_WORD *)(a2 + 6); v19 = *(_BYTE *)(a2 + 8); v17 = v5; v6 = *(_DWORD *)(a2 + 9); v20 = *(_DWORD *)(a2 + 9); v7 = (char *)&v24[3]; switch ( v19 ) { case 0: v8 = sub_403400((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 0xA: goto LABEL_5; case 1: v8 = sub_403380((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 2: v8 = sub_403300((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 4: v8 = sub_403280((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 5: v8 = sub_403200((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 6: v8 = sub_403100((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 7: v8 = sub_403080((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 8: v8 = sub_403000((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 9: v8 = sub_402F80((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 0xC: v8 = sub_403480((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 3: v8 = sub_403500((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 0xD: v8 = sub_403580((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 0xE: v8 = sub_403600((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 0x10: v8 = sub_403680((void *)v3, v6, (int)v24, (int)&v15); goto LABEL_4; case 0xB: case 0xF: v8 = sub_403700((void *)v3, v6, (int)v24, (int)&v15); LABEL_4: if ( v8 ) { v21 = 4608; v22 = 1; v9 = 16; v15 = v23; v13 = 0; if ( v24[2] ) { do { v10 = (unsigned __int8)*v7; if ( (signed int)(v10 + v9) > 8187 ) { sub_44E310((int)&v16, 0x1077u, v9, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v12 = (unsigned __int8)*v7 + 1; memmove(v23, v7, (unsigned __int8)*v7 + 1); v7 += v12; LOBYTE(v22) = v22 & 0xFE; v9 = v12 + 16; v15 = &v23[v12]; HIBYTE(v22) = 1; } else { v11 = v10 + 1; memmove(v15, v7, v10 + 1); v15 = (char *)v15 + v11; v9 += v11; v7 += v11; ++HIBYTE(v22); } v3 = v14; ++v13; } while ( v13 < v24[2] ); } LOBYTE(v22) = v22 | 2; sub_44E310((int)&v16, 0x1077u, v9, 0); } else { LABEL_5: v21 = 4609; v22 = 3; } break; default: v21 = 4610; v22 = 3; break; } sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v26 = -1; nullsub_1(&v16); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 417370: using guessed type char var_1E80F[8188]; //----- (00417770) -------------------------------------------------------- signed int __thiscall sub_417770(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // ecx@2 char *v7; // edi@2 size_t v8; // ebx@6 int v9; // eax@7 int v10; // esi@8 int v11; // esi@9 int v12; // [sp-14h] [bp-1E844h]@3 int v13; // [sp+0h] [bp-1E830h]@1 signed int v14; // [sp+4h] [bp-1E82Ch]@6 void *v15; // [sp+8h] [bp-1E828h]@4 char v16; // [sp+Ch] [bp-1E824h]@2 int v17; // [sp+11h] [bp-1E81Fh]@2 __int16 v18; // [sp+15h] [bp-1E81Bh]@2 char v19; // [sp+17h] [bp-1E819h]@2 int v20; // [sp+18h] [bp-1E818h]@2 __int16 v21; // [sp+1Ch] [bp-1E814h]@3 __int16 v22; // [sp+1Fh] [bp-1E811h]@3 char v23[8188]; // [sp+21h] [bp-1E80Fh]@6 unsigned __int8 v24[116739]; // [sp+201Dh] [bp-1C813h]@2 unsigned int v25; // [sp+1E820h] [bp-10h]@1 int v26; // [sp+1E82Ch] [bp-4h]@2 int v27; // [sp+1E830h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v3 = this; v13 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v16); v26 = 0; sub_44E310((int)&v16, 0x109Au, 0x10u, 0); v5 = *(_WORD *)(a2 + 6); v17 = *(_DWORD *)(a2 + 2); v19 = *(_BYTE *)(a2 + 8); v18 = v5; v6 = *(_DWORD *)(a2 + 9); v20 = *(_DWORD *)(a2 + 9); v7 = (char *)&v24[3]; if ( v19 == 2 ) { if ( sub_403780((void *)v3, v6, (int)v24, (int)&v15, *(_WORD *)(a2 + 14), *(_WORD *)(a2 + 16)) ) { v21 = 4608; v22 = 1; v8 = 16; v15 = v23; v14 = 0; if ( v24[2] ) { do { v9 = (unsigned __int8)*v7; if ( (signed int)(v9 + v8) > 8187 ) { sub_44E310((int)&v16, 0x109Au, v8, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v11 = (unsigned __int8)*v7 + 1; memmove(v23, v7, (unsigned __int8)*v7 + 1); v7 += v11; LOBYTE(v22) = v22 & 0xFE; v8 = v11 + 16; v15 = &v23[v11]; HIBYTE(v22) = 1; } else { v10 = v9 + 1; memmove(v15, v7, v9 + 1); v15 = (char *)v15 + v10; v8 += v10; v7 += v10; ++HIBYTE(v22); } v3 = v13; ++v14; } while ( v14 < v24[2] ); } LOBYTE(v22) = v22 | 2; sub_44E310((int)&v16, 0x109Au, v8, 0); v12 = (int)&v16; } else { v21 = 4609; v22 = 3; v12 = (int)&v16; } } else { v21 = 4610; v22 = 3; v12 = (int)&v16; } sub_43BFB0(*(_DWORD *)(v3 + 4), v12); v26 = -1; nullsub_1(&v16); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 417770: using guessed type char var_1E80F[8188]; //----- (004179D0) -------------------------------------------------------- signed int __thiscall sub_4179D0(int this, int a2, int a3) { signed int result; // eax@1 __int16 v4; // cx@2 int v5; // edi@2 size_t v6; // ebx@2 int *v7; // eax@3 char v8; // cl@4 int v9; // eax@5 int v10; // eax@7 char v11; // cl@8 int v12; // ST18_4@10 unsigned int v13; // [sp-10h] [bp-2328h]@1 int v14; // [sp+0h] [bp-2318h]@1 char v15; // [sp+4h] [bp-2314h]@2 int v16; // [sp+9h] [bp-230Fh]@2 __int16 v17; // [sp+Dh] [bp-230Bh]@2 __int16 v18; // [sp+Fh] [bp-2309h]@2 int v19; // [sp+11h] [bp-2307h]@2 char v20; // [sp+15h] [bp-2303h]@7 char v21[8178]; // [sp+16h] [bp-2302h]@8 char v22; // [sp+2008h] [bp-310h]@10 _BYTE v23[255]; // [sp+2108h] [bp-210h]@2 char v24; // [sp+2207h] [bp-111h]@6 unsigned int v25; // [sp+2308h] [bp-10h]@1 int v26; // [sp+2314h] [bp-4h]@2 int v27; // [sp+2318h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v13 = (unsigned int)&v27 ^ __security_cookie; v14 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v15); v4 = *(_WORD *)(a2 + 6); v5 = *(_DWORD *)(a2 + 8); v16 = *(_DWORD *)(a2 + 2); v26 = 0; v6 = 13; v17 = v4; v19 = v5; v18 = 4570; memset(v23, 0, 0x200u); if ( sub_459380(*(_DWORD *)v14 + 4684, v5, v23) ) { v7 = (int *)v23; do { v8 = *(_BYTE *)v7; v7 = (int *)((char *)v7 + 1); } while ( v8 ); v9 = (char *)v7 - &v23[1]; if ( v9 > 255 ) { v9 = 255; v24 = 0; } v6 = v9 + 14; v20 = v9; v10 = 0; do { v11 = v23[v10]; v21[v10++] = v11; } while ( v11 ); } else { v12 = *(_DWORD *)(a2 + 8); v18 = 4571; v20 = 0; sprintf(&v22, "FAILED - fc_NC_MINIHOUSE_DB_OWNERBLOG_GET_REQ, nUserNo=%d", v12, v13); sub_446350(1, "Msg", "%s", &v22); } sub_44E310((int)&v15, 0x8C3Au, v6, 0); sub_43BFB0(*(_DWORD *)(v14 + 4), (int)&v15); v26 = -1; nullsub_1(&v15); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4179D0: using guessed type char var_2302[8178]; //----- (00417B90) -------------------------------------------------------- signed int __thiscall sub_417B90(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // eax@2 size_t v7; // edi@2 int v8; // ST18_4@3 unsigned int v9; // [sp-10h] [bp-2128h]@1 int v10; // [sp+0h] [bp-2118h]@1 char v11; // [sp+4h] [bp-2114h]@2 int v12; // [sp+9h] [bp-210Fh]@2 __int16 v13; // [sp+Dh] [bp-210Bh]@2 __int16 v14; // [sp+Fh] [bp-2109h]@2 int v15; // [sp+11h] [bp-2107h]@2 unsigned __int8 v16; // [sp+15h] [bp-2103h]@3 char v17; // [sp+16h] [bp-2102h]@4 char v18; // [sp+2008h] [bp-110h]@3 unsigned int v19; // [sp+2108h] [bp-10h]@1 int v20; // [sp+2114h] [bp-4h]@2 int v21; // [sp+2118h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v9 = (unsigned int)&v21 ^ __security_cookie; v3 = this; v10 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v11); v5 = *(_WORD *)(a2 + 6); v12 = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)v3; v13 = v5; v15 = *(_DWORD *)(a2 + 8); v20 = 0; v7 = 13; v14 = 4570; if ( sub_459400(v6 + 4684, v15, (void *)(a2 + 13)) ) { v16 = *(_BYTE *)(a2 + 12); strncpy(&v17, (const char *)(a2 + 13), v16); v7 = *(_BYTE *)(a2 + 12) + 14; } else { v8 = *(_DWORD *)(a2 + 8); v14 = 4572; sprintf(&v18, "FAILED - fc_NC_MINIHOUSE_DB_OWNERBLOG_SET_REQ, nUserNo=%d", v8, v9); sub_446350(1, "Msg", "%s", &v18); v16 = 0; } sub_44E310((int)&v11, 0x8C3Cu, v7, 0); sub_43BFB0(*(_DWORD *)(v10 + 4), (int)&v11); v20 = -1; nullsub_1(&v11); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00417D00) -------------------------------------------------------- signed int __thiscall sub_417D00(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // ST18_4@3 signed int v11; // esi@4 unsigned int v12; // [sp-Ch] [bp-212Ch]@1 char v13; // [sp+0h] [bp-2120h]@2 int v14; // [sp+5h] [bp-211Bh]@2 __int16 v15; // [sp+9h] [bp-2117h]@2 __int16 v16; // [sp+Bh] [bp-2115h]@2 int rgbValue; // [sp+2004h] [bp-11Ch]@2 int v18; // [sp+2008h] [bp-118h]@2 int v19; // [sp+200Ch] [bp-114h]@2 char v20; // [sp+2010h] [bp-110h]@3 unsigned int v21; // [sp+2110h] [bp-10h]@1 int v22; // [sp+211Ch] [bp-4h]@2 int v23; // [sp+2120h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v12 = (unsigned int)&v23 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v13); v22 = 0; sub_44E310((int)&v13, 0x8C60u, 8u, 0); v5 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 6); v16 = 6680; v7 = *(_DWORD *)(a2 + 4); v14 = v5; v8 = *(_WORD *)(a2 + 8); rgbValue = v7; v9 = *(_DWORD *)v3; v15 = v6; v18 = v8; v19 = 0; if ( !sub_4596D0(v9 + 4684, &rgbValue) ) { v10 = *(_DWORD *)(a2 + 4); v16 = 6681; sprintf(&v20, "ERROR - CPFsCharacter::fc_NC_MINIHOUSE_DB_PORTAL_DEL_REQ : CharNo=%d, nRet=%d", v10, v19, v12); sub_446350(1, "Msg", "%s", &v20); } sub_44E310((int)&v13, 0x8C60u, 8u, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v13); v22 = -1; nullsub_1(&v13); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00417E60) -------------------------------------------------------- signed int __thiscall sub_417E60(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // ST18_4@2 int v9; // ST18_4@3 signed int v10; // esi@4 unsigned int v11; // [sp-Ch] [bp-2128h]@1 int rgbValue; // [sp+0h] [bp-211Ch]@2 int v13; // [sp+4h] [bp-2118h]@2 char v14; // [sp+8h] [bp-2114h]@2 int v15; // [sp+Dh] [bp-210Fh]@2 __int16 v16; // [sp+11h] [bp-210Bh]@2 __int16 v17; // [sp+13h] [bp-2109h]@2 char v18; // [sp+200Ch] [bp-110h]@3 unsigned int v19; // [sp+210Ch] [bp-10h]@1 int v20; // [sp+2118h] [bp-4h]@2 int v21; // [sp+211Ch] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v11 = (unsigned int)&v21 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v14); v20 = 0; sub_44E310((int)&v14, 0x8C5Cu, 8u, 0); v5 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 6); v17 = 6688; v7 = *(_DWORD *)(a2 + 8); v15 = v5; rgbValue = v7; v8 = *(_DWORD *)v3 + 4684; v16 = v6; v13 = 0; if ( !sub_4597E0(v8, &rgbValue) ) { v9 = *(_DWORD *)(a2 + 4); v17 = 6689; sprintf(&v18, "ERROR - CPFsCharacter::fc_NC_MINIHOUSE_DB_VISITER_COUNT_REQ : CharNo=%d, nRet=%d", v9, v13, v11); sub_446350(1, "Msg", "%s", &v18); } sub_44E310((int)&v14, 0x8C5Cu, 8u, 0); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14); v20 = -1; nullsub_1(&v14); result = v10; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00417FC0) -------------------------------------------------------- int __stdcall sub_417FC0(__time32_t *Time, int a2) { struct tm *v2; // esi@1 int result; // eax@1 __int16 v4; // dx@1 __int16 v5; // cx@1 __int16 v6; // dx@1 __int16 v7; // cx@1 __int16 v8; // dx@1 __int16 v9; // [sp+8h] [bp-24h]@1 __int16 v10; // [sp+Ch] [bp-20h]@1 __int16 v11; // [sp+10h] [bp-1Ch]@1 __int16 v12; // [sp+14h] [bp-18h]@1 int v13; // [sp+18h] [bp-14h]@1 int v14; // [sp+1Ch] [bp-10h]@1 v2 = _localtime32(Time); result = a2; memcpy(&v9, v2, 0x24u); v4 = v10; *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 0; *(_WORD *)(a2 + 10) = v9; v5 = v11; *(_WORD *)(a2 + 8) = v4; v6 = v12; *(_WORD *)(a2 + 6) = v5; v7 = v13; *(_WORD *)(a2 + 4) = v6; v8 = v14 + 1900; *(_WORD *)(a2 + 2) = v7 + 1; *(_WORD *)a2 = v8; return result; } //----- (00418030) -------------------------------------------------------- signed int __thiscall sub_418030(void *this, char rgbValue, void *a3, size_t a4) { void *v4; // esi@1 signed int v5; // ecx@1 char *v6; // eax@2 signed int result; // eax@6 char *v8; // esi@8 int v9; // ebx@9 int v10; // esi@11 __int16 v11; // cx@12 char *v12; // eax@12 int v13; // edx@13 __int16 v14; // ax@17 int v15; // ecx@18 int v16; // [sp+Ch] [bp-1708h]@9 int v17; // [sp+10h] [bp-1704h]@9 void *v18; // [sp+14h] [bp-1700h]@1 int v19; // [sp+18h] [bp-16FCh]@7 char *v20; // [sp+1Ch] [bp-16F8h]@8 int v21; // [sp+20h] [bp-16F4h]@5 char v22; // [sp+28h] [bp-16ECh]@8 unsigned __int8 v23; // [sp+16A8h] [bp-6Ch]@11 unsigned int v24; // [sp+1710h] [bp-4h]@1 int v25; // [sp+1714h] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v4 = this; v18 = this; memset(a3, 0, a4); v5 = 0; do { v6 = (char *)a3 + 14 * v5; *(_WORD *)v6 = v5 + dword_6E9890; *(_DWORD *)(v6 + 2) = -1; *(_DWORD *)(v6 + 6) = -1; *((_WORD *)v6 + 5) = 0; *((_WORD *)v6 + 6) = 0; if ( v5 == 5 ) *((_WORD *)a3 + 35) = word_6E989C; ++v5; } while ( v5 < 6 ); if ( sub_4689A0(*(_DWORD *)v4 + 4684, rgbValue, (int)&v21) ) { v19 = 0; if ( v21 > 0 ) { v8 = &v22; v20 = &v22; do { v9 = *((_WORD *)v8 + 6); v16 = *(_DWORD *)v8; v17 = *((_DWORD *)v8 + 1); if ( (unsigned __int16)v9 >= (unsigned __int16)dword_6E9890 && (unsigned __int16)v9 <= word_6E989A ) { v10 = v9 - (unsigned __int16)dword_6E9890; if ( !sub_4669C0((void *)(*(_DWORD *)v18 + 4720), *(_DWORD *)v18 + 4684, v16, v17, &v23) ) goto LABEL_6; v11 = v23; v12 = (char *)a3 + 14 * v10; if ( *((_WORD *)a3 + 7 * v10 + 5) < (unsigned __int16)v23 ) { v13 = *((_DWORD *)v20 + 1); *(_DWORD *)(v12 + 2) = *(_DWORD *)v20; *(_DWORD *)(v12 + 6) = v13; *((_WORD *)v12 + 5) = v11; } *((_WORD *)v12 + 6) += v11; v8 = v20; } if ( (_WORD)v9 == word_6E989C ) { if ( !sub_4669C0((void *)(*(_DWORD *)v18 + 4720), *(_DWORD *)v18 + 4684, v16, v17, &v23) ) goto LABEL_6; v14 = v23; if ( *((_WORD *)a3 + 40) < (unsigned __int16)v23 ) { v15 = *((_DWORD *)v8 + 1); *((_DWORD *)a3 + 18) = *(_DWORD *)v8; *((_DWORD *)a3 + 19) = v15; *((_WORD *)a3 + 40) = v14; } *((_WORD *)a3 + 41) += v14; } v8 += 40; ++v19; v20 = v8; } while ( v19 < v21 ); } result = 1; } else { LABEL_6: result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9890: using guessed type int dword_6E9890; // 6E989A: using guessed type __int16 word_6E989A; // 6E989C: using guessed type __int16 word_6E989C; //----- (00418230) -------------------------------------------------------- signed int __thiscall sub_418230(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 signed int v8; // ebx@2 signed __int16 v9; // dx@3 unsigned int v10; // ST20_4@5 int v11; // edi@5 int v12; // eax@5 unsigned int v13; // ST20_4@5 int v14; // eax@5 char v15; // cl@14 unsigned __int8 v16; // al@17 int v17; // edi@22 int v18; // ST20_4@29 int v19; // eax@30 int v20; // ecx@30 signed int v21; // edi@30 signed int v22; // ebx@30 __int16 *v23; // edx@31 int v24; // eax@39 unsigned int v25; // edi@43 char *v26; // ebx@44 int v27; // eax@44 int v28; // ecx@45 int v29; // edx@45 int v30; // edx@46 int v31; // eax@47 unsigned __int16 v32; // bx@47 int v33; // edx@47 int v34; // ecx@47 char *v35; // edi@47 int v36; // eax@47 int v37; // edx@52 const char *v38; // [sp-20h] [bp-4204h]@46 int v39; // [sp-1Ch] [bp-4200h]@46 const char *v40; // [sp-18h] [bp-41FCh]@3 int v41; // [sp-18h] [bp-41FCh]@46 int v42; // [sp-14h] [bp-41F8h]@3 int v43; // [sp-14h] [bp-41F8h]@46 unsigned int v44; // [sp-10h] [bp-41F4h]@1 int v45; // [sp+0h] [bp-41E4h]@2 int v46; // [sp+4h] [bp-41E0h]@5 int v47; // [sp+8h] [bp-41DCh]@1 unsigned __int8 v48; // [sp+Dh] [bp-41D7h]@5 unsigned __int8 v49; // [sp+Eh] [bp-41D6h]@5 unsigned __int8 v50; // [sp+Fh] [bp-41D5h]@5 char v51; // [sp+10h] [bp-41D4h]@2 __int16 v52; // [sp+15h] [bp-41CFh]@2 __int16 v53; // [sp+17h] [bp-41CDh]@2 int v54; // [sp+19h] [bp-41CBh]@2 int v55; // [sp+1Dh] [bp-41C7h]@2 char v56; // [sp+2014h] [bp-21D0h]@45 int v57; // [sp+2019h] [bp-21CBh]@45 int v58; // [sp+201Dh] [bp-21C7h]@49 int v59; // [sp+2021h] [bp-21C3h]@49 unsigned __int16 v60; // [sp+2025h] [bp-21BFh]@45 __int16 v61; // [sp+2027h] [bp-21BDh]@48 int v62; // [sp+4018h] [bp-1CCh]@47 __int16 v63; // [sp+4080h] [bp-164h]@28 char rgbValue[4]; // [sp+4082h] [bp-162h]@44 int v65; // [sp+4086h] [bp-15Eh]@44 __int16 v66[35]; // [sp+408Ah] [bp-15Ah]@31 __int16 v67; // [sp+40D0h] [bp-114h]@37 char v68; // [sp+40D4h] [bp-110h]@4 unsigned int v69; // [sp+41D4h] [bp-10h]@1 int v70; // [sp+41E0h] [bp-4h]@2 int v71; // [sp+41E4h] [bp+0h]@1 v69 = (unsigned int)&v71 ^ __security_cookie; v44 = (unsigned int)&v71 ^ __security_cookie; v3 = this; v47 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v51); v5 = *(_DWORD *)(a2 + 8); v53 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)v3; v52 = 4736; v7 = *(_DWORD *)(a2 + 4); v8 = 0; v70 = 0; v54 = v7; v55 = v5; if ( !sub_46AC00(v6 + 4684, v7, (int)&v45) ) { v42 = *(_DWORD *)(a2 + 4); v9 = 4738; v40 = "FAILED - fc_NC_CHAR_SET_STYLE_DB_REQ, Err=Character's shape read failed, nCharNo=%d"; LABEL_4: v52 = v9; sprintf(&v68, v40, v42, v44); sub_446350(1, "Msg", "%s", &v68); LABEL_54: sub_44E310((int)&v51, 0x107Bu, 0xCu, 0); sub_43BFB0(*(_DWORD *)(v47 + 4), (int)&v51); v70 = -1; nullsub_1(&v51); return 1; } v10 = *(_BYTE *)(a2 + 10); v50 = 0; v49 = 0; v48 = 0; v11 = sub_43E7B0((int)&unk_6E9810, v10); v12 = sub_43E7B0((int)&unk_6E9850, *(_BYTE *)(a2 + 9)); v13 = *(_BYTE *)(a2 + 11); v46 = v12; v14 = sub_43E7B0((int)&unk_6E97D0, v13); if ( v11 && *(_BYTE *)(a2 + 10) != BYTE2(v45) ) { v50 = *(_BYTE *)(v11 + 61); v8 = 1; } if ( v46 && *(_BYTE *)(a2 + 9) != BYTE1(v45) ) { v49 = *(_BYTE *)(v46 + 65); v8 = 1; } if ( v14 && *(_BYTE *)(a2 + 11) != BYTE3(v45) ) { v48 = *(_BYTE *)(v14 + 33); v8 = 1; } v15 = *(_BYTE *)(a2 + 8) >> 7; if ( v15 == (unsigned __int8)v45 >> 7 && !v8 ) { v52 = 4736; goto LABEL_54; } v16 = v49; if ( v50 > v49 ) v16 = v50; if ( v16 <= v48 ) v16 = v48; if ( v16 ) v17 = (unsigned __int16)(dword_6E9890 + v16 - 1); else v17 = (unsigned __int16)dword_6E9890; v46 = v17; if ( v15 != (unsigned __int8)v45 >> 7 ) { if ( v16 ) { v52 = 4742; goto LABEL_54; } v46 = (unsigned __int16)word_6E989C; } if ( !sub_418030((void *)v47, *(_DWORD *)(a2 + 4), &v63, 0x54u) ) { v18 = *(_DWORD *)(a2 + 4); v52 = 4741; sprintf(&v68, "FAILED - fc_NC_CHAR_SET_STYLE_DB_REQ, Err=Character's inven read failed, nCharNo=%d", v18, v44); sub_446350(1, "Msg", "%s", &v68); goto LABEL_54; } v19 = (unsigned __int16)v46 - (unsigned __int16)dword_6E9890; v20 = (unsigned __int16)word_6E989A - (unsigned __int16)dword_6E9890; v21 = 0; v22 = 0; if ( v19 <= v20 ) { v23 = &v66[7 * v19]; while ( (unsigned __int16)*v23 <= 0u ) { ++v19; v23 += 7; if ( v19 > v20 ) goto LABEL_36; } v21 = 1; v22 = v19; } LABEL_36: if ( (_WORD)v46 == word_6E989C && v67 ) { v22 = 5; } else { if ( !v21 ) { v42 = *(_DWORD *)(a2 + 4); v9 = 4739; v40 = "FAILED - fc_NC_CHAR_SET_STYLE_DB_REQ, Err=Character's inven read failed, nCharNo=%d"; goto LABEL_4; } } LOBYTE(v24) = sub_46ACB0((void *)(*(_DWORD *)v47 + 4684), *(_DWORD *)(a2 + 4), a2 + 8); if ( !v24 ) { v42 = *(_DWORD *)(a2 + 4); v9 = 4737; v40 = "FAILED - fc_NC_CHAR_SET_STYLE_DB_REQ, nCharNo=%d"; goto LABEL_4; } v25 = 14 * v22; if ( v66[7 * v22] == 1 ) { v26 = &rgbValue[v25]; LOWORD(v27) = sub_466950(*(_DWORD *)v47 + 4684, *(_DWORD *)&rgbValue[v25], *(int *)((char *)&v65 + v25)); if ( !v27 ) { sub_44E180((int)&v56); LOBYTE(v70) = 1; sub_44E310((int)&v56, 0x45Au, 0xEu, 0); v28 = *(_DWORD *)v26; v29 = *((_DWORD *)v26 + 1); v57 = *(_DWORD *)(a2 + 4); v60 = *(__int16 *)((char *)&v63 + v25); LABEL_49: v58 = v28; v59 = v29; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v56); LOBYTE(v70) = 0; nullsub_1(&v56); goto LABEL_54; } v30 = *(_DWORD *)(a2 + 4); v52 = 4737; sub_46ACB0((void *)(*(_DWORD *)v47 + 4684), v30, (int)&v45); v43 = *((_DWORD *)v26 + 1); v41 = *(_DWORD *)v26; v39 = *(_DWORD *)(a2 + 4); v38 = "FAILED - fc_NC_CHAR_SET_STYLE_DB_REQ, nCharNo=%d, DELETEITEM=%I64d"; } else { memset(&v62, 0, 0x65u); v31 = *(_DWORD *)v47; v32 = *(__int16 *)((char *)&v63 + v25); LOBYTE(v62) = LOBYTE(v66[v25 / 2]) - 1; v33 = *(_DWORD *)&rgbValue[v25]; v34 = *(int *)((char *)&v65 + v25); v35 = &rgbValue[v25]; LOWORD(v36) = sub_468E40(v31 + 4684, v33, v34, v32, (int)&v62); if ( !v36 ) { sub_44E180((int)&v56); LOBYTE(v70) = 2; sub_44E310((int)&v56, 0x459u, 0x10u, 0); v28 = *(_DWORD *)v35; v29 = *((_DWORD *)v35 + 1); v57 = *(_DWORD *)(a2 + 4); v60 = v32; v61 = (unsigned __int8)v62; goto LABEL_49; } v37 = *(_DWORD *)(a2 + 4); v52 = 4737; sub_46ACB0((void *)(*(_DWORD *)v47 + 4684), v37, (int)&v45); v43 = *((_DWORD *)v35 + 1); v41 = *(_DWORD *)v35; v39 = *(_DWORD *)(a2 + 4); v38 = "FAILED - fc_NC_CHAR_SET_STYLE_DB_REQ, nCharNo=%d, SET_ITEM_OPTION=%I64d"; } sprintf(&v68, v38, v39, v41, v43, v44); sub_446350(1, "Msg", "%s", &v68); goto LABEL_54; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9890: using guessed type int dword_6E9890; // 6E989A: using guessed type __int16 word_6E989A; // 6E989C: using guessed type __int16 word_6E989C; // 6E9EC0: using guessed type int dword_6E9EC0; // 418230: using guessed type __int16 var_15A[35]; //----- (004187C0) -------------------------------------------------------- signed int __thiscall sub_4187C0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // ST18_4@4 unsigned int v7; // [sp-Ch] [bp-2174h]@1 char v8; // [sp+0h] [bp-2168h]@2 __int16 v9; // [sp+5h] [bp-2163h]@2 int v10; // [sp+7h] [bp-2161h]@2 __int16 v11; // [sp+Bh] [bp-215Dh]@2 int v12; // [sp+Dh] [bp-215Bh]@2 int v13; // [sp+11h] [bp-2157h]@2 int v14; // [sp+15h] [bp-2153h]@2 int v15; // [sp+19h] [bp-214Fh]@2 int v16; // [sp+1Dh] [bp-214Bh]@2 int v17; // [sp+21h] [bp-2147h]@2 __int16 v18; // [sp+2004h] [bp-164h]@2 __int16 v19; // [sp+2010h] [bp-158h]@3 __int16 v20; // [sp+2012h] [bp-156h]@3 __int16 v21; // [sp+201Eh] [bp-14Ah]@3 __int16 v22; // [sp+2020h] [bp-148h]@3 __int16 v23; // [sp+202Ch] [bp-13Ch]@3 __int16 v24; // [sp+202Eh] [bp-13Ah]@3 __int16 v25; // [sp+203Ah] [bp-12Eh]@3 __int16 v26; // [sp+203Ch] [bp-12Ch]@3 __int16 v27; // [sp+2048h] [bp-120h]@3 __int16 v28; // [sp+204Ah] [bp-11Eh]@3 __int16 v29; // [sp+2056h] [bp-112h]@3 char v30; // [sp+2058h] [bp-110h]@4 unsigned int v31; // [sp+2158h] [bp-10h]@1 int v32; // [sp+2164h] [bp-4h]@2 int v33; // [sp+2168h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v7 = (unsigned int)&v33 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v8); v9 = *(_WORD *)(a2 + 2); v5 = *(_DWORD *)(a2 + 4); v11 = 4736; v10 = v5; v32 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v16 = 0; v17 = 0; if ( sub_418030((void *)v3, v5, &v18, 0x54u) ) { LOWORD(v12) = v18; HIWORD(v12) = v19; LOWORD(v13) = v20; HIWORD(v13) = v21; LOWORD(v14) = v22; HIWORD(v14) = v23; LOWORD(v15) = v24; HIWORD(v15) = v25; LOWORD(v16) = v26; HIWORD(v16) = v27; LOWORD(v17) = v28; HIWORD(v17) = v29; } else { v6 = *(_DWORD *)(a2 + 4); v11 = 4738; sprintf(&v30, "FAILED - fc_NC_CHAR_SET_STYLE_GET_INFO_DB_REQ, nCharNo=%d", v6, v7); sub_446350(1, "Msg", "%s", &v30); } sub_44E310((int)&v8, 0x107Fu, 0x20u, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v8); v32 = -1; nullsub_1(&v8); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004189C0) -------------------------------------------------------- signed int __thiscall sub_4189C0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // ecx@2 int v7; // eax@3 int v8; // edx@3 int v9; // eax@3 int v10; // edx@3 int v11; // edx@3 int v12; // eax@3 char v13; // [sp+0h] [bp-2074h]@2 __int16 v14; // [sp+5h] [bp-206Fh]@2 int v15; // [sp+7h] [bp-206Dh]@2 __int16 v16; // [sp+Bh] [bp-2069h]@3 char v17; // [sp+Dh] [bp-2067h]@3 int v18; // [sp+Eh] [bp-2066h]@3 int v19; // [sp+12h] [bp-2062h]@3 char v20[4]; // [sp+16h] [bp-205Eh]@3 int v21; // [sp+1Ah] [bp-205Ah]@3 int v22; // [sp+1Eh] [bp-2056h]@3 int v23; // [sp+22h] [bp-2052h]@3 int v24; // [sp+26h] [bp-204Eh]@3 int v25; // [sp+2Ah] [bp-204Ah]@3 char v26; // [sp+2Eh] [bp-2046h]@3 char v27; // [sp+2Fh] [bp-2045h]@3 int rgbValue; // [sp+2004h] [bp-70h]@3 char v29; // [sp+2008h] [bp-6Ch]@3 int v30; // [sp+2030h] [bp-44h]@3 int TargetValue; // [sp+2034h] [bp-40h]@2 int v32; // [sp+2038h] [bp-3Ch]@3 char v33; // [sp+203Ch] [bp-38h]@3 char v34; // [sp+203Dh] [bp-37h]@3 char v35; // [sp+2040h] [bp-34h]@3 __int16 v36; // [sp+2042h] [bp-32h]@3 unsigned __int16 v37; // [sp+2044h] [bp-30h]@3 unsigned __int16 v38; // [sp+2046h] [bp-2Eh]@3 unsigned __int16 v39; // [sp+2048h] [bp-2Ch]@3 char v40; // [sp+2050h] [bp-24h]@3 __int16 v41; // [sp+2052h] [bp-22h]@3 unsigned __int16 v42; // [sp+2054h] [bp-20h]@3 unsigned __int16 v43; // [sp+2056h] [bp-1Eh]@3 unsigned __int16 v44; // [sp+2058h] [bp-1Ch]@3 char v45; // [sp+2060h] [bp-14h]@3 char v46; // [sp+2061h] [bp-13h]@3 unsigned int v47; // [sp+2064h] [bp-10h]@1 int v48; // [sp+2070h] [bp-4h]@2 int v49; // [sp+2074h] [bp+0h]@1 v47 = (unsigned int)&v49 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v13); v5 = *(_DWORD *)(a2 + 4); v14 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)v3 + 4684; v48 = 0; v15 = v5; TargetValue = v5; if ( sub_46BE00(v6, (char *)&TargetValue) ) { v16 = 0; v17 = 16 * v34 | ((v33 ^ v17) & 0xF ^ v17) & 0xF; LOBYTE(v18) = v35 + 48; v7 = ((unsigned __int16)v18 ^ (unsigned __int16)(v36 << 8)) & 0x1F00 ^ v18; v8 = v7 ^ (v37 << 13); LOBYTE(v19) = v40 + 48; v18 = ((v8 & 0x7E000 ^ v7 ^ (v38 << 19)) & 0x1F80000 ^ v8 & 0x7E000 ^ v7) & 0x1FFFFFF | (v39 << 25); v9 = ((unsigned __int16)v19 ^ (unsigned __int16)(v41 << 8)) & 0x1F00 ^ v19; v10 = v9 ^ (v42 << 13); v11 = ((v10 & 0x7E000 ^ v9 ^ (v43 << 19)) & 0x1F80000 ^ v10 & 0x7E000 ^ v9) & 0x1FFFFFF | (v44 << 25); v26 = v45; v12 = *(_DWORD *)v3; v19 = v11; v27 = v46; v25 = v32; v29 = 0; rgbValue = v32; sub_456FD0(v12 + 4684, &rgbValue); v24 = 0; v23 = 0; v22 = 0; v21 = 0; *(_DWORD *)v20 = 0; strncpy(v20, &v29, 0x14u); if ( v30 != 1 ) v16 = 4834; } else { v16 = 4832; } sub_44E310((int)&v13, 0x1081u, 0x2Bu, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v13); v48 = -1; nullsub_1(&v13); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00418C00) -------------------------------------------------------- signed int __thiscall sub_418C00(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 __int16 v6; // dx@2 unsigned int v7; // eax@2 unsigned int v8; // edx@2 unsigned int v9; // eax@2 unsigned int v10; // edx@2 unsigned int v11; // ecx@2 int v12; // ecx@2 int v13; // eax@2 int rgbValue; // [sp+8h] [bp-134h]@2 int v15; // [sp+Ch] [bp-130h]@2 char v16; // [sp+10h] [bp-12Ch]@2 char v17; // [sp+11h] [bp-12Bh]@2 __int64 v18; // [sp+14h] [bp-128h]@2 unsigned int v19; // [sp+1Ch] [bp-120h]@2 int v20; // [sp+20h] [bp-11Ch]@2 __int64 v21; // [sp+24h] [bp-118h]@2 __int64 v22; // [sp+2Ch] [bp-110h]@2 char v23; // [sp+34h] [bp-108h]@2 char v24; // [sp+35h] [bp-107h]@2 char v25; // [sp+38h] [bp-104h]@3 unsigned int v26; // [sp+138h] [bp-4h]@1 int v27; // [sp+13Ch] [bp+0h]@1 v26 = (unsigned int)&v27 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 39); v6 = *(_WORD *)(a2 + 11); rgbValue = *(_DWORD *)(a2 + 4); v18 = 0i64; v21 = 0i64; v19 = 0; v22 = 0i64; v15 = v5; v20 = 0; v7 = *(_DWORD *)(a2 + 11); v18 = (unsigned __int16)((unsigned __int8)v6 + 2000); WORD1(v18) = (v7 >> 8) & 0x1F; v8 = v7; HIDWORD(v18) = (v7 >> 13) & 0x3F; v19 = v7 >> 25; LOWORD(v7) = *(_WORD *)(a2 + 15); WORD3(v18) = (v8 >> 19) & 0x3F; v21 = (unsigned __int16)((unsigned __int8)v7 + 2000); v9 = *(_DWORD *)(a2 + 15); *(_DWORD *)((char *)&v21 + 2) = (*(_DWORD *)(a2 + 15) >> 8) & 0x1F; v10 = v9; v11 = v9; v22 = v9 >> 25; LOBYTE(v9) = *(_BYTE *)(a2 + 44); WORD3(v21) = (v11 >> 19) & 0x3F; v24 = v9; LOBYTE(v9) = *(_BYTE *)(a2 + 10); LOBYTE(v11) = *(_BYTE *)(a2 + 10); WORD2(v21) = (v10 >> 13) & 0x3F; LOBYTE(v10) = *(_BYTE *)(a2 + 43); v16 = v11 & 0xF; v12 = *(_DWORD *)v3; v23 = v10; v17 = (unsigned __int8)v9 >> 4; LOBYTE(v13) = sub_46BEC0(v12 + 4684, &rgbValue); if ( !v13 ) { sprintf(&v25, "FAILED - fc_NC_CHAR_WEDDINGDATA_CMD, charregistnumber=%d", *(_DWORD *)(a2 + 4)); sub_446350(1, "Msg", "%s", &v25); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00418DC0) -------------------------------------------------------- signed int __thiscall sub_418DC0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@3 signed int v11; // esi@7 unsigned int v12; // [sp-Ch] [bp-4124h]@1 char v13; // [sp+0h] [bp-4118h]@3 int v14; // [sp+5h] [bp-4113h]@3 int v15; // [sp+9h] [bp-410Fh]@3 char v16; // [sp+2004h] [bp-2114h]@2 int v17; // [sp+2009h] [bp-210Fh]@2 __int16 v18; // [sp+200Dh] [bp-210Bh]@2 int v19; // [sp+200Fh] [bp-2109h]@2 int v20; // [sp+2013h] [bp-2105h]@2 char v21; // [sp+4008h] [bp-110h]@6 unsigned int v22; // [sp+4108h] [bp-10h]@1 int v23; // [sp+4114h] [bp-4h]@2 int v24; // [sp+4118h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v12 = (unsigned int)&v24 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v16); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 4); v17 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 8); v18 = v5; v8 = *(_DWORD *)v3 + 4684; v23 = 0; v20 = v7; LOBYTE(v9) = sub_46BEE0(v8, v6, v7); v19 = v9; if ( v9 ) { sub_44E180((int)&v13); LOBYTE(v23) = 1; sub_44E310((int)&v13, 0x658u, 8u, 0); v10 = *(_DWORD *)(a2 + 4); v15 = *(_DWORD *)(a2 + 8); v14 = v10; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v13); LOBYTE(v23) = 0; nullsub_1(&v13); } else { sprintf(&v21, "FAILED - fc_NC_CHAR_WEDDING_PROPOSE_REQ, charregistnumber=%d", *(_DWORD *)(a2 + 4), v12); sub_446350(1, "Msg", "%s", &v21); } sub_44E310((int)&v16, 0x1084u, 0xEu, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v23 = -1; nullsub_1(&v16); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00418F40) -------------------------------------------------------- signed int __thiscall sub_418F40(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@3 signed int v11; // esi@7 unsigned int v12; // [sp-Ch] [bp-4124h]@1 char v13; // [sp+0h] [bp-4118h]@3 int v14; // [sp+5h] [bp-4113h]@3 int v15; // [sp+9h] [bp-410Fh]@3 char v16; // [sp+2004h] [bp-2114h]@2 int v17; // [sp+2009h] [bp-210Fh]@2 __int16 v18; // [sp+200Dh] [bp-210Bh]@2 int v19; // [sp+200Fh] [bp-2109h]@2 int v20; // [sp+2013h] [bp-2105h]@2 char v21; // [sp+4008h] [bp-110h]@6 unsigned int v22; // [sp+4108h] [bp-10h]@1 int v23; // [sp+4114h] [bp-4h]@2 int v24; // [sp+4118h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v12 = (unsigned int)&v24 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v16); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 4); v17 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 8); v18 = v5; v8 = *(_DWORD *)v3 + 4684; v23 = 0; v20 = v7; LOBYTE(v9) = sub_46BF10(v8, v6, v7); v19 = v9; if ( v9 ) { sub_44E180((int)&v13); LOBYTE(v23) = 1; sub_44E310((int)&v13, 0x659u, 8u, 0); v10 = *(_DWORD *)(a2 + 4); v15 = *(_DWORD *)(a2 + 8); v14 = v10; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v13); LOBYTE(v23) = 0; nullsub_1(&v13); } else { sprintf(&v21, "FAILED - fc_NC_CHAR_WEDDING_PROPOSE_CANCEL_REQ, charregistnumber=%d", *(_DWORD *)(a2 + 4), v12); sub_446350(1, "Msg", "%s", &v21); } sub_44E310((int)&v16, 0x1086u, 0xEu, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v23 = -1; nullsub_1(&v16); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004190C0) -------------------------------------------------------- signed int __thiscall sub_4190C0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // eax@2 int v7; // ecx@2 int v8; // eax@2 signed int v9; // esi@4 unsigned int v10; // [sp-Ch] [bp-2120h]@1 char v11; // [sp+0h] [bp-2114h]@2 int v12; // [sp+5h] [bp-210Fh]@2 __int16 v13; // [sp+9h] [bp-210Bh]@2 int v14; // [sp+Bh] [bp-2109h]@2 char v15; // [sp+2004h] [bp-110h]@3 unsigned int v16; // [sp+2104h] [bp-10h]@1 int v17; // [sp+2110h] [bp-4h]@2 int v18; // [sp+2114h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v10 = (unsigned int)&v18 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v11); v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(a2 + 2); v13 = *(_WORD *)(a2 + 6); v7 = *(_DWORD *)v3 + 4684; v17 = 0; v12 = v6; LOBYTE(v8) = sub_46C030(v7, v5); v14 = v8; if ( !v8 ) { sprintf(&v15, "FAILED - fc_NC_CHAR_WEDDING_ESCAPE_DIVORCE_REQ, charregistnumber=%d", *(_DWORD *)(a2 + 4), v10); sub_446350(1, "Msg", "%s", &v15); } sub_44E310((int)&v11, 0x1088u, 0xEu, 0); v9 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v11); v17 = -1; nullsub_1(&v11); result = v9; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004191D0) -------------------------------------------------------- signed int __thiscall sub_4191D0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@3 signed int v11; // esi@7 unsigned int v12; // [sp-Ch] [bp-4124h]@1 char v13; // [sp+0h] [bp-4118h]@3 int v14; // [sp+5h] [bp-4113h]@3 int v15; // [sp+9h] [bp-410Fh]@3 char v16; // [sp+Dh] [bp-410Bh]@3 char v17; // [sp+2004h] [bp-2114h]@2 int v18; // [sp+2009h] [bp-210Fh]@2 __int16 v19; // [sp+200Dh] [bp-210Bh]@2 int v20; // [sp+200Fh] [bp-2109h]@2 int v21; // [sp+2013h] [bp-2105h]@2 char v22; // [sp+4008h] [bp-110h]@6 unsigned int v23; // [sp+4108h] [bp-10h]@1 int v24; // [sp+4114h] [bp-4h]@2 int v25; // [sp+4118h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v12 = (unsigned int)&v25 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v17); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 4); v18 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 8); v19 = v5; v8 = *(_DWORD *)v3 + 4684; v24 = 0; v21 = v7; LOBYTE(v9) = sub_46BF40(v8, v6, v7); v20 = v9; if ( v9 ) { sub_44E180((int)&v13); LOBYTE(v24) = 1; sub_44E310((int)&v13, 0x65Au, 9u, 0); v10 = *(_DWORD *)(a2 + 4); v15 = *(_DWORD *)(a2 + 8); v14 = v10; v16 = 1; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v13); LOBYTE(v24) = 0; nullsub_1(&v13); } else { sprintf(&v22, "FAILED - fc_NC_CHAR_WEDDING_DIVORCE_BY_AGREE_REQ, charregistnumber=%d", *(_DWORD *)(a2 + 4), v12); sub_446350(1, "Msg", "%s", &v22); } sub_44E310((int)&v17, 0x108Au, 0xEu, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v17); v24 = -1; nullsub_1(&v17); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00419350) -------------------------------------------------------- signed int __thiscall sub_419350(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@3 signed int v11; // esi@7 unsigned int v12; // [sp-Ch] [bp-4124h]@1 char v13; // [sp+0h] [bp-4118h]@3 int v14; // [sp+5h] [bp-4113h]@3 int v15; // [sp+9h] [bp-410Fh]@3 char v16; // [sp+Dh] [bp-410Bh]@3 char v17; // [sp+2004h] [bp-2114h]@2 int v18; // [sp+2009h] [bp-210Fh]@2 __int16 v19; // [sp+200Dh] [bp-210Bh]@2 int v20; // [sp+200Fh] [bp-2109h]@2 int v21; // [sp+2013h] [bp-2105h]@2 char v22; // [sp+4008h] [bp-110h]@6 unsigned int v23; // [sp+4108h] [bp-10h]@1 int v24; // [sp+4114h] [bp-4h]@2 int v25; // [sp+4118h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v12 = (unsigned int)&v25 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v17); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 4); v18 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 8); v19 = v5; v8 = *(_DWORD *)v3 + 4684; v24 = 0; v21 = v7; LOBYTE(v9) = sub_46BF70(v8, v6, v7); v20 = v9; if ( v9 ) { sub_44E180((int)&v13); LOBYTE(v24) = 1; sub_44E310((int)&v13, 0x65Au, 9u, 0); v10 = *(_DWORD *)(a2 + 4); v15 = *(_DWORD *)(a2 + 8); v14 = v10; v16 = 2; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v13); LOBYTE(v24) = 0; nullsub_1(&v13); } else { sprintf(&v22, "FAILED - fc_NC_CHAR_WEDDING_DIVORCE_BY_FORCE_REQ, charregistnumber=%d", *(_DWORD *)(a2 + 4), v12); sub_446350(1, "Msg", "%s", &v22); } sub_44E310((int)&v17, 0x108Cu, 0xEu, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v17); v24 = -1; nullsub_1(&v17); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004194D0) -------------------------------------------------------- signed int __thiscall sub_4194D0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 bool v6; // dl@2 bool v7; // cl@2 int v8; // edx@2 char v9; // ST18_1@2 int v10; // ecx@2 int v11; // eax@2 char v12; // ST14_1@2 int v13; // eax@2 int v14; // eax@3 int v15; // eax@5 signed int v16; // esi@9 unsigned int v17; // [sp-Ch] [bp-4124h]@1 char v18; // [sp+0h] [bp-4118h]@2 int v19; // [sp+5h] [bp-4113h]@2 __int16 v20; // [sp+9h] [bp-410Fh]@2 int v21; // [sp+Bh] [bp-410Dh]@2 int v22; // [sp+Fh] [bp-4109h]@2 char v23; // [sp+2004h] [bp-2114h]@3 int v24; // [sp+2009h] [bp-210Fh]@3 int v25; // [sp+200Dh] [bp-210Bh]@3 char v26; // [sp+4008h] [bp-110h]@8 unsigned int v27; // [sp+4108h] [bp-10h]@1 int v28; // [sp+4114h] [bp-4h]@2 int v29; // [sp+4118h] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v17 = (unsigned int)&v29 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v18); v5 = *(_DWORD *)(a2 + 2); v6 = *(_BYTE *)(a2 + 12) == 2; v20 = *(_WORD *)(a2 + 6); v7 = v6; v8 = *(_DWORD *)(a2 + 4); v9 = v7; v10 = *(_DWORD *)v3; v19 = v5; v11 = *(_DWORD *)(a2 + 8); v12 = *(_DWORD *)(a2 + 8); v28 = 0; v22 = v11; LOBYTE(v13) = sub_46BFA0(v10 + 4684, v8, v12, v9); v21 = v13; if ( v13 ) { sub_44E180((int)&v23); LOBYTE(v28) = 1; sub_44E310((int)&v23, 0x65Bu, 8u, 0); v14 = *(_DWORD *)(a2 + 4); v25 = *(_DWORD *)(a2 + 8); v24 = v14; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v23); LOBYTE(v28) = 0; nullsub_1(&v23); sub_44E180((int)&v23); LOBYTE(v28) = 2; sub_44E310((int)&v23, 0x65Bu, 8u, 0); v15 = *(_DWORD *)(a2 + 8); v25 = *(_DWORD *)(a2 + 4); v24 = v15; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v23); LOBYTE(v28) = 0; nullsub_1(&v23); } else { sprintf(&v26, "FAILED - fc_NC_CHAR_WEDDING_DIVORCE_DO_REQ, charregistnumber=%d", *(_DWORD *)(a2 + 4), v17); sub_446350(1, "Msg", "%s", &v26); } sub_44E310((int)&v18, 0x108Eu, 0xEu, 0); v16 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v18); v28 = -1; nullsub_1(&v18); result = v16; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004196B0) -------------------------------------------------------- signed int __thiscall sub_4196B0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 char v6; // dl@2 int v7; // ecx@2 int v8; // ST08_4@2 int v9; // eax@2 int v10; // edx@3 int v11; // edx@5 signed int v12; // esi@9 unsigned int v13; // [sp-Ch] [bp-4124h]@1 char v14; // [sp+0h] [bp-4118h]@3 int v15; // [sp+5h] [bp-4113h]@3 int v16; // [sp+9h] [bp-410Fh]@3 char v17; // [sp+2004h] [bp-2114h]@2 int v18; // [sp+2009h] [bp-210Fh]@2 __int16 v19; // [sp+200Dh] [bp-210Bh]@2 int v20; // [sp+200Fh] [bp-2109h]@2 char v21[5]; // [sp+2013h] [bp-2105h]@2 int v22; // [sp+2018h] [bp-2100h]@2 char v23; // [sp+4008h] [bp-110h]@8 unsigned int v24; // [sp+4108h] [bp-10h]@1 int v25; // [sp+4114h] [bp-4h]@2 int v26; // [sp+4118h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v13 = (unsigned int)&v26 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v17); v5 = *(_DWORD *)(a2 + 2); v19 = *(_WORD *)(a2 + 6); v6 = *(_BYTE *)(a2 + 12); v7 = *(_DWORD *)v3; v18 = v5; *(_DWORD *)&v21[1] = *(_DWORD *)(a2 + 8); v8 = *(_DWORD *)(a2 + 4); v25 = 0; LOBYTE(v9) = sub_46BFD0(v7 + 4684, v8, v21[1], v6, v21, &v22); v20 = v9; if ( v9 ) { sub_44E180((int)&v14); LOBYTE(v25) = 1; sub_44E310((int)&v14, 0x65Cu, 8u, 0); v10 = *(_DWORD *)(a2 + 8); v15 = *(_DWORD *)(a2 + 4); v16 = v10; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v14); LOBYTE(v25) = 0; nullsub_1(&v14); sub_44E180((int)&v14); LOBYTE(v25) = 2; sub_44E310((int)&v14, 0x65Cu, 8u, 0); v11 = *(_DWORD *)(a2 + 4); v15 = *(_DWORD *)(a2 + 8); v16 = v11; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v14); LOBYTE(v25) = 0; nullsub_1(&v14); } else { sprintf(&v23, "FAILED - fc_NC_CHAR_WEDDING_DIVORCE_CANCEL_REQ, charregistnumber=%d", *(_DWORD *)(a2 + 4), v13); sub_446350(1, "Msg", "%s", &v23); } sub_44E310((int)&v17, 0x1090u, 0x10u, 0); v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v17); v25 = -1; nullsub_1(&v17); result = v12; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004198A0) -------------------------------------------------------- signed int __thiscall sub_4198A0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@3 int v11; // eax@5 signed int v12; // esi@9 unsigned int v13; // [sp-Ch] [bp-4124h]@1 char v14; // [sp+0h] [bp-4118h]@2 int v15; // [sp+5h] [bp-4113h]@2 __int16 v16; // [sp+9h] [bp-410Fh]@2 int v17; // [sp+Bh] [bp-410Dh]@2 int v18; // [sp+Fh] [bp-4109h]@2 char v19; // [sp+2004h] [bp-2114h]@3 int v20; // [sp+2009h] [bp-210Fh]@3 int v21; // [sp+200Dh] [bp-210Bh]@3 char v22; // [sp+4008h] [bp-110h]@8 unsigned int v23; // [sp+4108h] [bp-10h]@1 int v24; // [sp+4114h] [bp-4h]@2 int v25; // [sp+4118h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v13 = (unsigned int)&v25 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v14); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 4); v15 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 8); v16 = v5; v8 = *(_DWORD *)v3 + 4684; v24 = 0; v18 = v7; LOBYTE(v9) = sub_46C000(v8, v6, v7); v17 = v9; if ( v9 ) { sub_44E180((int)&v19); LOBYTE(v24) = 1; sub_44E310((int)&v19, 0x660u, 8u, 0); v10 = *(_DWORD *)(a2 + 4); v21 = *(_DWORD *)(a2 + 8); v20 = v10; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v19); LOBYTE(v24) = 0; nullsub_1(&v19); sub_44E180((int)&v19); LOBYTE(v24) = 2; sub_44E310((int)&v19, 0x660u, 8u, 0); v11 = *(_DWORD *)(a2 + 8); v21 = *(_DWORD *)(a2 + 4); v20 = v11; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v19); LOBYTE(v24) = 0; nullsub_1(&v19); } else { sprintf(&v22, "FAILED - fc_NC_CHAR_WEDDING_DO_REQ, charregistnumber=%d", *(_DWORD *)(a2 + 4), v13); sub_446350(1, "Msg", "%s", &v22); } sub_44E310((int)&v14, 0x1092u, 0xEu, 0); v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14); v24 = -1; nullsub_1(&v14); result = v12; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00419A70) -------------------------------------------------------- signed int __thiscall sub_419A70(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // ecx@2 char v7; // ST14_1@2 signed int v8; // esi@4 unsigned int v9; // [sp-Ch] [bp-2120h]@1 char v10; // [sp+0h] [bp-2114h]@2 int v11; // [sp+5h] [bp-210Fh]@2 __int16 v12; // [sp+9h] [bp-210Bh]@2 char v13; // [sp+2004h] [bp-110h]@3 unsigned int v14; // [sp+2104h] [bp-10h]@1 int v15; // [sp+2110h] [bp-4h]@2 int v16; // [sp+2114h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v9 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v10); v5 = *(_DWORD *)(a2 + 2); v12 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)v3; v11 = v5; v7 = *(_DWORD *)(a2 + 8); v15 = 0; if ( !sub_46C050(v6 + 4684, v7, (int)&v11) ) { sprintf(&v13, "FAILED - fc_NC_CHAR_WEDDING_PARTNER_INFO_REQ, charregistnumber=%d", *(_DWORD *)(a2 + 4), v9); sub_446350(1, "Msg", "%s", &v13); } sub_44E310((int)&v10, 0x1094u, 0xEu, 0); v8 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v10); v15 = -1; nullsub_1(&v10); result = v8; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00419B80) -------------------------------------------------------- signed int __thiscall sub_419B80(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // esi@2 bool v6; // zf@2 int v7; // edi@3 int v8; // ecx@5 int v9; // edx@5 unsigned int v10; // eax@5 int v11; // ST24_4@5 int v12; // eax@5 int v13; // eax@5 int v14; // eax@7 int v15; // edx@8 int v16; // eax@9 int v17; // eax@10 int v18; // eax@13 __int16 v19; // cx@15 __int16 v20; // ax@15 int v21; // edi@16 int v22; // edx@18 int v23; // eax@18 unsigned __int16 v24; // cx@18 int v25; // eax@19 int v26; // edx@19 __int16 v27; // cx@19 int v28; // ecx@22 int v29; // edx@24 int v30; // eax@24 int v31; // ecx@24 int v32; // eax@25 __int16 v33; // cx@25 int v34; // edx@25 unsigned int v35; // [sp-10h] [bp-4160h]@1 signed int v36; // [sp+0h] [bp-4150h]@15 __int16 v37; // [sp+4h] [bp-414Ch]@18 char v38; // [sp+8h] [bp-4148h]@18 int v39; // [sp+Ch] [bp-4144h]@19 int v40; // [sp+10h] [bp-4140h]@22 int v41; // [sp+14h] [bp-413Ch]@22 int v42; // [sp+18h] [bp-4138h]@2 int v43; // [sp+1Ch] [bp-4134h]@2 char v44; // [sp+20h] [bp-4130h]@15 int v45; // [sp+25h] [bp-412Bh]@15 __int16 v46; // [sp+29h] [bp-4127h]@15 __int16 v47; // [sp+2Bh] [bp-4125h]@15 __int16 v48; // [sp+2Dh] [bp-4123h]@15 char v49; // [sp+2024h] [bp-212Ch]@15 int v50; // [sp+2029h] [bp-2127h]@18 int v51; // [sp+202Dh] [bp-2123h]@18 int v52; // [sp+2031h] [bp-211Fh]@18 int v53; // [sp+2035h] [bp-211Bh]@18 __int16 v54; // [sp+2039h] [bp-2117h]@18 int v55; // [sp+203Bh] [bp-2115h]@18 __int16 v56; // [sp+203Fh] [bp-2111h]@24 __int16 v57; // [sp+2041h] [bp-210Fh]@24 __int16 v58; // [sp+2043h] [bp-210Dh]@24 __int16 v59; // [sp+2045h] [bp-210Bh]@24 int rgbValue; // [sp+4028h] [bp-128h]@5 int v61; // [sp+402Ch] [bp-124h]@5 int v62; // [sp+4030h] [bp-120h]@5 char v63; // [sp+4034h] [bp-11Ch]@5 __int16 v64; // [sp+4036h] [bp-11Ah]@5 int v65; // [sp+4038h] [bp-118h]@5 int v66; // [sp+403Ch] [bp-114h]@5 char v67; // [sp+4040h] [bp-110h]@6 unsigned int v68; // [sp+4140h] [bp-10h]@1 int v69; // [sp+414Ch] [bp-4h]@15 int v70; // [sp+4150h] [bp+0h]@1 v68 = (unsigned int)&v70 ^ __security_cookie; v35 = (unsigned int)&v70 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = a2 + 2; v6 = *(_BYTE *)(a2 + 27) == 0; v42 = 5760; v43 = 0; if ( !v6 ) { v7 = a2 + 57; do { if ( *(_BYTE *)(v7 - 29) ) { v8 = *(_DWORD *)(v7 + 6); v9 = *(_DWORD *)(v7 - 24); rgbValue = *(_DWORD *)(v7 + 2); v10 = *(_WORD *)v7; v61 = v8; v63 = (v10 >> 10) & 0x3F; v11 = v5 + *(_WORD *)(v7 + 12); v64 = v10 & 0x3FF; v12 = *(_DWORD *)v3; v62 = v9; v65 = *(_WORD *)(v7 + 10); v66 = 0; LOWORD(v13) = sub_46A440(v12 + 4684, &rgbValue, v11, 0); if ( v13 ) { sprintf(&v67, "ERROR - fc_NC_ITEMDB_DISMANTLE_REQ Á¦ÀÛÅÛ »", rgbValue, v61, v65, v62, v13, v35); sub_446350(1, "Msg", "%s", &v67); v42 = 2829; goto LABEL_15; } } else { LOWORD(v14) = sub_468E40( *(_DWORD *)v3 + 4684, *(_DWORD *)(v7 - 24), *(_DWORD *)(v7 - 20), *(_WORD *)(v7 - 28), v5 + *(_WORD *)(v7 - 16)); if ( v14 ) { sprintf( &v67, "ERROR - fc_NC_ITEMDB_DISMANTLE_REQ Á¦ÀÛÅÛ ¼Ó¼ºº¯°æ ¿¡·¯ - ( Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(43 * v43 + v5 + 31), *(_DWORD *)(43 * v43 + v5 + 35), *(_WORD *)(43 * v43 + v5 + 27), v14, v35); sub_446350(1, "Msg", "%s", &v67); v42 = 2830; goto LABEL_15; } } v15 = *(_BYTE *)(a2 + 27); v7 += 43; ++v43; } while ( v43 < v15 ); } v16 = *(_DWORD *)v3 + 4684; if ( *(_BYTE *)(a2 + 10) ) { LOWORD(v17) = sub_466950(v16, *(_DWORD *)(a2 + 15), *(_DWORD *)(a2 + 19)); if ( v17 ) { sprintf( &v67, "ERROR - fc_NC_ITEMDB_DISMANTLE_REQ Á¦ÀÛÅÛ Àç·á»èÁ¦ ¿¡·¯ - ( Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 15), *(_DWORD *)(a2 + 19), v17, v35); sub_446350(1, "Msg", "%s", &v67); v42 = 2831; } } else { LOWORD(v18) = sub_468E40( v16, *(_DWORD *)(a2 + 15), *(_DWORD *)(a2 + 19), *(_WORD *)(a2 + 11), a2 + 2 + *(_WORD *)(a2 + 23)); if ( v18 ) { sprintf( &v67, "ERROR - fc_NC_ITEMDB_DISMANTLE_REQ Á¦ÀÛÅÛ Àç·á¼Ó¼ºº¯°æ ¿¡·¯ - ( Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 15), *(_DWORD *)(a2 + 19), *(_WORD *)(a2 + 11), v18, v35); sub_446350(1, "Msg", "%s", &v67); v42 = 2832; } } LABEL_15: sub_44E180((int)&v44); v19 = *(_WORD *)(a2 + 8); v20 = *(_WORD *)(a2 + 6); v45 = *(_DWORD *)v5; v47 = v19; v69 = 0; v46 = v20; v48 = v42; sub_44E310((int)&v44, 0x3477u, 0xAu, 0); v36 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v44); sub_44E180((int)&v49); v6 = *(_BYTE *)(a2 + 27) == 0; LOBYTE(v69) = 1; v42 = 0; if ( !v6 ) { v21 = a2 + 69; do { if ( *(_BYTE *)(v21 - 41) ) { v43 = v5 + *(_WORD *)v21; sub_44E310((int)&v49, 0x453u, 0x14u, 0); v22 = *(_DWORD *)(v21 - 10); v23 = *(_DWORD *)(v21 - 6); v50 = *(_DWORD *)(v21 - 36); v24 = *(_WORD *)(v21 - 2); v51 = v22; LOWORD(v22) = *(_WORD *)(v21 - 38); LOWORD(v53) = v24; v52 = v23; HIWORD(v53) = v22; v54 = 0; sub_4038C0(v24, v43, (int)&v37, (int)&v38); LOWORD(v55) = v37; } else { sub_4038C0(*(_WORD *)(v21 - 40), v5 + *(_WORD *)(v21 - 28), (int)&v39, (int)&v38); sub_44E310((int)&v49, 0x453u, 0x14u, 0); v25 = *(_DWORD *)(v21 - 32); v26 = *(_DWORD *)(v21 - 36); v50 = *(_DWORD *)(a2 + 4); v27 = *(_WORD *)(v21 - 40); v52 = v25; LOWORD(v25) = *(_WORD *)(v21 - 38); LOWORD(v53) = v27; v51 = v26; HIWORD(v53) = v25; v54 = v39 - v25; LOWORD(v55) = v39; } if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v49); v43 = (unsigned __int16)v53; v40 = v51; v28 = *(_BYTE *)(a2 + 27); v21 += 43; v41 = v52; ++v42; } while ( v42 < v28 ); } if ( *(_BYTE *)(a2 + 10) ) { sub_44E310((int)&v49, 0x45Du, 0x1Eu, 0); v29 = *(_DWORD *)(a2 + 4); v51 = v40; v30 = *(_DWORD *)(a2 + 15); v50 = v29; *(int *)((char *)&v53 + 2) = v30; LOWORD(v30) = *(_WORD *)(a2 + 13); LOWORD(v53) = v43; LOWORD(v29) = *(_WORD *)(a2 + 11); v52 = v41; v31 = *(_DWORD *)(a2 + 19); v57 = v30; v58 = v30; v55 = v31; v56 = v29; v59 = 0; } else { sub_4038C0(*(_WORD *)(a2 + 11), a2 + 2 + *(_WORD *)(a2 + 23), (int)&v39, (int)&v38); sub_44E310((int)&v49, 0x45Du, 0x1Eu, 0); v50 = *(_DWORD *)(a2 + 4); v52 = v41; v32 = *(_DWORD *)(a2 + 19); LOWORD(v53) = v43; v33 = *(_WORD *)(a2 + 11); v55 = v32; LOWORD(v32) = *(_WORD *)(a2 + 13); v56 = v33; v51 = v40; v34 = *(_DWORD *)(a2 + 15); v57 = v32; *(int *)((char *)&v53 + 2) = v34; v58 = v39 + v32; v59 = v39; } if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v49); LOBYTE(v69) = 0; nullsub_1(&v49); v69 = -1; nullsub_1(&v44); result = v36; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0041A1B0) -------------------------------------------------------- signed int __thiscall sub_41A1B0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // eax@2 int v8; // ecx@2 unsigned __int16 v9; // ax@2 int v10; // ecx@5 __int16 v11; // dx@5 int v12; // eax@5 int v13; // eax@5 int v14; // esi@5 signed __int16 v15; // ax@8 int v16; // ecx@16 unsigned __int16 v17; // [sp+8h] [bp-140h]@3 int rgbValue; // [sp+Ch] [bp-13Ch]@2 int v19; // [sp+14h] [bp-134h]@2 int v20; // [sp+18h] [bp-130h]@2 int v21; // [sp+1Ch] [bp-12Ch]@2 int v22; // [sp+20h] [bp-128h]@2 unsigned __int16 v23; // [sp+24h] [bp-124h]@2 int v24; // [sp+28h] [bp-120h]@2 int v25; // [sp+2Ch] [bp-11Ch]@5 char v26; // [sp+34h] [bp-114h]@16 __int16 v27; // [sp+35h] [bp-113h]@16 int v28; // [sp+37h] [bp-111h]@5 __int16 v29; // [sp+3Bh] [bp-10Dh]@5 __int16 v30; // [sp+3Dh] [bp-10Bh]@5 __int16 v31; // [sp+3Fh] [bp-109h]@5 __int16 v32; // [sp+41h] [bp-107h]@9 char v33; // [sp+44h] [bp-104h]@6 unsigned int v34; // [sp+144h] [bp-4h]@1 int v35; // [sp+148h] [bp+0h]@1 v34 = (unsigned int)&v35 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 24); v6 = *(_DWORD *)(a2 + 28); rgbValue = *(_DWORD *)(a2 + 4); v21 = *(_DWORD *)(a2 + 10); v7 = *(_DWORD *)(a2 + 20); v19 = v5; v8 = *(_DWORD *)(a2 + 14); v24 = v7; v9 = *(_WORD *)(a2 + 18); v22 = v8; v20 = v6; v23 = -2; if ( v9 != -1 && sub_403AA0(v9, (int)&v17) ) v23 = v17; v10 = *(_DWORD *)(a2 + 2); v11 = *(_WORD *)(a2 + 6); v30 = *(_WORD *)(a2 + 8); v12 = *(_DWORD *)v3; v29 = v11; v28 = v10; LOWORD(v10) = *(_WORD *)(a2 + 32); v25 = -1; v31 = v10; v13 = sub_461710(v12 + 4684, &rgbValue); v14 = v13; if ( v13 ) { sprintf( &v33, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MINIHOUSE_EFFECT_DEMANDGOOD_REQ Owner(%d) NeedMoney(%64d) NeedItemKey(%64d), NeedItemOptionType(%d), NeedItemLot(%d) nRet=%d", rgbValue, v19, v20, v21, v22, v23, v24, v13); sub_446350(1, "Msg", "%s", &v33); } switch ( v14 ) { case 0: v15 = 5888; goto LABEL_15; case 1: v32 = 5890; break; case 2: v32 = 5891; break; case 3: v15 = 5892; goto LABEL_15; case 4: v32 = 5893; break; case 5: v32 = 5894; break; default: v15 = 5889; LABEL_15: v32 = v15; break; } v27 = 13438; v16 = *(_DWORD *)(v3 + 4); v26 = 14; result = sub_43BFE0(v16, (int)&v26, 0xFu); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041A3C0) -------------------------------------------------------- signed int __thiscall sub_41A3C0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 char v6; // dl@2 int v7; // eax@2 int v8; // eax@2 int v9; // ecx@5 int rgbValue; // [sp+8h] [bp-1Ch]@2 char v11; // [sp+10h] [bp-14h]@5 __int16 v12; // [sp+11h] [bp-13h]@5 int v13; // [sp+13h] [bp-11h]@2 int v14; // [sp+17h] [bp-Dh]@2 char v15; // [sp+1Bh] [bp-9h]@2 __int16 v16; // [sp+1Ch] [bp-8h]@3 unsigned int v17; // [sp+20h] [bp-4h]@1 int v18; // [sp+24h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 6); v6 = *(_BYTE *)(a2 + 10); v13 = *(_DWORD *)(a2 + 2); rgbValue = v13; v7 = *(_DWORD *)v3; v14 = v5; v15 = v6; LOBYTE(v8) = sub_456080(v7 + 4684, &rgbValue); if ( v8 ) v16 = 5952; else v16 = 5956; v12 = -27615; v9 = *(_DWORD *)(v3 + 4); v11 = 13; result = sub_43BFE0(v9, (int)&v11, 0xEu); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041A470) -------------------------------------------------------- signed int __thiscall sub_41A470(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // ecx@5 char v7; // [sp+8h] [bp-14h]@5 __int16 v8; // [sp+9h] [bp-13h]@5 int v9; // [sp+Bh] [bp-11h]@2 __int16 v10; // [sp+Fh] [bp-Dh]@3 int rgbValue; // [sp+14h] [bp-8h]@2 v3 = this; result = sub_43B000(this, a2); if ( result ) { v9 = *(_DWORD *)(a2 + 2); rgbValue = v9; LOBYTE(v5) = sub_4560F0(*(_DWORD *)v3 + 4684, &rgbValue); if ( v5 ) v10 = 5952; else v10 = 5957; v8 = -27611; v6 = *(_DWORD *)(v3 + 4); v7 = 8; result = sub_43BFE0(v6, (int)&v7, 9u); } return result; } //----- (0041A4F0) -------------------------------------------------------- signed int __thiscall sub_41A4F0(void *this, int rgbValue) { void *v2; // edi@1 int v3; // eax@1 int v4; // ebx@1 int v5; // eax@1 int v6; // ecx@2 char v7; // dl@3 char *v8; // esi@3 int v9; // eax@3 __int16 v10; // cx@3 int v11; // eax@3 int v12; // eax@3 char v13; // dl@3 int v14; // eax@3 char v15; // dl@3 __int16 v16; // cx@3 int v17; // eax@3 signed int v19; // esi@10 int v20; // [sp+0h] [bp-2090h]@1 char v21; // [sp+4h] [bp-208Ch]@1 int v22; // [sp+9h] [bp-2087h]@1 __int16 v23; // [sp+Dh] [bp-2083h]@2 char v24; // [sp+Fh] [bp-2081h]@1 char v25; // [sp+10h] [bp-2080h]@4 int TargetValue; // [sp+2008h] [bp-88h]@3 char v27; // [sp+200Ch] [bp-84h]@3 int v28; // [sp+2010h] [bp-80h]@3 char v29; // [sp+2014h] [bp-7Ch]@3 int v30; // [sp+2016h] [bp-7Ah]@3 int v31; // [sp+2020h] [bp-70h]@3 int v32; // [sp+2024h] [bp-6Ch]@3 int v33; // [sp+2030h] [bp-60h]@3 int v34; // [sp+2034h] [bp-5Ch]@3 char v35; // [sp+2040h] [bp-50h]@3 char v36; // [sp+2068h] [bp-28h]@3 int v37; // [sp+206Ch] [bp-24h]@3 char v38; // [sp+2070h] [bp-20h]@3 int v39; // [sp+2072h] [bp-1Eh]@3 unsigned int v40; // [sp+2080h] [bp-10h]@1 int v41; // [sp+208Ch] [bp-4h]@1 int v42; // [sp+2090h] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v2 = this; sub_44E180((int)&v21); v3 = *(_DWORD *)v2 + 4684; v22 = rgbValue; v24 = 1; v4 = 0; v41 = 0; LOBYTE(v5) = sub_456370(v3, rgbValue, &v20); if ( v5 ) { v6 = *(_DWORD *)v2 + 4684; v23 = 5952; if ( sub_44E4A0(v6) ) { do { sub_44E4E0(*(_DWORD *)v2 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v2 + 4684, &v27); sub_44E6B0(*(_DWORD *)v2 + 4684, &v28); sub_44E6B0(*(_DWORD *)v2 + 4684, &v31); sub_44E6B0(*(_DWORD *)v2 + 4684, &v33); sub_44E600(*(_DWORD *)v2 + 4684, &v35); sub_44E540(*(_DWORD *)v2 + 4684, &v36); sub_44E6B0(*(_DWORD *)v2 + 4684, &v37); v7 = v27; v8 = (char *)&v22 + 42 * v4; v9 = 32 * (v30 & 0x1F); *(_DWORD *)(v8 + 34) = TargetValue; v10 = v28; v11 = 16 * (v29 & 0x1F | v9); v8[33] = v7; v12 = v10 & 0x7FF | ((BYTE2(v28) & 0xF | v11) << 11); LOBYTE(v10) = v32; v13 = BYTE2(v31); *(_DWORD *)(v8 + 38) = *(_DWORD *)(v8 + 38) & 0xFC000000 | 2 * v12; v14 = 2 * (v31 & 0x7FF | ((v13 & 0xF | 16 * (v10 & 0x1F | 32 * (BYTE2(v32) & 0x1F))) << 11)); LOBYTE(v10) = v34; v15 = BYTE2(v33); *(_DWORD *)(v8 + 42) = *(_DWORD *)(v8 + 42) & 0xFC000000 | v14; *(_DWORD *)(v8 + 46) = *(_DWORD *)(v8 + 46) & 0xFC000000 | 2 * (v33 & 0x7FF | ((v15 & 0xF | 16 * (v10 & 0x1F | 32 * (BYTE2(v34) & 0x1F))) << 11)); *((_DWORD *)v8 + 6) = 0; *((_DWORD *)v8 + 5) = 0; *((_DWORD *)v8 + 4) = 0; *((_DWORD *)v8 + 3) = 0; *((_DWORD *)v8 + 2) = 0; strncpy(v8 + 8, &v35, 0x14u); v16 = v37; v17 = 16 * (v38 & 0x1F | 32 * (v39 & 0x1F)); v8[32] = v36; *((_DWORD *)v8 + 7) = *((_DWORD *)v8 + 7) & 0xFC000000 | 2 * (v16 & 0x7FF | ((BYTE2(v37) & 0xF | v17) << 11)); ++v4; if ( 42 * v4 + 8 >= 8087 ) { v25 = v4; sub_44E310((int)&v21, 0x9429u, 42 * v4 + 8, 0); if ( !sub_43BFB0(*((_DWORD *)v2 + 1), (int)&v21) ) { sub_44E4D0(*(_DWORD *)v2 + 4684); v41 = -1; nullsub_1(&v21); return 0; } v4 = 0; v24 &= 0xFEu; } } while ( sub_44E4A0(*(_DWORD *)v2 + 4684) ); } sub_44E4D0(*(_DWORD *)v2 + 4684); } else { v23 = 5959; } v24 |= 2u; v25 = v4; sub_44E310((int)&v21, 0x9429u, 42 * v4 + 8, 0); v19 = sub_43BFB0(*((_DWORD *)v2 + 1), (int)&v21); v41 = -1; nullsub_1(&v21); return v19; } // 4DE38C: using guessed type int __security_cookie; //----- (0041A850) -------------------------------------------------------- signed int __thiscall sub_41A850(int this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@1 v3 = (void *)this; result = sub_43B000(this, a2); if ( result ) result = sub_41A4F0(v3, *(_DWORD *)(a2 + 2)); return result; } //----- (0041A880) -------------------------------------------------------- signed int __thiscall sub_41A880(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 char v5; // cl@2 char v6; // al@2 unsigned int v7; // edi@2 int v8; // eax@7 int v9; // esi@7 signed int v10; // eax@9 unsigned __int16 v11; // di@9 int v12; // eax@11 signed int v13; // eax@12 int v14; // eax@24 signed int v15; // esi@32 unsigned int v16; // [sp-10h] [bp-424Ch]@1 char *v17; // [sp+4h] [bp-4238h]@4 unsigned int v18; // [sp+8h] [bp-4234h]@5 int v19; // [sp+Ch] [bp-4230h]@4 char v20; // [sp+16h] [bp-4226h]@3 char v21; // [sp+17h] [bp-4225h]@2 char v22; // [sp+18h] [bp-4224h]@25 int v23; // [sp+1Dh] [bp-421Fh]@25 int v24; // [sp+21h] [bp-421Bh]@25 int v25; // [sp+25h] [bp-4217h]@25 int v26; // [sp+29h] [bp-4213h]@25 __int16 v27; // [sp+2Dh] [bp-420Fh]@25 int v28; // [sp+2Fh] [bp-420Dh]@25 char v29; // [sp+201Ch] [bp-2220h]@2 int v30; // [sp+2021h] [bp-221Bh]@2 char v31; // [sp+2025h] [bp-2217h]@2 char v32; // [sp+2026h] [bp-2216h]@2 __int16 v33; // [sp+2027h] [bp-2215h]@2 unsigned __int8 v34; // [sp+2029h] [bp-2213h]@2 char v35; // [sp+202Ch] [bp-2210h]@4 int v36; // [sp+4020h] [bp-21Ch]@11 int v37; // [sp+4024h] [bp-218h]@11 int v38; // [sp+4090h] [bp-1ACh]@11 int rgbValue; // [sp+40F8h] [bp-144h]@11 int v40; // [sp+40FCh] [bp-140h]@11 int v41; // [sp+4100h] [bp-13Ch]@11 char v42; // [sp+4104h] [bp-138h]@11 int v43; // [sp+4106h] [bp-136h]@11 int v44; // [sp+410Ch] [bp-130h]@11 int v45; // [sp+4110h] [bp-12Ch]@12 int v46; // [sp+4114h] [bp-128h]@12 int v47; // [sp+4118h] [bp-124h]@12 int v48; // [sp+411Ch] [bp-120h]@12 int v49; // [sp+4120h] [bp-11Ch]@12 int v50; // [sp+4124h] [bp-118h]@12 char v51; // [sp+4128h] [bp-114h]@12 char v52; // [sp+412Ch] [bp-110h]@30 unsigned int v53; // [sp+422Ch] [bp-10h]@1 int v54; // [sp+4238h] [bp-4h]@2 int v55; // [sp+423Ch] [bp+0h]@1 v53 = (unsigned int)&v55 ^ __security_cookie; v16 = (unsigned int)&v55 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v29); v5 = *(_BYTE *)(a2 + 7); v30 = *(_DWORD *)(a2 + 2); v6 = *(_BYTE *)(a2 + 6); v7 = 0; v21 = v5; v32 = v5; v54 = 0; v31 = v6; v33 = 5992; v34 = 0; if ( (unsigned __int8)v6 < 0x1Cu ) { v20 = byte_4DC010[(unsigned __int8)v6]; if ( v20 ) { v19 = 0; v17 = &v35; while ( 1 ) { v18 = v7; if ( !dword_6E98D4 ) break; if ( v7 >= *(_DWORD *)(dword_6E98D4 + 40) ) break; v8 = sub_43E7B0((int)&unk_6E98A0, v7); v9 = v8; if ( *(_BYTE *)v8 == v21 && *(_BYTE *)(v8 + 1) == v20 ) { v10 = sub_44B780(&unk_6EA3F0, (unsigned __int8 *)(v8 + 2)); v11 = v10; if ( v10 == -1 || (_WORD)v10 == -1 ) { v33 = 5995; break; } sub_44BC10(&v36, v10, 11, 0, dword_4DFF4C); v40 = v37; rgbValue = v36; v12 = *(_DWORD *)(a2 + 2); LOWORD(v43) = 0; v44 = 0; v41 = v12; v42 = 2; *(int *)((char *)&v43 + 2) = v11; if ( !sub_4661E0(v11, &v38) ) { sprintf( &v52, "FAILED - fc_NC_HOLY_PROMISE_DB_REWARD_REQ, MakeItemAttr, nOwner=%d, nItemID=%d, RewardCount=%d", *(_DWORD *)(a2 + 2), v11, v19, v16); sub_446350(1, "Msg", "%s", &v52); v33 = 5996; break; } sub_403C00(v11, (int)&v38, *(_WORD *)(v9 + 35)); sub_4663A0(v11, (int)&v38, *(_BYTE *)(v9 + 37)); v13 = 0; v45 = 0; v46 = 0; v47 = 0; v48 = 0; v49 = 0; v50 = 0; v51 = 0; if ( *(_DWORD *)(v9 + 38) ) { BYTE1(v45) = 1; HIWORD(v45) = *(_WORD *)(v9 + 38); v13 = 1; } if ( *(_DWORD *)(v9 + 42) > 0u ) { *((_BYTE *)&v45 + 3 * v13 + 1) = 5; *(_WORD *)((char *)&v45 + 3 * v13++ + 2) = *(_WORD *)(v9 + 42); } if ( *(_DWORD *)(v9 + 46) ) { *((_BYTE *)&v45 + 3 * v13 + 1) = 3; *(_WORD *)((char *)&v45 + 3 * v13++ + 2) = *(_WORD *)(v9 + 46); } if ( *(_DWORD *)(v9 + 50) ) { *((_BYTE *)&v45 + 3 * v13 + 1) = 2; *(_WORD *)((char *)&v45 + 3 * v13++ + 2) = *(_WORD *)(v9 + 50); } if ( *(_DWORD *)(v9 + 54) ) { *((_BYTE *)&v45 + 3 * v13 + 1) = 4; *(_WORD *)((char *)&v45 + 3 * v13++ + 2) = *(_WORD *)(v9 + 54); } if ( v13 > 0 ) { LOBYTE(v45) = 2 * v13 | 1; sub_466420(v11, (int)&v38, &v45); } LOWORD(v14) = sub_46A440(*(_DWORD *)v3 + 4684, &rgbValue, (int)&v38, 1); if ( v14 ) { sprintf( &v52, "FAILED - fc_NC_HOLY_PROMISE_DB_REWARD_REQ, CreateItem, nOwner=%d, ItemID=%d, nRewardItemCount=%d", *(_DWORD *)(a2 + 2), v11, v19, v16); sub_446350(1, "Msg", "%s", &v52); v33 = 5997; break; } *((_WORD *)v17 - 1) = v11; *(_WORD *)v17 = *(_WORD *)(v9 + 35); ++v19; v34 = v19; v17 += 4; sub_44E180((int)&v22); LOBYTE(v54) = 1; sub_44E310((int)&v22, 0x44Fu, 0x14u, 0); v23 = *(_DWORD *)(a2 + 2); v26 = v37; v24 = v41; v25 = v36; v27 = HIWORD(v43); LOWORD(v28) = (v43 ^ (v28 & 0x3FF | (unsigned __int16)((signed __int16)v42 << 10))) & 0x3FF ^ (v28 & 0x3FF | (unsigned __int16)((signed __int16)v42 << 10)); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v22); LOBYTE(v54) = 0; nullsub_1(&v22); v7 = v18; } ++v7; } } } sub_44E310((int)&v29, 0x942Bu, 4 * v34 + 9, 0); v15 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v29); v54 = -1; nullsub_1(&v29); result = v15; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4DFF4C: using guessed type int dword_4DFF4C; // 6E98D4: using guessed type int dword_6E98D4; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0041AD80) -------------------------------------------------------- signed int __thiscall sub_41AD80(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 unsigned int v7; // eax@2 unsigned int v8; // edx@2 unsigned int v9; // eax@2 unsigned int v10; // ecx@2 int v11; // eax@2 int v12; // eax@2 int v13; // ecx@5 char v14; // [sp+8h] [bp-140h]@5 __int16 v15; // [sp+9h] [bp-13Fh]@5 int v16; // [sp+Bh] [bp-13Dh]@2 int v17; // [sp+Fh] [bp-139h]@2 int v18; // [sp+13h] [bp-135h]@2 __int16 v19; // [sp+17h] [bp-131h]@3 int rgbValue; // [sp+1Ch] [bp-12Ch]@2 __int64 v21; // [sp+20h] [bp-128h]@2 int v22; // [sp+28h] [bp-120h]@2 int v23; // [sp+2Ch] [bp-11Ch]@2 __int64 v24; // [sp+30h] [bp-118h]@2 int v25; // [sp+38h] [bp-110h]@2 int v26; // [sp+3Ch] [bp-10Ch]@2 int v27; // [sp+40h] [bp-108h]@2 char v28; // [sp+44h] [bp-104h]@3 unsigned int v29; // [sp+144h] [bp-4h]@1 int v30; // [sp+148h] [bp+0h]@1 v29 = (unsigned int)&v30 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 6); v18 = *(_DWORD *)(a2 + 10); v21 = 0i64; v24 = 0i64; rgbValue = 0; v16 = v5; v22 = 0; v23 = 0; v25 = 0; v26 = 0; v27 = 0; v7 = *(_DWORD *)(a2 + 10); rgbValue = v5; v17 = v6; v24 = (v7 >> 1) & 0x7FF; v8 = v7; BYTE2(v5) = BYTE2(v7); *(_DWORD *)((char *)&v24 + 6) = (v7 >> 21) & 0x1F; v9 = *(_DWORD *)(a2 + 6); WORD1(v24) = (v8 >> 12) & 0xF; WORD2(v24) = BYTE2(v5) & 0x1F; v21 = (v9 >> 1) & 0x7FF; BYTE2(v8) = BYTE2(v9); v10 = v9 >> 12; *(_DWORD *)((char *)&v21 + 6) = (v9 >> 21) & 0x1F; v11 = *(_DWORD *)v3; WORD1(v21) = v10 & 0xF; WORD2(v21) = BYTE2(v8) & 0x1F; LOBYTE(v12) = sub_4563F0(v11 + 4684, &rgbValue); if ( v12 ) { v19 = 5952; } else { v19 = 5970; sprintf( &v28, "ERROR - CPFsCharacter::fc_NC_HOLY_PROMISE_DB_SET_DATE_REQ, CharNo=%d, MemberAcceptableDate=%d-%d-%d:%d, RejoinableDate=%d-%d-%d:%d", *(_DWORD *)(a2 + 2), (signed __int16)v24, WORD1(v24), WORD2(v24), WORD3(v24), (signed __int16)v21, WORD1(v21), WORD2(v21), WORD3(v21)); sub_446350(1, "Msg", "%s", &v28); } v13 = *(_DWORD *)(v3 + 4); v14 = 16; v15 = -27603; result = sub_43BFE0(v13, (int)&v14, 0x11u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041AF70) -------------------------------------------------------- signed int __thiscall sub_41AF70(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // eax@2 unsigned int v7; // [sp-10h] [bp-212Ch]@1 int rgbValue; // [sp+0h] [bp-211Ch]@2 int v9; // [sp+4h] [bp-2118h]@2 char v10; // [sp+8h] [bp-2114h]@2 int v11; // [sp+Dh] [bp-210Fh]@2 __int16 v12; // [sp+11h] [bp-210Bh]@2 __int16 v13; // [sp+13h] [bp-2109h]@2 int TargetValue; // [sp+15h] [bp-2107h]@2 int v15; // [sp+19h] [bp-2103h]@2 char v16; // [sp+200Ch] [bp-110h]@4 unsigned int v17; // [sp+210Ch] [bp-10h]@1 int v18; // [sp+2118h] [bp-4h]@2 int v19; // [sp+211Ch] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v7 = (unsigned int)&v19 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v10); v5 = *(_WORD *)(a2 + 6); v11 = *(_DWORD *)(a2 + 2); rgbValue = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)v3; v12 = v5; v13 = 7264; TargetValue = 0; v15 = 0; v9 = 0; v18 = 0; if ( sub_4566D0(v6 + 4684, &rgbValue) ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) sub_44E5D0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v3 + 4684); } else { if ( v9 == -2224 ) { v13 = 7266; } else { v13 = 7265; sprintf( &v16, "ERROR - CPFsCharacter::fc_NC_HOLY_PROMISE_DB_GET_CEN_REWARD_REQ, nCharNo(%d), nRet(%d)", rgbValue, v9, v7); sub_446350(1, "Msg", "%s", &v16); } } sub_44E310((int)&v10, 0x943Fu, 0x10u, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v10); v18 = -1; nullsub_1(&v10); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041B110) -------------------------------------------------------- signed int __thiscall sub_41B110(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // eax@2 int v7; // eax@2 unsigned int v8; // [sp-10h] [bp-212Ch]@1 int rgbValue; // [sp+0h] [bp-211Ch]@2 int v10; // [sp+4h] [bp-2118h]@2 char v11; // [sp+8h] [bp-2114h]@2 int v12; // [sp+Dh] [bp-210Fh]@2 __int16 v13; // [sp+11h] [bp-210Bh]@2 __int16 v14; // [sp+13h] [bp-2109h]@2 int TargetValue; // [sp+15h] [bp-2107h]@2 int v16; // [sp+19h] [bp-2103h]@2 char v17; // [sp+200Ch] [bp-110h]@5 unsigned int v18; // [sp+210Ch] [bp-10h]@1 int v19; // [sp+2118h] [bp-4h]@2 int v20; // [sp+211Ch] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v8 = (unsigned int)&v20 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v11); v5 = *(_WORD *)(a2 + 6); v12 = *(_DWORD *)(a2 + 2); rgbValue = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)v3; v13 = v5; v14 = 7272; TargetValue = 0; v16 = 0; v10 = 0; v19 = 0; LOBYTE(v7) = sub_4568B0(v6 + 4684, &rgbValue); if ( v7 ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) sub_44E5D0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v3 + 4684); } else { if ( v10 == -2226 ) { v14 = 7274; } else { if ( v10 == -2225 ) { v14 = 7275; } else { v14 = 7273; sprintf( &v17, "ERROR - CPFsCharacter::fc_NC_HOLY_PROMISE_DB_WITHDRAW_CEN_REWARD_REQ, nCharNo(%d), nRet(%d)", rgbValue, v10, v8); sub_446350(1, "Msg", "%s", &v17); } } } sub_44E310((int)&v11, 0x9443u, 0x10u, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v11); v19 = -1; nullsub_1(&v11); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041B2C0) -------------------------------------------------------- signed int __thiscall sub_41B2C0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@7 int rgbValue; // [sp+8h] [bp-11Ch]@1 int v7; // [sp+Ch] [bp-118h]@1 __int64 v8; // [sp+10h] [bp-114h]@1 int v9; // [sp+1Bh] [bp-109h]@1 char v10; // [sp+20h] [bp-104h]@3 unsigned int v11; // [sp+120h] [bp-4h]@1 int v12; // [sp+124h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v2 = this; v8 = 0i64; v9 = 0; v7 = 0; v3 = *(_DWORD *)this + 4684; *(__int64 *)((char *)&v8 + 3) = (unsigned int)a2; rgbValue = a2; if ( sub_4566D0(v3, &rgbValue) ) { if ( sub_44E4A0(*(_DWORD *)v2 + 4684) ) sub_44E5D0(*(_DWORD *)v2 + 4684, (char *)&v8 + 7); sub_44E4D0(*(_DWORD *)v2 + 4684); } else { if ( v7 != -2224 ) { sprintf(&v10, "ERROR - CPFsCharacter::GetHolyPromiseRemainMoney, CharNo=%d", a2); sub_446350(1, "Msg", "%s", &v10); } } v4 = *((_DWORD *)v2 + 1); LOBYTE(v8) = 14; *(_WORD *)((char *)&v8 + 1) = -27580; return sub_43BFE0(v4, (int)&v8, 0xFu); } // 4DE38C: using guessed type int __security_cookie; //----- (0041B3E0) -------------------------------------------------------- int __stdcall sub_41B3E0(int a1, int a2) { int v2; // edx@1 int v3; // eax@1 int v4; // ecx@1 int v5; // eax@1 int result; // eax@1 v2 = a1; *(_DWORD *)v2 &= 0xFFFFFFFEu; v3 = *(_DWORD *)v2 ^ ((unsigned __int16)*(_DWORD *)v2 ^ (unsigned __int16)(2 * *(_WORD *)a2)) & 0xFFE; *(_DWORD *)a1 = v3; v4 = v3 ^ (unsigned __int16)((v3 ^ (unsigned __int16)(*(_WORD *)(a2 + 2) << 12)) & 0xF000); *(_DWORD *)a1 = v4; v5 = v4 ^ (*(_WORD *)(a2 + 4) << 16); result = v4 ^ v5 & 0x1F0000; *(_DWORD *)a1 = result; *(_DWORD *)a1 = result ^ (result ^ (*(_WORD *)(a2 + 6) << 21)) & 0x3E00000; return result; } //----- (0041B440) -------------------------------------------------------- int __thiscall sub_41B440(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // edi@1 signed int v5; // edx@1 int v6; // esi@3 signed int v7; // edx@3 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_WORD *)(this + 28) = *(_WORD *)(a2 + 28); *(_DWORD *)(this + 30) = *(_DWORD *)(a2 + 30); *(_DWORD *)(this + 34) = *(_DWORD *)(a2 + 34); *(_DWORD *)(this + 38) = *(_DWORD *)(a2 + 38); *(_DWORD *)(this + 42) = *(_DWORD *)(a2 + 42); *(_DWORD *)(this + 46) = *(_DWORD *)(a2 + 46); *(_DWORD *)(this + 50) = *(_DWORD *)(a2 + 50); v3 = this + 54; v4 = a2 - this; v5 = 512; do { *(_BYTE *)v3 = *(_BYTE *)(v4 + v3); ++v3; --v5; } while ( v5 ); v6 = this + 566; v7 = 128; do { *(_BYTE *)v6 = *(_BYTE *)(v6 + v4); ++v6; --v7; } while ( v7 ); *(_DWORD *)(this + 694) = *(_DWORD *)(a2 + 694); *(_DWORD *)(this + 698) = *(_DWORD *)(a2 + 698); *(_DWORD *)(this + 702) = *(_DWORD *)(a2 + 702); *(_DWORD *)(this + 706) = *(_DWORD *)(a2 + 706); *(_DWORD *)(this + 710) = *(_DWORD *)(a2 + 710); *(_DWORD *)(this + 714) = *(_DWORD *)(a2 + 714); *(_WORD *)(this + 718) = *(_WORD *)(a2 + 718); return result; } //----- (0041B530) -------------------------------------------------------- signed int __thiscall sub_41B530(int this, int a2, int a3) { int v3; // esi@1 const void *v4; // ebx@2 int v5; // ecx@2 int v6; // eax@2 int v7; // eax@2 int v8; // ecx@4 signed int v9; // edi@4 int v10; // eax@5 signed int v12; // esi@17 unsigned int v13; // [sp-10h] [bp-21B0h]@1 int rgbValue; // [sp+4h] [bp-219Ch]@2 int v15; // [sp+8h] [bp-2198h]@2 char v16; // [sp+Ch] [bp-2194h]@2 __int16 v17; // [sp+11h] [bp-218Fh]@2 char v18; // [sp+13h] [bp-218Dh]@2 const void *v19; // [sp+14h] [bp-218Ch]@2 int v20; // [sp+18h] [bp-2188h]@2 int v21; // [sp+1Ch] [bp-2184h]@5 int v22[2044]; // [sp+20h] [bp-2180h]@5 __int16 v23; // [sp+2010h] [bp-190h]@5 unsigned __int16 v24; // [sp+2012h] [bp-18Eh]@7 unsigned __int16 v25; // [sp+2014h] [bp-18Ch]@7 unsigned __int16 v26; // [sp+2016h] [bp-18Ah]@7 unsigned __int16 v27; // [sp+2018h] [bp-188h]@7 unsigned __int16 v28; // [sp+201Ah] [bp-186h]@7 int v29; // [sp+2020h] [bp-180h]@5 int TargetValue; // [sp+2024h] [bp-17Ch]@5 char v31; // [sp+2028h] [bp-178h]@5 char v32; // [sp+203Ch] [bp-164h]@5 char v33; // [sp+2040h] [bp-160h]@5 char v34; // [sp+2068h] [bp-138h]@5 int v35; // [sp+206Ch] [bp-134h]@7 int v36; // [sp+2070h] [bp-130h]@7 int v37; // [sp+2074h] [bp-12Ch]@7 int v38; // [sp+2078h] [bp-128h]@7 int v39; // [sp+207Ch] [bp-124h]@7 int v40; // [sp+2080h] [bp-120h]@7 int v41; // [sp+2084h] [bp-11Ch]@7 int v42; // [sp+2088h] [bp-118h]@7 int v43; // [sp+208Ch] [bp-114h]@7 char v44; // [sp+2090h] [bp-110h]@3 unsigned int v45; // [sp+2190h] [bp-10h]@1 int v46; // [sp+219Ch] [bp-4h]@2 int v47; // [sp+21A0h] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v13 = (unsigned int)&v47 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v16); v4 = 0; v46 = 0; sub_44E310((int)&v16, 0x9804u, 0xBu, 0); v5 = *(_DWORD *)(a2 + 2); v17 = 6328; v6 = *(_DWORD *)v3 + 4684; v18 = 3; v19 = 0; v20 = 0; rgbValue = v5; v15 = 0; LOBYTE(v7) = sub_455390(v6, &rgbValue); if ( !v7 ) { v17 = 6329; sprintf(&v44, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_START_DB_GET_RANKING_LIST_REQ : nRet=%d", v15, v13); sub_446350(1, "Msg", "%s", &v44); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16) ) { LABEL_14: v46 = -1; nullsub_1(&v16); return 0; } } v8 = *(_DWORD *)v3 + 4684; v9 = 0; v18 = 1; if ( sub_44E4A0(v8) ) { while ( 1 ) { sub_44E6B0(*(_DWORD *)v3 + 4684, &v23); sub_44E570(*(_DWORD *)v3 + 4684, &v29); sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E600(*(_DWORD *)v3 + 4684, &v31); sub_44E4E0(*(_DWORD *)v3 + 4684, &v32); sub_44E600(*(_DWORD *)v3 + 4684, &v33); sub_44E570(*(_DWORD *)v3 + 4684, &v34); v10 = v29; *(&v21 + 2 * v9) = TargetValue; v22[2 * v9++] = v10; if ( 8 * v9 + 11 >= 2046 && v9 > 1 ) { v41 = 0; v42 = 0; v43 = 0; v35 = v28; v36 = v27; v37 = v26; v38 = v25; v20 = v9; v39 = v24 - 1; v40 = v23 - 1900; v19 = (const void *)_LN52(&v35); sub_44E310((int)&v16, 0x9804u, 8 * v9 + 11, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); goto LABEL_14; } v9 = 0; v18 = 0; } if ( !sub_44E4A0(*(_DWORD *)v3 + 4684) ) { v4 = 0; break; } } } sub_44E4D0(*(_DWORD *)v3 + 4684); v20 = v9; if ( (const void *)v9 == v4 ) { v19 = v4; } else { v41 = 0; v42 = 0; v43 = 0; v35 = v28; v36 = v27; v37 = v26; v38 = v25; v39 = v24 - 1; v40 = v23 - 1900; v19 = (const void *)_LN52(&v35); } v18 |= 2u; sub_44E310((int)&v16, 0x9804u, 8 * v9 + 11, v4); v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v46 = -1; nullsub_1(&v16); return v12; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 41B530: using guessed type int var_2180[2044]; //----- (0041B960) -------------------------------------------------------- signed int __thiscall sub_41B960(int this, int a2, int a3) { int v3; // esi@1 int v4; // eax@2 int v5; // eax@2 signed int v7; // esi@6 unsigned int v8; // [sp-8h] [bp-2120h]@1 int rgbValue; // [sp+0h] [bp-2118h]@2 char v10; // [sp+4h] [bp-2114h]@2 __int16 v11; // [sp+9h] [bp-210Fh]@2 char v12; // [sp+2008h] [bp-110h]@3 unsigned int v13; // [sp+2108h] [bp-10h]@1 int v14; // [sp+2114h] [bp-4h]@2 int v15; // [sp+2118h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v8 = (unsigned int)&v15 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v10); v14 = 0; sub_44E310((int)&v10, 0x9806u, 2u, 0); v11 = 6344; v4 = *(_DWORD *)v3 + 4684; rgbValue = 0; LOBYTE(v5) = sub_455480(v4, &rgbValue); if ( !v5 ) { v11 = 6345; sprintf(&v12, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_START_DB_RANK_BALANCE_REQ nRet=%d", rgbValue, v8); sub_446350(1, "Msg", "%s", &v12); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v10) ) { v14 = -1; nullsub_1(&v10); return 0; } } sub_44E310((int)&v10, 0x9806u, 2u, 0); v7 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v10); v14 = -1; nullsub_1(&v10); return v7; } // 4DE38C: using guessed type int __security_cookie; //----- (0041BAC0) -------------------------------------------------------- int __thiscall sub_41BAC0(int this, int a2) { int result; // eax@1 int v3; // esi@1 signed int v4; // edx@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_BYTE *)(this + 20) = *(_BYTE *)(a2 + 20); v3 = this + 21; v4 = 64; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - this + v3); ++v3; --v4; } while ( v4 ); *(_DWORD *)(this + 85) = *(_DWORD *)(a2 + 85); *(_BYTE *)(this + 89) = *(_BYTE *)(a2 + 89); *(_BYTE *)(this + 90) = *(_BYTE *)(a2 + 90); *(_BYTE *)(this + 91) = *(_BYTE *)(a2 + 91); *(_DWORD *)(this + 92) = *(_DWORD *)(a2 + 92); *(_DWORD *)(this + 96) = *(_DWORD *)(a2 + 96); *(_DWORD *)(this + 100) = *(_DWORD *)(a2 + 100); *(_DWORD *)(this + 104) = *(_DWORD *)(a2 + 104); *(_BYTE *)(this + 108) = *(_BYTE *)(a2 + 108); return result; } //----- (0041BB50) -------------------------------------------------------- signed int __thiscall sub_41BB50(int this, int a2, int a3) { int v3; // edi@1 int v5; // eax@7 int v6; // ecx@7 char v7; // dl@7 int v8; // eax@7 int v9; // edx@7 int v10; // ST20_4@8 int v11; // ecx@9 int v12; // eax@9 int v13; // ecx@9 int v14; // edx@9 int v15; // eax@9 int v16; // eax@9 char v17; // al@11 int v18; // ecx@11 __time32_t Time; // [sp+8h] [bp-164h]@7 int rgbValue; // [sp+Ch] [bp-160h]@7 int v21; // [sp+10h] [bp-15Ch]@7 int v22; // [sp+14h] [bp-158h]@7 char v23; // [sp+24h] [bp-148h]@7 char v24; // [sp+2Ch] [bp-140h]@9 int v25; // [sp+30h] [bp-13Ch]@9 int v26; // [sp+34h] [bp-138h]@9 int v27; // [sp+38h] [bp-134h]@9 int v28; // [sp+3Ch] [bp-130h]@9 int v29; // [sp+40h] [bp-12Ch]@9 int v30; // [sp+44h] [bp-128h]@9 int v31; // [sp+48h] [bp-124h]@9 int v32; // [sp+4Ch] [bp-120h]@9 char v33; // [sp+50h] [bp-11Ch]@11 __int16 v34; // [sp+51h] [bp-11Bh]@11 __int16 v35; // [sp+53h] [bp-119h]@7 int v36; // [sp+55h] [bp-117h]@7 int v37; // [sp+59h] [bp-113h]@7 char v38; // [sp+5Dh] [bp-10Fh]@7 char v39; // [sp+5Eh] [bp-10Eh]@11 char v40; // [sp+62h] [bp-10Ah]@11 __int16 v41; // [sp+63h] [bp-109h]@7 char v42; // [sp+68h] [bp-104h]@5 unsigned int v43; // [sp+168h] [bp-4h]@1 int v44; // [sp+16Ch] [bp+0h]@1 v43 = (unsigned int)&v44 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; if ( !*(_DWORD *)v3 ) { sprintf(&v42, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_MEMBER_JOIN_REQ, Error=%d", 12736); sub_446350(1, "Msg", "%s", &v42); return 0; } v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(a2 + 8); v35 = *(_WORD *)(a2 + 2); v7 = *(_BYTE *)(a2 + 33); v36 = v5; v37 = v6; v38 = v7; v41 = 6016; rgbValue = v5; v21 = v6; v23 = v7; Time = _time32(0); sub_417FC0(&Time, (int)&v22); LOBYTE(v8) = sub_4543C0(*(_DWORD *)v3 + 4684, &rgbValue); v9 = *(_DWORD *)(a2 + 4); if ( v8 ) { v11 = *(_DWORD *)(a2 + 12); v26 = *(_DWORD *)(a2 + 8); v12 = *(_DWORD *)(a2 + 20); v27 = v11; v13 = *(_DWORD *)(a2 + 24); v25 = v9; v14 = *(_DWORD *)(a2 + 16); v29 = v12; v15 = *(_DWORD *)v3; v30 = v13; v28 = v14; v31 = *(_DWORD *)(a2 + 28); v32 = 101; LOBYTE(v16) = sub_455C50(v15 + 4684, &v24); if ( !v16 ) { sprintf( &v42, "ERROR - fc_NC_GUILD_ACADEMY_DB_MEMBER_JOIN_REQ - SetGuildAcademyHistory, (nGuildAcademyNo=%d), (nCharNo=%d), (nMsgType=%d)", v25, v26, v32); sub_446350(1, "Msg", "%s", &v42); } } else { v10 = *(_DWORD *)(a2 + 8); v41 = 6031; sprintf(&v42, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_MEMBER_JOIN_REQ, GuildNo=%d, CharNo=%d", v9, v10); sub_446350(1, "Msg", "%s", &v42); } sub_41B3E0((int)&v39, (int)&v22); v17 = *(_BYTE *)(a2 + 32); v34 = -26603; v18 = *(_DWORD *)(v3 + 4); v40 = v17; v33 = 20; return sub_43BFE0(v18, (int)&v33, 0x15u); } // 4DE38C: using guessed type int __security_cookie; //----- (0041BD90) -------------------------------------------------------- signed int __thiscall sub_41BD90(int this, int a2, int a3) { int v3; // edi@1 int v4; // edx@4 int v6; // ecx@7 int v7; // eax@7 int v8; // eax@7 int v9; // ecx@7 int v10; // ST20_4@8 int v11; // edx@9 int v12; // eax@9 int v13; // edx@9 int v14; // ecx@9 int v15; // eax@9 int v16; // eax@9 int v17; // ecx@11 int rgbValue; // [sp+8h] [bp-144h]@7 int v19; // [sp+Ch] [bp-140h]@7 char v20; // [sp+14h] [bp-138h]@9 int v21; // [sp+18h] [bp-134h]@9 int v22; // [sp+1Ch] [bp-130h]@9 int v23; // [sp+20h] [bp-12Ch]@9 int v24; // [sp+24h] [bp-128h]@9 int v25; // [sp+28h] [bp-124h]@9 int v26; // [sp+2Ch] [bp-120h]@9 int v27; // [sp+30h] [bp-11Ch]@9 int v28; // [sp+34h] [bp-118h]@9 char v29; // [sp+38h] [bp-114h]@11 __int16 v30; // [sp+39h] [bp-113h]@11 __int16 v31; // [sp+3Bh] [bp-111h]@7 int v32; // [sp+3Dh] [bp-10Fh]@7 int v33; // [sp+41h] [bp-10Bh]@7 __int16 v34; // [sp+45h] [bp-107h]@7 char v35; // [sp+48h] [bp-104h]@5 unsigned int v36; // [sp+148h] [bp-4h]@1 int v37; // [sp+14Ch] [bp+0h]@1 v36 = (unsigned int)&v37 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; v4 = *(_DWORD *)v3; if ( !*(_DWORD *)v3 ) { sprintf(&v35, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_MEMBER_LEAVE_REQ, Error=%d", 12736); sub_446350(1, "Msg", "%s", &v35); return 0; } v6 = *(_DWORD *)(a2 + 8); v31 = *(_WORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 4); v33 = v6; v19 = v6; v32 = v7; rgbValue = v7; v34 = 6016; LOBYTE(v8) = sub_454500(v4 + 4684, &rgbValue); v9 = *(_DWORD *)(a2 + 4); if ( v8 ) { v11 = *(_DWORD *)(a2 + 8); v23 = *(_DWORD *)(a2 + 12); v12 = *(_DWORD *)(a2 + 24); v22 = v11; v13 = *(_DWORD *)(a2 + 20); v21 = v9; v14 = *(_DWORD *)(a2 + 16); v26 = v12; v15 = *(_DWORD *)v3; v25 = v13; v24 = v14; v27 = *(_DWORD *)(a2 + 28); v28 = 102; LOBYTE(v16) = sub_455C50(v15 + 4684, &v20); if ( !v16 ) { sprintf( &v35, "ERROR - fc_NC_GUILD_ACADEMY_DB_MEMBER_LEAVE_REQ - SetGuildAcademyHistory, (nGuildAcademyNo=%d), (nCharNo=%d), (nMsgType=%d)", v21, v22, v28); sub_446350(1, "Msg", "%s", &v35); } } else { v10 = *(_DWORD *)(a2 + 8); v34 = 6036; sprintf(&v35, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_MEMBER_LEAVE_REQ, GuildNo=%d, CharNo=%d", v9, v10); sub_446350(1, "Msg", "%s", &v35); } v17 = *(_DWORD *)(v3 + 4); v29 = 14; v30 = -26594; return sub_43BFE0(v17, (int)&v29, 0xFu); } // 4DE38C: using guessed type int __security_cookie; //----- (0041BF80) -------------------------------------------------------- signed int __thiscall sub_41BF80(int this, int a2, int a3) { int v3; // edi@1 size_t v5; // ST18_4@7 int v6; // eax@7 int v7; // ecx@7 int v8; // eax@7 unsigned __int8 v9; // cl@8 int v10; // eax@9 int v11; // ST18_4@10 signed int v12; // esi@11 unsigned int v13; // [sp-10h] [bp-2A30h]@1 int v14; // [sp+0h] [bp-2A20h]@1 char v15; // [sp+4h] [bp-2A1Ch]@7 __int16 v16; // [sp+9h] [bp-2A17h]@7 __int16 v17; // [sp+Bh] [bp-2A15h]@7 int v18; // [sp+Dh] [bp-2A13h]@7 __time32_t v19; // [sp+11h] [bp-2A0Fh]@7 unsigned __int16 v20; // [sp+15h] [bp-2A0Bh]@7 unsigned __int8 v21[8177]; // [sp+17h] [bp-2A09h]@7 int rgbValue; // [sp+2008h] [bp-A18h]@7 char v23[1028]; // [sp+200Ch] [bp-A14h]@8 char v24; // [sp+2410h] [bp-610h]@10 char v25; // [sp+2910h] [bp-110h]@5 unsigned int v26; // [sp+2A10h] [bp-10h]@1 int v27; // [sp+2A1Ch] [bp-4h]@7 int v28; // [sp+2A20h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v13 = (unsigned int)&v28 ^ __security_cookie; v3 = this; v14 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; if ( !*(_DWORD *)v3 ) { sprintf(&v25, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_NOTIFY_REQ, Error=%d", 12736, v13); sub_446350(1, "Msg", "%s", &v25); return 0; } sub_44E180((int)&v15); v5 = *(_WORD *)(a2 + 8) + 14; v27 = 0; sub_44E310((int)&v15, 0x9828u, v5, 0); v6 = *(_DWORD *)(a2 + 4); v17 = *(_WORD *)(a2 + 2); v18 = v6; v19 = _time32(0); v20 = *(_WORD *)(a2 + 8); _mbsnbcpy(v21, (const unsigned __int8 *)(a2 + 10), v20); v21[*(_WORD *)(a2 + 8)] = 0; v7 = *(_DWORD *)(a2 + 4); v16 = 6016; rgbValue = v7; v8 = 0; do { v9 = v21[v8]; v23[v8++] = v9; } while ( v9 ); LOBYTE(v10) = sub_454740(*(_DWORD *)v14 + 4684, &rgbValue); if ( !v10 ) { v11 = *(_DWORD *)(a2 + 4); v16 = 3207; sprintf(&v24, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_NOTIFY_REQ, GuildNo=%d, Notify=%s", v11, a2 + 10, v13); sub_446350(1, "Msg", "%s", &v24); } v12 = sub_43BFB0(*(_DWORD *)(v14 + 4), (int)&v15); v27 = -1; nullsub_1(&v15); return v12; } // 4DE38C: using guessed type int __security_cookie; // 41BF80: using guessed type unsigned __int8 var_2A09[8177]; // 41BF80: using guessed type char var_A14[1028]; //----- (0041C160) -------------------------------------------------------- signed int __thiscall sub_41C160(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // ax@2 int v6; // ecx@2 int v7; // edx@2 int v8; // eax@2 int v9; // eax@2 int v10; // eax@2 int v11; // ST1C_4@3 int v12; // edx@4 int v13; // eax@4 signed int v14; // esi@7 unsigned int v15; // [sp-Ch] [bp-4130h]@1 char v16; // [sp+0h] [bp-4124h]@4 int v17; // [sp+5h] [bp-411Fh]@4 int v18; // [sp+9h] [bp-411Bh]@4 int v19; // [sp+Dh] [bp-4117h]@4 char v20; // [sp+2004h] [bp-2120h]@2 __int16 v21; // [sp+2009h] [bp-211Bh]@2 __int16 v22; // [sp+200Bh] [bp-2119h]@2 int v23; // [sp+200Dh] [bp-2117h]@2 int v24; // [sp+2011h] [bp-2113h]@2 int v25; // [sp+2015h] [bp-210Fh]@2 int v26; // [sp+2019h] [bp-210Bh]@2 int v27; // [sp+201Dh] [bp-2107h]@2 int v28; // [sp+2021h] [bp-2103h]@2 int v29; // [sp+2025h] [bp-20FFh]@2 int v30; // [sp+2029h] [bp-20FBh]@2 int rgbValue; // [sp+4008h] [bp-11Ch]@2 int v32; // [sp+400Ch] [bp-118h]@2 int v33; // [sp+4010h] [bp-114h]@2 char v34; // [sp+4014h] [bp-110h]@3 unsigned int v35; // [sp+4114h] [bp-10h]@1 int v36; // [sp+4120h] [bp-4h]@2 int v37; // [sp+4124h] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v15 = (unsigned int)&v37 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v20); v36 = 0; sub_44E310((int)&v20, 0x985Du, 0x24u, 0); v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 28); v24 = *(_DWORD *)(a2 + 8); v25 = *(_DWORD *)(a2 + 12); v26 = *(_DWORD *)(a2 + 16); v27 = *(_DWORD *)(a2 + 20); v7 = *(_DWORD *)(a2 + 24); v22 = v5; v8 = *(_DWORD *)(a2 + 4); v28 = v7; v23 = v8; v32 = v8; v9 = *(_DWORD *)v3; v29 = v6; rgbValue = v6; v21 = 6128; v30 = *(_DWORD *)(a2 + 32); v33 = 0; LOBYTE(v10) = sub_454850(v9 + 4684, &rgbValue); if ( v10 ) { sub_44E180((int)&v16); LOBYTE(v36) = 1; sub_44E310((int)&v16, 0x755u, 0xCu, 0); v12 = *(_DWORD *)(a2 + 28); v13 = *(_DWORD *)(a2 + 32); v19 = *(_DWORD *)(a2 + 4); v17 = v12; v18 = v13; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v16); LOBYTE(v36) = 0; nullsub_1(&v16); } else { v11 = *(_DWORD *)(a2 + 4); v21 = 6129; sprintf( &v34, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_SET_MASTER_REQ, GuildNo=%d, CharNo=%d, nRet=%d", *(_DWORD *)(a2 + 28), v11, v33, v15); sub_446350(1, "Msg", "%s", &v34); } v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v20); v36 = -1; nullsub_1(&v20); result = v14; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0041C350) -------------------------------------------------------- signed int __thiscall sub_41C350(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // eax@2 int v7; // edx@2 int v8; // ecx@2 int v9; // edx@2 int v10; // ecx@2 int v11; // edx@2 int v12; // ecx@2 int v13; // edx@2 int v14; // eax@2 int v15; // eax@2 int v16; // eax@3 int v17; // ST20_4@3 signed int v18; // esi@4 unsigned int v19; // [sp-Ch] [bp-212Ch]@1 char v20; // [sp+0h] [bp-2120h]@2 __int16 v21; // [sp+5h] [bp-211Bh]@2 int v22; // [sp+7h] [bp-2119h]@2 int v23; // [sp+Bh] [bp-2115h]@2 int v24; // [sp+Fh] [bp-2111h]@2 int v25; // [sp+13h] [bp-210Dh]@2 int v26; // [sp+17h] [bp-2109h]@2 int v27; // [sp+1Bh] [bp-2105h]@2 int v28; // [sp+1Fh] [bp-2101h]@2 int v29; // [sp+23h] [bp-20FDh]@2 int v30; // [sp+27h] [bp-20F9h]@2 int v31; // [sp+2Bh] [bp-20F5h]@2 int v32; // [sp+2Fh] [bp-20F1h]@2 int v33; // [sp+33h] [bp-20EDh]@2 int v34; // [sp+37h] [bp-20E9h]@2 int rgbValue; // [sp+2004h] [bp-11Ch]@2 int v36; // [sp+2008h] [bp-118h]@2 int v37; // [sp+200Ch] [bp-114h]@2 char v38; // [sp+2010h] [bp-110h]@3 unsigned int v39; // [sp+2110h] [bp-10h]@1 int v40; // [sp+211Ch] [bp-4h]@2 int v41; // [sp+2120h] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v19 = (unsigned int)&v41 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v20); v40 = 0; sub_44E310((int)&v20, 0x9880u, 0x36u, 0); v5 = *(_DWORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 2); v24 = *(_DWORD *)(a2 + 10); v26 = *(_DWORD *)(a2 + 18); v28 = *(_DWORD *)(a2 + 26); v30 = *(_DWORD *)(a2 + 34); v7 = *(_DWORD *)(a2 + 38); v23 = v5; v8 = *(_DWORD *)(a2 + 14); v31 = v7; v9 = *(_DWORD *)(a2 + 42); v25 = v8; v10 = *(_DWORD *)(a2 + 22); v32 = v9; v11 = *(_DWORD *)(a2 + 46); v27 = v10; v12 = *(_DWORD *)(a2 + 30); v33 = v11; v13 = *(_DWORD *)(a2 + 50); v22 = v6; rgbValue = v6; v14 = *(_DWORD *)v3; v29 = v12; v36 = v12; v34 = v13; v21 = 6016; v37 = 0; LOBYTE(v15) = sub_454850(v14 + 4684, &rgbValue); if ( !v15 ) { v16 = *(_DWORD *)(a2 + 2); v17 = *(_DWORD *)(a2 + 30); v21 = 3207; sprintf( &v38, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_SET_MASTER_BY_LEAVE_REQ, GuildNo=%d, nOldAcademyMasterCharNo=%d, nNewAcademyMasterCharNo=%d, nRet=%d", v16, *(_DWORD *)(a2 + 6), v17, v37, v19); sub_446350(1, "Msg", "%s", &v38); } v18 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v20); v40 = -1; nullsub_1(&v20); result = v18; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041C500) -------------------------------------------------------- signed int __thiscall sub_41C500(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // eax@2 __int16 v7; // cx@6 size_t v8; // ebx@6 char v9; // dl@6 __int16 v10; // ax@9 signed int v11; // ebx@10 __int16 v12; // dx@13 char *v13; // [sp-18h] [bp-4FE4h]@9 unsigned int v14; // [sp-14h] [bp-4FE0h]@9 unsigned int v15; // [sp-10h] [bp-4FDCh]@1 int TargetValue; // [sp+0h] [bp-4FCCh]@4 int v17; // [sp+4h] [bp-4FC8h]@6 int rgbValue; // [sp+8h] [bp-4FC4h]@2 int v19; // [sp+Ch] [bp-4FC0h]@2 size_t v20; // [sp+10h] [bp-4FBCh]@5 char v21; // [sp+14h] [bp-4FB8h]@6 int v22; // [sp+19h] [bp-4FB3h]@6 __int16 v23; // [sp+1Dh] [bp-4FAFh]@6 int v24; // [sp+1Fh] [bp-4FADh]@6 int v25; // [sp+23h] [bp-4FA9h]@6 char v26; // [sp+27h] [bp-4FA5h]@6 char v27; // [sp+28h] [bp-4FA4h]@6 char v28; // [sp+2018h] [bp-2FB4h]@9 __int16 v29; // [sp+2019h] [bp-2FB3h]@9 int v30; // [sp+201Bh] [bp-2FB1h]@9 __int16 v31; // [sp+201Fh] [bp-2FADh]@9 __int16 v32; // [sp+2021h] [bp-2FABh]@9 char v33; // [sp+2024h] [bp-2FA8h]@13 __int16 v34; // [sp+2025h] [bp-2FA7h]@13 int v35; // [sp+2027h] [bp-2FA5h]@13 __int16 v36; // [sp+202Bh] [bp-2FA1h]@13 __int16 v37; // [sp+202Dh] [bp-2F9Fh]@13 _BYTE v38[11404]; // [sp+2030h] [bp-2F9Ch]@5 char v39; // [sp+4CBCh] [bp-310h]@9 char v40; // [sp+4DBCh] [bp-210h]@11 char v41; // [sp+4EBCh] [bp-110h]@7 unsigned int v42; // [sp+4FBCh] [bp-10h]@1 int v43; // [sp+4FC8h] [bp-4h]@6 int v44; // [sp+4FCCh] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; v15 = (unsigned int)&v44 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { rgbValue = *(_DWORD *)(a2 + 8); v5 = *(_DWORD *)v3 + 4684; v19 = 0; LOBYTE(v6) = sub_455690(v5, &rgbValue); if ( v6 ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) sub_44E5A0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v3 + 4684); if ( sub_403400((void *)v3, *(_DWORD *)(a2 + 8), (int)v38, (int)&v20) ) { sub_44E180((int)&v21); v43 = 0; sub_44E310((int)&v21, 0x3484u, 0x10u, 0); v7 = *(_WORD *)(a2 + 6); v8 = v20; v22 = *(_DWORD *)(a2 + 2); v23 = v7; v25 = v17; v24 = TargetValue; v9 = *(_BYTE *)(a2 + 12); v27 = v38[2]; v26 = v9; if ( sub_44E280((int)&v21, &v38[3], v20) ) { v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v21); if ( v11 ) { v43 = -1; nullsub_1(&v21); return v11; } sprintf( &v40, "* FATAL ERROR - CPFsCharacter::fc_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ - SEND FAILED, nGuildNo=%d", *(_DWORD *)(a2 + 8), v15); sub_446350(1, "Msg", "%s", &v40); } else { sprintf( &v41, "* FATAL ERROR - CPFsCharacter::fc_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ - OVER MAX PACKET SIZE=%d, nGuildNo=%d", v8, *(_DWORD *)(a2 + 8), v15); sub_446350(1, "Msg", "%s", &v41); } v43 = -1; nullsub_1(&v21); } sprintf( &v39, "FAILED - fc_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ, Get, nGuildNo=%d", *(_DWORD *)(a2 + 8), v15); sub_446350(1, "Msg", "%s", &v39); v10 = *(_WORD *)(a2 + 6); v30 = *(_DWORD *)(a2 + 2); v31 = v10; v14 = 11; v32 = 6107; v28 = 10; v29 = 13443; v13 = &v28; } else { sprintf( &v41, "ERROR - CPFsCharacter::fc_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ, GuildNo=%d", *(_DWORD *)(a2 + 8), v15); sub_446350(1, "Msg", "%s", &v41); v12 = *(_WORD *)(a2 + 6); v35 = *(_DWORD *)(a2 + 2); v36 = v12; v14 = 11; v37 = 6107; v33 = 10; v34 = 13443; v13 = &v33; } result = sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v13, v14); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041C800) -------------------------------------------------------- signed int __thiscall sub_41C800(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@2 int v11; // edx@4 int v12; // eax@4 signed int v13; // esi@7 unsigned int v14; // [sp-Ch] [bp-413Ch]@1 char v15; // [sp+0h] [bp-4130h]@4 int v16; // [sp+5h] [bp-412Bh]@4 int v17; // [sp+9h] [bp-4127h]@4 int v18; // [sp+Dh] [bp-4123h]@4 int v19; // [sp+11h] [bp-411Fh]@4 int v20; // [sp+15h] [bp-411Bh]@4 char v21; // [sp+2004h] [bp-212Ch]@2 int v22; // [sp+2009h] [bp-2127h]@2 __int16 v23; // [sp+200Dh] [bp-2123h]@2 __int16 v24; // [sp+200Fh] [bp-2121h]@2 int v25; // [sp+2011h] [bp-211Fh]@4 int v26; // [sp+2015h] [bp-211Bh]@4 __int16 v27; // [sp+2019h] [bp-2117h]@3 int rgbValue; // [sp+4008h] [bp-128h]@2 int v29; // [sp+400Ch] [bp-124h]@2 int v30; // [sp+4010h] [bp-120h]@2 int v31; // [sp+4014h] [bp-11Ch]@2 int v32; // [sp+4018h] [bp-118h]@2 char v33; // [sp+4020h] [bp-110h]@3 unsigned int v34; // [sp+4120h] [bp-10h]@1 int v35; // [sp+412Ch] [bp-4h]@2 int v36; // [sp+4130h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v14 = (unsigned int)&v36 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v21); v35 = 0; sub_44E310((int)&v21, 0x3486u, 0x12u, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_WORD *)(a2 + 8); v22 = *(_DWORD *)(a2 + 2); rgbValue = *(_DWORD *)(a2 + 10); v7 = *(_DWORD *)(a2 + 18); v23 = v5; v8 = *(_DWORD *)(a2 + 4); v31 = v7; v9 = *(_DWORD *)v3; v29 = v8; v24 = v6; v30 = *(_DWORD *)(a2 + 14); v32 = 0; LOBYTE(v10) = sub_454DF0(v9 + 4684, &rgbValue); if ( v10 ) { v25 = v30; v26 = v31; v27 = 6112; sub_44E180((int)&v15); LOBYTE(v35) = 1; sub_44E310((int)&v15, 0x4AAu, 0x14u, 0); v11 = *(_DWORD *)(a2 + 10); v12 = *(_DWORD *)(a2 + 14); v16 = *(_DWORD *)(a2 + 4); v19 = v30; v18 = v11; v17 = v12; v20 = v31; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v15); LOBYTE(v35) = 0; nullsub_1(&v15); } else { v27 = 6120; sprintf( &v33, "FAILED - fc_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ, nGuildNo=%d, nCharNo=%d, nWithdrawMoney=%I64d, nRet=%d", rgbValue, v29, v30, v31, v32, v14); sub_446350(1, "Msg", "%s", &v33); } v13 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v21); v35 = -1; nullsub_1(&v21); result = v13; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0041CA20) -------------------------------------------------------- signed int __thiscall sub_41CA20(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@2 int v11; // edx@4 int v12; // eax@4 signed int v13; // esi@7 unsigned int v14; // [sp-Ch] [bp-413Ch]@1 char v15; // [sp+0h] [bp-4130h]@4 int v16; // [sp+5h] [bp-412Bh]@4 int v17; // [sp+9h] [bp-4127h]@4 int v18; // [sp+Dh] [bp-4123h]@4 int v19; // [sp+11h] [bp-411Fh]@4 int v20; // [sp+15h] [bp-411Bh]@4 char v21; // [sp+2004h] [bp-212Ch]@2 int v22; // [sp+2009h] [bp-2127h]@2 __int16 v23; // [sp+200Dh] [bp-2123h]@2 __int16 v24; // [sp+200Fh] [bp-2121h]@2 int v25; // [sp+2011h] [bp-211Fh]@4 int v26; // [sp+2015h] [bp-211Bh]@4 __int16 v27; // [sp+2019h] [bp-2117h]@3 int rgbValue; // [sp+4008h] [bp-128h]@2 int v29; // [sp+400Ch] [bp-124h]@2 int v30; // [sp+4010h] [bp-120h]@2 int v31; // [sp+4014h] [bp-11Ch]@2 int v32; // [sp+4018h] [bp-118h]@2 char v33; // [sp+4020h] [bp-110h]@3 unsigned int v34; // [sp+4120h] [bp-10h]@1 int v35; // [sp+412Ch] [bp-4h]@2 int v36; // [sp+4130h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v14 = (unsigned int)&v36 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v21); v35 = 0; sub_44E310((int)&v21, 0x3488u, 0x12u, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_WORD *)(a2 + 8); v22 = *(_DWORD *)(a2 + 2); rgbValue = *(_DWORD *)(a2 + 10); v7 = *(_DWORD *)(a2 + 18); v23 = v5; v8 = *(_DWORD *)(a2 + 4); v31 = v7; v9 = *(_DWORD *)v3; v29 = v8; v24 = v6; v30 = *(_DWORD *)(a2 + 14); v32 = 0; LOBYTE(v10) = sub_454F20(v9 + 4684, &rgbValue); if ( v10 ) { v25 = v30; v26 = v31; v27 = 6560; sub_44E180((int)&v15); LOBYTE(v35) = 1; sub_44E310((int)&v15, 0x4AAu, 0x14u, 0); v11 = *(_DWORD *)(a2 + 10); v12 = *(_DWORD *)(a2 + 14); v16 = *(_DWORD *)(a2 + 4); v19 = v30; v18 = v11; v17 = v12; v20 = v31; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v15); LOBYTE(v35) = 0; nullsub_1(&v15); } else { v27 = 6567; sprintf( &v33, "FAILED - fc_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ, nGuildNo=%d, nCharNo=%d, nWDepositMoney=%I64d, nRet=%d", rgbValue, v29, v30, v31, v32, v14); sub_446350(1, "Msg", "%s", &v33); } v13 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v21); v35 = -1; nullsub_1(&v21); result = v13; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0041CC40) -------------------------------------------------------- signed int __thiscall sub_41CC40(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 signed int v5; // ebx@2 int v6; // edx@2 int v7; // eax@2 int v8; // eax@2 int v9; // ST18_4@3 void *v10; // edi@4 int v11; // ST18_4@9 signed int v12; // esi@11 int v13; // [sp-14h] [bp-2240h]@3 unsigned int v14; // [sp-10h] [bp-223Ch]@1 char TargetValue; // [sp+0h] [bp-222Ch]@6 char v16; // [sp+4h] [bp-2228h]@6 int v17; // [sp+8h] [bp-2224h]@1 char v18; // [sp+Ch] [bp-2220h]@2 __int16 v19; // [sp+11h] [bp-221Bh]@2 __int16 v20; // [sp+13h] [bp-2219h]@2 char v21; // [sp+15h] [bp-2217h]@8 char v22; // [sp+17h] [bp-2215h]@4 int rgbValue; // [sp+2010h] [bp-21Ch]@2 char v24; // [sp+2014h] [bp-218h]@2 int v25; // [sp+2018h] [bp-214h]@2 char v26; // [sp+201Ch] [bp-210h]@3 char v27; // [sp+211Ch] [bp-110h]@9 unsigned int v28; // [sp+221Ch] [bp-10h]@1 int v29; // [sp+2228h] [bp-4h]@2 int v30; // [sp+222Ch] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v14 = (unsigned int)&v30 ^ __security_cookie; v3 = this; v17 = a2; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v18); v5 = 0; v29 = 0; sub_44E310((int)&v18, 0x9834u, 5u, 0); v6 = *(_DWORD *)(a2 + 4); v20 = *(_WORD *)(a2 + 2); v7 = *(_DWORD *)v3; v19 = 6272; rgbValue = v6; v24 = 1; v25 = 0; LOBYTE(v8) = sub_454960(v7 + 4684, &rgbValue); if ( v8 ) { v10 = &v22; do { if ( !sub_44E4A0(*(_DWORD *)v3 + 4684) ) break; sub_44E510(*(_DWORD *)v3 + 4684, (char *)v10 - 1); sub_44E540(*(_DWORD *)v3 + 4684, &v16); sub_44E5D0(*(_DWORD *)v3 + 4684, v10); sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); ++v5; v10 = (char *)v10 + 9; } while ( v5 < 51 ); sub_44E4D0(*(_DWORD *)v3 + 4684); if ( (unsigned int)v5 > 0x33 ) { v11 = *(_DWORD *)(v17 + 4); v19 = 6277; sprintf( &v27, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_GET_REWARD_MONEY_REQ : GuildNo=%d, DB.fetch() Result=%d", v11, v5, v14); sub_446350(1, "Msg", "%s", &v27); } else { v21 = v5; sub_44E310((int)&v18, 0x9834u, 9 * (unsigned __int8)v5 + 5, 0); } v13 = (int)&v18; } else { v9 = *(_DWORD *)(a2 + 4); v19 = 6277; sprintf( &v26, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_GET_REWARD_MONEY_REQ : GuildNo=%d, nRet=%d", v9, v25, v14); sub_446350(1, "Msg", "%s", &v26); v13 = (int)&v18; } v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), v13); v29 = -1; nullsub_1(&v18); result = v12; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041CE70) -------------------------------------------------------- signed int __thiscall sub_41CE70(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@1 signed int result; // eax@1 signed int v6; // ebx@2 int v7; // edx@2 int v8; // eax@2 int v9; // eax@2 int v10; // ST24_4@3 int v11; // ecx@6 signed int v12; // edx@6 int v13; // ecx@7 unsigned __int8 v14; // al@10 int v15; // eax@11 __int16 *v16; // eax@15 int v17; // ST24_4@23 signed int v18; // esi@25 int v19; // [sp-14h] [bp-2250h]@3 unsigned int v20; // [sp-10h] [bp-224Ch]@1 char *v21; // [sp+4h] [bp-2238h]@4 unsigned __int8 v22; // [sp+Bh] [bp-2231h]@6 char v23; // [sp+Ch] [bp-2230h]@2 __int16 v24; // [sp+11h] [bp-222Bh]@2 __int16 v25; // [sp+13h] [bp-2229h]@2 char v26; // [sp+15h] [bp-2227h]@21 char v27; // [sp+16h] [bp-2226h]@8 __int16 v28; // [sp+17h] [bp-2225h]@9 char v29; // [sp+19h] [bp-2223h]@4 int v30; // [sp+1Ah] [bp-2222h]@11 int v31; // [sp+1Eh] [bp-221Eh]@11 int v32; // [sp+22h] [bp-221Ah]@11 int rgbValue; // [sp+2010h] [bp-22Ch]@2 char v34; // [sp+2014h] [bp-228h]@2 int v35; // [sp+2018h] [bp-224h]@2 char TargetValue; // [sp+201Ch] [bp-220h]@6 __int16 v37; // [sp+201Dh] [bp-21Fh]@6 int v38; // [sp+2020h] [bp-21Ch]@6 int v39; // [sp+2024h] [bp-218h]@6 int v40; // [sp+2028h] [bp-214h]@11 char v41; // [sp+202Ch] [bp-210h]@23 char v42; // [sp+212Ch] [bp-110h]@3 unsigned int v43; // [sp+222Ch] [bp-10h]@1 int v44; // [sp+2238h] [bp-4h]@2 int v45; // [sp+223Ch] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v20 = (unsigned int)&v45 ^ __security_cookie; v3 = a2; v4 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v23); v6 = 0; v44 = 0; sub_44E310((int)&v23, 0x9838u, 5u, 0); v7 = *(_DWORD *)(a2 + 4); v25 = *(_WORD *)(a2 + 2); v8 = *(_DWORD *)v4; v24 = 6280; rgbValue = v7; v34 = 2; v35 = 0; LOBYTE(v9) = sub_454960(v8 + 4684, &rgbValue); if ( v9 ) { v21 = &v29; do { if ( !sub_44E4A0(*(_DWORD *)v4 + 4684) ) break; sub_44E510(*(_DWORD *)v4 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v4 + 4684, &v22); sub_44E5D0(*(_DWORD *)v4 + 4684, &v39); sub_44E540(*(_DWORD *)v4 + 4684, &v37); v11 = v22; v12 = 0; v38 = v22; if ( v6 > 0 ) { v13 = 0; while ( 1 ) { if ( TargetValue == *(&v27 + v13) && v37 == *(__int16 *)((char *)&v28 + v13) ) { v14 = *(&v29 + v13); if ( v14 >= 1u ) { v24 = 6285; sprintf( &v42, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_GET_REWARD_ITEM_REQ : GuildNo=%d, NumOfItemOption=%d, Type=%d, Data=%lld", *(_DWORD *)(v3 + 4), (unsigned __int8)*(&v29 + 16 * v12), v38, v39, v40, v20); sub_446350(1, "Msg", "%s", &v42); goto LABEL_24; } v15 = v13 + 12 * v14; *(int *)((char *)&v31 + v15) = v39; *(int *)((char *)&v32 + v15) = v40; *(int *)((char *)&v30 + 12 * (unsigned __int8)(*(&v29 + v13))++ + v13) = v38; v3 = a2; } ++v12; v13 += 16; if ( v12 >= v6 ) { v11 = v38; break; } } } if ( v12 == v6 ) { v16 = &v24 + 8 * v12; *((_BYTE *)v16 + 5) = TargetValue; v16[3] = v37; if ( v11 == 2 ) { *v21 = 0; } else { *v21 = 1; *(_DWORD *)((char *)v16 + 13) = v39; *(_DWORD *)((char *)v16 + 17) = v40; *(_DWORD *)((char *)v16 + 9) = v11; } ++v6; v21 += 16; } } while ( v6 < 51 ); sub_44E4D0(*(_DWORD *)v4 + 4684); if ( (unsigned int)v6 > 0x33 ) { v17 = *(_DWORD *)(v3 + 4); v24 = 6285; sprintf( &v41, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_GET_REWARD_MONEY_REQ : GuildNo=%d, DB.fetch() Result=%d", v17, v6, v20); sub_446350(1, "Msg", "%s", &v41); LABEL_24: v19 = (int)&v23; } else { v26 = v6; sub_44E310((int)&v23, 0x9838u, 16 * (unsigned __int8)v6 + 5, 0); v19 = (int)&v23; } } else { v10 = *(_DWORD *)(a2 + 4); v24 = 6285; sprintf( &v42, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_GET_REWARD_ITEM_REQ : GuildNo=%d, nRet=%d", v10, v35, v20); sub_446350(1, "Msg", "%s", &v42); v19 = (int)&v23; } v18 = sub_43BFB0(*(_DWORD *)(v4 + 4), v19); v44 = -1; nullsub_1(&v23); result = v18; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041D210) -------------------------------------------------------- signed int __thiscall sub_41D210(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 signed int v5; // ebx@2 int v6; // edx@2 int v7; // eax@2 int v8; // eax@2 int v9; // ST24_4@3 int v10; // edi@5 __int16 v11; // dx@6 int v12; // eax@6 int v13; // ecx@6 int v14; // eax@6 int v15; // eax@6 int v16; // ecx@9 signed int v17; // esi@10 int v18; // [sp-14h] [bp-2150h]@9 unsigned int v19; // [sp-10h] [bp-214Ch]@1 int v20; // [sp+0h] [bp-213Ch]@1 char v21; // [sp+4h] [bp-2138h]@2 __int16 v22; // [sp+9h] [bp-2133h]@2 __int16 v23; // [sp+Bh] [bp-2131h]@2 int v24; // [sp+2008h] [bp-134h]@2 char v25; // [sp+200Ch] [bp-130h]@2 int v26; // [sp+2010h] [bp-12Ch]@3 int rgbValue; // [sp+2014h] [bp-128h]@6 __int16 v28; // [sp+2018h] [bp-124h]@6 char v29; // [sp+201Ah] [bp-122h]@6 int v30; // [sp+201Ch] [bp-120h]@6 int v31; // [sp+2020h] [bp-11Ch]@6 int v32; // [sp+2024h] [bp-118h]@6 int v33; // [sp+2028h] [bp-114h]@6 char v34; // [sp+202Ch] [bp-110h]@3 unsigned int v35; // [sp+212Ch] [bp-10h]@1 int v36; // [sp+2138h] [bp-4h]@2 int v37; // [sp+213Ch] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v19 = (unsigned int)&v37 ^ __security_cookie; v3 = this; v20 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v21); v5 = 0; v36 = 0; sub_44E310((int)&v21, 0x983Cu, 4u, 0); v6 = *(_DWORD *)(a2 + 4); v22 = *(_WORD *)(a2 + 2); v7 = *(_DWORD *)v3; v23 = 6336; v24 = v6; v25 = 1; LOBYTE(v8) = sub_454CE0(v7 + 4684, &v24); if ( !v8 ) { v9 = *(_DWORD *)(a2 + 4); v23 = 6341; sprintf( &v34, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_SET_REWARD_MONEY_REQ : GuildNo=%d, nRet=%d", v9, v26, v19); sub_446350(1, "Msg", "%s", &v34); } if ( *(_BYTE *)(a2 + 8) <= 0u ) { LABEL_9: v16 = *(_DWORD *)(v3 + 4); v18 = (int)&v21; } else { v10 = a2 + 10; while ( 1 ) { v11 = *(_BYTE *)(v10 - 1); v12 = *(_DWORD *)v10; rgbValue = *(_DWORD *)(a2 + 4); v13 = *(_DWORD *)(v10 + 4); v28 = v11; v30 = v12; v14 = *(_DWORD *)v20; v31 = v13; v29 = 1; v32 = 65535; v33 = 0; LOBYTE(v15) = sub_454B80(v14 + 4684, &rgbValue); if ( !v15 ) break; ++v5; v10 += 9; if ( v5 >= *(_BYTE *)(a2 + 8) ) { v3 = v20; goto LABEL_9; } } v23 = 6341; sprintf( &v34, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_SET_REWARD_MONEY_REQ, SRS_INSERT : GuildNo=%d, Level=%d, Money=%lld, nRet=%d", *(_DWORD *)(a2 + 4), *(_BYTE *)(v5 + a2 + 8 * v5 + 2 + 7), *(_DWORD *)(v5 + a2 + 8 * v5 + 2 + 8), *(_DWORD *)(v5 + a2 + 8 * v5 + 2 + 12), v33, v19); sub_446350(1, "Msg", "%s", &v34); v18 = (int)&v21; v16 = *(_DWORD *)(v20 + 4); } v17 = sub_43BFB0(v16, v18); v36 = -1; nullsub_1(&v21); result = v17; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041D440) -------------------------------------------------------- signed int __thiscall sub_41D440(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // eax@2 int v7; // eax@2 int v8; // ST2C_4@3 int v9; // edi@5 int v10; // esi@7 int v11; // ecx@9 __int16 v12; // dx@9 int v13; // eax@9 int v14; // ecx@9 int v15; // edx@9 int v16; // eax@9 int v17; // eax@9 int v18; // ecx@13 signed int v19; // esi@14 int v20; // [sp-14h] [bp-2158h]@13 unsigned int v21; // [sp-10h] [bp-2154h]@1 int v22; // [sp+0h] [bp-2144h]@1 signed int v23; // [sp+4h] [bp-2140h]@4 signed int v24; // [sp+8h] [bp-213Ch]@6 char v25; // [sp+Ch] [bp-2138h]@2 __int16 v26; // [sp+11h] [bp-2133h]@2 __int16 v27; // [sp+13h] [bp-2131h]@2 int v28; // [sp+2010h] [bp-134h]@2 char v29; // [sp+2014h] [bp-130h]@2 int v30; // [sp+2018h] [bp-12Ch]@3 int rgbValue; // [sp+201Ch] [bp-128h]@9 __int16 v32; // [sp+2020h] [bp-124h]@9 char v33; // [sp+2022h] [bp-122h]@9 int v34; // [sp+2024h] [bp-120h]@9 int v35; // [sp+2028h] [bp-11Ch]@9 int v36; // [sp+202Ch] [bp-118h]@9 int v37; // [sp+2030h] [bp-114h]@9 char v38; // [sp+2034h] [bp-110h]@3 unsigned int v39; // [sp+2134h] [bp-10h]@1 int v40; // [sp+2140h] [bp-4h]@2 int v41; // [sp+2144h] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v21 = (unsigned int)&v41 ^ __security_cookie; v3 = this; v22 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v25); v40 = 0; sub_44E310((int)&v25, 0x9840u, 4u, 0); v5 = *(_DWORD *)(a2 + 4); v26 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)v3; v27 = 6408; v28 = v5; v29 = 2; LOBYTE(v7) = sub_454CE0(v6 + 4684, &v28); if ( !v7 ) { v8 = *(_DWORD *)(a2 + 4); v27 = 6557; sprintf( &v38, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_SET_REWARD_ITEM_REQ : GuildNo=%d, nRet=%d", v8, v30, v21); sub_446350(1, "Msg", "%s", &v38); } v23 = 0; if ( *(_BYTE *)(a2 + 8) ) { v9 = a2 + 12; do { v24 = 0; if ( *(_BYTE *)v9 ) { v10 = v9 + 5; while ( v24 < 1 ) { v11 = *(_DWORD *)(a2 + 4); v12 = *(_BYTE *)(v9 - 3); v33 = *(_BYTE *)(v10 - 4); v13 = *(_WORD *)(v9 - 2); rgbValue = v11; v14 = *(_DWORD *)v10; v32 = v12; v15 = *(_DWORD *)(v10 + 4); v34 = v14; v36 = v13; v16 = *(_DWORD *)v22; v35 = v15; v37 = 0; LOBYTE(v17) = sub_454B80(v16 + 4684, &rgbValue); if ( !v17 ) { v27 = 6413; sprintf( &v38, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_SET_REWARD_ITEM_REQ, SRS_INSERT : GuildNo=%d, Level=%d, ItemID=%d, OptionType=%d, OptionData=%lld, nRet=%d", *(_DWORD *)(a2 + 4), *(_BYTE *)(16 * v23 + a2 + 9), *(_WORD *)(16 * v23 + a2 + 10), *(_DWORD *)(16 * v23 + 12 * v24 + a2 + 13), *(_DWORD *)(16 * v23 + 12 * v24 + a2 + 17), *(_DWORD *)(16 * v23 + 12 * v24 + a2 + 21), v37, v21); sub_446350(1, "Msg", "%s", &v38); v20 = (int)&v25; v18 = *(_DWORD *)(v22 + 4); goto LABEL_14; } v10 += 12; ++v24; if ( v24 >= *(_BYTE *)v9 ) break; } } v9 += 16; ++v23; } while ( v23 < *(_BYTE *)(a2 + 8) ); v3 = v22; } v18 = *(_DWORD *)(v3 + 4); v20 = (int)&v25; LABEL_14: v19 = sub_43BFB0(v18, v20); v40 = -1; nullsub_1(&v25); result = v19; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041D6F0) -------------------------------------------------------- signed int __thiscall sub_41D6F0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // eax@2 int v7; // eax@2 int v8; // ST18_4@3 signed int v9; // esi@4 unsigned int v10; // [sp-Ch] [bp-212Ch]@1 char v11; // [sp+0h] [bp-2120h]@2 __int16 v12; // [sp+5h] [bp-211Bh]@2 __int16 v13; // [sp+7h] [bp-2119h]@2 int rgbValue; // [sp+2004h] [bp-11Ch]@2 char v15; // [sp+2008h] [bp-118h]@2 int v16; // [sp+200Ch] [bp-114h]@3 char v17; // [sp+2010h] [bp-110h]@3 unsigned int v18; // [sp+2110h] [bp-10h]@1 int v19; // [sp+211Ch] [bp-4h]@2 int v20; // [sp+2120h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v10 = (unsigned int)&v20 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v11); v19 = 0; sub_44E310((int)&v11, 0x9844u, 4u, 0); v5 = *(_DWORD *)(a2 + 4); v12 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)v3; v13 = 6480; rgbValue = v5; v15 = 1; LOBYTE(v7) = sub_454CE0(v6 + 4684, &rgbValue); if ( !v7 ) { v8 = *(_DWORD *)(a2 + 4); v13 = 6485; sprintf( &v17, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_CLEAR_REWARD_MONEY_REQ : GuildNo=%d, nRet=%d", v8, v16, v10); sub_446350(1, "Msg", "%s", &v17); } v9 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v11); v19 = -1; nullsub_1(&v11); result = v9; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041D830) -------------------------------------------------------- signed int __thiscall sub_41D830(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // eax@2 int v7; // eax@2 int v8; // ST18_4@3 signed int v9; // esi@4 unsigned int v10; // [sp-Ch] [bp-212Ch]@1 char v11; // [sp+0h] [bp-2120h]@2 __int16 v12; // [sp+5h] [bp-211Bh]@2 __int16 v13; // [sp+7h] [bp-2119h]@2 int rgbValue; // [sp+2004h] [bp-11Ch]@2 char v15; // [sp+2008h] [bp-118h]@2 int v16; // [sp+200Ch] [bp-114h]@3 char v17; // [sp+2010h] [bp-110h]@3 unsigned int v18; // [sp+2110h] [bp-10h]@1 int v19; // [sp+211Ch] [bp-4h]@2 int v20; // [sp+2120h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v10 = (unsigned int)&v20 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v11); v19 = 0; sub_44E310((int)&v11, 0x9848u, 4u, 0); v5 = *(_DWORD *)(a2 + 4); v12 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)v3; v13 = 6552; rgbValue = v5; v15 = 2; LOBYTE(v7) = sub_454CE0(v6 + 4684, &rgbValue); if ( !v7 ) { v8 = *(_DWORD *)(a2 + 4); v13 = 6557; sprintf( &v17, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_CLEAR_REWARD_ITEM_REQ : GuildNo=%d, nRet=%d", v8, v16, v10); sub_446350(1, "Msg", "%s", &v17); } v9 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v11); v19 = -1; nullsub_1(&v11); result = v9; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041D970) -------------------------------------------------------- signed int __thiscall sub_41D970(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // eax@2 int v7; // ecx@2 int v8; // ecx@2 int v9; // edx@2 int v10; // eax@2 int v11; // eax@2 int v12; // ST18_4@3 signed int v13; // esi@4 unsigned int v14; // [sp-Ch] [bp-2158h]@1 char v15; // [sp+0h] [bp-214Ch]@2 __int16 v16; // [sp+5h] [bp-2147h]@2 int v17; // [sp+7h] [bp-2145h]@2 __int16 v18; // [sp+Bh] [bp-2141h]@2 int rgbValue; // [sp+2004h] [bp-148h]@2 int v20; // [sp+2008h] [bp-144h]@2 int v21; // [sp+200Ch] [bp-140h]@2 int v22; // [sp+2010h] [bp-13Ch]@2 int v23; // [sp+2014h] [bp-138h]@2 int v24; // [sp+2018h] [bp-134h]@2 int v25; // [sp+201Ch] [bp-130h]@2 char v26; // [sp+2020h] [bp-12Ch]@2 char v27; // [sp+2034h] [bp-118h]@2 __int16 v28; // [sp+2036h] [bp-116h]@2 int v29; // [sp+2038h] [bp-114h]@3 char v30; // [sp+203Ch] [bp-110h]@3 unsigned int v31; // [sp+213Ch] [bp-10h]@1 int v32; // [sp+2148h] [bp-4h]@2 int v33; // [sp+214Ch] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v14 = (unsigned int)&v33 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v15); v32 = 0; sub_44E310((int)&v15, 0x9852u, 8u, 0); v5 = *(_DWORD *)(a2 + 4); v16 = *(_WORD *)(a2 + 2); v17 = *(_DWORD *)(a2 + 8); rgbValue = v17; v21 = *(_DWORD *)(a2 + 12); v6 = *(_DWORD *)(a2 + 24); v18 = 6552; v7 = *(_DWORD *)(a2 + 16); v24 = v6; LOWORD(v6) = *(_BYTE *)(a2 + 33); v22 = v7; v8 = *(_DWORD *)(a2 + 28); v20 = v5; v9 = *(_DWORD *)(a2 + 20); v28 = v6; v10 = *(_DWORD *)v3; v25 = v8; v23 = v9; LOBYTE(v9) = *(_BYTE *)(a2 + 32); v26 = 0; v27 = v9; LOBYTE(v11) = sub_455050(v10 + 4684, &rgbValue); if ( !v11 ) { v12 = *(_DWORD *)(a2 + 8); v18 = 6557; sprintf( &v30, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_CLEAR_REWARD_ITEM_REQ : GuildNo=%d, nRet=%d", v12, v29, v14); sub_446350(1, "Msg", "%s", &v30); } v13 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v15); v32 = -1; nullsub_1(&v15); result = v13; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041DB00) -------------------------------------------------------- signed int __thiscall sub_41DB00(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // eax@2 signed int v7; // esi@4 unsigned int v8; // [sp-8h] [bp-2120h]@1 int rgbValue; // [sp+0h] [bp-2118h]@2 char v10; // [sp+4h] [bp-2114h]@2 __int16 v11; // [sp+9h] [bp-210Fh]@2 char v12; // [sp+2008h] [bp-110h]@3 unsigned int v13; // [sp+2108h] [bp-10h]@1 int v14; // [sp+2114h] [bp-4h]@2 int v15; // [sp+2118h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v8 = (unsigned int)&v15 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v10); v14 = 0; sub_44E310((int)&v10, 0x9858u, 2u, 0); v11 = 6320; v5 = *(_DWORD *)v3 + 4684; rgbValue = 0; LOBYTE(v6) = sub_455480(v5, &rgbValue); if ( !v6 ) { v11 = 6322; sprintf(&v12, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_RANK_BALANCE_REQ nRet=%d", rgbValue, v8); sub_446350(1, "Msg", "%s", &v12); } sub_44E310((int)&v10, 0x9858u, 2u, 0); v7 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v10); v14 = -1; nullsub_1(&v10); result = v7; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041DC30) -------------------------------------------------------- signed int __thiscall sub_41DC30(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // eax@2 int v8; // eax@2 int v9; // ST18_4@3 signed int v10; // esi@4 unsigned int v11; // [sp-10h] [bp-2134h]@1 char v12; // [sp+0h] [bp-2124h]@2 __int16 v13; // [sp+5h] [bp-211Fh]@2 __int16 v14; // [sp+7h] [bp-211Dh]@2 int v15; // [sp+9h] [bp-211Bh]@2 int v16; // [sp+Dh] [bp-2117h]@2 int v17; // [sp+11h] [bp-2113h]@2 int rgbValue; // [sp+2004h] [bp-120h]@2 int v19; // [sp+2008h] [bp-11Ch]@2 int v20; // [sp+200Ch] [bp-118h]@2 int v21; // [sp+2010h] [bp-114h]@2 char v22; // [sp+2014h] [bp-110h]@3 unsigned int v23; // [sp+2114h] [bp-10h]@1 int v24; // [sp+2120h] [bp-4h]@2 int v25; // [sp+2124h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v11 = (unsigned int)&v25 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v12); v24 = 0; sub_44E310((int)&v12, 0x9855u, 0x10u, 0); v5 = *(_DWORD *)(a2 + 8); v6 = *(_DWORD *)(a2 + 12); v14 = *(_WORD *)(a2 + 2); v15 = *(_DWORD *)(a2 + 4); rgbValue = v15; v7 = *(_DWORD *)v3; v16 = v5; v19 = v5; v17 = v6; v13 = 6288; v20 = v6; v21 = 0; LOBYTE(v8) = sub_455560(v7 + 4684, &rgbValue); if ( !v8 ) { v9 = *(_DWORD *)(a2 + 4); v13 = 6289; sprintf(&v22, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_LEVEL_UP_REQ : GuildNo=%d, nRet=%d", v9, v21, v11); sub_446350(1, "Msg", "%s", &v22); } v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v12); v24 = -1; nullsub_1(&v12); result = v10; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041DD90) -------------------------------------------------------- signed int __thiscall sub_41DD90(int this, int a2, int a3) { int v3; // ebx@1 __int16 v4; // cx@2 int v5; // edx@2 __int16 v6; // ax@2 int v7; // eax@2 int v8; // eax@2 int v9; // ST24_4@3 signed int v10; // esi@3 int v11; // edi@4 bool v12; // al@5 int v13; // ecx@5 char v14; // al@6 unsigned __int64 v15; // kr00_8@11 int v16; // ecx@11 signed __int16 v17; // ax@15 int v18; // ecx@16 int v19; // eax@18 int v20; // eax@18 int v21; // ST24_4@19 int v23; // ebx@24 int v24; // esi@24 int v25; // ST28_4@30 int v26; // eax@30 char v27; // cl@32 signed int v28; // edi@32 signed int v29; // ebx@32 int *v30; // esi@32 signed int v31; // eax@42 unsigned __int8 v32; // dl@46 int *v33; // edi@46 int v34; // ecx@46 char *v35; // eax@46 signed int v36; // ecx@46 int v37; // esi@48 int v38; // eax@55 int v39; // ecx@56 int v40; // ecx@57 int v41; // edx@59 int v42; // eax@66 signed __int16 v43; // dx@68 int v44; // ebx@79 int v45; // eax@82 int v46; // eax@82 int v47; // ecx@83 int *v48; // ebx@85 int v49; // ecx@87 int v50; // eax@87 int v51; // esi@88 int v52; // ST28_4@89 unsigned __int16 v53; // si@89 int v54; // eax@89 unsigned __int16 v55; // si@92 int v56; // ecx@92 int v57; // ecx@94 int v58; // ecx@97 int v59; // ecx@98 int v60; // eax@99 int v61; // edx@104 const char *v62; // [sp-14h] [bp-20F3Ch]@93 unsigned int v63; // [sp-10h] [bp-20F38h]@1 int v64; // [sp+0h] [bp-20F28h]@32 unsigned int v65; // [sp+4h] [bp-20F24h]@32 int v66; // [sp+8h] [bp-20F20h]@29 unsigned __int64 v67; // [sp+Ch] [bp-20F1Ch]@23 int v68; // [sp+14h] [bp-20F14h]@1 int *v69; // [sp+18h] [bp-20F10h]@29 unsigned __int8 v70; // [sp+1Fh] [bp-20F09h]@29 int v71; // [sp+20h] [bp-20F08h]@1 unsigned __int64 v72; // [sp+24h] [bp-20F04h]@4 int v73; // [sp+2Ch] [bp-20EFCh]@4 int v74; // [sp+32h] [bp-20EF6h]@4 unsigned __int8 v75; // [sp+36h] [bp-20EF2h]@4 int v76; // [sp+37h] [bp-20EF1h]@11 int v77; // [sp+3Bh] [bp-20EEDh]@11 int v78; // [sp+3Fh] [bp-20EE9h]@11 char v79; // [sp+44h] [bp-20EE4h]@104 int v80; // [sp+49h] [bp-20EDFh]@104 int v81; // [sp+4Dh] [bp-20EDBh]@104 unsigned __int64 v82; // [sp+51h] [bp-20ED7h]@104 __int16 v83; // [sp+59h] [bp-20ECFh]@105 int v84; // [sp+5Bh] [bp-20ECDh]@104 char v85; // [sp+2048h] [bp-1EEE0h]@2 __int16 v86; // [sp+204Dh] [bp-1EEDBh]@2 int v87; // [sp+204Fh] [bp-1EED9h]@2 __int16 v88; // [sp+2053h] [bp-1EED5h]@2 int v89; // [sp+2055h] [bp-1EED3h]@2 int v90; // [sp+2059h] [bp-1EECFh]@2 unsigned __int64 v91; // [sp+205Dh] [bp-1EECBh]@2 int v92; // [sp+2065h] [bp-1EEC3h]@2 char v93; // [sp+2069h] [bp-1EEBFh]@2 __int16 v94; // [sp+206Ah] [bp-1EEBEh]@2 unsigned __int8 v95; // [sp+206Ch] [bp-1EEBCh]@2 int v96; // [sp+206Dh] [bp-1EEBBh]@79 int v97; // [sp+2071h] [bp-1EEB7h]@79 int v98; // [sp+2075h] [bp-1EEB3h]@79 int v99; // [sp+2079h] [bp-1EEAFh]@2 int v100; // [sp+207Dh] [bp-1EEABh]@2 unsigned __int64 v101; // [sp+2081h] [bp-1EEA7h]@2 unsigned __int8 v102; // [sp+2089h] [bp-1EE9Fh]@2 char v103; // [sp+208Ah] [bp-1EE9Eh]@81 char v104; // [sp+208Fh] [bp-1EE99h]@85 int v105; // [sp+404Ch] [bp-1CEDCh]@92 int v106; // [sp+40B4h] [bp-1CE74h]@92 int v107; // [sp+40B8h] [bp-1CE70h]@92 int v108; // [sp+4124h] [bp-1CE04h]@88 char v109; // [sp+4188h] [bp-1CDA0h]@88 char v110; // [sp+418Ch] [bp-1CD9Ch]@88 char v111; // [sp+41F0h] [bp-1CD38h]@88 int v112; // [sp+41F4h] [bp-1CD34h]@30 int v113; // [sp+41F8h] [bp-1CD30h]@46 __int16 v114; // [sp+41FCh] [bp-1CD2Ch]@30 char v115; // [sp+41FEh] [bp-1CD2Ah]@32 int v116; // [sp+4264h] [bp-1CCC4h]@92 int v117; // [sp+4268h] [bp-1CCC0h]@92 int v118; // [sp+426Ch] [bp-1CCBCh]@92 char v119; // [sp+4270h] [bp-1CCB8h]@92 __int16 v120; // [sp+4272h] [bp-1CCB6h]@92 int v121; // [sp+4274h] [bp-1CCB4h]@92 int v122; // [sp+4278h] [bp-1CCB0h]@92 int v123; // [sp+427Ch] [bp-1CCACh]@2 __int16 v124; // [sp+4280h] [bp-1CCA8h]@2 int v125; // [sp+4284h] [bp-1CCA4h]@2 char TargetValue; // [sp+4288h] [bp-1CCA0h]@6 unsigned __int64 v127; // [sp+4290h] [bp-1CC98h]@6 __int16 v128; // [sp+4298h] [bp-1CC90h]@6 int v129; // [sp+42A0h] [bp-1CC88h]@56 int v130; // [sp+42A4h] [bp-1CC84h]@56 unsigned __int64 v131; // [sp+42A8h] [bp-1CC80h]@63 int v132; // [sp+42B0h] [bp-1CC78h]@67 int rgbValue; // [sp+42B8h] [bp-1CC70h]@82 int v134; // [sp+42BCh] [bp-1CC6Ch]@82 unsigned __int64 v135; // [sp+42C0h] [bp-1CC68h]@18 int v136; // [sp+42C8h] [bp-1CC60h]@26 int v137[146]; // [sp+42CCh] [bp-1CC5Ch]@26 unsigned __int8 v138[116739]; // [sp+4515h] [bp-1CA13h]@27 char v139; // [sp+20D18h] [bp-210h]@110 char v140; // [sp+20E18h] [bp-110h]@3 unsigned int v141; // [sp+20F18h] [bp-10h]@1 int v142; // [sp+20F24h] [bp-4h]@2 int v143; // [sp+20F28h] [bp+0h]@1 v141 = (unsigned int)&v143 ^ __security_cookie; v63 = (unsigned int)&v143 ^ __security_cookie; v3 = this; v71 = this; v68 = a2; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v85); v142 = 0; sub_44E310((int)&v85, 0x986Cu, 0x3Du, 0); v4 = *(_WORD *)(a2 + 2); v5 = *(_DWORD *)(a2 + 8); v87 = *(_DWORD *)(a2 + 4); v90 = *(_DWORD *)(a2 + 12); v123 = v90; v6 = *(_BYTE *)(a2 + 16); v86 = v4; v124 = v6; v7 = *(_DWORD *)v3; v94 = -1; v89 = v5; v91 = 0i64; v92 = 0; v93 = 0; v95 = 0; v99 = 0; v100 = 0; v102 = 0; v101 = 0i64; v88 = 6304; v125 = 0; LOBYTE(v8) = sub_454A70(v7 + 4684, &v123); if ( !v8 ) { v9 = *(_DWORD *)(a2 + 12); v88 = 6285; sprintf( &v140, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_REQ : GuildNo=%d, nRet=%d", v9, v125, v63); sub_446350(1, "Msg", "%s", &v140); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v85); goto LABEL_111; } v72 = 0i64; v11 = v71; LOWORD(v73) = -1; v75 = 0; v74 = 1; *(int *)((char *)&v73 + 2) = 1; while ( 1 ) { v12 = sub_44E4A0(*(_DWORD *)v11 + 4684); v13 = *(_DWORD *)v11 + 4684; if ( !v12 ) break; sub_44E510(v13, &TargetValue); sub_44E5D0(*(_DWORD *)v11 + 4684, &v127); sub_44E540(*(_DWORD *)v11 + 4684, &v128); v14 = TargetValue; if ( TargetValue == 1 ) { v72 = v127; } else { if ( (_WORD)v73 == -1 ) { if ( v128 == -1 ) goto LABEL_15; LOWORD(v73) = v128; } else { if ( v128 == -1 || v128 != (_WORD)v73 ) { LABEL_15: sub_44E4D0(*(_DWORD *)v11 + 4684); sprintf( &v140, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_REQ : DB¿¡ º¸»", *(_DWORD *)(v68 + 12), v63); sub_446350(1, "Msg", "%s", &v140); v17 = 6305; LABEL_16: v18 = *(_DWORD *)(v11 + 4); v88 = v17; v10 = sub_43BFB0(v18, (int)&v85); goto LABEL_111; } } v15 = v127; v16 = 3 * v75; *(&v77 + 3 * v75) = v127; *(&v78 + v16) = HIDWORD(v15); *(&v76 + 3 * v75++) = (unsigned __int8)v14; if ( v14 == 3 ) { *(int *)((char *)&v73 + 2) = v15; v74 = v15; } } } sub_44E4D0(v13); if ( v72 ) { v19 = *(_DWORD *)v11 + 4684; v135 = *(_DWORD *)(v68 + 12); LOBYTE(v20) = sub_455690(v19, &v135); if ( !v20 ) { v21 = *(_BYTE *)(v68 + 16); v88 = 6305; sprintf( &v140, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_REQ : GuildNo=%d, Level=%d, nRet=%d", *(_DWORD *)(v68 + 12), v21, HIDWORD(v135), v63); sub_446350(1, "Msg", "%s", &v140); if ( !sub_43BFB0(*(_DWORD *)(v11 + 4), (int)&v85) ) { v142 = -1; nullsub_1(&v85); return 0; } } if ( sub_44E4A0(*(_DWORD *)v11 + 4684) ) sub_44E5D0(*(_DWORD *)v11 + 4684, &v67); sub_44E4D0(*(_DWORD *)v11 + 4684); v24 = HIDWORD(v67); v23 = v67; v101 = v67; } else { v24 = HIDWORD(v67); v23 = v67; } v136 = 511; memset(v137, 0, 0x23Cu); if ( (_WORD)v73 != -1 ) { if ( !sub_403400((void *)v11, *(_DWORD *)(v68 + 12), (int)v138, (int)((char *)&v135 + 4)) ) { v88 = 6305; sprintf( &v140, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_REQ : ±æµå ¾ÆÄ«µ¥¹Ì Àκ¥Å丮 °¡Á®¿À±â ½ÇÆÐ", v63); sub_446350(1, "Msg", "%s", &v140); sub_43BFB0(*(_DWORD *)(v11 + 4), (int)&v85); v142 = -1; nullsub_1(&v85); return 1; } v70 = 0; v69 = (int *)&v138[3]; v66 = 0; if ( v138[2] ) { while ( 1 ) { v25 = (int)((char *)v69 + 3); v26 = (int)sub_44E870(dword_6EC2C8); sub_44BD10((int)&v112, v26, 65535, v25); if ( v114 != (_WORD)v73 ) { LABEL_58: v33 = v69; goto LABEL_59; } HIDWORD(v135) = sub_402D20((int)&unk_6EA3E8, v73); if ( !HIDWORD(v135) ) { v88 = 6305; sprintf( &v140, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_REQ : ±æµå ¾ÆÄ«µ¥¹Ì Àκ¥Å丮·ÎÀÇ ¾ÆÀÌÅÛ È®ÀÎÁß ¿À·", (unsigned __int16)v73, v63); sub_446350(1, "Msg", "%s", &v140); sub_43BFB0(*(_DWORD *)(v71 + 4), (int)&v85); v142 = -1; nullsub_1(&v85); return 1; } v27 = v115; v28 = 0; v64 = 0; v29 = 1; v65 = 0; v30 = &v77; while ( v28 < v75 && v29 == 1 ) { if ( *(v30 - 1) != 2 ) { if ( *(v30 - 1) != 3 ) { if ( *(v30 - 1) == 4 ) { switch ( *(_DWORD *)(*HIDWORD(v135) + 102) ) { case 5: case 6: case 7: case 8: if ( v27 != *v30 || 0 != v30[1] ) goto LABEL_43; break; default: goto LABEL_43; } goto LABEL_44; } LABEL_43: v29 = 0; goto LABEL_44; } v31 = sub_4038C0(v73, (int)&v115, (int)&v65, (int)&v64); v27 = v115; v64 = v31; if ( !v31 ) goto LABEL_43; } LABEL_44: ++v28; v30 += 3; if ( v28 >= 1 ) break; } if ( !v29 ) goto LABEL_58; v32 = v70; v33 = v69; v34 = v70; v35 = (char *)&v86 + 8 * v70 + v70; *((_WORD *)v35 + 31) = v73; *((_WORD *)v35 + 32) = *(_WORD *)((char *)v33 + 1); *(&v136 + 2 * v34) = v112; v137[2 * v34] = v113; v36 = 1; if ( v64 == 1 ) { v36 = v65; if ( *(int *)((char *)&v73 + 2) >= v65 ) { v37 = *(int *)((char *)&v73 + 2) - v65; goto LABEL_51; } *(_DWORD *)(v35 + 66) = *(int *)((char *)&v73 + 2); v35[61] = 1; v37 = 0; } else { v37 = 0; LABEL_51: *(_DWORD *)(v35 + 66) = v36; v35[61] = 0; } *(int *)((char *)&v73 + 2) = v37; v70 = v32 + 1; v102 = v32 + 1; if ( !v37 ) { LABEL_53: v11 = v71; break; } LABEL_59: v41 = (int)((char *)v33 + *(_BYTE *)v33 + 1); ++v66; v69 = (int *)v41; if ( v66 >= v138[2] ) goto LABEL_53; } } v24 = HIDWORD(v67); v23 = v67; } v38 = HIDWORD(v72); if ( v72 > HIDWORD(v72) ) { v39 = *(_DWORD *)(v68 + 8); v129 = *(_DWORD *)(v68 + 12); v130 = v39; if ( __PAIR__(v24, v23) < v72 ) { v40 = v23; v38 = v24; } else { v40 = v72; } v135 = v72 - __PAIR__(v38, v40); v91 = v72 - __PAIR__(v38, v40); v131 = __PAIR__(v38, v40); v99 = v40; v100 = v38; if ( v38 >= 0 && (v38 > 0 || v40) ) { LOBYTE(v42) = sub_454DF0(*(_DWORD *)v11 + 4684, &v129); if ( !v42 ) { switch ( v132 ) { case 1: v43 = 3993; goto LABEL_75; case 2: v88 = 3994; break; case 3: v43 = 3995; goto LABEL_75; case 4: v88 = 3996; break; case 5: v43 = 3997; goto LABEL_75; case 6: v88 = 3998; break; default: v43 = 3992; LABEL_75: v88 = v43; break; } sprintf( &v140, "FAILED - fc_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_REQ, nGuildNo=%d, nCharNo=%d, nWithdrawMoney=%I64d, nRet=%d", v129, v130, v131, v132, v63); sub_446350(1, "Msg", "%s", &v140); v10 = sub_43BFB0(*(_DWORD *)(v11 + 4), (int)&v85); goto LABEL_111; } v101 = v67 - v131; } else { v101 = __PAIR__(v24, v23) - __PAIR__(v38, v40); } } v44 = v68; v92 = *(int *)((char *)&v73 + 2); v93 = *(_BYTE *)(v68 + 16); v98 = v78; v95 = v75; v94 = v73; v96 = v76; v97 = v77; if ( v102 < 1u ) goto LABEL_101; if ( v102 == 1 && !v103 ) { v45 = *(_DWORD *)(v68 + 8); rgbValue = v136; v134 = v137[0]; LODWORD(v135) = v45; v46 = *(_DWORD *)v11; WORD3(v135) = 0; BYTE4(v135) = 2; if ( !sub_460890(v46 + 4684, &rgbValue, 1) ) { v47 = *(_DWORD *)(v11 + 4); v88 = 6305; v10 = sub_43BFB0(v47, (int)&v85); goto LABEL_111; } goto LABEL_101; } v66 = 0; if ( !v102 ) { LABEL_92: v55 = v73; sub_44BC10(&v106, v73, 11, 0, dword_4DFF4C); v56 = *(_DWORD *)(v44 + 8); v116 = v106; v118 = v56; v117 = v107; v120 = 0; v122 = 0; v121 = v55; v119 = 2; if ( !sub_466820(v55, v74 - *(int *)((char *)&v73 + 2), &v105) ) { v62 = "¾ÆÀÌÅÛ ¼Ó¼º ¼ÂÆÃ ½ÇÆÐ"; LABEL_94: sprintf(&v140, v62, v63); sub_446350(1, "Msg", "%s", &v140); v57 = *(_DWORD *)(v11 + 4); v88 = 1099; v10 = sub_43BFB0(v57, (int)&v85); goto LABEL_111; } LOWORD(v60) = sub_46A440(*(_DWORD *)v11 + 4684, &v116, (int)&v105, 1); if ( v60 ) { v62 = (const char *)&unk_4B09B8; goto LABEL_94; } LABEL_101: sub_44E310((int)&v85, 0x986Cu, 9 * v102 + 61, 0); v10 = sub_43BFB0(*(_DWORD *)(v11 + 4), (int)&v85); if ( v10 == 1 ) { if ( v91 || v92 ) { sub_44E180((int)&v79); LOBYTE(v142) = 1; sub_44E310((int)&v79, 0x9882u, 0x16u, 0); v61 = *(_DWORD *)(v44 + 8); v81 = *(_DWORD *)(v44 + 12); v80 = v61; v82 = v91; v84 = v92; if ( v92 ) v83 = v94; else v83 = -1; if ( !sub_402D80((int)&v79) ) { sprintf(&v140, "CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_REQ - ¹ÌÁ", v63); sub_446350(1, "Msg", "%s", &v140); } LOBYTE(v142) = 0; nullsub_1(&v79); } } else { sprintf(&v139, "CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_REQ - º¸»", v63); sub_446350(1, "Msg", "%s", &v139); } goto LABEL_111; } v48 = &v136; v69 = (int *)&v104; while ( 1 ) { if ( !*((_BYTE *)v69 - 5) ) { v49 = v48[1]; LODWORD(v131) = *v48; v50 = *(_DWORD *)(v68 + 12); HIDWORD(v131) = v49; v132 = v50; sub_461180(*(_DWORD *)v11 + 4684, (int)&v131); goto LABEL_90; } sub_4669C0((void *)(*(_DWORD *)v71 + 4720), *(_DWORD *)v71 + 4684, *v48, v48[1], &v110); memcpy(&v108, &v110, 0x64u); v109 = v111; sub_4038C0(v73, (int)&v110, (int)((char *)&v135 + 4), (int)&v65); v51 = *v69; if ( HIDWORD(v135) <= *v69 ) { v58 = *(_DWORD *)(v71 + 4); v88 = 1101; v10 = sub_43BFB0(v58, (int)&v85); goto LABEL_111; } v11 = v71; sub_403C00(v73, (int)&v108, HIDWORD(v135) - v51); v52 = v51; v53 = v73; sub_403C00(v73, (int)&v114, v52); LOWORD(v54) = sub_468E40(*(_DWORD *)v11 + 4684, *v48, v48[1], v53, (int)&v108); if ( v54 ) break; LABEL_90: v69 = (int *)((char *)v69 + 9); v11 = v71; v48 += 2; ++v66; if ( v66 >= v102 ) { v44 = v68; goto LABEL_92; } } if ( v54 != 1 ) { v17 = 1099; goto LABEL_16; } v59 = *(_DWORD *)(v11 + 4); v88 = 1098; v10 = sub_43BFB0(v59, (int)&v85); LABEL_111: v142 = -1; nullsub_1(&v85); return v10; } // 4DE38C: using guessed type int __security_cookie; // 4DFF4C: using guessed type int dword_4DFF4C; // 41DD90: using guessed type int var_1CC5C[146]; //----- (0041EC30) -------------------------------------------------------- signed int __thiscall sub_41EC30(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // eax@2 signed __int16 v8; // di@2 int v9; // eax@2 int v10; // edx@4 int v11; // eax@4 signed int v12; // esi@4 unsigned int v13; // [sp-10h] [bp-2134h]@1 char v14; // [sp+0h] [bp-2124h]@4 int v15; // [sp+5h] [bp-211Fh]@4 int v16; // [sp+9h] [bp-211Bh]@4 int v17; // [sp+Dh] [bp-2117h]@4 int v18; // [sp+11h] [bp-2113h]@4 __int16 v19; // [sp+15h] [bp-210Fh]@4 int rgbValue; // [sp+2004h] [bp-120h]@2 int v21; // [sp+2008h] [bp-11Ch]@2 int v22; // [sp+200Ch] [bp-118h]@2 int v23; // [sp+2010h] [bp-114h]@2 char v24; // [sp+2014h] [bp-110h]@3 unsigned int v25; // [sp+2114h] [bp-10h]@1 int v26; // [sp+2120h] [bp-4h]@4 int v27; // [sp+2124h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v13 = (unsigned int)&v27 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 10); v6 = *(_DWORD *)(a2 + 14); rgbValue = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)v3; v21 = v5; v22 = v6; v23 = 0; v8 = 6064; LOBYTE(v9) = sub_455780(v7 + 4684, &rgbValue); if ( !v9 ) { sprintf( &v24, "FAILED - fc_NC_GUILD_ACADEMY_MEMBER_DB_CHAT_BAN_REQ, GuildNo : %d, CharNo : %d", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6), v13); sub_446350(1, "Msg", "%s", &v24); v8 = (v23 != -1511) + 6067; } sub_44E180((int)&v14); v10 = *(_DWORD *)(a2 + 6); v11 = *(_DWORD *)(a2 + 10); v15 = *(_DWORD *)(a2 + 2); v18 = *(_DWORD *)(a2 + 14); v26 = 0; v16 = v10; v17 = v11; v19 = v8; sub_44E310((int)&v14, 0x9888u, 0x12u, 0); v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14); if ( !v12 ) sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_MEMBER_DB_CHAT_BAN_REQ : Sned Error"); v26 = -1; nullsub_1(&v14); result = v12; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041EDC0) -------------------------------------------------------- signed int __thiscall sub_41EDC0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // eax@2 int v8; // eax@2 int rgbValue; // [sp+8h] [bp-114h]@2 int v10; // [sp+Ch] [bp-110h]@2 int v11; // [sp+10h] [bp-10Ch]@2 int v12; // [sp+14h] [bp-108h]@2 char v13; // [sp+18h] [bp-104h]@3 unsigned int v14; // [sp+118h] [bp-4h]@1 int v15; // [sp+11Ch] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 10); rgbValue = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)v3; v10 = v5; v11 = v6; v12 = 0; LOBYTE(v8) = sub_455780(v7 + 4684, &rgbValue); if ( !v8 ) { sprintf( &v13, "FAILED - fc_NC_GUILD_ACADEMY_MEMBER_DB_SAVE_CHAT_BAN_TIME_CMD, GuildNo : %d, CharNo : %d", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6)); sub_446350(1, "Msg", "%s", &v13); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041EE90) -------------------------------------------------------- signed int __thiscall sub_41EE90(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // esi@2 int v6; // ST00_4@2 int v7; // ecx@5 char v8; // [sp+8h] [bp-10h]@5 __int16 v9; // [sp+9h] [bp-Fh]@5 __int16 v10; // [sp+Bh] [bp-Dh]@2 int v11; // [sp+Dh] [bp-Bh]@2 char v12[7]; // [sp+11h] [bp-7h]@1 int v13; // [sp+18h] [bp+0h]@1 *(_DWORD *)&v12[3] = (unsigned int)&v13 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 4); v10 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)v3 + 4684; v11 = v5; v12[0] = 0; if ( sub_459FF0(v6, v5, v12) ) *(_WORD *)&v12[1] = 6216; else *(_WORD *)&v12[1] = 6217; v9 = -24574; v7 = *(_DWORD *)(v3 + 4); v8 = 11; result = sub_43BFE0(v7, (int)&v8, 0xCu); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041EF30) -------------------------------------------------------- signed int __thiscall sub_41EF30(int this, int a2, int a3) { signed int result; // eax@1 int v4; // eax@2 int v5; // edx@2 char v6; // cl@2 char v7; // al@2 int v8; // edi@2 unsigned int i; // esi@4 int v10; // eax@7 signed int v11; // eax@9 char v12; // dl@15 int v13; // eax@15 int v14; // eax@15 unsigned int v15; // edi@19 int v16; // esi@22 signed int v17; // edi@24 int v18; // ecx@26 signed int v19; // eax@27 int v20; // eax@39 int v21; // edx@40 char v22; // cl@47 int v23; // edx@47 int v24; // eax@47 signed int v25; // esi@49 unsigned int v26; // [sp-10h] [bp-4268h]@1 unsigned int v27; // [sp+4h] [bp-4254h]@20 char *v28; // [sp+8h] [bp-4250h]@19 int v29; // [sp+Ch] [bp-424Ch]@19 int v30; // [sp+10h] [bp-4248h]@1 char v31; // [sp+16h] [bp-4242h]@3 char v32; // [sp+17h] [bp-4241h]@2 char v33; // [sp+18h] [bp-4240h]@40 int v34; // [sp+1Dh] [bp-423Bh]@40 int v35; // [sp+21h] [bp-4237h]@40 int v36; // [sp+25h] [bp-4233h]@40 int v37; // [sp+29h] [bp-422Fh]@40 __int16 v38; // [sp+2Dh] [bp-422Bh]@40 int v39; // [sp+2Fh] [bp-4229h]@40 char v40; // [sp+201Ch] [bp-223Ch]@2 int v41; // [sp+2021h] [bp-2237h]@2 char v42; // [sp+2025h] [bp-2233h]@2 int v43; // [sp+2026h] [bp-2232h]@2 char v44; // [sp+202Ah] [bp-222Eh]@2 char v45; // [sp+202Bh] [bp-222Dh]@2 __int16 v46; // [sp+202Ch] [bp-222Ch]@2 unsigned __int8 v47; // [sp+202Eh] [bp-222Ah]@2 char v48; // [sp+2031h] [bp-2227h]@19 int v49; // [sp+4020h] [bp-238h]@26 int v50; // [sp+4024h] [bp-234h]@26 int v51; // [sp+4090h] [bp-1C8h]@26 int rgbValue; // [sp+40F8h] [bp-160h]@15 char v53; // [sp+40FCh] [bp-15Ch]@15 char v54; // [sp+40FDh] [bp-15Bh]@15 int v55; // [sp+4100h] [bp-158h]@15 int v56; // [sp+4114h] [bp-144h]@26 int v57; // [sp+4118h] [bp-140h]@26 int v58; // [sp+411Ch] [bp-13Ch]@26 char v59; // [sp+4120h] [bp-138h]@26 int v60; // [sp+4122h] [bp-136h]@26 int v61; // [sp+4128h] [bp-130h]@26 int v62; // [sp+412Ch] [bp-12Ch]@27 int v63; // [sp+4130h] [bp-128h]@27 int v64; // [sp+4134h] [bp-124h]@27 int v65; // [sp+4138h] [bp-120h]@27 int v66; // [sp+413Ch] [bp-11Ch]@27 int v67; // [sp+4140h] [bp-118h]@27 char v68; // [sp+4144h] [bp-114h]@27 char v69; // [sp+4148h] [bp-110h]@45 unsigned int v70; // [sp+4248h] [bp-10h]@1 int v71; // [sp+4254h] [bp-4h]@2 int v72; // [sp+4258h] [bp+0h]@1 v70 = (unsigned int)&v72 ^ __security_cookie; v26 = (unsigned int)&v72 ^ __security_cookie; v30 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v40); v4 = *(_DWORD *)(a2 + 2); v5 = *(_DWORD *)(a2 + 7); v42 = *(_BYTE *)(a2 + 6); v6 = *(_BYTE *)(a2 + 12); v41 = v4; v7 = *(_BYTE *)(a2 + 11); v8 = 0; v32 = v6; v45 = v6; v71 = 0; v43 = v5; v44 = v7; v46 = 6224; v47 = 0; if ( (unsigned __int8)v7 < 0x1Cu ) { v31 = byte_4DC010[(unsigned __int8)v7]; if ( v31 ) { for ( i = 0; dword_6E9914 && i < *(_DWORD *)(dword_6E9914 + 40); ++i ) { v10 = sub_43E7B0((int)&unk_6E98E0, i); if ( *(_BYTE *)v10 == v32 && *(_BYTE *)(v10 + 1) == v31 ) { v11 = sub_44B780(&unk_6EA3F0, (unsigned __int8 *)(v10 + 2)); if ( v11 == -1 || (_WORD)v11 == -1 ) { v46 = 6227; goto LABEL_49; } ++v8; } } if ( v8 ) { v12 = *(_BYTE *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 2); v13 = *(_DWORD *)(a2 + 7); v53 = v32; v55 = v13; v14 = *(_DWORD *)v30; v54 = v12; if ( sub_45A090(v14 + 4684, &rgbValue) ) { if ( v55 ) { v46 = 6230; } else { v15 = 0; v29 = 0; v28 = &v48; while ( 1 ) { v27 = v15; if ( !dword_6E9914 ) break; if ( v15 >= *(_DWORD *)(dword_6E9914 + 40) ) break; v16 = sub_43E7B0((int)&unk_6E98E0, v15); if ( *(_BYTE *)v16 == v32 && *(_BYTE *)(v16 + 1) == v31 ) { v17 = sub_44B780(&unk_6EA3F0, (unsigned __int8 *)(v16 + 2)); if ( v17 == -1 || (_WORD)v17 == -1 ) { v46 = 6227; goto LABEL_49; } sub_44BC10(&v49, v17, 11, 0, dword_4DFF4C); v18 = *(_DWORD *)(a2 + 7); v56 = v49; v58 = v18; LOWORD(v60) = 0; v61 = 0; v57 = v50; v59 = 2; *(int *)((char *)&v60 + 2) = (unsigned __int16)v17; if ( !sub_4661E0(v17, &v51) ) { sprintf( &v69, "FAILED - fc_NC_PROMOTION_DB_REWARD_REQ, MakeItemAttr, nOwner=%d, nItemID=%d, RewardCount=%d", *(_DWORD *)(a2 + 7), (unsigned __int16)v17, v29, v26); sub_446350(1, "Msg", "%s", &v69); v46 = 6228; goto LABEL_49; } sub_403C00(v17, (int)&v51, *(_WORD *)(v16 + 35)); sub_4663A0(v17, (int)&v51, *(_BYTE *)(v16 + 37)); v19 = 0; v62 = 0; v63 = 0; v64 = 0; v65 = 0; v66 = 0; v67 = 0; v68 = 0; if ( *(_DWORD *)(v16 + 38) ) { BYTE1(v62) = 1; HIWORD(v62) = *(_WORD *)(v16 + 38); v19 = 1; } if ( *(_DWORD *)(v16 + 42) > 0u ) { *((_BYTE *)&v62 + 3 * v19 + 1) = 5; *(_WORD *)((char *)&v62 + 3 * v19++ + 2) = *(_WORD *)(v16 + 42); } if ( *(_DWORD *)(v16 + 46) ) { *((_BYTE *)&v62 + 3 * v19 + 1) = 3; *(_WORD *)((char *)&v62 + 3 * v19++ + 2) = *(_WORD *)(v16 + 46); } if ( *(_DWORD *)(v16 + 50) ) { *((_BYTE *)&v62 + 3 * v19 + 1) = 2; *(_WORD *)((char *)&v62 + 3 * v19++ + 2) = *(_WORD *)(v16 + 50); } if ( *(_DWORD *)(v16 + 54) ) { *((_BYTE *)&v62 + 3 * v19 + 1) = 4; *(_WORD *)((char *)&v62 + 3 * v19++ + 2) = *(_WORD *)(v16 + 54); } if ( v19 > 0 ) { LOBYTE(v62) = 2 * v19 | 1; sub_466420(v17, (int)&v51, &v62); } LOWORD(v20) = sub_46A440(*(_DWORD *)v30 + 4684, &v56, (int)&v51, 1); if ( v20 ) { sprintf( &v69, "FAILED - fc_NC_PROMOTION_DB_REWARD_REQ, CreateItem, nOwner=%d, ItemID=%d, nRewardItemCount=%d", *(_DWORD *)(a2 + 7), (unsigned __int16)v17, v29, v26); sub_446350(1, "Msg", "%s", &v69); v46 = 6229; goto LABEL_49; } *((_WORD *)v28 - 1) = v17; *(_WORD *)v28 = *(_WORD *)(v16 + 35); ++v29; v47 = v29; v28 += 4; sub_44E180((int)&v33); LOBYTE(v71) = 1; sub_44E310((int)&v33, 0x44Fu, 0x14u, 0); v21 = *(_DWORD *)(a2 + 7); v35 = v58; v38 = HIWORD(v60); v36 = v49; v34 = v21; v37 = v50; LOWORD(v39) = (v60 ^ (v39 & 0x3FF | (unsigned __int16)((signed __int16)v59 << 10))) & 0x3FF ^ (v39 & 0x3FF | (unsigned __int16)((signed __int16)v59 << 10)); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v33); LOBYTE(v71) = 0; nullsub_1(&v33); v15 = v27; } ++v15; } v22 = *(_BYTE *)(a2 + 6); v23 = *(_DWORD *)(a2 + 2); v53 = v32; v24 = *(_DWORD *)v30; v54 = v22; rgbValue = v23; v55 = *(_DWORD *)(a2 + 7); if ( !sub_45A170(v24 + 4684, &rgbValue) ) sub_446310( "ERROR - SetPromotion REWARD INFO, But reward is successed. nUser=%d, nRewardLV=%d, nWorld=%d, nCharNo=$d", *(_DWORD *)(a2 + 2), (unsigned __int8)v32, *(_BYTE *)(a2 + 6), *(_DWORD *)(a2 + 7)); } } else { v46 = 6230; } } } } LABEL_49: sub_44E310((int)&v40, 0xA005u, 4 * v47 + 14, 0); v25 = sub_43BFB0(*(_DWORD *)(v30 + 4), (int)&v40); v71 = -1; nullsub_1(&v40); result = v25; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4DFF4C: using guessed type int dword_4DFF4C; // 6E9914: using guessed type int dword_6E9914; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0041F5A0) -------------------------------------------------------- signed int __thiscall sub_41F5A0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 unsigned int v6; // edx@2 __int16 v7; // ax@2 int v8; // eax@2 int v9; // eax@3 __int16 v10; // dx@3 signed int v11; // eax@3 void *v12; // ecx@3 __int16 v13; // dx@4 __int16 v14; // ax@4 signed int v15; // esi@5 char v16; // [sp+0h] [bp-4028h]@3 int v17; // [sp+5h] [bp-4023h]@3 __int16 v18; // [sp+9h] [bp-401Fh]@3 __int16 v19; // [sp+Bh] [bp-401Dh]@3 char v20; // [sp+2004h] [bp-2024h]@4 int v21; // [sp+2009h] [bp-201Fh]@4 __int16 v22; // [sp+200Dh] [bp-201Bh]@4 __int16 v23; // [sp+200Fh] [bp-2019h]@4 __int16 v24; // [sp+2011h] [bp-2017h]@4 int rgbValue; // [sp+4008h] [bp-20h]@2 int v26; // [sp+400Ch] [bp-1Ch]@2 char v27; // [sp+4010h] [bp-18h]@2 __int16 v28; // [sp+4012h] [bp-16h]@2 unsigned int v29; // [sp+4018h] [bp-10h]@1 int v30; // [sp+4024h] [bp-4h]@3 int v31; // [sp+4028h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 12); rgbValue = *(_DWORD *)(a2 + 8); v6 = (unsigned int)*(_WORD *)(a2 + 16) >> 10; v7 = *(_WORD *)(a2 + 16) & 0x3FF; v26 = v5; v28 = v7; v8 = *(_DWORD *)v3; v27 = v6 & 0x3F; if ( sub_4607E0(v8 + 4684, &rgbValue) ) { sub_44E180((int)&v16); v9 = *(_DWORD *)(a2 + 2); v10 = *(_WORD *)(a2 + 18); v18 = *(_WORD *)(a2 + 6); v30 = 0; v17 = v9; v19 = v10; sub_44E310((int)&v16, 0x3480u, 8u, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v12 = &v16; } else { sub_44E180((int)&v20); v13 = *(_WORD *)(a2 + 6); v14 = *(_WORD *)(a2 + 18); v21 = *(_DWORD *)(a2 + 2); v23 = 650; v30 = 1; v22 = v13; v24 = v14; sub_44E310((int)&v20, 0x3481u, 0xAu, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v20); v12 = &v20; } v15 = v11; v30 = -1; nullsub_1(v12); result = v15; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041F720) -------------------------------------------------------- signed int __thiscall sub_41F720(int this, int a2, int a3) { signed int result; // eax@1 int v4; // edi@2 int v5; // ecx@2 int v6; // ebx@2 int v7; // edx@2 int v8; // eax@2 int v9; // eax@2 unsigned int v10; // [sp-10h] [bp-2144h]@1 int v11; // [sp+0h] [bp-2134h]@1 char v12; // [sp+4h] [bp-2130h]@2 __int16 v13; // [sp+9h] [bp-212Bh]@2 int v14; // [sp+Bh] [bp-2129h]@2 int v15; // [sp+Fh] [bp-2125h]@2 int v16; // [sp+13h] [bp-2121h]@2 int v17; // [sp+17h] [bp-211Dh]@2 int v18; // [sp+1Bh] [bp-2119h]@2 __int16 v19; // [sp+1Fh] [bp-2115h]@2 int rgbValue; // [sp+2008h] [bp-12Ch]@2 int v21; // [sp+200Ch] [bp-128h]@2 int v22; // [sp+2010h] [bp-124h]@2 int v23; // [sp+2014h] [bp-120h]@2 int v24; // [sp+2018h] [bp-11Ch]@2 char v25; // [sp+201Ch] [bp-118h]@2 int v26; // [sp+2020h] [bp-114h]@2 char v27; // [sp+2024h] [bp-110h]@3 unsigned int v28; // [sp+2124h] [bp-10h]@1 int v29; // [sp+2130h] [bp-4h]@2 int v30; // [sp+2134h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v10 = (unsigned int)&v30 ^ __security_cookie; v11 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v12); v29 = 0; sub_44E310((int)&v12, 0x74B3u, 0x18u, 0); v4 = *(_DWORD *)(a2 + 16); v5 = *(_DWORD *)(a2 + 8); v6 = *(_DWORD *)(a2 + 20); v7 = *(_DWORD *)(a2 + 12); v13 = *(_WORD *)(a2 + 2); v14 = *(_DWORD *)(a2 + 4); rgbValue = v14; v24 = *(_DWORD *)(a2 + 20); v17 = v4; v23 = v4; v25 = 0; v26 = 0; v8 = *(_DWORD *)v11; v15 = v5; v21 = v5; v18 = v6; v16 = v7; v19 = 6720; v22 = v7; LOBYTE(v9) = sub_4530E0(v8 + 4684, &rgbValue); if ( !v9 ) { v19 = 6735; sprintf( &v27, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_RENAME_REQ : GuildNo=%d, GuildName=%s, nRet=%d", *(_DWORD *)(a2 + 4), &v21, v26, v10); sub_446350(1, "Msg", "%s", &v27); } sub_43BFB0(*(_DWORD *)(v11 + 4), (int)&v12); v29 = -1; nullsub_1(&v12); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041F8C0) -------------------------------------------------------- signed int __thiscall sub_41F8C0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 char v5; // cl@2 int v6; // eax@2 int v7; // eax@2 int v8; // ST1C_4@3 unsigned int v9; // [sp-Ch] [bp-2128h]@1 int rgbValue; // [sp+0h] [bp-211Ch]@2 char v11; // [sp+4h] [bp-2118h]@2 unsigned __int8 v12; // [sp+5h] [bp-2117h]@2 char v13; // [sp+8h] [bp-2114h]@2 __int16 v14; // [sp+Dh] [bp-210Fh]@2 int v15; // [sp+Fh] [bp-210Dh]@2 char v16; // [sp+13h] [bp-2109h]@2 __int16 v17; // [sp+14h] [bp-2108h]@2 char v18; // [sp+200Ch] [bp-110h]@3 unsigned int v19; // [sp+210Ch] [bp-10h]@1 int v20; // [sp+2118h] [bp-4h]@2 int v21; // [sp+211Ch] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v9 = (unsigned int)&v21 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v13); v20 = 0; sub_44E310((int)&v13, 0x74BBu, 9u, 0); v5 = *(_BYTE *)(a2 + 8); v14 = *(_WORD *)(a2 + 2); v15 = *(_DWORD *)(a2 + 4); rgbValue = v15; v6 = *(_DWORD *)v3; v16 = v5; v11 = v5; v17 = 6744; v12 = 0; LOBYTE(v7) = sub_4525D0(v6 + 4684, &rgbValue); if ( !v7 ) { v8 = *(_BYTE *)(a2 + 8); v17 = 6757; sprintf( &v18, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_RETYPE_REQ : GuildNo=%d, GuildType=%d, nRet=%d", *(_DWORD *)(a2 + 4), v8, v12, v9); sub_446350(1, "Msg", "%s", &v18); } sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v13); v20 = -1; nullsub_1(&v13); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041FA10) -------------------------------------------------------- signed int __thiscall sub_41FA10(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // edx@2 int v9; // edx@2 signed __int16 v10; // bx@6 int v11; // edx@6 int v12; // eax@6 __int16 v13; // cx@10 __int16 v14; // dx@10 int v15; // eax@10 int v16; // ecx@10 int v17; // edx@10 __int16 v18; // [sp+0h] [bp-4058h]@3 __int16 v19; // [sp+4h] [bp-4054h]@3 char v20; // [sp+8h] [bp-4050h]@10 int v21; // [sp+Dh] [bp-404Bh]@10 __int16 v22; // [sp+11h] [bp-4047h]@10 __int16 v23; // [sp+13h] [bp-4045h]@10 __int16 v24; // [sp+15h] [bp-4043h]@10 int v25; // [sp+17h] [bp-4041h]@10 int v26; // [sp+1Bh] [bp-403Dh]@10 int v27; // [sp+1Fh] [bp-4039h]@10 __int16 v28; // [sp+23h] [bp-4035h]@10 char v29; // [sp+200Ch] [bp-204Ch]@6 int v30; // [sp+2011h] [bp-2047h]@6 int v31; // [sp+2015h] [bp-2043h]@6 int v32; // [sp+2019h] [bp-203Fh]@6 __int16 v33; // [sp+201Dh] [bp-203Bh]@6 __int16 v34; // [sp+201Fh] [bp-2039h]@6 int rgbValue; // [sp+4010h] [bp-48h]@2 int v36; // [sp+4018h] [bp-40h]@2 int v37; // [sp+401Ch] [bp-3Ch]@2 int v38; // [sp+4020h] [bp-38h]@2 int v39; // [sp+4028h] [bp-30h]@2 int v40; // [sp+402Ch] [bp-2Ch]@2 __int16 v41; // [sp+4030h] [bp-28h]@2 int v42; // [sp+4038h] [bp-20h]@2 int v43; // [sp+403Ch] [bp-1Ch]@2 int v44; // [sp+4040h] [bp-18h]@2 unsigned int v45; // [sp+4048h] [bp-10h]@1 int v46; // [sp+4054h] [bp-4h]@6 int v47; // [sp+4058h] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 26); v6 = *(_DWORD *)(a2 + 22); rgbValue = *(_DWORD *)(a2 + 18); v38 = 0; v7 = *(_DWORD *)(a2 + 8); v37 = v5; v8 = *(_DWORD *)(a2 + 4); v40 = v7; v36 = v6; v39 = v8; v9 = *(_DWORD *)(a2 + 12); v41 = 907; v42 = v9; v43 = 0; v44 = 0; if ( !*(_BYTE *)(a2 + 36) && sub_4038C0(*(_WORD *)(a2 + 30), a2 + 37, (int)&v18, (int)&v19) ) { LOWORD(v38) = v19; HIWORD(v38) = v18; } if ( (unsigned __int8)sub_4617E0(*(_DWORD *)v3 + 4684, &rgbValue) ) { v10 = 1792; sub_44E180((int)&v29); v46 = 0; sub_44E310((int)&v29, 0x459u, 0x10u, 0); v11 = *(_DWORD *)(a2 + 18); v12 = *(_DWORD *)(a2 + 22); v32 = *(_DWORD *)(a2 + 26); v30 = v11; LOWORD(v11) = *(_WORD *)(a2 + 30); v31 = v12; v33 = v11; v34 = HIWORD(v38); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v29); v46 = -1; nullsub_1(&v29); } else { v10 = 1798; } sub_44E180((int)&v20); v13 = *(_WORD *)(a2 + 20); v14 = *(_WORD *)(a2 + 2); v21 = *(_DWORD *)(a2 + 16); v15 = *(_DWORD *)(a2 + 12); v22 = v13; v16 = *(_DWORD *)(a2 + 4); v24 = v14; v17 = *(_DWORD *)(a2 + 8); v27 = v15; LOWORD(v15) = *(_WORD *)(a2 + 34); v25 = v16; v46 = 1; v26 = v17; v23 = v15; v28 = v10; sub_44E310((int)&v20, 0x348Cu, 0x18u, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v20); v46 = -1; nullsub_1(&v20); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0041FC30) -------------------------------------------------------- signed int __thiscall sub_41FC30(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // edx@2 int v9; // edx@2 signed __int16 v10; // bx@6 int v11; // edx@6 int v12; // eax@6 __int16 v13; // dx@10 int v14; // eax@10 int v15; // ecx@10 int v16; // eax@10 __int16 v17; // dx@10 int v18; // eax@10 int v19; // ecx@10 __int16 v20; // [sp+0h] [bp-4058h]@3 __int16 v21; // [sp+4h] [bp-4054h]@3 char v22; // [sp+8h] [bp-4050h]@10 int v23; // [sp+Dh] [bp-404Bh]@10 __int16 v24; // [sp+11h] [bp-4047h]@10 __int16 v25; // [sp+13h] [bp-4045h]@10 int v26; // [sp+15h] [bp-4043h]@10 int v27; // [sp+19h] [bp-403Fh]@10 __int16 v28; // [sp+1Dh] [bp-403Bh]@10 int v29; // [sp+1Fh] [bp-4039h]@10 __int16 v30; // [sp+23h] [bp-4035h]@10 char v31; // [sp+200Ch] [bp-204Ch]@6 int v32; // [sp+2011h] [bp-2047h]@6 int v33; // [sp+2015h] [bp-2043h]@6 int v34; // [sp+2019h] [bp-203Fh]@6 __int16 v35; // [sp+201Dh] [bp-203Bh]@6 __int16 v36; // [sp+201Fh] [bp-2039h]@6 int rgbValue; // [sp+4010h] [bp-48h]@2 int v38; // [sp+4018h] [bp-40h]@2 int v39; // [sp+401Ch] [bp-3Ch]@2 int v40; // [sp+4020h] [bp-38h]@2 int v41; // [sp+4028h] [bp-30h]@2 int v42; // [sp+402Ch] [bp-2Ch]@2 __int16 v43; // [sp+4030h] [bp-28h]@2 int v44; // [sp+4038h] [bp-20h]@2 int v45; // [sp+403Ch] [bp-1Ch]@2 int v46; // [sp+4040h] [bp-18h]@2 unsigned int v47; // [sp+4048h] [bp-10h]@1 int v48; // [sp+4054h] [bp-4h]@6 int v49; // [sp+4058h] [bp+0h]@1 v47 = (unsigned int)&v49 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 26); v6 = *(_DWORD *)(a2 + 22); rgbValue = *(_DWORD *)(a2 + 18); v40 = 0; v7 = *(_DWORD *)(a2 + 6); v39 = v5; v8 = *(_DWORD *)(a2 + 2); v42 = v7; v38 = v6; v41 = v8; v9 = *(_DWORD *)(a2 + 12); v43 = 1800; v44 = v9; v45 = 0; v46 = 0; if ( !*(_BYTE *)(a2 + 36) && sub_4038C0(*(_WORD *)(a2 + 30), a2 + 37, (int)&v20, (int)&v21) ) { LOWORD(v40) = v21; HIWORD(v40) = v20; } if ( (unsigned __int8)sub_461A50(*(_DWORD *)v3 + 4684, &rgbValue) ) { v10 = 6784; sub_44E180((int)&v31); v48 = 0; sub_44E310((int)&v31, 0x459u, 0x10u, 0); v11 = *(_DWORD *)(a2 + 18); v12 = *(_DWORD *)(a2 + 22); v34 = *(_DWORD *)(a2 + 26); v32 = v11; LOWORD(v11) = *(_WORD *)(a2 + 30); v33 = v12; v35 = v11; v36 = HIWORD(v40); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v31); v48 = -1; nullsub_1(&v31); } else { v10 = 6793; } sub_44E180((int)&v22); v48 = 1; sub_44E310((int)&v22, 0x348Eu, 0x18u, 0); v13 = *(_WORD *)(a2 + 34); v14 = *(_DWORD *)(a2 + 16); v24 = *(_WORD *)(a2 + 20); v15 = *(_DWORD *)(a2 + 6); v23 = v14; v16 = *(_DWORD *)(a2 + 2); v27 = v15; v25 = v13; v17 = *(_WORD *)(a2 + 10); v26 = v16; v18 = *(_DWORD *)(a2 + 12); v19 = *(_DWORD *)(v3 + 4); v28 = v17; v29 = v18; v30 = v10; sub_43BFB0(v19, (int)&v22); v48 = -1; nullsub_1(&v22); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0041FE50) -------------------------------------------------------- signed int __thiscall sub_41FE50(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // eax@2 int rgbValue; // [sp+8h] [bp-24h]@2 int v8; // [sp+Ch] [bp-20h]@2 __int16 v9; // [sp+10h] [bp-1Ch]@2 int v10; // [sp+18h] [bp-14h]@2 int v11; // [sp+1Ch] [bp-10h]@2 int v12; // [sp+20h] [bp-Ch]@2 unsigned int v13; // [sp+28h] [bp-4h]@1 int v14; // [sp+2Ch] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 2); v10 = *(_DWORD *)(a2 + 10); v11 = 0; v12 = 0; v6 = *(_DWORD *)v3; v8 = v5; v9 = 1800; sub_461D40(v6 + 4684, &rgbValue); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0041FEE0) -------------------------------------------------------- signed int __thiscall sub_41FEE0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // edx@2 int v9; // edx@2 signed __int16 v10; // bx@6 int v11; // edx@6 int v12; // eax@6 __int16 v13; // dx@10 int v14; // eax@10 int v15; // ecx@10 int v16; // eax@10 __int16 v17; // dx@10 int v18; // eax@10 int v19; // ecx@10 __int16 v20; // [sp+0h] [bp-4058h]@3 __int16 v21; // [sp+4h] [bp-4054h]@3 char v22; // [sp+8h] [bp-4050h]@10 int v23; // [sp+Dh] [bp-404Bh]@10 __int16 v24; // [sp+11h] [bp-4047h]@10 __int16 v25; // [sp+13h] [bp-4045h]@10 int v26; // [sp+15h] [bp-4043h]@10 int v27; // [sp+19h] [bp-403Fh]@10 __int16 v28; // [sp+1Dh] [bp-403Bh]@10 int v29; // [sp+1Fh] [bp-4039h]@10 __int16 v30; // [sp+23h] [bp-4035h]@10 char v31; // [sp+200Ch] [bp-204Ch]@6 int v32; // [sp+2011h] [bp-2047h]@6 int v33; // [sp+2015h] [bp-2043h]@6 int v34; // [sp+2019h] [bp-203Fh]@6 __int16 v35; // [sp+201Dh] [bp-203Bh]@6 __int16 v36; // [sp+201Fh] [bp-2039h]@6 int rgbValue; // [sp+4010h] [bp-48h]@2 int v38; // [sp+4018h] [bp-40h]@2 int v39; // [sp+401Ch] [bp-3Ch]@2 int v40; // [sp+4020h] [bp-38h]@2 int v41; // [sp+4028h] [bp-30h]@2 int v42; // [sp+402Ch] [bp-2Ch]@2 __int16 v43; // [sp+4030h] [bp-28h]@2 int v44; // [sp+4038h] [bp-20h]@2 int v45; // [sp+403Ch] [bp-1Ch]@2 int v46; // [sp+4040h] [bp-18h]@2 unsigned int v47; // [sp+4048h] [bp-10h]@1 int v48; // [sp+4054h] [bp-4h]@6 int v49; // [sp+4058h] [bp+0h]@1 v47 = (unsigned int)&v49 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 26); v6 = *(_DWORD *)(a2 + 22); rgbValue = *(_DWORD *)(a2 + 18); v40 = 0; v7 = *(_DWORD *)(a2 + 6); v39 = v5; v8 = *(_DWORD *)(a2 + 2); v42 = v7; v38 = v6; v41 = v8; v9 = *(_DWORD *)(a2 + 12); v43 = 1850; v44 = v9; v45 = 0; v46 = 0; if ( !*(_BYTE *)(a2 + 36) && sub_4038C0(*(_WORD *)(a2 + 30), a2 + 37, (int)&v20, (int)&v21) ) { LOWORD(v40) = v21; HIWORD(v40) = v20; } if ( (unsigned __int8)sub_461FA0(*(_DWORD *)v3 + 4684, &rgbValue) ) { v10 = 6784; sub_44E180((int)&v31); v48 = 0; sub_44E310((int)&v31, 0x459u, 0x10u, 0); v11 = *(_DWORD *)(a2 + 18); v12 = *(_DWORD *)(a2 + 22); v34 = *(_DWORD *)(a2 + 26); v32 = v11; LOWORD(v11) = *(_WORD *)(a2 + 30); v33 = v12; v35 = v11; v36 = HIWORD(v40); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v31); v48 = -1; nullsub_1(&v31); } else { v10 = 6793; } sub_44E180((int)&v22); v48 = 1; sub_44E310((int)&v22, 0x34C7u, 0x18u, 0); v13 = *(_WORD *)(a2 + 34); v14 = *(_DWORD *)(a2 + 16); v24 = *(_WORD *)(a2 + 20); v15 = *(_DWORD *)(a2 + 6); v23 = v14; v16 = *(_DWORD *)(a2 + 2); v27 = v15; v25 = v13; v17 = *(_WORD *)(a2 + 10); v26 = v16; v18 = *(_DWORD *)(a2 + 12); v19 = *(_DWORD *)(v3 + 4); v28 = v17; v29 = v18; v30 = v10; sub_43BFB0(v19, (int)&v22); v48 = -1; nullsub_1(&v22); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00420100) -------------------------------------------------------- signed int __thiscall sub_420100(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // eax@2 int rgbValue; // [sp+8h] [bp-24h]@2 int v8; // [sp+Ch] [bp-20h]@2 __int16 v9; // [sp+10h] [bp-1Ch]@2 int v10; // [sp+18h] [bp-14h]@2 int v11; // [sp+1Ch] [bp-10h]@2 int v12; // [sp+20h] [bp-Ch]@2 unsigned int v13; // [sp+28h] [bp-4h]@1 int v14; // [sp+2Ch] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 2); v10 = *(_DWORD *)(a2 + 10); v11 = 0; v12 = 0; v6 = *(_DWORD *)v3; v8 = v5; v9 = 1850; sub_462290(v6 + 4684, &rgbValue); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00420190) -------------------------------------------------------- signed int __thiscall sub_420190(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 unsigned int v7; // eax@2 int v8; // edx@2 int v9; // ecx@2 int v10; // ST48_4@2 int v11; // eax@2 int v12; // edx@3 int v13; // eax@3 unsigned int v14; // eax@4 int v15; // eax@4 int v16; // eax@4 int v17; // edx@5 bool v18; // cf@5 int v19; // eax@5 signed __int16 v20; // bx@8 __int16 v21; // dx@10 __int16 v22; // ax@10 signed int v23; // esi@10 __int16 v24; // ax@11 __int16 v25; // cx@11 int v26; // edx@11 int v27; // eax@11 int v28; // ecx@11 int v29; // edx@11 int v30; // edx@11 unsigned int v31; // [sp-10h] [bp-6284h]@1 char v32; // [sp+0h] [bp-6274h]@11 int v33; // [sp+4h] [bp-6270h]@2 int v34; // [sp+8h] [bp-626Ch]@5 int v35; // [sp+Ch] [bp-6268h]@2 char v36; // [sp+10h] [bp-6264h]@10 int v37; // [sp+15h] [bp-625Fh]@10 __int16 v38; // [sp+19h] [bp-625Bh]@10 __int16 v39; // [sp+1Bh] [bp-6259h]@10 __int16 v40; // [sp+1Dh] [bp-6257h]@10 char v41; // [sp+2014h] [bp-4260h]@11 int v42; // [sp+2019h] [bp-425Bh]@11 __int16 v43; // [sp+201Dh] [bp-4257h]@11 __int16 v44; // [sp+201Fh] [bp-4255h]@11 int v45; // [sp+2021h] [bp-4253h]@11 int v46; // [sp+2025h] [bp-424Fh]@11 char v47; // [sp+4018h] [bp-225Ch]@11 int v48; // [sp+401Dh] [bp-2257h]@11 char v49; // [sp+4021h] [bp-2253h]@11 int v50; // [sp+4022h] [bp-2252h]@11 int v51; // [sp+4028h] [bp-224Ch]@11 __int16 v52; // [sp+402Ch] [bp-2248h]@11 __int16 v53; // [sp+402Eh] [bp-2246h]@11 int v54; // [sp+4030h] [bp-2244h]@11 int v55; // [sp+601Ch] [bp-258h]@4 __int64 v56; // [sp+6024h] [bp-250h]@4 int v57; // [sp+602Ch] [bp-248h]@4 int rgbValue; // [sp+6034h] [bp-240h]@3 __int64 v59; // [sp+603Ch] [bp-238h]@3 int v60; // [sp+6044h] [bp-230h]@3 int v61; // [sp+604Ch] [bp-228h]@2 int v62; // [sp+6050h] [bp-224h]@2 int v63; // [sp+6054h] [bp-220h]@2 char v64; // [sp+6058h] [bp-21Ch]@2 __int16 v65; // [sp+605Ah] [bp-21Ah]@2 int v66; // [sp+605Ch] [bp-218h]@2 int v67; // [sp+6060h] [bp-214h]@2 char v68; // [sp+6064h] [bp-210h]@5 char v69; // [sp+6164h] [bp-110h]@10 unsigned int v70; // [sp+6264h] [bp-10h]@1 int v71; // [sp+6270h] [bp-4h]@10 int v72; // [sp+6274h] [bp+0h]@1 v70 = (unsigned int)&v72 ^ __security_cookie; v31 = (unsigned int)&v72 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 42); v6 = *(_DWORD *)(a2 + 8); v61 = *(_DWORD *)(a2 + 38); v7 = *(_WORD *)(a2 + 36); v62 = v5; v63 = v6; v8 = *(_WORD *)(a2 + 46); v64 = (v7 >> 10) & 0x3F; v9 = *(_DWORD *)(a2 + 52); v66 = v8; v65 = v7 & 0x3FF; v10 = *(_DWORD *)v3 + 4684; v67 = 0; v33 = 0; LOWORD(v11) = sub_46A360(v10, &v61, a2 + 56, v9, 0, (int)&v33); v35 = v11; if ( v33 ) { v12 = *(_DWORD *)(a2 + 8); v59 = 0i64; v60 = 0; v13 = *(_DWORD *)v3 + 4684; rgbValue = v12; if ( sub_452850(v13, &rgbValue) ) { v14 = *(_DWORD *)(a2 + 52); v55 = *(_DWORD *)(a2 + 8); v56 = v59 + v14; v15 = *(_DWORD *)v3 + 4684; v57 = 0; LOBYTE(v16) = sub_452A40(v15, &v55); if ( !v16 ) { v17 = *(_WORD *)(a2 + 46); v18 = (unsigned int)v59 < *(_DWORD *)(a2 + 52); v19 = v59 - *(_DWORD *)(a2 + 52); v34 = 0; sprintf( &v68, "¾ÆÀÌÅÛ ±¸ÀÔ »", *(_DWORD *)(a2 + 38), *(_DWORD *)(a2 + 42), v17, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v19, HIDWORD(v59) - v18, v59, v57, v31); sub_446350(1, "Msg", "%s", &v68); } } else { sprintf( &v68, "¾ÆÀÌÅÛ ±¸ÀÔ »", *(_DWORD *)(a2 + 38), *(_DWORD *)(a2 + 42), *(_WORD *)(a2 + 46), *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v60, v31); sub_446350(1, "Msg", "%s", &v68); } } if ( v35 ) { v20 = 518; if ( v35 == 1 ) v20 = 517; sprintf( &v69, "¾ÆÀÌÅÛ ±¸ÀÔ(»", *(_DWORD *)(a2 + 38), *(_DWORD *)(a2 + 42), *(_WORD *)(a2 + 46), *(_DWORD *)(a2 + 52), *(_DWORD *)(a2 + 8), (unsigned int)*(_WORD *)(a2 + 36) >> 10, *(_WORD *)(a2 + 36) & 0x3FF, v35, v31); sub_446350(1, "Msg", "%s", &v69); sprintf(&v69, "¾ÆÀÌÅÛ ±¸ÀÔ(»", v61, v62, v66, *(_DWORD *)(a2 + 52), v63, v64, v65, v35); sub_446350(1, "Msg", "%s", &v69); sub_44E180((int)&v36); v21 = *(_WORD *)(a2 + 6); v22 = *(_WORD *)(a2 + 50); v37 = *(_DWORD *)(a2 + 2); v71 = 2; v38 = v21; v40 = v22; v39 = v20; sub_44E310((int)&v36, 0x3492u, 0xAu, 0); v23 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v36); v71 = -1; nullsub_1(&v36); result = v23; } else { sub_44E180((int)&v41); v24 = *(_WORD *)(a2 + 6); v25 = *(_WORD *)(a2 + 50); v42 = *(_DWORD *)(a2 + 2); v26 = *(_DWORD *)(a2 + 52); v43 = v24; v27 = *(_DWORD *)(a2 + 8); v44 = v25; v71 = 0; v46 = v26; v45 = v27; sub_44E310((int)&v41, 0x3491u, 0x10u, 0); v35 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v41); sub_44E180((int)&v47); LOBYTE(v71) = 1; sub_44E310((int)&v47, 0x448u, 0x17u, 0); v28 = *(_DWORD *)(a2 + 38); v29 = *(_DWORD *)(a2 + 12); LOWORD(v50) = *(_WORD *)(a2 + 46); *(int *)((char *)&v50 + 2) = v28; v48 = v29; v51 = *(_DWORD *)(a2 + 42); v49 = 0; sub_4038C0(v50, a2 + 56, (int)&v34, (int)&v32); v30 = *(_DWORD *)(a2 + 52); v53 = *(_WORD *)(a2 + 36); v52 = v34; v54 = v30; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v47); LOBYTE(v71) = 0; nullsub_1(&v47); v71 = -1; nullsub_1(&v41); result = v35; } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00420650) -------------------------------------------------------- signed int __thiscall sub_420650(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@3 int v6; // edx@3 __int16 v7; // bx@3 int v8; // edx@3 int v9; // eax@3 int v10; // eax@3 signed __int16 v11; // bx@5 int v12; // eax@7 __int16 v13; // dx@7 int v14; // ecx@7 int v15; // eax@7 signed int v16; // edi@7 int v17; // eax@7 int v18; // edx@7 int v19; // eax@7 int v20; // edx@7 __int16 v21; // dx@11 __int16 v22; // ax@11 signed int v23; // esi@11 __int16 v24; // [sp+0h] [bp-604Ch]@2 int v25; // [sp+4h] [bp-6048h]@2 char v26; // [sp+8h] [bp-6044h]@11 int v27; // [sp+Dh] [bp-603Fh]@11 __int16 v28; // [sp+11h] [bp-603Bh]@11 __int16 v29; // [sp+13h] [bp-6039h]@11 __int16 v30; // [sp+15h] [bp-6037h]@11 char v31; // [sp+200Ch] [bp-4040h]@7 int v32; // [sp+2011h] [bp-403Bh]@7 __int16 v33; // [sp+2015h] [bp-4037h]@7 __int16 v34; // [sp+2017h] [bp-4035h]@7 int v35; // [sp+2019h] [bp-4033h]@7 int v36; // [sp+201Dh] [bp-402Fh]@7 char v37; // [sp+4010h] [bp-203Ch]@7 int v38; // [sp+4015h] [bp-2037h]@7 char v39; // [sp+4019h] [bp-2033h]@7 __int16 v40; // [sp+401Ah] [bp-2032h]@7 int v41; // [sp+401Ch] [bp-2030h]@7 int v42; // [sp+4020h] [bp-202Ch]@7 __int16 v43; // [sp+4024h] [bp-2028h]@7 __int16 v44; // [sp+4026h] [bp-2026h]@7 int v45; // [sp+4028h] [bp-2024h]@7 int rgbValue; // [sp+6014h] [bp-38h]@3 int v47; // [sp+6018h] [bp-34h]@3 int v48; // [sp+601Ch] [bp-30h]@3 __int16 v49; // [sp+6020h] [bp-2Ch]@3 int v50; // [sp+6024h] [bp-28h]@3 int v51; // [sp+6028h] [bp-24h]@3 int v52; // [sp+602Ch] [bp-20h]@3 int v53; // [sp+6030h] [bp-1Ch]@3 unsigned int v54; // [sp+603Ch] [bp-10h]@1 int v55; // [sp+6048h] [bp-4h]@7 int v56; // [sp+604Ch] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( !sub_4038C0(*(_WORD *)(a2 + 26), a2 + 32, (int)&v25, (int)&v24) ) { v11 = 521; LABEL_11: sub_44E180((int)&v26); v21 = *(_WORD *)(a2 + 6); v22 = *(_WORD *)(a2 + 8); v27 = *(_DWORD *)(a2 + 2); v55 = 2; v28 = v21; v30 = v22; v29 = v11; sub_44E310((int)&v26, 0x3495u, 0xAu, 0); v23 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v26); v55 = -1; nullsub_1(&v26); return v23; } v5 = *(_DWORD *)(a2 + 10); v6 = *(_DWORD *)(a2 + 18); v7 = v25; rgbValue = *(_DWORD *)(a2 + 14); v48 = v5; v47 = v6; v8 = *(_DWORD *)(a2 + 28); v49 = v24; v51 = 0; v53 = 0; v9 = *(_DWORD *)v3; v52 = v8; v50 = v25; v10 = sub_462CA0(v9 + 4684, &rgbValue); if ( v10 ) { if ( v10 == 1 ) v11 = 519; else v11 = 520; goto LABEL_11; } sub_44E180((int)&v31); v12 = *(_DWORD *)(a2 + 2); v13 = *(_WORD *)(a2 + 8); v33 = *(_WORD *)(a2 + 6); v14 = *(_DWORD *)(a2 + 10); v32 = v12; v15 = *(_DWORD *)(a2 + 28); v35 = v14; v55 = 0; v34 = v13; v36 = v15; sub_44E310((int)&v31, 0x3494u, 0x10u, 0); v16 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v31); sub_44E180((int)&v37); LOBYTE(v55) = 1; sub_44E310((int)&v37, 0x448u, 0x17u, 0); v17 = *(_DWORD *)(a2 + 4); v18 = *(_DWORD *)(a2 + 14); v40 = *(_WORD *)(a2 + 26); v44 = *(_WORD *)(a2 + 24); v38 = v17; v19 = *(_DWORD *)(a2 + 18); v41 = v18; v20 = *(_DWORD *)(a2 + 28); v39 = 0; v42 = v19; v43 = v7; v45 = v20; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v37); LOBYTE(v55) = 0; nullsub_1(&v37); v55 = -1; nullsub_1(&v31); result = v16; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004208D0) -------------------------------------------------------- signed int __thiscall sub_4208D0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // eax@2 int v7; // ST00_4@2 int v8; // eax@2 signed __int16 v9; // dx@6 int v10; // ecx@17 int rgbValue; // [sp+8h] [bp-1Ch]@2 int v12; // [sp+Ch] [bp-18h]@2 int v13; // [sp+10h] [bp-14h]@2 char v14; // [sp+14h] [bp-10h]@17 __int16 v15; // [sp+15h] [bp-Fh]@17 __int16 v16; // [sp+17h] [bp-Dh]@2 __int16 v17; // [sp+19h] [bp-Bh]@2 int v18; // [sp+1Bh] [bp-9h]@2 unsigned int v19; // [sp+20h] [bp-4h]@1 int v20; // [sp+24h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 4); v17 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 8); v18 = v6; v16 = 7184; v12 = v6; v7 = *(_DWORD *)v3 + 4684; rgbValue = v5; v13 = 0; v8 = sub_45A600(v7, &rgbValue); if ( v13 <= -2312 ) { if ( v13 == -2312 ) { v16 = 7189; } else { if ( v13 != -2394 ) { if ( v13 == -2323 ) { v9 = 7190; LABEL_16: v16 = v9; goto LABEL_17; } LABEL_11: v9 = 7187; goto LABEL_16; } v16 = 7187; } LABEL_17: v10 = *(_DWORD *)(v3 + 4); v14 = 10; v15 = -22519; return sub_43BFE0(v10, (int)&v14, 0xBu); } if ( v13 == -2311 ) { v9 = 7188; goto LABEL_16; } if ( !v13 ) { if ( v8 ) v16 = 7184; else v16 = 7187; goto LABEL_17; } goto LABEL_11; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004209E0) -------------------------------------------------------- signed int __thiscall sub_4209E0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // eax@2 int v7; // eax@2 signed __int16 v8; // cx@8 int v9; // ecx@15 int rgbValue; // [sp+8h] [bp-10h]@2 int v11; // [sp+Ch] [bp-Ch]@2 char v12; // [sp+10h] [bp-8h]@15 __int16 v13; // [sp+11h] [bp-7h]@15 __int16 v14; // [sp+13h] [bp-5h]@2 __int16 v15; // [sp+15h] [bp-3h]@2 v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 4); v15 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)v3; v14 = 7200; rgbValue = v5; v11 = 0; v7 = sub_45A7F0(v6 + 4684, &rgbValue); if ( v11 > -2311 ) { if ( v11 ) goto LABEL_10; if ( v7 ) { v14 = 7200; goto LABEL_15; } v8 = 7201; } else { if ( v11 != -2311 ) { if ( v11 == -2394 ) { v14 = 7201; goto LABEL_15; } if ( v11 == -2321 ) { v14 = 7200; LABEL_15: v9 = *(_DWORD *)(v3 + 4); v12 = 6; v13 = -22515; return sub_43BFE0(v9, (int)&v12, 7u); } LABEL_10: v14 = 7201; goto LABEL_15; } v8 = 7202; } v14 = v8; goto LABEL_15; } return result; } //----- (00420AC0) -------------------------------------------------------- signed int __thiscall sub_420AC0(int this, int a2, int a3) { signed int result; // eax@1 int v4; // eax@2 int v5; // edx@2 int v6; // ecx@2 int v7; // ecx@2 int v8; // eax@2 int v9; // edx@2 int v10; // ecx@2 int v11; // eax@2 int v12; // edx@2 int v13; // ecx@2 int v14; // eax@2 int v15; // edx@2 int v16; // ecx@2 int v17; // edx@2 int v18; // eax@2 signed int v19; // edi@2 int v20; // esi@4 int v21; // ecx@5 int v22; // eax@5 int v23; // [sp+4h] [bp-90h]@1 int rgbValue; // [sp+8h] [bp-8Ch]@2 __int64 v25; // [sp+Ch] [bp-88h]@2 __int16 v26; // [sp+14h] [bp-80h]@2 __int16 v27; // [sp+16h] [bp-7Eh]@2 int v28; // [sp+18h] [bp-7Ch]@2 int v29; // [sp+1Ch] [bp-78h]@2 int v30; // [sp+20h] [bp-74h]@2 int v31; // [sp+24h] [bp-70h]@2 char v32; // [sp+28h] [bp-6Ch]@2 __int16 v33; // [sp+2Ch] [bp-68h]@2 __int16 v34; // [sp+2Eh] [bp-66h]@2 int v35; // [sp+30h] [bp-64h]@2 int v36; // [sp+34h] [bp-60h]@2 int v37; // [sp+38h] [bp-5Ch]@2 char v38; // [sp+3Ch] [bp-58h]@2 int v39; // [sp+40h] [bp-54h]@2 int v40; // [sp+44h] [bp-50h]@2 int v41; // [sp+48h] [bp-4Ch]@2 int v42; // [sp+4Ch] [bp-48h]@2 int v43; // [sp+50h] [bp-44h]@2 int v44; // [sp+54h] [bp-40h]@2 int v45; // [sp+58h] [bp-3Ch]@2 int v46; // [sp+5Ch] [bp-38h]@2 __int16 v47; // [sp+60h] [bp-34h]@2 int v48; // [sp+64h] [bp-30h]@2 int v49; // [sp+68h] [bp-2Ch]@2 __int16 v50; // [sp+6Ch] [bp-28h]@2 __int16 v51; // [sp+70h] [bp-24h]@2 __int16 v52; // [sp+74h] [bp-20h]@2 __int16 v53; // [sp+78h] [bp-1Ch]@2 int v54; // [sp+7Ch] [bp-18h]@2 int v55; // [sp+80h] [bp-14h]@2 __int16 v56; // [sp+84h] [bp-10h]@5 int v57; // [sp+88h] [bp-Ch]@5 int v58; // [sp+8Ch] [bp-8h]@5 unsigned int v59; // [sp+90h] [bp-4h]@1 int v60; // [sp+94h] [bp+0h]@1 v59 = (unsigned int)&v60 ^ __security_cookie; v23 = this; result = sub_43B000(this, a2); if ( result ) { rgbValue = *(_DWORD *)(a2 + 2); memcpy(&v50, _localtime32((const __time32_t *)(a2 + 6)), 0x24u); LODWORD(v25) = 0; v28 = 0; v26 = v51; v27 = v50; WORD3(v25) = v52; *(_DWORD *)((char *)&v25 + 2) = (unsigned __int16)(v54 + 1); v4 = *(_DWORD *)(a2 + 14); WORD2(v25) = v53; v5 = *(_DWORD *)(a2 + 10); v30 = v4; LOWORD(v4) = *(_WORD *)(a2 + 24); LOWORD(v25) = v55 + 1900; v6 = *(_DWORD *)(a2 + 18); v29 = v5; LOWORD(v5) = *(_WORD *)(a2 + 22); v31 = v6; v7 = *(_DWORD *)(a2 + 26); v34 = v4; v8 = *(_DWORD *)(a2 + 34); v33 = v5; v9 = *(_DWORD *)(a2 + 30); v35 = v7; v10 = *(_DWORD *)(a2 + 38); v37 = v8; v11 = *(_DWORD *)(a2 + 46); v36 = v9; v12 = *(_DWORD *)(a2 + 42); v39 = v10; v13 = *(_DWORD *)(a2 + 50); v41 = v11; v14 = *(_DWORD *)(a2 + 58); v40 = v12; v15 = *(_DWORD *)(a2 + 54); v42 = v13; v16 = *(_DWORD *)(a2 + 62); v44 = v14; LOWORD(v14) = *(_WORD *)(a2 + 70); v43 = v15; v17 = *(_DWORD *)(a2 + 66); v45 = v16; v47 = v14; v18 = *(_DWORD *)v23; v46 = v17; v19 = 0; v32 = 0; v49 = 0; v38 = 0; v48 = 0; if ( sub_45AC40(v18 + 4684, &rgbValue) ) { v54 = rgbValue; v55 = v48; if ( *(_WORD *)(a2 + 72) > 0u ) { v20 = a2 + 76; do { v21 = *(_DWORD *)v20; v56 = *(_WORD *)(v20 - 2); v22 = *(_DWORD *)v23; v57 = v21; v58 = 0; sub_45AF00(v22 + 4684, &v54); ++v19; v20 += 6; } while ( v19 < *(_WORD *)(a2 + 72) ); } } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00420C90) -------------------------------------------------------- signed int __thiscall sub_420C90(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ecx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 unsigned __int16 v10; // dx@2 int v11; // ecx@2 const void *v12; // edi@2 int v13; // eax@2 signed __int16 v14; // ax@6 char *v15; // edi@16 int v16; // esi@16 int v17; // ecx@17 int v18; // eax@17 int v19; // eax@17 int v20; // ecx@17 int v21; // edx@17 int v22; // ecx@17 signed __int16 v23; // ax@27 int v24; // [sp-14h] [bp-2068h]@26 signed int v25; // [sp+0h] [bp-2054h]@15 int TargetValue; // [sp+4h] [bp-2050h]@14 int v27; // [sp+8h] [bp-204Ch]@1 unsigned __int8 v28; // [sp+Ch] [bp-2048h]@2 char v29; // [sp+Dh] [bp-2047h]@2 char v30; // [sp+Eh] [bp-2046h]@2 char v31; // [sp+Fh] [bp-2045h]@2 char v32; // [sp+10h] [bp-2044h]@2 __int16 v33; // [sp+15h] [bp-203Fh]@2 int v34; // [sp+17h] [bp-203Dh]@2 int v35; // [sp+1Bh] [bp-2039h]@2 __int16 v36; // [sp+1Fh] [bp-2035h]@2 int v37; // [sp+21h] [bp-2033h]@2 int v38; // [sp+25h] [bp-202Fh]@2 unsigned __int16 v39; // [sp+29h] [bp-202Bh]@2 char v40; // [sp+2Bh] [bp-2029h]@16 int v41; // [sp+2014h] [bp-40h]@17 int v42; // [sp+2018h] [bp-3Ch]@17 int v43; // [sp+201Ch] [bp-38h]@17 int v44; // [sp+2020h] [bp-34h]@17 int v45; // [sp+2024h] [bp-30h]@17 int rgbValue; // [sp+202Ch] [bp-28h]@2 int v47; // [sp+2034h] [bp-20h]@2 int v48; // [sp+2038h] [bp-1Ch]@2 unsigned __int8 v49; // [sp+203Ch] [bp-18h]@2 int v50; // [sp+2040h] [bp-14h]@2 unsigned int v51; // [sp+2044h] [bp-10h]@1 int v52; // [sp+2050h] [bp-4h]@2 int v53; // [sp+2054h] [bp+0h]@1 v51 = (unsigned int)&v53 ^ __security_cookie; v3 = this; v27 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v32); v5 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 6); v33 = 7408; v7 = *(_DWORD *)(a2 + 8); v35 = v5; v8 = *(_DWORD *)(a2 + 12); v37 = v7; v9 = *(_DWORD *)(a2 + 4); v36 = v6; v10 = *(_WORD *)(a2 + 19); v38 = v8; v11 = *(_DWORD *)(a2 + 8); rgbValue = v9; LOBYTE(v9) = *(_BYTE *)(a2 + 16); v47 = v11; LOBYTE(v11) = *(_BYTE *)(a2 + 17); v39 = v10; v48 = *(_DWORD *)(a2 + 12); LOBYTE(v10) = *(_BYTE *)(a2 + 18); v28 = v9 + 48; v29 = v11 + 48; v12 = 0; v52 = 0; v34 = 0; v50 = 0; v30 = v10 + 48; v31 = 0; _mbsnbcpy(&v49, &v28, 3u); v13 = sub_45B120(*(_DWORD *)v3 + 4684, &rgbValue); if ( v50 <= -2412 ) { if ( v50 == -2412 ) { v33 = 7412; } else { if ( v50 != -2492 ) { if ( v50 == -2413 ) { v14 = 7413; LABEL_25: v33 = v14; goto LABEL_26; } LABEL_11: v14 = 7409; goto LABEL_25; } v33 = 7410; } LABEL_26: sub_44E310((int)&v32, 0xAC24u, 0x16u, 0); v24 = (int)&v32; LABEL_41: sub_43BFB0(*(_DWORD *)(v3 + 4), v24); v52 = -1; nullsub_1(&v32); return 1; } if ( v50 == -2411 ) { v14 = 7411; goto LABEL_25; } if ( v50 ) goto LABEL_11; if ( !v13 ) { v33 = 7409; goto LABEL_26; } v33 = 7408; if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v3 + 4684); v34 = TargetValue; v25 = 0; if ( v39 <= 0u ) { LABEL_40: sub_44E310((int)&v32, 0xAC24u, 16 * *(_WORD *)(a2 + 19) + 22, v12); v24 = (int)&v32; goto LABEL_41; } v15 = &v40; v16 = a2 + 29; while ( 1 ) { v17 = *(_DWORD *)v16; v42 = *(_DWORD *)(v16 - 4); v18 = *(_DWORD *)v27; v43 = v17; v41 = TargetValue; v44 = *(_DWORD *)(v16 + 4); v45 = 0; v19 = sub_45B330(v18 + 4684, &v41); v20 = *(_DWORD *)(v16 - 4); *(_DWORD *)v15 = *(_DWORD *)(v16 - 8); v21 = *(_DWORD *)v16; *((_DWORD *)v15 + 1) = v20; v22 = *(_DWORD *)(v16 + 4); *((_DWORD *)v15 + 2) = v21; *((_DWORD *)v15 + 3) = v22; if ( v50 > -2415 ) break; if ( v50 == -2415 ) { *(_WORD *)v15 = 7415; } else { if ( v50 == -2493 ) { *(_WORD *)v15 = 7417; } else { if ( v50 == -2492 ) { v23 = 7418; goto LABEL_37; } if ( v50 != -2421 ) goto LABEL_32; *(_WORD *)v15 = 7416; } } LABEL_38: v16 += 16; v15 += 16; ++v25; if ( v25 >= v39 ) { v3 = v27; v12 = 0; goto LABEL_40; } } if ( v50 == -2414 ) { v23 = 7414; } else { if ( !v50 ) { if ( v19 ) *(_WORD *)v15 = 7408; else *(_WORD *)v15 = 7409; goto LABEL_38; } LABEL_32: v23 = 7409; } LABEL_37: *(_WORD *)v15 = v23; goto LABEL_38; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00421000) -------------------------------------------------------- signed int __thiscall sub_421000(int this, int a2, int a3) { signed int result; // eax@1 int v4; // eax@2 signed int v5; // edi@2 int v6; // esi@3 int v7; // edx@5 int v8; // ecx@5 int v9; // edx@5 int v10; // ecx@5 int v11; // eax@5 int v12; // edx@5 int v13; // [sp+4h] [bp-40h]@1 int rgbValue; // [sp+8h] [bp-3Ch]@2 int v15; // [sp+Ch] [bp-38h]@5 int v16; // [sp+10h] [bp-34h]@5 int v17; // [sp+18h] [bp-2Ch]@5 int v18; // [sp+1Ch] [bp-28h]@5 int v19; // [sp+20h] [bp-24h]@5 int v20; // [sp+24h] [bp-20h]@5 int v21; // [sp+28h] [bp-1Ch]@5 int v22; // [sp+30h] [bp-14h]@5 int v23; // [sp+34h] [bp-10h]@5 int v24; // [sp+38h] [bp-Ch]@5 unsigned int v25; // [sp+40h] [bp-4h]@1 int v26; // [sp+44h] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v13 = this; result = sub_43B000(this, a2); if ( result ) { rgbValue = *(_DWORD *)(a2 + 16); v4 = 0; v5 = 0; if ( *(_WORD *)(a2 + 20) > 0u ) { v6 = a2 + 26; while ( 1 ) { v7 = *(_DWORD *)(v6 - 4); v16 = *(_DWORD *)v6; v8 = *(_WORD *)(v6 + 8); v15 = v7; v9 = *(_DWORD *)(v6 + 4); v19 = v8; v10 = *(_WORD *)(v6 + 11); v18 = v4; v23 = v4; v24 = v4; v11 = *(_DWORD *)v13; v17 = v9; v12 = *(_BYTE *)(v6 + 10); v21 = v10; v20 = v12; v22 = *(_DWORD *)(v6 + 13); sub_45B540(v11 + 4684, &rgbValue); ++v5; v6 += 21; if ( v5 >= *(_WORD *)(a2 + 20) ) break; v4 = 0; } } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004210D0) -------------------------------------------------------- signed int __thiscall sub_4210D0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // ecx@2 __int16 v6; // dx@2 __int16 v7; // ax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@2 int v11; // edx@2 int v12; // eax@2 int v13; // ecx@7 unsigned __int64 v14; // qax@12 unsigned int v15; // ecx@12 unsigned int v16; // esi@12 int v17; // [sp-14h] [bp-204Ch]@17 int TargetValue; // [sp+0h] [bp-2038h]@8 unsigned __int64 v19; // [sp+4h] [bp-2034h]@7 char v20; // [sp+Ch] [bp-202Ch]@2 __int16 v21; // [sp+11h] [bp-2027h]@2 int v22; // [sp+13h] [bp-2025h]@2 __int16 v23; // [sp+17h] [bp-2021h]@2 __int16 v24; // [sp+19h] [bp-201Fh]@2 int v25; // [sp+1Bh] [bp-201Dh]@2 int v26; // [sp+1Fh] [bp-2019h]@2 int v27; // [sp+23h] [bp-2015h]@2 unsigned __int64 v28; // [sp+27h] [bp-2011h]@2 int rgbValue; // [sp+2010h] [bp-28h]@2 int v30; // [sp+2018h] [bp-20h]@2 int v31; // [sp+201Ch] [bp-1Ch]@2 int v32; // [sp+2020h] [bp-18h]@2 unsigned int v33; // [sp+2028h] [bp-10h]@1 int v34; // [sp+2034h] [bp-4h]@2 int v35; // [sp+2038h] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v20); v5 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 6); v21 = 7424; v7 = *(_WORD *)(a2 + 8); v22 = v5; v8 = *(_DWORD *)(a2 + 10); v24 = v7; v9 = *(_DWORD *)(a2 + 4); v25 = v8; rgbValue = v9; v10 = *(_DWORD *)v3; v30 = v8; v23 = v6; v11 = *(_DWORD *)(a2 + 14); v34 = 0; v26 = v11; v27 = 0; v28 = 0i64; v31 = v11; v32 = 0; v12 = sub_45B7D0(v10 + 4684, &rgbValue); if ( v32 == -2412 ) { v21 = 7438; goto LABEL_17; } if ( v32 == -2411 ) { v21 = 7437; goto LABEL_17; } if ( v32 ) { v21 = 7436; LABEL_17: sub_44E310((int)&v20, 0xAC0Du, 0x1Eu, 0); v17 = (int)&v20; LABEL_21: sub_43BFB0(*(_DWORD *)(v3 + 4), v17); v34 = -1; nullsub_1(&v20); return 1; } if ( !v12 ) { v21 = 7436; goto LABEL_17; } v13 = *(_DWORD *)v3 + 4684; v21 = 7424; v19 = 0i64; if ( sub_44E4A0(v13) ) { sub_44E570(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E5A0(*(_DWORD *)v3 + 4684, &v19); } sub_44E4D0(*(_DWORD *)v3 + 4684); if ( (((unsigned __int64)-(signed __int64)v19 >> 32) & 0x80000000u) != 0i64 || (signed int)((unsigned __int64)-(signed __int64)v19 >> 32) < 1 | (unsigned __int64)-(signed __int64)v19 >> 32 == 0 && !(_DWORD)v19 ) { v14 = *(_QWORD *)(a2 + 18); } else { v15 = *(_DWORD *)(a2 + 18); v16 = *(_DWORD *)(a2 + 22); v19 = *(_WORD *)(a2 + 26) * -(signed __int64)v19 / 1000; v14 = v19; if ( v19 > __PAIR__(v16, v15) ) { LABEL_20: v27 = TargetValue; v28 = v14; sub_44E310((int)&v20, 0xAC0Du, 0x1Eu, 0); v17 = (int)&v20; goto LABEL_21; } v14 = __PAIR__(v16, v15); } v19 = v14; goto LABEL_20; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00421360) -------------------------------------------------------- signed int __thiscall sub_421360(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ecx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // eax@2 int v11; // edx@2 int v12; // eax@2 int v13; // ecx@7 char v14; // bl@7 __int16 *v15; // edi@8 int v16; // [sp-14h] [bp-206Ch]@10 int TargetValue; // [sp+0h] [bp-2058h]@8 char v18; // [sp+4h] [bp-2054h]@2 __int16 v19; // [sp+9h] [bp-204Fh]@2 int v20; // [sp+Bh] [bp-204Dh]@2 __int16 v21; // [sp+Fh] [bp-2049h]@2 int v22; // [sp+11h] [bp-2047h]@2 char v23; // [sp+15h] [bp-2043h]@2 int rgbValue; // [sp+2008h] [bp-50h]@2 int v25; // [sp+2010h] [bp-48h]@2 int v26; // [sp+2014h] [bp-44h]@2 int v27; // [sp+2018h] [bp-40h]@2 char v28; // [sp+2020h] [bp-38h]@8 unsigned int v29; // [sp+2048h] [bp-10h]@1 int v30; // [sp+2054h] [bp-4h]@2 int v31; // [sp+2058h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v18); v5 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 6); v19 = 7448; v7 = *(_DWORD *)(a2 + 8); v20 = v5; v8 = *(_DWORD *)(a2 + 4); v22 = v7; v9 = *(_DWORD *)(a2 + 16); rgbValue = v8; v26 = v9; v10 = *(_DWORD *)v3 + 4684; v21 = v6; v11 = *(_DWORD *)(a2 + 12); v30 = 0; v23 = 0; v25 = v11; v27 = 0; v12 = sub_45BBD0(v10, &rgbValue); if ( v27 == -2412 ) { v19 = 7456; } else { if ( v27 == -2411 ) { v19 = 7455; } else { if ( v27 ) { v19 = 7454; } else { if ( v12 ) { v13 = *(_DWORD *)v3 + 4684; v19 = 7448; v14 = 0; if ( sub_44E4A0(v13) ) { do { sub_44E600(*(_DWORD *)v3 + 4684, &v28); sub_44E570(*(_DWORD *)v3 + 4684, &TargetValue); v15 = &v19 + 12 * (unsigned __int8)v14; *(_DWORD *)((char *)v15 + 29) = 0; *(_DWORD *)((char *)v15 + 25) = 0; *(_DWORD *)((char *)v15 + 21) = 0; *(_DWORD *)((char *)v15 + 17) = 0; *(_DWORD *)((char *)v15 + 13) = 0; strncpy((char *)v15 + 13, &v28, 0x14u); ++v14; *(_DWORD *)((char *)v15 + 33) = TargetValue; } while ( (unsigned __int8)v14 < 0x14u && sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v23 = v14; sub_44E310((int)&v18, 0xAC18u, 24 * (unsigned __int8)v14 + 13, 0); v16 = (int)&v18; goto LABEL_11; } v19 = 7454; } } } sub_44E310((int)&v18, 0xAC18u, 0xDu, 0); v16 = (int)&v18; LABEL_11: sub_43BFB0(*(_DWORD *)(v3 + 4), v16); v30 = -1; nullsub_1(&v18); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004215A0) -------------------------------------------------------- signed int __thiscall sub_4215A0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 __int16 v5; // dx@2 __int16 v6; // cx@2 __int16 v7; // ax@2 __int16 v8; // cx@2 int v9; // eax@2 int v10; // edx@2 int v11; // eax@2 int v12; // ecx@2 int v13; // eax@2 int v14; // edx@2 int v15; // eax@2 int v16; // ecx@7 unsigned __int64 v17; // qax@12 unsigned int v18; // ecx@12 unsigned int v19; // edi@12 int v20; // ecx@20 int v21; // eax@20 int v22; // eax@20 signed __int16 v23; // cx@24 int v24; // [sp-14h] [bp-2074h]@17 char TargetValue; // [sp+0h] [bp-2060h]@8 unsigned __int64 v26; // [sp+4h] [bp-205Ch]@7 char v27; // [sp+Ch] [bp-2054h]@2 __int16 v28; // [sp+11h] [bp-204Fh]@2 int v29; // [sp+13h] [bp-204Dh]@2 __int16 v30; // [sp+17h] [bp-2049h]@2 __int16 v31; // [sp+19h] [bp-2047h]@2 __int16 v32; // [sp+1Bh] [bp-2045h]@2 int v33; // [sp+1Dh] [bp-2043h]@2 int v34; // [sp+21h] [bp-203Fh]@2 __int16 v35; // [sp+25h] [bp-203Bh]@2 __int16 v36; // [sp+27h] [bp-2039h]@2 unsigned __int64 v37; // [sp+29h] [bp-2037h]@2 int v38; // [sp+2010h] [bp-50h]@20 int v39; // [sp+2014h] [bp-4Ch]@20 int v40; // [sp+2018h] [bp-48h]@20 int v41; // [sp+201Ch] [bp-44h]@20 __int16 v42; // [sp+2020h] [bp-40h]@20 unsigned __int64 v43; // [sp+2028h] [bp-38h]@20 int v44; // [sp+2030h] [bp-30h]@20 int rgbValue; // [sp+2038h] [bp-28h]@2 int v46; // [sp+2040h] [bp-20h]@2 int v47; // [sp+2044h] [bp-1Ch]@2 int v48; // [sp+2048h] [bp-18h]@2 unsigned int v49; // [sp+2050h] [bp-10h]@1 int v50; // [sp+205Ch] [bp-4h]@2 int v51; // [sp+2060h] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v27); v5 = *(_WORD *)(a2 + 6); v29 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 10); v28 = 7464; v7 = *(_WORD *)(a2 + 8); v32 = v6; v8 = *(_WORD *)(a2 + 20); v31 = v7; v9 = *(_DWORD *)(a2 + 16); v30 = v5; v10 = *(_DWORD *)(a2 + 12); v34 = v9; v11 = *(_DWORD *)(a2 + 4); v35 = v8; v12 = *(_DWORD *)(a2 + 12); v33 = v10; LOWORD(v10) = *(_WORD *)(a2 + 22); rgbValue = v11; v13 = *(_DWORD *)v3; v46 = v12; v36 = v10; v14 = *(_DWORD *)(a2 + 16); v50 = 0; v37 = 0i64; v47 = v14; v48 = 0; v15 = sub_45B7D0(v13 + 4684, &rgbValue); if ( v48 == -2412 ) { v28 = 7467; goto LABEL_17; } if ( v48 == -2411 ) { v28 = 7466; goto LABEL_17; } if ( v48 ) { v28 = 7465; LABEL_17: sub_44E310((int)&v27, 0xAC2Du, 0x20u, 0); v24 = (int)&v27; LABEL_46: sub_43BFB0(*(_DWORD *)(v3 + 4), v24); v50 = -1; nullsub_1(&v27); return 1; } if ( !v15 ) { v28 = 7465; goto LABEL_17; } v16 = *(_DWORD *)v3 + 4684; v28 = 7464; v26 = 0i64; if ( sub_44E4A0(v16) ) { sub_44E570(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E5A0(*(_DWORD *)v3 + 4684, &v26); } sub_44E4D0(*(_DWORD *)v3 + 4684); if ( (((unsigned __int64)-(signed __int64)v26 >> 32) & 0x80000000u) != 0i64 || (signed int)((unsigned __int64)-(signed __int64)v26 >> 32) < 1 | (unsigned __int64)-(signed __int64)v26 >> 32 == 0 && !(_DWORD)v26 ) { v17 = *(_QWORD *)(a2 + 24); } else { v18 = *(_DWORD *)(a2 + 28); v19 = *(_DWORD *)(a2 + 24); v26 = *(_WORD *)(a2 + 32) * -(signed __int64)v26 / 1000; v17 = v26; if ( v26 > __PAIR__(v18, v19) ) goto LABEL_20; v17 = __PAIR__(v18, v19); } v26 = v17; LABEL_20: v38 = *(_DWORD *)(a2 + 12); v39 = *(_DWORD *)(a2 + 16); v40 = *(_WORD *)(a2 + 20); v20 = *(_WORD *)(a2 + 22); v37 = v17; v43 = v17; v21 = *(_DWORD *)v3; v41 = v20; v42 = 909; v44 = 0; v22 = sub_45BDC0(v21 + 4684, &v38); if ( v48 > -2423 ) { if ( v48 <= -2419 ) { if ( v48 == -2419 ) { v28 = 7470; goto LABEL_45; } if ( v48 == -2422 ) { v28 = 7473; goto LABEL_45; } goto LABEL_39; } if ( v48 > -2416 ) { if ( v48 == -2412 ) { v23 = 7467; goto LABEL_44; } if ( !v48 ) { if ( v22 ) v28 = 7464; else v28 = 7465; goto LABEL_45; } goto LABEL_39; } if ( v48 == -2416 ) { v28 = 7471; goto LABEL_45; } if ( v48 == -2418 ) { v28 = 7469; goto LABEL_45; } if ( v48 != -2417 ) { LABEL_39: v23 = 7465; goto LABEL_44; } v23 = 7468; } else { if ( v48 != -2423 ) { if ( v48 == -2493 ) { v28 = 7472; LABEL_45: sub_44E310((int)&v27, 0xAC2Du, 0x20u, 0); v24 = (int)&v27; goto LABEL_46; } goto LABEL_39; } v23 = 7474; } LABEL_44: v28 = v23; goto LABEL_45; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00421970) -------------------------------------------------------- signed int __thiscall sub_421970(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 __int16 v5; // dx@2 char v6; // cl@2 char v7; // al@2 const void *v8; // edi@2 int v9; // eax@2 int v10; // ecx@7 char *v11; // edi@10 int v12; // esi@10 int v13; // ecx@11 int v14; // eax@11 int v15; // eax@11 int v16; // ecx@11 int v17; // edx@11 int v18; // ecx@11 signed __int16 v19; // ax@21 int v20; // [sp-14h] [bp-2058h]@20 signed int v21; // [sp+0h] [bp-2044h]@9 int TargetValue; // [sp+4h] [bp-2040h]@8 int v23; // [sp+8h] [bp-203Ch]@1 unsigned __int8 v24; // [sp+Ch] [bp-2038h]@2 char v25; // [sp+Dh] [bp-2037h]@2 char v26; // [sp+Eh] [bp-2036h]@2 char v27; // [sp+Fh] [bp-2035h]@2 char v28; // [sp+10h] [bp-2034h]@2 __int16 v29; // [sp+15h] [bp-202Fh]@2 int v30; // [sp+17h] [bp-202Dh]@2 int v31; // [sp+1Bh] [bp-2029h]@2 __int16 v32; // [sp+1Fh] [bp-2025h]@2 unsigned __int16 v33; // [sp+21h] [bp-2023h]@2 char v34; // [sp+23h] [bp-2021h]@10 int v35; // [sp+2014h] [bp-30h]@11 int v36; // [sp+2018h] [bp-2Ch]@11 int v37; // [sp+201Ch] [bp-28h]@11 int v38; // [sp+2020h] [bp-24h]@11 int v39; // [sp+2024h] [bp-20h]@11 unsigned __int8 rgbValue; // [sp+202Ch] [bp-18h]@2 int v41; // [sp+2030h] [bp-14h]@2 unsigned int v42; // [sp+2034h] [bp-10h]@1 int v43; // [sp+2040h] [bp-4h]@2 int v44; // [sp+2044h] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; v3 = this; v23 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v28); v5 = *(_WORD *)(a2 + 6); v31 = *(_DWORD *)(a2 + 2); v6 = *(_BYTE *)(a2 + 8); v32 = v5; LOBYTE(v5) = *(_BYTE *)(a2 + 9); v29 = 9856; v33 = *(_WORD *)(a2 + 11); v7 = *(_BYTE *)(a2 + 10); v24 = v6 + 48; v25 = v5 + 48; v8 = 0; v43 = 0; v30 = 0; v41 = 0; v26 = v7 + 48; v27 = 0; _mbsnbcpy(&rgbValue, &v24, 3u); v9 = sub_45D480(*(_DWORD *)v3 + 4684, &rgbValue); if ( v41 == -2492 ) { v29 = 9858; goto LABEL_20; } if ( v41 == -2413 ) { v29 = 9859; goto LABEL_20; } if ( v41 ) { v29 = 9857; LABEL_20: sub_44E310((int)&v28, 0xBC79u, 0xEu, 0); v20 = (int)&v28; LABEL_35: sub_43BFB0(*(_DWORD *)(v3 + 4), v20); v43 = -1; nullsub_1(&v28); return 1; } if ( !v9 ) { v29 = 9857; goto LABEL_20; } v10 = *(_DWORD *)v3 + 4684; v29 = 9856; if ( sub_44E4A0(v10) ) sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v3 + 4684); v30 = TargetValue; v21 = 0; if ( v33 <= 0u ) { LABEL_34: sub_44E310((int)&v28, 0xBC79u, 16 * *(_WORD *)(a2 + 11) + 14, v8); v20 = (int)&v28; goto LABEL_35; } v11 = &v34; v12 = a2 + 21; while ( 1 ) { v13 = *(_DWORD *)v12; v36 = *(_DWORD *)(v12 - 4); v14 = *(_DWORD *)v23; v37 = v13; v35 = TargetValue; v38 = *(_DWORD *)(v12 + 4); v39 = 0; v15 = sub_45D650(v14 + 4684, &v35); v16 = *(_DWORD *)(v12 - 4); *(_DWORD *)v11 = *(_DWORD *)(v12 - 8); v17 = *(_DWORD *)v12; *((_DWORD *)v11 + 1) = v16; v18 = *(_DWORD *)(v12 + 4); *((_DWORD *)v11 + 2) = v17; *((_DWORD *)v11 + 3) = v18; if ( v41 > -2415 ) break; if ( v41 == -2415 ) { *(_WORD *)v11 = 9861; } else { if ( v41 == -2493 ) { *(_WORD *)v11 = 9863; } else { if ( v41 == -2492 ) { v19 = 9864; goto LABEL_31; } if ( v41 != -2421 ) goto LABEL_26; *(_WORD *)v11 = 9862; } } LABEL_32: v12 += 16; v11 += 16; ++v21; if ( v21 >= v33 ) { v3 = v23; v8 = 0; goto LABEL_34; } } if ( v41 == -2414 ) { v19 = 9860; } else { if ( !v41 ) { if ( v15 ) *(_WORD *)v11 = 9856; else *(_WORD *)v11 = 9857; goto LABEL_32; } LABEL_26: v19 = 9857; } LABEL_31: *(_WORD *)v11 = v19; goto LABEL_32; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00421CA0) -------------------------------------------------------- signed int __thiscall sub_421CA0(int this, int a2, int a3) { signed int result; // eax@1 int v4; // eax@2 signed int v5; // edi@2 int v6; // esi@3 int v7; // edx@5 int v8; // ecx@5 int v9; // edx@5 int v10; // ecx@5 int v11; // eax@5 int v12; // edx@5 int v13; // [sp+4h] [bp-40h]@1 int rgbValue; // [sp+8h] [bp-3Ch]@2 int v15; // [sp+Ch] [bp-38h]@5 int v16; // [sp+10h] [bp-34h]@5 int v17; // [sp+18h] [bp-2Ch]@5 int v18; // [sp+1Ch] [bp-28h]@5 int v19; // [sp+20h] [bp-24h]@5 int v20; // [sp+24h] [bp-20h]@5 int v21; // [sp+28h] [bp-1Ch]@5 int v22; // [sp+30h] [bp-14h]@5 int v23; // [sp+34h] [bp-10h]@5 int v24; // [sp+38h] [bp-Ch]@5 unsigned int v25; // [sp+40h] [bp-4h]@1 int v26; // [sp+44h] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v13 = this; result = sub_43B000(this, a2); if ( result ) { rgbValue = *(_DWORD *)(a2 + 8); v4 = 0; v5 = 0; if ( *(_WORD *)(a2 + 12) > 0u ) { v6 = a2 + 18; while ( 1 ) { v7 = *(_DWORD *)(v6 - 4); v16 = *(_DWORD *)v6; v8 = *(_WORD *)(v6 + 8); v15 = v7; v9 = *(_DWORD *)(v6 + 4); v19 = v8; v10 = *(_WORD *)(v6 + 11); v18 = v4; v23 = v4; v24 = v4; v11 = *(_DWORD *)v13; v17 = v9; v12 = *(_BYTE *)(v6 + 10); v21 = v10; v20 = v12; v22 = *(_DWORD *)(v6 + 13); sub_45D860(v11 + 4684, &rgbValue); ++v5; v6 += 21; if ( v5 >= *(_WORD *)(a2 + 12) ) break; v4 = 0; } } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00421D70) -------------------------------------------------------- signed int __thiscall sub_421D70(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ecx@2 __int16 v6; // dx@2 int v7; // eax@2 int v8; // eax@2 int v9; // ecx@5 char v10; // bl@5 __int16 *v11; // edi@6 int v12; // [sp-14h] [bp-2058h]@8 int TargetValue; // [sp+0h] [bp-2044h]@6 int rgbValue; // [sp+4h] [bp-2040h]@2 char v15; // [sp+8h] [bp-203Ch]@2 __int16 v16; // [sp+Dh] [bp-2037h]@2 int v17; // [sp+Fh] [bp-2035h]@2 __int16 v18; // [sp+13h] [bp-2031h]@2 char v19; // [sp+15h] [bp-202Fh]@2 char v20; // [sp+200Ch] [bp-38h]@6 unsigned int v21; // [sp+2034h] [bp-10h]@1 int v22; // [sp+2040h] [bp-4h]@2 int v23; // [sp+2044h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v15); v5 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 6); v16 = 9872; v7 = *(_DWORD *)v3; v17 = v5; v22 = 0; v18 = v6; v19 = 0; rgbValue = 0; v8 = sub_45DAF0(v7 + 4684, &rgbValue); if ( rgbValue ) { v16 = 9876; } else { if ( v8 ) { v9 = *(_DWORD *)v3 + 4684; v16 = 9872; v10 = 0; if ( sub_44E4A0(v9) ) { do { sub_44E600(*(_DWORD *)v3 + 4684, &v20); sub_44E570(*(_DWORD *)v3 + 4684, &TargetValue); v11 = &v16 + 12 * (unsigned __int8)v10; *(_DWORD *)((char *)v11 + 25) = 0; *(_DWORD *)((char *)v11 + 21) = 0; *(_DWORD *)((char *)v11 + 17) = 0; *(_DWORD *)((char *)v11 + 13) = 0; *(_DWORD *)((char *)v11 + 9) = 0; strncpy((char *)v11 + 9, &v20, 0x14u); ++v10; *(_DWORD *)((char *)v11 + 29) = TargetValue; } while ( (unsigned __int8)v10 < 0x14u && sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v19 = v10; sub_44E310((int)&v15, 0xBC6Du, 24 * (unsigned __int8)v10 + 9, 0); v12 = (int)&v15; goto LABEL_9; } v16 = 9876; } sub_44E310((int)&v15, 0xBC6Du, 9u, 0); v12 = (int)&v15; LABEL_9: sub_43BFB0(*(_DWORD *)(v3 + 4), v12); v22 = -1; nullsub_1(&v15); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00421F60) -------------------------------------------------------- int __thiscall sub_421F60(void *this, int rgbValue, __int16 a3) { void *v3; // esi@1 signed int v4; // eax@1 int v6; // ecx@4 bool v7; // al@4 int v8; // ecx@4 int v9; // ecx@5 bool v10; // al@5 int v11; // ecx@5 int v12; // ecx@6 bool v13; // al@6 int v14; // ecx@6 int v15; // ecx@7 bool v16; // al@7 int v17; // ecx@7 int v18; // ecx@8 bool v19; // al@8 int v20; // ecx@8 char v21; // [sp+0h] [bp-2750h]@1 int v22; // [sp+5h] [bp-274Bh]@1 int v23; // [sp+9h] [bp-2747h]@1 char v24; // [sp+2004h] [bp-74Ch]@4 int v25; // [sp+2005h] [bp-74Bh]@4 __int16 v26; // [sp+2009h] [bp-747h]@4 bool v27; // [sp+200Bh] [bp-745h]@4 int v28; // [sp+200Ch] [bp-744h]@4 char v29; // [sp+240Ch] [bp-344h]@7 int v30; // [sp+240Dh] [bp-343h]@7 __int16 v31; // [sp+2411h] [bp-33Fh]@7 bool v32; // [sp+2413h] [bp-33Dh]@7 int v33; // [sp+2414h] [bp-33Ch]@7 char v34; // [sp+259Ch] [bp-1B4h]@8 int v35; // [sp+259Dh] [bp-1B3h]@8 __int16 v36; // [sp+25A1h] [bp-1AFh]@8 bool v37; // [sp+25A3h] [bp-1ADh]@8 int v38; // [sp+25A4h] [bp-1ACh]@8 char v39; // [sp+26D8h] [bp-78h]@6 int v40; // [sp+26D9h] [bp-77h]@6 __int16 v41; // [sp+26DDh] [bp-73h]@6 bool v42; // [sp+26DFh] [bp-71h]@6 int v43; // [sp+26E0h] [bp-70h]@6 char v44; // [sp+2720h] [bp-30h]@5 int v45; // [sp+2721h] [bp-2Fh]@5 __int16 v46; // [sp+2725h] [bp-2Bh]@5 bool v47; // [sp+2727h] [bp-29h]@5 int v48; // [sp+2728h] [bp-28h]@5 unsigned int v49; // [sp+2740h] [bp-10h]@1 int v50; // [sp+274Ch] [bp-4h]@1 int v51; // [sp+2750h] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v3 = this; sub_44E180((int)&v21); v50 = 0; v22 = rgbValue; v23 = 1; sub_44E310((int)&v21, 0x702Cu, 8u, 0); v4 = sub_43BFB0(*((_DWORD *)v3 + 1), (int)&v21); v50 = -1; if ( !v4 ) { nullsub_1(&v21); return 0; } nullsub_1(&v21); v6 = *(_DWORD *)v3 + 4684; v24 = 0; v25 = 1880622085; v26 = a3; v7 = sub_46B730(v6, rgbValue, &v28); v8 = *((_DWORD *)v3 + 1); v27 = v7; if ( !sub_43BFE0(v8, (int)&v24, 0x408u) || (v9 = *(_DWORD *)v3 + 4684, v44 = 0, v45 = 1880752157, v46 = a3, v10 = sub_46B750(v9, rgbValue, &v48), v11 = *((_DWORD *)v3 + 1), v47 = v10, !sub_43BFE0(v11, (int)&v44, 0x20u)) || (v12 = *(_DWORD *)v3 + 4684, v39 = 0, v40 = 1881145413, v41 = a3, v13 = sub_46B7B0(v12, rgbValue, &v43), v14 = *((_DWORD *)v3 + 1), v42 = v13, !sub_43BFE0(v14, (int)&v39, 0x48u)) || (v15 = *(_DWORD *)v3 + 4684, v29 = 0, v30 = 1881276813, v31 = a3, v16 = sub_46B7D0(v15, rgbValue, &v33), v17 = *((_DWORD *)v3 + 1), v32 = v16, !sub_43BFE0(v17, (int)&v29, 0x190u)) ) return 0; v18 = *(_DWORD *)v3 + 4684; v34 = 0; v35 = 1881407801; v36 = a3; v19 = sub_46B7F0(v18, rgbValue, &v38); v20 = *((_DWORD *)v3 + 1); v37 = v19; return sub_43BFE0(v20, (int)&v34, 0x13Cu) != 0; } // 4DE38C: using guessed type int __security_cookie; //----- (00422180) -------------------------------------------------------- signed int __thiscall sub_422180(void *this, int TargetValue, int a3) { void *v3; // esi@1 int v4; // ST00_4@1 signed int result; // eax@4 int rgbValue; // [sp+4h] [bp-8h]@1 int v7; // [sp+8h] [bp-4h]@1 v3 = this; rgbValue = TargetValue; v4 = *(_DWORD *)this + 4684; v7 = 0; if ( sub_45C000(v4, &rgbValue) == 1 ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v3 + 4684); *(_DWORD *)a3 = TargetValue; result = 1; } else { result = 0; } return result; } //----- (00422200) -------------------------------------------------------- signed int __thiscall sub_422200(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 int v4; // ST18_4@1 signed int result; // eax@4 int v6; // edi@6 char *v7; // edi@7 int v8; // ecx@11 signed int v9; // esi@11 unsigned int v10; // [sp-10h] [bp-212Ch]@1 int rgbValue; // [sp+0h] [bp-211Ch]@1 int v12; // [sp+4h] [bp-2118h]@1 char v13; // [sp+8h] [bp-2114h]@1 int v14; // [sp+Dh] [bp-210Fh]@1 unsigned __int16 v15; // [sp+11h] [bp-210Bh]@1 char v16; // [sp+200Ch] [bp-110h]@3 unsigned int v17; // [sp+210Ch] [bp-10h]@1 int v18; // [sp+2118h] [bp-4h]@1 int v19; // [sp+211Ch] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v10 = (unsigned int)&v19 ^ __security_cookie; v2 = this; sub_44E180((int)&v13); v15 = 0; v3 = 0; v4 = *(_DWORD *)v2 + 4684; v18 = 0; v14 = a2; rgbValue = a2; v12 = 0; if ( sub_45C100(v4, &rgbValue) ) { if ( sub_44E4A0(*(_DWORD *)v2 + 4684) ) { v6 = 0; while ( 1 ) { v7 = (char *)&v14 + v6; sub_44E510(*(_DWORD *)v2 + 4684, v7 + 6); sub_44E540(*(_DWORD *)v2 + 4684, v7 + 7); sub_44E4E0(*(_DWORD *)v2 + 4684, v7 + 9); ++v3; v6 = 7 * (unsigned __int16)v3; if ( (unsigned int)(v6 + 6) > 0x1F40 ) break; if ( !sub_44E4A0(*(_DWORD *)v2 + 4684) ) goto LABEL_11; } sprintf( &v16, "ERROR - CPFsCharacter::GetCharOptionImprove_ShortCutData - too many short cut data(%d), CharNo=%d", (unsigned __int16)v3, a2, v10); sub_446350(1, "Msg", "%s", &v16); } LABEL_11: v8 = *(_DWORD *)v2 + 4684; v15 = v3; sub_44E4D0(v8); sub_44E310((int)&v13, 0x702Du, 7 * v15 + 6, 0); v9 = sub_43BFB0(*((_DWORD *)v2 + 1), (int)&v13); v18 = -1; nullsub_1(&v13); result = v9; } else { if ( v12 != -2721 ) { sprintf(&v16, "ERROR - CPFsCharacter::GetCharOptionImprove_ShortCutData, CharNo=%d", a2, v10); sub_446350(1, "Msg", "%s", &v16); } v18 = -1; nullsub_1(&v13); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00422410) -------------------------------------------------------- signed int __thiscall sub_422410(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 signed int v5; // ebx@2 int v6; // eax@2 int v7; // esi@3 __int16 v8; // dx@4 int v9; // eax@4 int v10; // eax@4 signed int v11; // esi@8 unsigned int v12; // [sp-10h] [bp-2238h]@1 int v13; // [sp+0h] [bp-2228h]@1 char v14; // [sp+4h] [bp-2224h]@2 __int16 v15; // [sp+9h] [bp-221Fh]@2 int v16; // [sp+Bh] [bp-221Dh]@2 int rgbValue; // [sp+2008h] [bp-220h]@2 char v18; // [sp+200Ch] [bp-21Ch]@4 __int16 v19; // [sp+200Eh] [bp-21Ah]@4 int v20; // [sp+2010h] [bp-218h]@4 int v21; // [sp+2014h] [bp-214h]@4 char v22; // [sp+2018h] [bp-210h]@5 unsigned int v23; // [sp+2218h] [bp-10h]@1 int v24; // [sp+2224h] [bp-4h]@2 int v25; // [sp+2228h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v12 = (unsigned int)&v25 ^ __security_cookie; v3 = this; v13 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v14); v5 = 0; v15 = 8448; v6 = *(_DWORD *)(a2 + 2); v24 = 0; v16 = v6; rgbValue = v6; if ( *(_BYTE *)(a2 + 6) ) { v7 = a2 + 8; do { v8 = *(_WORD *)v7; v9 = *(_DWORD *)(v7 + 2); v18 = *(_BYTE *)(v7 - 1); v20 = v9; v10 = *(_DWORD *)v13; v19 = v8; v21 = 0; if ( !sub_45C200(v10 + 4684, &rgbValue) ) { sprintf( &v22, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_SET_SHORTCUTDATA_REQ DB Procedure Fail : CharNo(%d), (%d/%d/%d), nRet=%d", *(_DWORD *)(a2 + 2), *(_BYTE *)(v7 - 1), *(_WORD *)v7, *(_DWORD *)(v7 + 2), v21, v12); sub_446350(1, "Msg", "%s", &v22); v15 = 8449; } ++v5; v7 += 7; } while ( v5 < *(_BYTE *)(a2 + 6) ); v3 = v13; } sub_44E310((int)&v14, 0x704Cu, 6u, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14); v24 = -1; nullsub_1(&v14); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004225A0) -------------------------------------------------------- signed int __thiscall sub_4225A0(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 int v4; // edi@1 int v5; // ST18_4@1 signed int result; // eax@4 int *v7; // ST30_4@9 int v8; // ecx@15 signed int v9; // esi@15 char *v10; // [sp-24h] [bp-2144h]@12 unsigned int v11; // [sp-10h] [bp-2130h]@1 int rgbValue; // [sp+4h] [bp-211Ch]@1 int v13; // [sp+8h] [bp-2118h]@1 char v14; // [sp+Ch] [bp-2114h]@1 int v15; // [sp+11h] [bp-210Fh]@1 unsigned __int16 v16; // [sp+15h] [bp-210Bh]@1 char TargetValue[8183]; // [sp+19h] [bp-2107h]@9 char v18; // [sp+2010h] [bp-110h]@3 unsigned int v19; // [sp+2110h] [bp-10h]@1 int v20; // [sp+211Ch] [bp-4h]@1 int v21; // [sp+2120h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v11 = (unsigned int)&v21 ^ __security_cookie; v2 = this; sub_44E180((int)&v14); v3 = a2; v16 = 0; v4 = 0; v5 = *(_DWORD *)v2 + 4684; v20 = 0; v15 = a2; rgbValue = a2; v13 = 0; if ( sub_45C450(v5, &rgbValue) ) { if ( sub_44E4A0(*(_DWORD *)v2 + 4684) ) { while ( 1 ) { if ( (unsigned __int16)v4 >= 0x5Fu ) { sprintf( &v18, "ERROR - CPFsCharacter::GetCharOptionImprove_KeyMapData - too many key map data 1(%d), CharNo=%d", (unsigned __int16)v4, v3, v11); v10 = &v18; goto LABEL_14; } v7 = &v15 + (unsigned __int16)v4; sub_44E540(*(_DWORD *)v2 + 4684, (char *)v7 + 6); sub_44E510(*(_DWORD *)v2 + 4684, &TargetValue[4 * (unsigned __int16)v4]); sub_44E510(*(_DWORD *)v2 + 4684, (char *)v7 + 9); ++v4; if ( 4 * (unsigned int)(unsigned __int16)v4 + 6 > 0x1F40 ) break; if ( !sub_44E4A0(*(_DWORD *)v2 + 4684) ) goto LABEL_15; v3 = a2; } sprintf( &v18, "ERROR - CPFsCharacter::GetCharOptionImprove_KeyMapData - too many key map data 2(%d), CharNo=%d", (unsigned __int16)v4, a2, v11); v10 = &v18; LABEL_14: sub_446350(1, "Msg", "%s", v10); } LABEL_15: v8 = *(_DWORD *)v2 + 4684; v16 = v4; sub_44E4D0(v8); sub_44E310((int)&v14, 0x702Eu, 4 * v16 + 6, 0); v9 = sub_43BFB0(*((_DWORD *)v2 + 1), (int)&v14); v20 = -1; nullsub_1(&v14); result = v9; } else { if ( v13 != -2721 ) { sprintf(&v18, "ERROR - CPFsCharacter::GetCharOptionImprove_KeyMapData, CharNo=%d", a2, v11); sub_446350(1, "Msg", "%s", &v18); } v20 = -1; nullsub_1(&v14); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4225A0: using guessed type char TargetValue[8183]; //----- (004227D0) -------------------------------------------------------- signed int __thiscall sub_4227D0(int this, int a2, int a3) { int v3; // ebx@1 int v4; // esi@1 int v5; // eax@2 int v6; // edi@2 int v7; // ST18_4@4 __int16 *v9; // ebx@13 int v10; // ecx@19 signed int v11; // esi@20 char *v12; // [sp-24h] [bp-224Ch]@16 int v13; // [sp-14h] [bp-223Ch]@3 unsigned int v14; // [sp-10h] [bp-2238h]@1 int rgbValue; // [sp+0h] [bp-2228h]@2 int v16; // [sp+4h] [bp-2224h]@2 int v17; // [sp+8h] [bp-2220h]@4 int v18; // [sp+Ch] [bp-221Ch]@4 int v19; // [sp+10h] [bp-2218h]@1 char v20; // [sp+14h] [bp-2214h]@2 __int16 v21; // [sp+19h] [bp-220Fh]@2 int v22; // [sp+1Bh] [bp-220Dh]@2 unsigned __int16 v23; // [sp+1Fh] [bp-2209h]@2 char TargetValue[8183]; // [sp+21h] [bp-2207h]@13 char v25; // [sp+2018h] [bp-210h]@17 char v26; // [sp+2118h] [bp-110h]@3 unsigned int v27; // [sp+2218h] [bp-10h]@1 int v28; // [sp+2224h] [bp-4h]@2 int v29; // [sp+2228h] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v14 = (unsigned int)&v29 ^ __security_cookie; v3 = a2; v4 = this; v19 = a2; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v20); v21 = 8464; v22 = *(_DWORD *)(a2 + 2); rgbValue = v22; v5 = *(_DWORD *)v4 + 4684; v6 = 0; v23 = 0; v28 = 0; v16 = 0; if ( sub_45C350(v5, &rgbValue) ) { v17 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)v4 + 4684; v18 = 0; if ( sub_45C450(v7, &v17) ) { if ( sub_44E4A0(*(_DWORD *)v4 + 4684) ) { while ( 1 ) { if ( (unsigned __int16)v6 >= 0x5Fu ) { sprintf( &v26, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_INIT_KEYMAP_REQ - too many key map data 1(%d), CharNo=%d", (unsigned __int16)v6, *(_DWORD *)(v3 + 2), v14); v12 = &v26; goto LABEL_18; } sub_44E540(*(_DWORD *)v4 + 4684, &TargetValue[4 * (unsigned __int16)v6]); v9 = &v21 + 2 * (unsigned __int16)v6; sub_44E510(*(_DWORD *)v4 + 4684, v9 + 5); sub_44E510(*(_DWORD *)v4 + 4684, (char *)v9 + 11); ++v6; if ( 4 * (unsigned int)(unsigned __int16)v6 + 6 > 0x1F40 ) break; if ( !sub_44E4A0(*(_DWORD *)v4 + 4684) ) goto LABEL_19; v3 = v19; } sprintf( &v25, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_INIT_KEYMAP_REQ - too many key map data 2(%d), CharNo=%d", (unsigned __int16)v6, *(_DWORD *)(v19 + 2), v14); v12 = &v25; LABEL_18: sub_446350(1, "Msg", "%s", v12); } LABEL_19: v10 = *(_DWORD *)v4 + 4684; v23 = v6; sub_44E4D0(v10); sub_44E310((int)&v20, 0x7058u, 4 * v23 + 8, 0); v13 = (int)&v20; goto LABEL_20; } if ( v18 != -2721 ) { sprintf( &v26, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_INIT_KEYMAP_REQ, CharNo=%d", *(_DWORD *)(a2 + 2), v14); sub_446350(1, "Msg", "%s", &v26); } v28 = -1; nullsub_1(&v20); return 0; } sprintf( &v26, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_INIT_KEYMAP_REQ DB Procedure Fail : CharNo(%d), nRet=%d", *(_DWORD *)(a2 + 2), v16, v14); sub_446350(1, "Msg", "%s", &v26); v21 = 8465; sub_44E310((int)&v20, 0x7058u, 8u, 0); v13 = (int)&v20; LABEL_20: v11 = sub_43BFB0(*(_DWORD *)(v4 + 4), v13); v28 = -1; nullsub_1(&v20); return v11; } // 4DE38C: using guessed type int __security_cookie; // 4227D0: using guessed type char TargetValue[8183]; //----- (00422AC0) -------------------------------------------------------- signed int __thiscall sub_422AC0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ecx@2 signed int v6; // ebx@2 int v7; // esi@3 char v8; // cl@4 char v9; // dl@4 int v10; // eax@4 signed int v11; // esi@8 unsigned int v12; // [sp-10h] [bp-2134h]@1 int v13; // [sp+0h] [bp-2124h]@1 char v14; // [sp+4h] [bp-2120h]@2 __int16 v15; // [sp+9h] [bp-211Bh]@2 int rgbValue; // [sp+2008h] [bp-11Ch]@2 __int16 v17; // [sp+200Ch] [bp-118h]@4 char v18; // [sp+200Eh] [bp-116h]@4 char v19; // [sp+200Fh] [bp-115h]@4 int v20; // [sp+2010h] [bp-114h]@4 char v21; // [sp+2014h] [bp-110h]@5 unsigned int v22; // [sp+2114h] [bp-10h]@1 int v23; // [sp+2120h] [bp-4h]@2 int v24; // [sp+2124h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v12 = (unsigned int)&v24 ^ __security_cookie; v3 = this; v13 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v14); v5 = *(_DWORD *)(a2 + 2); v6 = 0; v23 = 0; v15 = 8456; rgbValue = v5; if ( *(_WORD *)(a2 + 6) > 0u ) { v7 = a2 + 10; do { v8 = *(_BYTE *)v7; v9 = *(_BYTE *)(v7 + 1); v17 = *(_WORD *)(v7 - 2); v10 = *(_DWORD *)v13; v18 = v8; v19 = v9; v20 = 0; if ( !sub_45C550(v10 + 4684, &rgbValue) ) { sprintf( &v21, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_SET_KEYMAP_REQ DB Procedure Fail : CharNo(%d), (%d/%d/%d), nRet=%d", *(_DWORD *)(a2 + 2), *(_WORD *)(v7 - 2), *(_BYTE *)v7, *(_BYTE *)(v7 + 1), v20, v12); sub_446350(1, "Msg", "%s", &v21); v15 = 8457; } ++v6; v7 += 4; } while ( v6 < *(_WORD *)(a2 + 6) ); v3 = v13; } sub_44E310((int)&v14, 0x704Eu, 6u, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14); v23 = -1; nullsub_1(&v14); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00422C50) -------------------------------------------------------- signed int __thiscall sub_422C50(void *this, int a2) { void *v2; // edi@1 int v3; // ST18_4@1 signed int result; // eax@4 int v5; // ecx@5 int v6; // ebx@6 int v7; // esi@6 unsigned __int16 v8; // ax@7 int v9; // ecx@11 signed int v10; // esi@11 unsigned int v11; // [sp-10h] [bp-2130h]@1 int rgbValue; // [sp+0h] [bp-2120h]@1 int v13; // [sp+4h] [bp-211Ch]@1 int v14; // [sp+8h] [bp-2118h]@5 char v15; // [sp+Ch] [bp-2114h]@1 int TargetValue; // [sp+11h] [bp-210Fh]@1 unsigned __int16 v17; // [sp+15h] [bp-210Bh]@1 char v18[8183]; // [sp+19h] [bp-2107h]@7 char v19; // [sp+2010h] [bp-110h]@3 unsigned int v20; // [sp+2110h] [bp-10h]@1 int v21; // [sp+211Ch] [bp-4h]@1 int v22; // [sp+2120h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v11 = (unsigned int)&v22 ^ __security_cookie; v2 = this; sub_44E180((int)&v15); v17 = 0; v3 = *(_DWORD *)v2 + 4684; v21 = 0; TargetValue = a2; rgbValue = a2; v13 = 0; if ( sub_45C7A0(v3, &rgbValue) ) { v5 = *(_DWORD *)v2 + 4684; v14 = 0; if ( sub_44E4A0(v5) ) { v6 = 6; v7 = 0; while ( 1 ) { sub_44E540(*(_DWORD *)v2 + 4684, (char *)&TargetValue + v6); sub_44E510(*(_DWORD *)v2 + 4684, &v18[2 * v7] + v7); v8 = v14 + 1; v7 = (unsigned __int16)(v14 + 1); v6 = 3 * v7 + 6; ++v14; if ( (unsigned int)v6 > 0x1F40 ) break; if ( !sub_44E4A0(*(_DWORD *)v2 + 4684) ) goto LABEL_11; } sprintf( &v19, "ERROR - CPFsCharacter::GetCharOptionImprove_GameOption - too many short cut data(%d), CharNo=%d", v8, a2, v11); sub_446350(1, "Msg", "%s", &v19); } LABEL_11: v9 = *(_DWORD *)v2 + 4684; v17 = v14; sub_44E4D0(v9); sub_44E310((int)&v15, 0x702Fu, 3 * v17 + 6, 0); v10 = sub_43BFB0(*((_DWORD *)v2 + 1), (int)&v15); v21 = -1; nullsub_1(&v15); result = v10; } else { if ( v13 != -2721 ) { sprintf(&v19, "ERROR - CPFsCharacter::GetCharOptionImprove_GameOption, CharNo=%d", a2, v11); sub_446350(1, "Msg", "%s", &v19); } v21 = -1; nullsub_1(&v15); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; // 422C50: using guessed type char var_2107[8183]; //----- (00422E50) -------------------------------------------------------- signed int __thiscall sub_422E50(int this, int a2, int a3) { int v3; // esi@1 int v4; // ebx@2 int v5; // ST18_4@2 int v6; // ST18_4@4 int v8; // edi@10 char *v9; // edi@11 int v10; // ecx@15 signed int v11; // esi@16 int v12; // [sp-14h] [bp-2238h]@3 unsigned int v13; // [sp-10h] [bp-2234h]@1 int rgbValue; // [sp+0h] [bp-2224h]@2 int v15; // [sp+4h] [bp-2220h]@2 int v16; // [sp+8h] [bp-221Ch]@4 int v17; // [sp+Ch] [bp-2218h]@4 char v18; // [sp+10h] [bp-2214h]@2 __int16 v19; // [sp+15h] [bp-220Fh]@2 int v20; // [sp+17h] [bp-220Dh]@2 unsigned __int16 v21; // [sp+1Bh] [bp-2209h]@15 char v22; // [sp+2014h] [bp-210h]@14 char v23; // [sp+2114h] [bp-110h]@3 unsigned int v24; // [sp+2214h] [bp-10h]@1 int v25; // [sp+2220h] [bp-4h]@2 int v26; // [sp+2224h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v13 = (unsigned int)&v26 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v18); v19 = 8480; v20 = *(_DWORD *)(a2 + 2); rgbValue = v20; v4 = 0; v5 = *(_DWORD *)v3 + 4684; v25 = 0; v15 = 0; if ( sub_45C6A0(v5, &rgbValue) ) { v6 = *(_DWORD *)v3 + 4684; v16 = *(_DWORD *)(a2 + 2); v17 = 0; if ( sub_45C7A0(v6, &v16) ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { v8 = 0; while ( 1 ) { v9 = (char *)&v19 + v8; sub_44E540(*(_DWORD *)v3 + 4684, v9 + 8); sub_44E510(*(_DWORD *)v3 + 4684, v9 + 10); ++v4; v8 = 3 * (unsigned __int16)v4; if ( (unsigned int)(v8 + 8) > 0x1F40 ) break; if ( !sub_44E4A0(*(_DWORD *)v3 + 4684) ) goto LABEL_15; } sprintf( &v22, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_INIT_GAMEOPTION_REQ - too many short cut data(%d), CharNo=%d", (unsigned __int16)v4, v16, v13); sub_446350(1, "Msg", "%s", &v22); } LABEL_15: v10 = *(_DWORD *)v3 + 4684; v21 = v4; sub_44E4D0(v10); sub_44E310((int)&v18, 0x705Au, 3 * v21 + 8, 0); v12 = (int)&v18; goto LABEL_16; } if ( v17 != -2721 ) { sprintf(&v23, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_INIT_GAMEOPTION_REQ, CharNo=%d", v16, v13); sub_446350(1, "Msg", "%s", &v23); } v25 = -1; nullsub_1(&v18); return 0; } sprintf( &v23, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_INIT_GAMEOPTION_REQ DB Procedure Fail : CharNo(%d), nRet=%d", *(_DWORD *)(a2 + 2), v15, v13); sub_446350(1, "Msg", "%s", &v23); v19 = 8481; sub_44E310((int)&v18, 0x705Au, 8u, 0); v12 = (int)&v18; LABEL_16: v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), v12); v25 = -1; nullsub_1(&v18); return v11; } // 4DE38C: using guessed type int __security_cookie; //----- (004230E0) -------------------------------------------------------- signed int __thiscall sub_4230E0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ecx@2 signed int v6; // ebx@2 int v7; // esi@3 char v8; // cl@4 int v9; // eax@4 signed int v10; // esi@8 unsigned int v11; // [sp-10h] [bp-2134h]@1 int v12; // [sp+0h] [bp-2124h]@1 char v13; // [sp+4h] [bp-2120h]@2 __int16 v14; // [sp+9h] [bp-211Bh]@2 int rgbValue; // [sp+2008h] [bp-11Ch]@2 __int16 v16; // [sp+200Ch] [bp-118h]@4 char v17; // [sp+200Eh] [bp-116h]@4 int v18; // [sp+2010h] [bp-114h]@4 char v19; // [sp+2014h] [bp-110h]@5 unsigned int v20; // [sp+2114h] [bp-10h]@1 int v21; // [sp+2120h] [bp-4h]@2 int v22; // [sp+2124h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v11 = (unsigned int)&v22 ^ __security_cookie; v3 = this; v12 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v13); v5 = *(_DWORD *)(a2 + 2); v6 = 0; v21 = 0; v14 = 8472; rgbValue = v5; if ( *(_WORD *)(a2 + 6) > 0u ) { v7 = a2 + 8; do { v8 = *(_BYTE *)(v7 + 2); v16 = *(_WORD *)v7; v9 = *(_DWORD *)v12; v17 = v8; v18 = 0; if ( !sub_45C8A0(v9 + 4684, &rgbValue) ) { sprintf( &v19, "ERROR - CPFsCharacter::fc_NC_CHAR_OPTION_IMPROVE_DB_SET_GAMEOPTION_REQ DB Procedure Fail : CharNo(%d), (%d/%d), nRet=%d", *(_DWORD *)(a2 + 2), *(_WORD *)v7, *(_BYTE *)(v7 + 2), v18, v11); sub_446350(1, "Msg", "%s", &v19); v14 = 8473; } ++v6; v7 += 3; } while ( v6 < *(_WORD *)(a2 + 6) ); v3 = v12; } sub_44E310((int)&v13, 0x7050u, 6u, 0); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v13); v21 = -1; nullsub_1(&v13); result = v10; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00423260) -------------------------------------------------------- signed int __thiscall sub_423260(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 char v5; // cl@2 char v6; // dl@2 char v7; // al@2 int v8; // ST18_4@2 char *v9; // [sp-14h] [bp-12Ch]@4 int rgbValue; // [sp+8h] [bp-110h]@2 char v11; // [sp+Ch] [bp-10Ch]@2 char v12; // [sp+Dh] [bp-10Bh]@2 char v13; // [sp+Eh] [bp-10Ah]@2 int v14; // [sp+10h] [bp-108h]@2 char v15; // [sp+14h] [bp-104h]@4 unsigned int v16; // [sp+114h] [bp-4h]@1 int v17; // [sp+118h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_BYTE *)(a2 + 10); v6 = *(_BYTE *)(a2 + 11); rgbValue = *(_DWORD *)(a2 + 2); v7 = *(_BYTE *)(a2 + 12); v11 = v5; v13 = v7; v8 = *(_DWORD *)v3 + 4684; v12 = v6; v14 = 0; sub_45CB10(v8, &rgbValue); if ( v14 == -2893 ) { sprintf( &v15, "ERROR - CPFsCharacter::fc_NC_MISC_SET_CHAT_BLOCK_SPAM_FILTER_DB_CMD - DB_ERROR[UPDATE] UserNo[%d] CharNo[%d]", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6)); v9 = &v15; } else { if ( v14 != -2892 ) return 1; sprintf( &v15, "ERROR - CPFsCharacter::fc_NC_MISC_SET_CHAT_BLOCK_SPAM_FILTER_DB_CMD - DB_ERROR[INSERT] UserNo[%d] CharNo[%d]", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6)); v9 = &v15; } sub_446350(1, "Msg", "%s", v9); return 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00423360) -------------------------------------------------------- signed int __thiscall sub_423360(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // eax@2 const char *v8; // [sp-8h] [bp-124h]@4 int v9; // [sp-4h] [bp-120h]@4 int rgbValue; // [sp+8h] [bp-114h]@2 int v11; // [sp+Ch] [bp-110h]@2 int v12; // [sp+10h] [bp-10Ch]@2 int v13; // [sp+14h] [bp-108h]@2 char v14; // [sp+18h] [bp-104h]@6 unsigned int v15; // [sp+118h] [bp-4h]@1 int v16; // [sp+11Ch] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 10); rgbValue = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)v3; v11 = v5; v12 = v6; v13 = 0; sub_45CD90(v7 + 4684, &rgbValue); if ( v13 == -2893 ) { v9 = *(_DWORD *)(a2 + 2); v8 = "ERROR - CPFsCharacter::fc_NC_CHARSAVE_SET_CHAT_BLOCK_SPAMER_DB_CMD - DB_ERROR[UPDATE] CharNo[%d]"; } else { if ( v13 != -2892 ) return 1; v9 = *(_DWORD *)(a2 + 2); v8 = "ERROR - CPFsCharacter::fc_NC_CHARSAVE_SET_CHAT_BLOCK_SPAMER_DB_CMD - DB_ERROR[INSERT] CharNo[%d]"; } sprintf(&v14, v8, v9); sub_446350(1, "Msg", "%s", &v14); return 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00423440) -------------------------------------------------------- signed int __thiscall sub_423440(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // edx@2 int v9; // ecx@2 int v10; // eax@2 signed __int16 v11; // bx@5 __int16 v12; // dx@9 int v13; // eax@9 __int16 v14; // cx@9 __int16 v15; // dx@9 unsigned int v16; // [sp-10h] [bp-214Ch]@1 char v17; // [sp+0h] [bp-213Ch]@9 int v18; // [sp+5h] [bp-2137h]@9 __int16 v19; // [sp+9h] [bp-2133h]@9 __int16 v20; // [sp+Bh] [bp-2131h]@9 __int16 v21; // [sp+Dh] [bp-212Fh]@9 __int16 v22; // [sp+Fh] [bp-212Dh]@9 char v23; // [sp+11h] [bp-212Bh]@9 __int16 v24; // [sp+12h] [bp-212Ah]@9 char v25; // [sp+14h] [bp-2128h]@9 __int16 v26; // [sp+15h] [bp-2127h]@9 int rgbValue; // [sp+2004h] [bp-138h]@2 int v28; // [sp+200Ch] [bp-130h]@2 int v29; // [sp+2010h] [bp-12Ch]@2 int v30; // [sp+2014h] [bp-128h]@2 int v31; // [sp+2018h] [bp-124h]@2 int v32; // [sp+201Ch] [bp-120h]@2 char v33; // [sp+2020h] [bp-11Ch]@2 char v34; // [sp+2021h] [bp-11Bh]@2 int v35; // [sp+2024h] [bp-118h]@2 char v36; // [sp+202Ch] [bp-110h]@5 unsigned int v37; // [sp+212Ch] [bp-10h]@1 int v38; // [sp+2138h] [bp-4h]@9 int v39; // [sp+213Ch] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v16 = (unsigned int)&v39 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 14); v6 = *(_DWORD *)(a2 + 10); rgbValue = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)(a2 + 22); v29 = v5; v8 = *(_WORD *)(a2 + 30); v30 = v7; LOBYTE(v7) = *(_BYTE *)(a2 + 34); v28 = v6; v9 = *(_DWORD *)(a2 + 26); v33 = v7; v10 = *(_DWORD *)v3; v31 = v9; LOBYTE(v9) = *(_BYTE *)(a2 + 35); v32 = v8; v34 = v9; v35 = 0; sub_463DE0(v10 + 4684, &rgbValue); if ( v35 == -202 ) { v11 = 8322; } else { if ( v35 == -101 ) { v11 = 8330; } else { if ( v35 ) { v11 = 8329; sprintf( &v36, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ENCHANT_ADD_GEM_REQ - DB_ERROR[UPDATE] CharNo[%d]", *(_DWORD *)(a2 + 4), v16); sub_446350(1, "Msg", "%s", &v36); } else { v11 = 8320; } } } sub_44E180((int)&v17); v12 = *(_WORD *)(a2 + 8); v13 = *(_DWORD *)(a2 + 2); v19 = *(_WORD *)(a2 + 6); v23 = *(_BYTE *)(a2 + 34); v14 = *(_WORD *)(a2 + 32); v18 = v13; LOWORD(v13) = *(_WORD *)(a2 + 20); v21 = v12; v15 = *(_WORD *)(a2 + 30); v22 = v13; LOBYTE(v13) = *(_BYTE *)(a2 + 35); v26 = v14; v38 = 0; v20 = v11; v24 = v15; v25 = v13; sub_44E310((int)&v17, 0x3497u, 0x12u, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v17); v38 = -1; nullsub_1(&v17); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00423620) -------------------------------------------------------- signed int __thiscall sub_423620(int this, int a2, int a3) { signed int result; // eax@1 int v4; // ecx@2 int v5; // edx@2 int v6; // eax@2 int v7; // ecx@2 signed int v8; // ebx@2 char *v9; // edi@5 char v10; // al@5 int v11; // ST14_4@6 int v12; // ST18_4@9 int v13; // edx@14 __int16 v14; // cx@14 __int16 v15; // ax@14 unsigned int v16; // [sp-10h] [bp-215Ch]@1 int v17; // [sp+4h] [bp-2148h]@1 char v18; // [sp+8h] [bp-2144h]@2 int v19; // [sp+Dh] [bp-213Fh]@14 __int16 v20; // [sp+11h] [bp-213Bh]@14 __int16 v21; // [sp+13h] [bp-2139h]@2 __int16 v22; // [sp+15h] [bp-2137h]@14 __int16 v23; // [sp+17h] [bp-2135h]@14 __int16 v24; // [sp+19h] [bp-2133h]@14 int v25; // [sp+1Bh] [bp-2131h]@14 int v26; // [sp+1Fh] [bp-212Dh]@14 char v27[3]; // [sp+23h] [bp-2129h]@5 char v28; // [sp+26h] [bp-2126h]@14 int rgbValue; // [sp+200Ch] [bp-140h]@2 int v30; // [sp+2014h] [bp-138h]@2 int v31; // [sp+2018h] [bp-134h]@2 int v32; // [sp+201Ch] [bp-130h]@2 int v33; // [sp+2020h] [bp-12Ch]@2 char v34; // [sp+2024h] [bp-128h]@6 char v35; // [sp+2025h] [bp-127h]@2 __int16 v36; // [sp+2026h] [bp-126h]@2 int v37; // [sp+202Ch] [bp-120h]@2 int v38; // [sp+2030h] [bp-11Ch]@2 int v39; // [sp+2034h] [bp-118h]@6 char v40; // [sp+203Ch] [bp-110h]@9 unsigned int v41; // [sp+213Ch] [bp-10h]@1 int v42; // [sp+2148h] [bp-4h]@2 int v43; // [sp+214Ch] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v16 = (unsigned int)&v43 ^ __security_cookie; v17 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_DWORD *)(a2 + 10); v5 = *(_DWORD *)(a2 + 14); rgbValue = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(a2 + 22); v30 = v4; v7 = *(_DWORD *)(a2 + 26); v31 = v5; LOBYTE(v5) = *(_BYTE *)(a2 + 37); v32 = v6; v33 = v7; v8 = 0; v35 = v5; v36 = 0; v37 = 0; v38 = 0; sub_44E180((int)&v18); v42 = 0; v21 = 8336; do { if ( v8 > 0 ) v35 = 0; v9 = &v27[v8]; v10 = *(&v27[v8 + 32] + a2 + 2 - (_DWORD)v27); v27[v8] = v10; if ( v10 ) { v11 = *(_DWORD *)v17 + 4684; v39 = 0; v34 = v8; sub_463EE0(v11, &rgbValue); if ( v39 == -201 ) { v21 = 8341; } else { if ( v39 == -101 ) { v21 = 8338; } else { if ( v39 ) { v12 = *(_DWORD *)(a2 + 4); v21 = 8342; *v9 = 0; sprintf( &v40, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ENCHANT_REMOVE_GEM_REQ - DB_ERROR[UPDATE] CharNo[%d]", v12, v16); sub_446350(1, "Msg", "%s", &v40); } else { *v9 = 1; } } } } ++v8; } while ( v8 < 3 ); v13 = *(_DWORD *)(a2 + 2); v14 = *(_WORD *)(a2 + 8); v20 = *(_WORD *)(a2 + 6); v15 = *(_WORD *)(a2 + 32); v19 = v13; LOWORD(v13) = *(_WORD *)(a2 + 20); v22 = v14; v23 = v13; v24 = v15; LOBYTE(v15) = *(_BYTE *)(a2 + 37); v25 = v37; v26 = v38; v28 = v15; sub_44E310((int)&v18, 0x3499u, 0x1Au, 0); sub_43BFB0(*(_DWORD *)(v17 + 4), (int)&v18); v42 = -1; nullsub_1(&v18); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 423620: using guessed type char var_2129[3]; //----- (00423870) -------------------------------------------------------- signed int __thiscall sub_423870(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 signed __int16 v10; // bx@5 int v11; // eax@10 __int16 v12; // dx@10 __int16 v13; // dx@10 unsigned int v14; // [sp-10h] [bp-2154h]@1 char v15; // [sp+0h] [bp-2144h]@10 int v16; // [sp+5h] [bp-213Fh]@10 __int16 v17; // [sp+9h] [bp-213Bh]@10 __int16 v18; // [sp+Bh] [bp-2139h]@10 __int16 v19; // [sp+Dh] [bp-2137h]@10 __int16 v20; // [sp+Fh] [bp-2135h]@10 char v21; // [sp+11h] [bp-2133h]@10 __int16 v22; // [sp+12h] [bp-2132h]@10 int v23; // [sp+14h] [bp-2130h]@10 int v24; // [sp+18h] [bp-212Ch]@10 int rgbValue; // [sp+2004h] [bp-140h]@2 int v26; // [sp+200Ch] [bp-138h]@2 int v27; // [sp+2010h] [bp-134h]@2 int v28; // [sp+2014h] [bp-130h]@2 int v29; // [sp+2018h] [bp-12Ch]@2 char v30; // [sp+201Ch] [bp-128h]@2 __int16 v31; // [sp+201Eh] [bp-126h]@2 int v32; // [sp+2024h] [bp-120h]@2 int v33; // [sp+2028h] [bp-11Ch]@2 int v34; // [sp+202Ch] [bp-118h]@2 char v35; // [sp+2034h] [bp-110h]@8 unsigned int v36; // [sp+2134h] [bp-10h]@1 int v37; // [sp+2140h] [bp-4h]@10 int v38; // [sp+2144h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v14 = (unsigned int)&v38 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 10); v6 = *(_DWORD *)(a2 + 14); rgbValue = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)(a2 + 22); v26 = v5; v8 = *(_DWORD *)(a2 + 26); v28 = v7; v9 = *(_DWORD *)v3; v29 = v8; v27 = v6; v30 = 0; v31 = 0; v32 = 0; v33 = 0; v34 = 0; sub_464000(v9 + 4684, &rgbValue); if ( v34 > -101 ) { if ( v34 ) { LABEL_8: v10 = 8358; sprintf( &v35, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ENCHANT_ADD_NEW_SOCKET_REQ - DB_ERROR[UPDATE] CharNo[%d]", *(_DWORD *)(a2 + 4), v14); sub_446350(1, "Msg", "%s", &v35); } else { v10 = 8352; } } else { if ( v34 == -101 ) { v10 = 8354; } else { switch ( v34 + 302 ) { case 0: case 1: case 100: case 101: v10 = 8358; break; default: goto LABEL_8; } } } sub_44E180((int)&v15); v11 = *(_DWORD *)(a2 + 2); v12 = *(_WORD *)(a2 + 8); v17 = *(_WORD *)(a2 + 6); v16 = v11; LOWORD(v11) = *(_WORD *)(a2 + 20); v21 = v30; v19 = v12; v13 = *(_WORD *)(a2 + 32); v20 = v11; v24 = v33; v37 = 0; v18 = v10; v22 = v13; v23 = v32; sub_44E310((int)&v15, 0x349Bu, 0x17u, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v15); v37 = -1; nullsub_1(&v15); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00423AD0) -------------------------------------------------------- signed int __thiscall sub_423AD0(int this, int a2, int a3) { signed int result; // eax@1 int v4; // ecx@2 int v5; // edx@2 signed int v6; // ebx@2 int v7; // esi@2 int v8; // eax@4 int v9; // [sp+4h] [bp-120h]@1 int rgbValue; // [sp+8h] [bp-11Ch]@2 int v11; // [sp+10h] [bp-114h]@2 int v12; // [sp+14h] [bp-110h]@2 unsigned __int8 v13; // [sp+18h] [bp-10Ch]@4 unsigned __int8 v14; // [sp+19h] [bp-10Bh]@4 int v15; // [sp+1Ch] [bp-108h]@4 char v16; // [sp+20h] [bp-104h]@5 unsigned int v17; // [sp+120h] [bp-4h]@1 int v18; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v9 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_DWORD *)(a2 + 8); v5 = *(_DWORD *)(a2 + 12); rgbValue = *(_DWORD *)(a2 + 4); v11 = v4; v12 = v5; v6 = 0; v7 = a2 + 17; do { if ( *(_WORD *)v7 != -1 ) { v8 = *(_DWORD *)v9; v14 = *(_BYTE *)(v7 + 2); v13 = v6; v15 = 0; sub_464100(v8 + 4684, &rgbValue); if ( v15 ) { sprintf( &v16, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ENCHANT_SET_GEM_LOT_REQ - DB_ERROR[UPDATE] nRet[%d], CharNo[%d], gemItemIndex[%u], nSlot[%d], nRestGemCount[%u]", v15, *(_DWORD *)(a2 + 4), *(_WORD *)v7, v13, v14); sub_446350(1, "Msg", "%s", &v16); } } ++v6; v7 += 3; } while ( v6 < 3 ); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00423BF0) -------------------------------------------------------- signed int __thiscall sub_423BF0(int this, int a2, int a3) { signed int result; // eax@1 int v4; // ebx@2 int v5; // edx@2 __int16 v6; // ax@2 int v7; // edi@2 int v8; // ecx@2 int v9; // ebx@2 int v10; // ecx@2 int v11; // ebx@2 int v12; // eax@2 int v13; // ecx@2 int v14; // ebx@2 int v15; // eax@2 int v16; // eax@2 signed __int16 v17; // cx@7 int v18; // [sp+0h] [bp-2054h]@1 char v19; // [sp+4h] [bp-2050h]@2 __int16 v20; // [sp+9h] [bp-204Bh]@2 __int16 v21; // [sp+Bh] [bp-2049h]@2 int v22; // [sp+Dh] [bp-2047h]@2 int v23; // [sp+11h] [bp-2043h]@2 int v24; // [sp+15h] [bp-203Fh]@2 int v25; // [sp+19h] [bp-203Bh]@2 int v26; // [sp+1Dh] [bp-2037h]@2 int v27; // [sp+21h] [bp-2033h]@2 int v28; // [sp+25h] [bp-202Fh]@2 int rgbValue; // [sp+2008h] [bp-4Ch]@2 int v30; // [sp+200Ch] [bp-48h]@2 int v31; // [sp+2010h] [bp-44h]@2 int v32; // [sp+2014h] [bp-40h]@2 int v33; // [sp+2018h] [bp-3Ch]@2 int v34; // [sp+201Ch] [bp-38h]@2 int v35; // [sp+2020h] [bp-34h]@2 char v36; // [sp+2024h] [bp-30h]@2 char v37; // [sp+2038h] [bp-1Ch]@2 int v38; // [sp+203Ch] [bp-18h]@2 int v39; // [sp+2040h] [bp-14h]@2 unsigned int v40; // [sp+2044h] [bp-10h]@1 int v41; // [sp+2050h] [bp-4h]@2 int v42; // [sp+2054h] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v18 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v19); v4 = *(_DWORD *)(a2 + 24); v5 = *(_DWORD *)(a2 + 16); v6 = *(_WORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 20); v21 = 0; v23 = *(_DWORD *)(a2 + 12); v30 = v23; v8 = *(_DWORD *)(a2 + 24); v26 = v4; v9 = *(_DWORD *)(a2 + 28); v33 = v8; v10 = *(_DWORD *)(a2 + 28); v27 = v9; v11 = *(_DWORD *)(a2 + 32); v20 = v6; v12 = *(_DWORD *)(a2 + 8); v34 = v10; v13 = *(_DWORD *)(a2 + 32); v28 = v11; v14 = *(_DWORD *)(a2 + 4); v24 = v5; v31 = v5; LOBYTE(v5) = *(_BYTE *)(a2 + 36); v22 = v12; v35 = v13; v38 = v12; v15 = *(_DWORD *)v18 + 4684; rgbValue = v14; v41 = 0; v25 = v7; v32 = v7; v36 = 0; v37 = v5; v39 = 0; v16 = sub_4647D0(v15, &rgbValue); if ( v39 <= 0 ) { if ( !v39 ) { if ( v16 ) v21 = 8384; else v21 = 8389; LABEL_22: sub_44E310((int)&v19, 0xB40Bu, 0x20u, 0); sub_43BFB0(*(_DWORD *)(v18 + 4), (int)&v19); v41 = -1; nullsub_1(&v19); return 1; } switch ( v39 ) { case -3023: v21 = 8390; goto LABEL_22; case -3025: v21 = 8391; goto LABEL_22; case -3027: v17 = 8392; goto LABEL_21; case -3028: v21 = 8393; goto LABEL_22; case -3029: v21 = 8394; goto LABEL_22; case -3030: v17 = 8395; goto LABEL_21; case -3031: v21 = 8396; goto LABEL_22; case -3032: v21 = 8397; goto LABEL_22; case -3033: v17 = 8398; goto LABEL_21; case -3034: v21 = 8399; goto LABEL_22; case -3035: v21 = 8400; goto LABEL_22; case -3039: v17 = 8401; goto LABEL_21; default: break; } } v17 = 8389; LABEL_21: v21 = v17; goto LABEL_22; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00423E70) -------------------------------------------------------- signed int __thiscall sub_423E70(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // eax@2 char v6; // cl@2 int v7; // eax@2 int v8; // ecx@2 signed __int16 v9; // di@6 int v10; // edx@6 int v11; // eax@6 int v12; // edx@12 __int16 v13; // cx@12 int v14; // ecx@12 __int16 v15; // [sp+0h] [bp-4040h]@3 __int16 v16; // [sp+4h] [bp-403Ch]@3 char v17; // [sp+8h] [bp-4038h]@6 int v18; // [sp+Dh] [bp-4033h]@6 int v19; // [sp+11h] [bp-402Fh]@6 int v20; // [sp+15h] [bp-402Bh]@6 __int16 v21; // [sp+19h] [bp-4027h]@6 __int16 v22; // [sp+1Bh] [bp-4025h]@6 char v23; // [sp+200Ch] [bp-2034h]@12 int v24; // [sp+2011h] [bp-202Fh]@12 __int16 v25; // [sp+2015h] [bp-202Bh]@12 __int16 v26; // [sp+2017h] [bp-2029h]@12 __int16 v27; // [sp+2019h] [bp-2027h]@12 __int16 v28; // [sp+201Bh] [bp-2025h]@12 int rgbValue; // [sp+4010h] [bp-30h]@2 char v30; // [sp+4014h] [bp-2Ch]@2 int v31; // [sp+4018h] [bp-28h]@2 int v32; // [sp+4020h] [bp-20h]@2 int v33; // [sp+4024h] [bp-1Ch]@2 int v34; // [sp+4028h] [bp-18h]@2 int v35; // [sp+402Ch] [bp-14h]@2 unsigned int v36; // [sp+4030h] [bp-10h]@1 int v37; // [sp+403Ch] [bp-4h]@6 int v38; // [sp+4040h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 21); v6 = *(_BYTE *)(a2 + 12); v31 = *(_DWORD *)(a2 + 15); rgbValue = v5; v7 = *(_DWORD *)(a2 + 25); v30 = v6; v8 = *(_DWORD *)(a2 + 29); v32 = v7; v33 = v8; v34 = 0; v35 = 0; if ( !*(_BYTE *)(a2 + 39) && sub_4038C0(*(_WORD *)(a2 + 33), a2 + 40, (int)&v15, (int)&v16) ) { LOWORD(v34) = v16; HIWORD(v34) = v15; } if ( sub_464940(*(_DWORD *)v3 + 4684, &rgbValue) ) { v9 = 8368; sub_44E180((int)&v17); v37 = 0; sub_44E310((int)&v17, 0x459u, 0x10u, 0); v10 = *(_DWORD *)(a2 + 21); v11 = *(_DWORD *)(a2 + 25); v20 = *(_DWORD *)(a2 + 29); v18 = v10; LOWORD(v10) = *(_WORD *)(a2 + 33); v19 = v11; v21 = v10; v22 = HIWORD(v34); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v17); v37 = -1; nullsub_1(&v17); } else { if ( v35 == -3025 ) v9 = 8378; else v9 = (v35 == -3022) + 8376; } sub_44E180((int)&v23); v37 = 1; sub_44E310((int)&v23, 0xB412u, 0xCu, 0); v12 = *(_DWORD *)(a2 + 19); v13 = *(_WORD *)(a2 + 37); v25 = *(_WORD *)(a2 + 23); v24 = v12; LOWORD(v12) = *(_WORD *)(a2 + 13); v27 = v13; v14 = *(_DWORD *)(v3 + 4); v26 = v9; v28 = v12; sub_43BFB0(v14, (int)&v23); v37 = -1; nullsub_1(&v23); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00424080) -------------------------------------------------------- signed int __thiscall sub_424080(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 const __time64_t *v5; // ebx@3 struct tm *v6; // eax@4 int v7; // eax@6 int v8; // edx@9 __int16 v9; // [sp+4h] [bp-150h]@6 __int16 v10; // [sp+8h] [bp-14Ch]@6 __int16 v11; // [sp+Ch] [bp-148h]@6 __int16 v12; // [sp+10h] [bp-144h]@6 int v13; // [sp+14h] [bp-140h]@6 int v14; // [sp+18h] [bp-13Ch]@6 int v15; // [sp+28h] [bp-12Ch]@1 int v16; // [sp+2Ch] [bp-128h]@1 int v17; // [sp+30h] [bp-124h]@2 int rgbValue; // [sp+34h] [bp-120h]@2 __int16 v19; // [sp+38h] [bp-11Ch]@4 __int16 v20; // [sp+3Ch] [bp-118h]@6 __int16 v21; // [sp+3Eh] [bp-116h]@6 __int16 v22; // [sp+40h] [bp-114h]@6 __int16 v23; // [sp+42h] [bp-112h]@6 __int16 v24; // [sp+44h] [bp-110h]@6 __int16 v25; // [sp+46h] [bp-10Eh]@6 int v26; // [sp+48h] [bp-10Ch]@6 int v27; // [sp+4Ch] [bp-108h]@6 char v28; // [sp+50h] [bp-104h]@5 unsigned int v29; // [sp+150h] [bp-4h]@1 int v30; // [sp+154h] [bp+0h]@1 v29 = (unsigned int)&v30 ^ __security_cookie; v3 = a2; v15 = this; v16 = a2; result = sub_43B000(this, a2); if ( result ) { rgbValue = *(_DWORD *)(a2 + 4); v17 = 0; if ( *(_WORD *)(a2 + 8) > 0u ) { v5 = (const __time64_t *)(a2 + 12); do { v19 = *((_WORD *)v5 - 1); v6 = _localtime64(v5); if ( v6 ) { memcpy(&v9, v6, 0x24u); v20 = v14 + 1900; v21 = v13 + 1; v23 = v11; v7 = *(_DWORD *)v15; v24 = v10; v22 = v12; v25 = v9; v26 = 0; v27 = 0; sub_45CFC0(v7 + 4684, &rgbValue); if ( v27 ) { sprintf( &v28, "ERROR - CPFsCharacter::fc_NC_CHARSAVE_ITEMACTIONCOOLTIME_REQ - DB_ERROR[UPDATE] CharNo[%d]", rgbValue); sub_446350(1, "Msg", "%s", &v28); } v3 = v16; } else { sprintf( &v28, "ERROR - CPFsCharacter::fc_NC_CHARSAVE_ITEMACTIONCOOLTIME_REQ - ERROR[_localtime64] CharNo[%d]", rgbValue); sub_446350(1, "Msg", "%s", &v28); } v8 = *(_WORD *)(v3 + 8); v5 = (const __time64_t *)((char *)v5 + 10); ++v17; } while ( v17 < v8 ); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00424240) -------------------------------------------------------- signed int __thiscall sub_424240(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // edx@2 __int16 v7; // ax@2 int v8; // ecx@2 int v9; // eax@2 unsigned int v10; // [sp-Ch] [bp-222Ch]@1 char v11; // [sp+0h] [bp-2220h]@2 int v12; // [sp+5h] [bp-221Bh]@2 __int16 v13; // [sp+9h] [bp-2217h]@2 __int16 v14; // [sp+Bh] [bp-2215h]@2 int rgbValue; // [sp+2004h] [bp-21Ch]@2 unsigned __int8 v16; // [sp+2008h] [bp-218h]@2 int v17; // [sp+200Ch] [bp-214h]@2 char v18; // [sp+2010h] [bp-210h]@3 unsigned int v19; // [sp+2210h] [bp-10h]@1 int v20; // [sp+221Ch] [bp-4h]@2 int v21; // [sp+2220h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v10 = (unsigned int)&v21 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 4); v16 = *(_BYTE *)(a2 + 8); rgbValue = v5; v17 = 0; sub_44E180((int)&v11); v20 = 0; sub_44E310((int)&v11, 0x4028u, 8u, 0); v6 = *(_DWORD *)(a2 + 2); v7 = *(_WORD *)(a2 + 6); v14 = 8536; v8 = *(_DWORD *)v3; v12 = v6; v13 = v7; LOBYTE(v9) = sub_46C350(v8 + 4684, &rgbValue); if ( !v9 ) { sprintf( &v18, "ERROR - CPFsCharacter::fc_NC_CHARSAVE_DB_UI_STATE_SAVE_REQ - ERROR[_localtime64] CharNo[%d] VaultType[%d] Ret[%d] ", rgbValue, v16, v17, v10); sub_446350(1, "Msg", "%s", &v18); v14 = 8537; } sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v11); v20 = -1; nullsub_1(&v11); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00424390) -------------------------------------------------------- signed int __thiscall sub_424390(int this, int a2, int a3) { signed int result; // eax@1 int v4; // ecx@2 int v5; // edx@2 int v6; // ebx@2 int v7; // edi@2 int v8; // eax@2 int v9; // eax@2 signed int v10; // esi@6 int v11; // [sp+4h] [bp-2048h]@1 char v12; // [sp+8h] [bp-2044h]@2 int v13; // [sp+Dh] [bp-203Fh]@2 int v14; // [sp+11h] [bp-203Bh]@2 int v15; // [sp+15h] [bp-2037h]@2 int v16; // [sp+19h] [bp-2033h]@2 int v17; // [sp+1Dh] [bp-202Fh]@2 int v18; // [sp+21h] [bp-202Bh]@2 int v19; // [sp+25h] [bp-2027h]@2 __int16 v20; // [sp+29h] [bp-2023h]@2 int rgbValue; // [sp+200Ch] [bp-40h]@2 int v22; // [sp+2010h] [bp-3Ch]@2 int v23; // [sp+2014h] [bp-38h]@2 int v24; // [sp+2018h] [bp-34h]@2 int v25; // [sp+201Ch] [bp-30h]@2 char v26; // [sp+2020h] [bp-2Ch]@2 int v27; // [sp+2034h] [bp-18h]@2 int v28; // [sp+2038h] [bp-14h]@2 unsigned int v29; // [sp+203Ch] [bp-10h]@1 int v30; // [sp+2048h] [bp-4h]@2 int v31; // [sp+204Ch] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v11 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v12); v30 = 0; sub_44E310((int)&v12, 0x864u, 0x1Eu, 0); v4 = *(_DWORD *)(a2 + 10); v5 = *(_DWORD *)(a2 + 14); v6 = *(_DWORD *)(a2 + 22); v7 = *(_DWORD *)(a2 + 18); v13 = *(_DWORD *)(a2 + 2); v8 = *(_DWORD *)(a2 + 6); v19 = *(_DWORD *)(a2 + 26); v20 = 8552; v14 = v8; rgbValue = v8; v9 = *(_DWORD *)v11; v15 = v4; v16 = v5; v22 = v4; v23 = v5; v18 = v6; v25 = v6; v27 = v19; v17 = v7; v24 = v7; v26 = 0; v28 = 0; if ( !(unsigned __int8)sub_45D200(v9 + 4684, &rgbValue) ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_MISC_SPAMMER_SET_DB_CHAT_BAN_REQ"); v20 = 8553; } if ( v28 == -3121 ) v20 = 8554; v10 = sub_43BFB0(*(_DWORD *)(v11 + 4), (int)&v12); if ( !v10 ) sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_MISC_SPAMMER_SET_DB_CHAT_BAN_REQ : Sned Error"); v30 = -1; nullsub_1(&v12); result = v10; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00424530) -------------------------------------------------------- signed int __thiscall sub_424530(int this, int a2, int a3) { signed int result; // eax@1 int v4; // ecx@2 int v5; // edx@2 int v6; // ebx@2 int v7; // edi@2 int v8; // eax@2 int v9; // eax@2 signed int v10; // esi@6 int v11; // [sp+4h] [bp-2048h]@1 char v12; // [sp+8h] [bp-2044h]@2 int v13; // [sp+Dh] [bp-203Fh]@2 int v14; // [sp+11h] [bp-203Bh]@2 int v15; // [sp+15h] [bp-2037h]@2 int v16; // [sp+19h] [bp-2033h]@2 int v17; // [sp+1Dh] [bp-202Fh]@2 int v18; // [sp+21h] [bp-202Bh]@2 int v19; // [sp+25h] [bp-2027h]@2 __int16 v20; // [sp+29h] [bp-2023h]@2 int rgbValue; // [sp+200Ch] [bp-40h]@2 int v22; // [sp+2010h] [bp-3Ch]@2 int v23; // [sp+2014h] [bp-38h]@2 int v24; // [sp+2018h] [bp-34h]@2 int v25; // [sp+201Ch] [bp-30h]@2 char v26; // [sp+2020h] [bp-2Ch]@2 int v27; // [sp+2034h] [bp-18h]@2 int v28; // [sp+2038h] [bp-14h]@2 unsigned int v29; // [sp+203Ch] [bp-10h]@1 int v30; // [sp+2048h] [bp-4h]@2 int v31; // [sp+204Ch] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v11 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v12); v30 = 0; sub_44E310((int)&v12, 0x869u, 0x1Eu, 0); v4 = *(_DWORD *)(a2 + 10); v5 = *(_DWORD *)(a2 + 14); v6 = *(_DWORD *)(a2 + 22); v7 = *(_DWORD *)(a2 + 18); v13 = *(_DWORD *)(a2 + 2); v8 = *(_DWORD *)(a2 + 6); v19 = *(_DWORD *)(a2 + 26); v20 = 8560; v14 = v8; rgbValue = v8; v9 = *(_DWORD *)v11; v15 = v4; v16 = v5; v22 = v4; v23 = v5; v18 = v6; v25 = v6; v27 = v19; v17 = v7; v24 = v7; v26 = 0; v28 = 0; if ( (unsigned __int8)sub_45D200(v9 + 4684, &rgbValue) ) { if ( v28 == -3121 ) v20 = 8562; v10 = sub_43BFB0(*(_DWORD *)(v11 + 4), (int)&v12); if ( !v10 ) sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_MISC_SPAMMER_RELEASE_CHAT_BAN_DB_REQ : Sned Error"); v30 = -1; nullsub_1(&v12); result = v10; } else { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_MISC_SPAMMER_RELEASE_CHAT_BAN_DB_REQ"); v30 = -1; nullsub_1(&v12); result = 1; } } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004246E0) -------------------------------------------------------- signed int __thiscall sub_4246E0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 unsigned __int8 v5; // cl@2 int v6; // eax@2 int rgbValue; // [sp+8h] [bp-110h]@2 unsigned __int8 v8; // [sp+Ch] [bp-10Ch]@2 int v9; // [sp+10h] [bp-108h]@2 char v10; // [sp+14h] [bp-104h]@3 unsigned int v11; // [sp+114h] [bp-4h]@1 int v12; // [sp+118h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_BYTE *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)v3 + 4684; v8 = v5; v9 = 0; if ( !(unsigned __int8)sub_45D3D0(v6, &rgbValue) ) { sprintf( &v10, "ERROR - CPFsCharacter::fc_NC_CHAR_NEWBIE_GUIDE_VIEW_SET_DB_CMD : DB Fail, CharRegNum : %d, GuideView : %d", rgbValue, v8); sub_446350(1, "Msg", "%s", &v10); } if ( v9 != -1111 ) { if ( v9 ) { sprintf( &v10, "ERROR - fc_NC_CHAR_DB_NEWBIE_GUIDE_VIEW_SET_CMD : DB Set Fail, nCharNo=%d, nRet = %d", rgbValue, v9); sub_446350(1, "Msg", "%s", &v10); } } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004247F0) -------------------------------------------------------- signed int __thiscall sub_4247F0(int this, int a2, int a3) { int v3; // edi@1 __int16 v4; // cx@2 __int16 v5; // ax@2 int v6; // ecx@2 int v7; // eax@2 int v8; // eax@2 int v9; // edx@2 unsigned int v11; // [sp-Ch] [bp-2140h]@1 char v12; // [sp+0h] [bp-2134h]@2 int v13; // [sp+5h] [bp-212Fh]@2 __int16 v14; // [sp+9h] [bp-212Bh]@2 __int16 v15; // [sp+Bh] [bp-2129h]@2 __int16 v16; // [sp+Dh] [bp-2127h]@2 int rgbValue; // [sp+2004h] [bp-130h]@2 int v18; // [sp+2014h] [bp-120h]@2 int v19; // [sp+2018h] [bp-11Ch]@2 int v20; // [sp+201Ch] [bp-118h]@2 char v21; // [sp+2024h] [bp-110h]@3 unsigned int v22; // [sp+2124h] [bp-10h]@1 int v23; // [sp+2130h] [bp-4h]@2 int v24; // [sp+2134h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v11 = (unsigned int)&v24 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v12); v4 = *(_WORD *)(a2 + 6); v13 = *(_DWORD *)(a2 + 2); v5 = *(_WORD *)(a2 + 8); v14 = v4; v6 = *(_DWORD *)(a2 + 4); v16 = v5; v7 = *(_DWORD *)(a2 + 14); rgbValue = v6; v19 = v7; v8 = *(_DWORD *)v3 + 4684; v15 = 10280; v9 = *(_DWORD *)(a2 + 10); v23 = 0; v18 = v9; v20 = 0; if ( !sub_464BC0(v8, &rgbValue) ) { sprintf( &v21, "ERROR - CPFsCharacter::fc_NC_GAMBLE_COIN_DB_ADD_REQ : DB Fail, CharRegNum : %d", *(_DWORD *)(a2 + 4), v11); sub_446350(1, "Msg", "%s", &v21); v15 = 10281; } sub_44E310((int)&v12, 0xBC07u, 0xAu, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v12) ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_GAMBLE_COIN_DB_ADD_REQ : Sned Error"); v23 = -1; nullsub_1(&v12); return 0; } v23 = -1; nullsub_1(&v12); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00424980) -------------------------------------------------------- signed int __thiscall sub_424980(int this, int a2, int a3) { int v3; // edi@1 unsigned int v5; // [sp-10h] [bp-2140h]@1 char v6; // [sp+0h] [bp-2130h]@4 int v7; // [sp+5h] [bp-212Bh]@4 int v8; // [sp+9h] [bp-2127h]@4 int v9; // [sp+Dh] [bp-2123h]@4 int rgbValue; // [sp+2004h] [bp-12Ch]@2 int v11; // [sp+2008h] [bp-128h]@2 int v12; // [sp+2018h] [bp-118h]@2 int v13; // [sp+201Ch] [bp-114h]@2 char v14; // [sp+2020h] [bp-110h]@3 unsigned int v15; // [sp+2120h] [bp-10h]@1 int v16; // [sp+212Ch] [bp-4h]@4 int v17; // [sp+2130h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v5 = (unsigned int)&v17 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; rgbValue = *(_DWORD *)(a2 + 2); v12 = 0; v13 = 0; sub_417FC0((__time32_t *)(a2 + 6), (int)&v11); if ( !sub_46C650(*(_DWORD *)v3 + 4684, &rgbValue) ) { sprintf( &v14, "ERROR - CPFsCharacter::fc_NC_GAMBLE_EXCHANGEDCOIN_DB_INFO_REQ : DB Fail, CharRegNum : %d", *(_DWORD *)(a2 + 2), v5); sub_446350(1, "Msg", "%s", &v14); } sub_44E180((int)&v6); v7 = *(_DWORD *)(a2 + 2); v16 = 0; v8 = v12; v9 = 0; sub_44E310((int)&v6, 0xBC0Bu, 0xCu, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v6) ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::PROTO_NC_GAMBLE_EXCHANGEDCOIN_DB_INFO_REQ : Sned Error"); v16 = -1; nullsub_1(&v6); return 0; } v16 = -1; nullsub_1(&v6); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00424AF0) -------------------------------------------------------- signed int __thiscall sub_424AF0(int this, int a2, int a3) { int v3; // edi@1 int v4; // eax@2 int v5; // ecx@2 int v6; // edx@2 int v7; // ecx@2 int v8; // edx@2 int v9; // eax@2 int v10; // eax@2 signed __int16 v11; // cx@9 unsigned int v13; // [sp-Ch] [bp-2158h]@1 char v14; // [sp+0h] [bp-214Ch]@2 int v15; // [sp+5h] [bp-2147h]@2 __int16 v16; // [sp+9h] [bp-2143h]@2 __int16 v17; // [sp+Bh] [bp-2141h]@2 __int16 v18; // [sp+Dh] [bp-213Fh]@2 int rgbValue; // [sp+2004h] [bp-148h]@2 int v20; // [sp+200Ch] [bp-140h]@2 int v21; // [sp+2010h] [bp-13Ch]@2 int v22; // [sp+2014h] [bp-138h]@2 int v23; // [sp+2018h] [bp-134h]@2 int v24; // [sp+201Ch] [bp-130h]@2 int v25; // [sp+2020h] [bp-12Ch]@2 int v26; // [sp+2024h] [bp-128h]@2 int v27; // [sp+2034h] [bp-118h]@2 char v28; // [sp+203Ch] [bp-110h]@3 unsigned int v29; // [sp+213Ch] [bp-10h]@1 int v30; // [sp+2148h] [bp-4h]@2 int v31; // [sp+214Ch] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v13 = (unsigned int)&v31 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v14); v4 = *(_DWORD *)(a2 + 2); v16 = *(_WORD *)(a2 + 6); v5 = *(_DWORD *)(a2 + 4); v18 = 10248; v6 = *(_DWORD *)(a2 + 18); v15 = v4; LOWORD(v4) = *(_WORD *)(a2 + 8); rgbValue = v5; v7 = *(_DWORD *)(a2 + 10); v20 = v6; v8 = *(_DWORD *)(a2 + 14); v17 = v4; v9 = *(_DWORD *)(a2 + 22); v22 = v7; v23 = v8; v21 = v9; v10 = *(_DWORD *)(a2 + 26); v30 = 0; v24 = v10; v25 = 0; v27 = 0; sub_417FC0((__time32_t *)(a2 + 30), (int)&v26); if ( !sub_464DB0(*(_DWORD *)v3 + 4684, &rgbValue) ) { sprintf( &v28, "ERROR - CPFsCharacter::fc_NC_GAMBLE_COIN_DB_BUY_REQ : DB Fail, CharRegNum : %d", *(_DWORD *)(a2 + 4), v13); sub_446350(1, "Msg", "%s", &v28); v18 = 10251; goto LABEL_15; } if ( v27 > -3324 ) { if ( v27 ) { LABEL_12: v18 = 10257; goto LABEL_15; } v11 = 10248; } else { if ( v27 == -3324 ) { v18 = 10250; goto LABEL_15; } if ( v27 != -3328 ) { if ( v27 == -3327 ) { v18 = 10252; goto LABEL_15; } goto LABEL_12; } v11 = 10253; } v18 = v11; LABEL_15: sub_44E310((int)&v14, 0xBC12u, 0xAu, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14) ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_GAMBLE_COIN_DB_BUY_REQ : Sned Error"); v30 = -1; nullsub_1(&v14); return 0; } v30 = -1; nullsub_1(&v14); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00424D10) -------------------------------------------------------- signed int __thiscall sub_424D10(int this, int a2, int a3) { int v3; // edi@1 __int16 v4; // cx@2 __int16 v5; // ax@2 int v6; // ecx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // edx@2 int v10; // eax@2 int v11; // edx@2 signed __int16 v12; // ax@7 unsigned int v14; // [sp-Ch] [bp-2140h]@1 char v15; // [sp+0h] [bp-2134h]@2 int v16; // [sp+5h] [bp-212Fh]@2 __int16 v17; // [sp+9h] [bp-212Bh]@2 __int16 v18; // [sp+Bh] [bp-2129h]@2 __int16 v19; // [sp+Dh] [bp-2127h]@2 int rgbValue; // [sp+2004h] [bp-130h]@2 int v21; // [sp+200Ch] [bp-128h]@2 int v22; // [sp+2010h] [bp-124h]@2 int v23; // [sp+2014h] [bp-120h]@2 int v24; // [sp+2018h] [bp-11Ch]@2 int v25; // [sp+201Ch] [bp-118h]@2 char v26; // [sp+2024h] [bp-110h]@3 unsigned int v27; // [sp+2124h] [bp-10h]@1 int v28; // [sp+2130h] [bp-4h]@2 int v29; // [sp+2134h] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v14 = (unsigned int)&v29 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v15); v4 = *(_WORD *)(a2 + 6); v16 = *(_DWORD *)(a2 + 2); v5 = *(_WORD *)(a2 + 8); v17 = v4; v6 = *(_DWORD *)(a2 + 4); v18 = v5; v7 = *(_DWORD *)(a2 + 22); rgbValue = v6; v8 = *(_DWORD *)(a2 + 10); v19 = 10256; v9 = *(_DWORD *)(a2 + 18); v24 = v7; v10 = *(_DWORD *)v3; v21 = v8; v23 = v9; v11 = *(_DWORD *)(a2 + 14); v28 = 0; v22 = v11; v25 = 0; if ( !sub_464EB0(v10 + 4684, &rgbValue) ) { sprintf( &v26, "ERROR - CPFsCharacter::fc_NC_GAMBLE_COIN_DB_SELL_REQ : DB Fail, CharRegNum : %d", *(_DWORD *)(a2 + 4), v14); sub_446350(1, "Msg", "%s", &v26); v19 = 10259; goto LABEL_12; } if ( v25 == -3324 ) { v12 = 10258; } else { if ( v25 == -3322 ) { v19 = 10260; goto LABEL_12; } if ( !v25 ) { v19 = 10256; goto LABEL_12; } v12 = 10257; } v19 = v12; LABEL_12: sub_44E310((int)&v15, 0xBC16u, 0xAu, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v15) ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_GAMBLE_COIN_DB_SELL_REQ : Sned Error"); v28 = -1; nullsub_1(&v15); return 0; } v28 = -1; nullsub_1(&v15); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00424F00) -------------------------------------------------------- signed int __thiscall sub_424F00(int this, int a2, int a3) { int v3; // edi@1 int v4; // eax@2 __int16 v5; // cx@2 int v6; // eax@2 int v7; // ecx@2 int v8; // edx@2 int v9; // edx@2 int v10; // eax@2 int v11; // edx@2 signed __int16 v12; // dx@3 unsigned int v14; // [sp-Ch] [bp-2140h]@1 char v15; // [sp+0h] [bp-2134h]@2 int v16; // [sp+5h] [bp-212Fh]@2 __int16 v17; // [sp+9h] [bp-212Bh]@2 int v18; // [sp+Bh] [bp-2129h]@2 int v19; // [sp+Fh] [bp-2125h]@2 __int16 v20; // [sp+13h] [bp-2121h]@2 __int16 v21; // [sp+15h] [bp-211Fh]@2 int rgbValue; // [sp+2004h] [bp-130h]@2 int v23; // [sp+200Ch] [bp-128h]@2 int v24; // [sp+2010h] [bp-124h]@2 int v25; // [sp+2014h] [bp-120h]@2 int v26; // [sp+2018h] [bp-11Ch]@2 int v27; // [sp+201Ch] [bp-118h]@2 char v28; // [sp+2024h] [bp-110h]@3 unsigned int v29; // [sp+2124h] [bp-10h]@1 int v30; // [sp+2130h] [bp-4h]@2 int v31; // [sp+2134h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v14 = (unsigned int)&v31 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v15); v4 = *(_DWORD *)(a2 + 2); v5 = *(_WORD *)(a2 + 6); v20 = *(_WORD *)(a2 + 24); v16 = v4; v6 = *(_DWORD *)(a2 + 16); v17 = v5; v7 = *(_DWORD *)(a2 + 20); v21 = 1792; v8 = *(_DWORD *)(a2 + 4); v18 = v6; v19 = v7; rgbValue = v8; v9 = *(_DWORD *)(a2 + 8); v25 = v6; v10 = *(_DWORD *)v3; v26 = v7; v23 = v9; v11 = *(_DWORD *)(a2 + 12); v30 = 0; v24 = v11; v27 = 0; if ( !sub_464BC0(v10 + 4684, &rgbValue) ) { sprintf( &v28, "ERROR - CPFsCharacter::fc_NC_GAMBLE_COIN_DB_USE_COINITEM_REQ : DB Fail, CharRegNum : %d", *(_DWORD *)(a2 + 4), v14); sub_446350(1, "Msg", "%s", &v28); v12 = 10259; LABEL_9: v21 = v12; goto LABEL_10; } if ( v27 == -3331 ) { v12 = 1794; goto LABEL_9; } if ( v27 ) v21 = 1798; else v21 = 1792; LABEL_10: sub_44E310((int)&v15, 0xBC1Au, 0x12u, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v15) ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_GAMBLE_COIN_DB_USE_COINITEM_REQ : Sned Error"); v30 = -1; nullsub_1(&v15); return 0; } v30 = -1; nullsub_1(&v15); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004250E0) -------------------------------------------------------- signed int __thiscall sub_4250E0(int this, int a2, int a3) { int v3; // edi@1 __int16 v4; // dx@2 __int16 v5; // cx@2 int v6; // eax@2 int v7; // ecx@2 int v8; // ecx@2 bool v9; // zf@2 int v10; // eax@2 signed __int16 v11; // dx@5 unsigned int v13; // [sp-Ch] [bp-2158h]@1 char v14; // [sp+0h] [bp-214Ch]@2 int v15; // [sp+5h] [bp-2147h]@2 __int16 v16; // [sp+9h] [bp-2143h]@2 __int16 v17; // [sp+Bh] [bp-2141h]@2 __int16 v18; // [sp+Dh] [bp-213Fh]@2 int rgbValue; // [sp+2004h] [bp-148h]@2 __int64 v20; // [sp+200Ch] [bp-140h]@2 char v21; // [sp+2014h] [bp-138h]@2 unsigned __int8 v22[4]; // [sp+2015h] [bp-137h]@2 int v23; // [sp+2019h] [bp-133h]@2 __int16 v24; // [sp+201Dh] [bp-12Fh]@2 bool v25; // [sp+201Fh] [bp-12Dh]@2 int v26; // [sp+2024h] [bp-128h]@2 int v27; // [sp+2028h] [bp-124h]@2 char v28; // [sp+202Ch] [bp-120h]@2 int v29; // [sp+2030h] [bp-11Ch]@2 int v30; // [sp+2034h] [bp-118h]@2 char v31; // [sp+203Ch] [bp-110h]@3 unsigned int v32; // [sp+213Ch] [bp-10h]@1 int v33; // [sp+2148h] [bp-4h]@2 int v34; // [sp+214Ch] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v13 = (unsigned int)&v34 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v14); v4 = *(_WORD *)(a2 + 8); v5 = *(_WORD *)(a2 + 6); v15 = *(_DWORD *)(a2 + 2); v18 = 10496; v6 = *(_WORD *)(a2 + 29); v17 = v4; v20 = v6; v16 = v5; v7 = *(_DWORD *)(a2 + 10); *(_DWORD *)v22 = 0; v23 = 0; v24 = 0; rgbValue = v7; LOBYTE(v4) = *(_BYTE *)(a2 + 31); v33 = 0; v21 = v4; _mbsnbcpy(v22, (const unsigned __int8 *)(a2 + 14), 0xAu); v8 = *(_WORD *)(a2 + 32); v9 = *(_DWORD *)(a2 + 34) == 0; v26 = *(_DWORD *)(a2 + 34); v28 = *(_BYTE *)(a2 + 24); v10 = *(_DWORD *)v3; v25 = !v9; v29 = v8; v27 = 0; v30 = 0; if ( sub_464F80(v10 + 4684, &rgbValue) ) { switch ( v30 + 3339 ) { case 28: v11 = 10498; goto LABEL_6; case 25: v18 = 10499; goto LABEL_7; case 24: v11 = 10500; goto LABEL_6; case 23: v18 = 10501; goto LABEL_7; case 1: case 2: case 3: case 4: case 5: case 6: v11 = 10502; LABEL_6: v18 = v11; goto LABEL_7; case 0: v18 = 10497; LABEL_7: sprintf( &v31, "ERROR - CPFsCharacter::fc_NC_GAMBLE_SLOTMACHINE_DB_RESULT_REQ : DB Fail, CharRegNum : %d DBFailNo = %d", *(_DWORD *)(a2 + 4), v30, v13); sub_446350(1, "Msg", "%s", &v31); break; default: v18 = 10496; break; } } else { sprintf( &v31, "ERROR - CPFsCharacter::fc_NC_GAMBLE_SLOTMACHINE_DB_RESULT_REQ : DB Fail, CharRegNum : %d", *(_DWORD *)(a2 + 4), v13); sub_446350(1, "Msg", "%s", &v31); v18 = 10502; } sub_44E310((int)&v14, 0xBCD4u, 0xAu, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v14) ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_GAMBLE_SLOTMACHINE_DB_RESULT_REQ : Sned Error"); v33 = -1; nullsub_1(&v14); return 0; } v33 = -1; nullsub_1(&v14); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004253D0) -------------------------------------------------------- signed int __thiscall sub_4253D0(int this, int a2, int a3) { int v3; // esi@1 unsigned __int8 v4; // al@2 int v5; // edi@5 int v6; // ST14_4@6 char *v8; // ST10_4@18 int v9; // edx@21 unsigned int v10; // [sp-10h] [bp-21E0h]@1 int v11; // [sp+0h] [bp-21D0h]@11 __int64 v12; // [sp+8h] [bp-21C8h]@11 int v13; // [sp+10h] [bp-21C0h]@1 int v14; // [sp+14h] [bp-21BCh]@4 size_t v15; // [sp+18h] [bp-21B8h]@4 char v16; // [sp+1Ch] [bp-21B4h]@4 char v17; // [sp+21h] [bp-21AFh]@6 __int16 v18; // [sp+22h] [bp-21AEh]@6 int v19; // [sp+24h] [bp-21ACh]@6 unsigned __int8 v20; // [sp+28h] [bp-21A8h]@6 char v21[20]; // [sp+29h] [bp-21A7h]@18 char TargetValue[8163]; // [sp+3Dh] [bp-2193h]@18 unsigned __int8 rgbValue[4]; // [sp+2020h] [bp-1B0h]@6 int v24; // [sp+2024h] [bp-1ACh]@6 int v25; // [sp+2028h] [bp-1A8h]@6 int v26; // [sp+202Ch] [bp-1A4h]@6 int v27; // [sp+2030h] [bp-1A0h]@6 __int64 v28; // [sp+2038h] [bp-198h]@6 int v29; // [sp+2040h] [bp-190h]@6 unsigned __int8 v30[4]; // [sp+2048h] [bp-188h]@6 int v31; // [sp+204Ch] [bp-184h]@6 int v32; // [sp+2050h] [bp-180h]@6 int v33; // [sp+2054h] [bp-17Ch]@6 int v34; // [sp+2058h] [bp-178h]@6 __int64 v35; // [sp+2060h] [bp-170h]@6 int v36; // [sp+2068h] [bp-168h]@6 char v37; // [sp+2070h] [bp-160h]@3 char v38; // [sp+2170h] [bp-60h]@18 unsigned int v39; // [sp+21C0h] [bp-10h]@1 int v40; // [sp+21CCh] [bp-4h]@4 int v41; // [sp+21D0h] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v10 = (unsigned int)&v41 ^ __security_cookie; v3 = this; v13 = a2; if ( !sub_43B000(this, a2) ) return 0; v4 = *(_BYTE *)(a2 + 2); if ( v4 > 3u ) { sprintf( &v37, "ERROR - CPFsCharacter::fc_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_REQ : too many machine req : %d", v4, v10); sub_446350(1, "Msg", "%s", &v37); } sub_44E180((int)&v16); v40 = 0; v15 = 8; v14 = 0; if ( *(_BYTE *)(a2 + 2) ) { v5 = a2 + 3; while ( 1 ) { v17 = *(_BYTE *)v5; v18 = 10560; v19 = 0; v20 = 0; *(_DWORD *)v30 = 0; v31 = 0; v32 = 0; v33 = 0; v34 = 0; _mbsnbcpy(v30, "SlotMachine", 0x14u); v35 = *(_WORD *)(v5 + 1); *(_DWORD *)rgbValue = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v36 = 0; _mbsnbcpy(rgbValue, "SlotMachine", 0x14u); v28 = *(_WORD *)(v5 + 1); v6 = *(_DWORD *)v3 + 4684; v29 = 0; if ( sub_465180(v6, v30) ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { sub_44E5D0(*(_DWORD *)v3 + 4684, &v12); sub_44E5D0(*(_DWORD *)v3 + 4684, &v11); if ( v12 == *(_WORD *)(v5 + 1) ) v19 = v11; } sub_44E4D0(*(_DWORD *)v3 + 4684); } else { sprintf( &v37, "ERROR - CPFsCharacter::fc_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_REQ : DB Fail, Machine : %d", *(_BYTE *)v5, v10); sub_446350(1, "Msg", "%s", &v37); v18 = 10561; sub_44E310((int)&v16, 0xBCD6u, v15, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16) ) break; } if ( sub_4650D0(*(_DWORD *)v3 + 4684, rgbValue) ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { sub_44E600(*(_DWORD *)v3 + 4684, &v38); sub_44E570(*(_DWORD *)v3 + 4684, &TargetValue[24 * v20]); v8 = &v21[24 * v20]; *((_DWORD *)v8 + 4) = 0; *((_DWORD *)v8 + 3) = 0; *((_DWORD *)v8 + 2) = 0; *((_DWORD *)v8 + 1) = 0; *(_DWORD *)v8 = 0; strncpy(v8, &v38, 0x14u); ++v20; v15 = 7187; } sub_44E4D0(*(_DWORD *)v3 + 4684); } else { sprintf( &v37, "ERROR - CPFsCharacter::fc_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_REQ : DB Fail, Machine : %d", *(_BYTE *)v5, v10); sub_446350(1, "Msg", "%s", &v37); v18 = 10562; sub_44E310((int)&v16, 0xBCD6u, v15, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16) ) break; } sub_44E310((int)&v16, 0xBCD6u, v15, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16) ) break; v9 = *(_BYTE *)(v13 + 2); v5 += 3; ++v14; if ( v14 >= v9 ) goto LABEL_22; } sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_REQ : Sned Error"); v40 = -1; nullsub_1(&v16); return 0; } LABEL_22: v40 = -1; nullsub_1(&v16); return 1; } // 4DE38C: using guessed type int __security_cookie; // 4253D0: using guessed type char TargetValue[8163]; // 4253D0: using guessed type char var_21A7[20]; //----- (00425800) -------------------------------------------------------- signed int __thiscall sub_425800(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 __int16 v6; // dx@2 __int16 v7; // ax@2 int v8; // eax@2 unsigned int v9; // edx@2 unsigned int v10; // ecx@2 int v11; // eax@2 int v12; // eax@2 int v13; // eax@2 int v14; // eax@3 unsigned int v15; // ecx@6 unsigned int v16; // edx@6 unsigned int v17; // eax@6 int v18; // edx@6 int v19; // ST20_4@6 int v20; // ecx@6 int v21; // ST1C_4@6 int v22; // ST14_4@6 int v23; // eax@6 int v24; // edx@12 unsigned int v25; // eax@14 unsigned int v26; // ecx@14 int v27; // eax@16 int v28; // eax@18 signed int v29; // esi@21 int v30; // [sp-14h] [bp-4174h]@5 unsigned int v31; // [sp-10h] [bp-4170h]@1 char v32; // [sp+0h] [bp-4160h]@2 int v33; // [sp+5h] [bp-415Bh]@2 __int16 v34; // [sp+9h] [bp-4157h]@2 __int16 v35; // [sp+Bh] [bp-4155h]@2 __int16 v36; // [sp+Dh] [bp-4153h]@2 __int16 v37; // [sp+Fh] [bp-4151h]@2 char v38; // [sp+2004h] [bp-215Ch]@10 unsigned int v39; // [sp+2009h] [bp-2157h]@10 unsigned __int64 v40; // [sp+200Dh] [bp-2153h]@10 int v41; // [sp+2015h] [bp-214Bh]@10 int v42; // [sp+2019h] [bp-2147h]@10 int rgbValue; // [sp+4008h] [bp-158h]@16 unsigned __int64 v44; // [sp+4010h] [bp-150h]@16 int v45; // [sp+4018h] [bp-148h]@16 int v46; // [sp+401Ch] [bp-144h]@16 unsigned __int64 v47; // [sp+4020h] [bp-140h]@6 unsigned int v48; // [sp+4028h] [bp-138h]@6 char v49; // [sp+402Ch] [bp-134h]@6 char v50[6]; // [sp+402Eh] [bp-132h]@6 int v51; // [sp+4034h] [bp-12Ch]@6 unsigned int v52; // [sp+4038h] [bp-128h]@2 int v53; // [sp+403Ch] [bp-124h]@2 unsigned int v54; // [sp+4040h] [bp-120h]@2 char v55; // [sp+4044h] [bp-11Ch]@2 char v56[6]; // [sp+4046h] [bp-11Ah]@2 int v57; // [sp+404Ch] [bp-114h]@2 char v58; // [sp+4050h] [bp-110h]@4 unsigned int v59; // [sp+4150h] [bp-10h]@1 int v60; // [sp+415Ch] [bp-4h]@2 int v61; // [sp+4160h] [bp+0h]@1 v59 = (unsigned int)&v61 ^ __security_cookie; v31 = (unsigned int)&v61 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v32); v60 = 0; sub_44E310((int)&v32, 0x34A1u, 0xCu, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_WORD *)(a2 + 10); v33 = *(_DWORD *)(a2 + 2); v7 = *(_WORD *)(a2 + 8); v34 = v5; v35 = v7; v8 = *(_DWORD *)(a2 + 147); v36 = v6; v9 = *(_DWORD *)(a2 + 143); v37 = 513; v10 = *(_DWORD *)(a2 + 4); v53 = v8; v11 = *(_WORD *)(a2 + 151); v52 = v9; v54 = v10; *(_DWORD *)&v56[2] = v11; v12 = *(_DWORD *)v3; *(_WORD *)v56 = 0; v55 = 10; v57 = 0; LOWORD(v13) = sub_46A440(v12 + 4684, &v52, a2 + 153, 1); if ( v13 ) { LOWORD(v14) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 143), *(_DWORD *)(a2 + 147)); if ( v14 ) { sprintf( &v58, "ERROR - fc_NC_ITEMDB_BUYCAPSULE_REQ : ¾ÆÀÌÅÛ »èÁ¦ ½ÇÆÐ ItemKey = %I64d, Owner = %d", v52, v53, v54, v31); sub_446350(1, "Msg", "%s", &v58); } v37 = 518; v30 = (int)&v32; goto LABEL_21; } v15 = *(_DWORD *)(a2 + 32); v16 = *(_DWORD *)(a2 + 36); v48 = *(_DWORD *)(a2 + 4); v17 = *(_WORD *)(a2 + 30); v47 = __PAIR__(v16, v15); v18 = *(_WORD *)(a2 + 40); v49 = (v17 >> 10) & 0x3F; v19 = *(_DWORD *)(a2 + 26); v20 = *(_DWORD *)(a2 + 18); *(_DWORD *)&v50[2] = v18; v21 = *(_DWORD *)(a2 + 22); v51 = 0; v22 = *(_DWORD *)(a2 + 14); *(_WORD *)v50 = v17 & 0x3FF; v23 = sub_46A220(*(_DWORD *)v3 + 4684, &v47, a2 + 42, v22, v20, v21, v19); if ( v23 ) { if ( v23 == 1 ) v37 = 517; else v37 = 518; } else { sub_44E180((int)&v38); LOBYTE(v60) = 1; sub_44E310((int)&v38, 0x44Fu, 0x14u, 0); v39 = v54; v40 = __PAIR__(v52, v54); v41 = v53; LOWORD(v42) = *(_WORD *)&v56[2]; HIWORD(v42) = (*(_WORD *)v56 ^ (HIWORD(v42) & 0x3FF | (unsigned __int16)((signed __int16)v55 << 10))) & 0x3FF ^ (HIWORD(v42) & 0x3FF | (unsigned __int16)((signed __int16)v55 << 10)); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v38); LOBYTE(v60) = 0; nullsub_1(&v38); sub_44E180((int)&v38); LOBYTE(v60) = 2; sub_44E310((int)&v38, 0x448u, 0x17u, 0); v39 = v48; *(unsigned __int64 *)((char *)&v40 + 3) = v47; *(_WORD *)((char *)&v40 + 1) = *(_WORD *)&v50[2]; v24 = *(_DWORD *)(a2 + 14); *(_WORD *)((char *)&v41 + 3) = 0; LOBYTE(v40) = 0; *(_WORD *)((char *)&v42 + 1) = (*(_WORD *)v50 ^ (*(_WORD *)((char *)&v42 + 1) & 0x3FF | (unsigned __int16)((signed __int16)v49 << 10))) & 0x3FF ^ (*(_WORD *)((char *)&v42 + 1) & 0x3FF | (unsigned __int16)((signed __int16)v49 << 10)); *(int *)((char *)&v42 + 3) = v24; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v38); LOBYTE(v60) = 0; nullsub_1(&v38); v25 = *(_DWORD *)(a2 + 18); v26 = *(_DWORD *)(a2 + 14); if ( v25 || v26 ) { rgbValue = *(_DWORD *)(a2 + 4); v45 = 10; v44 = 100 * __PAIR__(v25, v26) / 0x3E8; v27 = *(_DWORD *)v3 + 4684; v46 = 0; sub_4564B0(v27, &rgbValue); } if ( v37 == 513 ) goto LABEL_20; } LOWORD(v28) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 143), *(_DWORD *)(a2 + 147)); if ( v28 ) { sprintf( &v58, "ERROR - fc_NC_ITEMDB_BUYCAPSULE_REQ : ¾ÆÀÌÅÛ »èÁ¦ ½ÇÆÐ ItemKey = %I64d, Owner = %d", v52, v53, v54, v31); sub_446350(1, "Msg", "%s", &v58); } LABEL_20: v30 = (int)&v32; LABEL_21: v29 = sub_43BFB0(*(_DWORD *)(v3 + 4), v30); v60 = -1; nullsub_1(&v32); result = v29; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00425CD0) -------------------------------------------------------- signed int __thiscall sub_425CD0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // edx@2 int v6; // eax@2 __int16 v7; // cx@2 int v8; // ST20_4@2 int v9; // ecx@2 int v10; // eax@2 int v11; // ST1C_4@2 int v12; // ST1C_4@6 int v13; // eax@6 int v14; // eax@8 signed int v15; // esi@11 int v16; // [sp-14h] [bp-2330h]@3 unsigned int v17; // [sp-10h] [bp-232Ch]@1 char v18; // [sp+0h] [bp-231Ch]@2 int v19; // [sp+5h] [bp-2317h]@2 __int16 v20; // [sp+9h] [bp-2313h]@2 __int16 v21; // [sp+Bh] [bp-2311h]@2 int v22; // [sp+Dh] [bp-230Fh]@2 int v23; // [sp+11h] [bp-230Bh]@2 __int16 v24; // [sp+15h] [bp-2307h]@2 char v25; // [sp+17h] [bp-2305h]@10 __int16 v26; // [sp+83h] [bp-2299h]@10 char v27; // [sp+85h] [bp-2297h]@10 int v28; // [sp+2004h] [bp-318h]@4 int v29; // [sp+2008h] [bp-314h]@6 int v30; // [sp+206Ch] [bp-2B0h]@8 int v31; // [sp+2070h] [bp-2ACh]@8 __int16 v32; // [sp+2074h] [bp-2A8h]@8 char v33; // [sp+2076h] [bp-2A6h]@8 __int16 v34; // [sp+20D8h] [bp-244h]@10 char v35; // [sp+20DAh] [bp-242h]@10 int rgbValue; // [sp+20DCh] [bp-240h]@6 int v37; // [sp+20E0h] [bp-23Ch]@6 __int16 v38; // [sp+20ECh] [bp-230h]@8 char v39; // [sp+210Ch] [bp-210h]@5 char v40; // [sp+220Ch] [bp-110h]@3 unsigned int v41; // [sp+230Ch] [bp-10h]@1 int v42; // [sp+2318h] [bp-4h]@2 int v43; // [sp+231Ch] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v17 = (unsigned int)&v43 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v18); v42 = 0; sub_44E310((int)&v18, 0x34A3u, 0x81u, 0); v5 = *(_DWORD *)(a2 + 8); v6 = *(_DWORD *)(a2 + 2); v20 = *(_WORD *)(a2 + 6); v7 = *(_WORD *)(a2 + 16); v22 = v5; v24 = v7; v8 = *(_DWORD *)(a2 + 4); v9 = *(_DWORD *)(a2 + 8); v19 = v6; v10 = *(_DWORD *)(a2 + 12); v21 = 10308; v11 = *(_DWORD *)(a2 + 12); v23 = v10; if ( sub_460BC0(*(_DWORD *)v3 + 4684, v9, v11, v8) ) { sprintf( &v40, "ERROR - fc_NC_ITEMDB_CAPSULEITEM_REQ : p_Item_IsValidOwner Error ItemKey = %I64d nOwner = %d ", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), *(_DWORD *)(a2 + 4), v17); sub_446350(1, "Msg", "%s", &v40); v21 = 10309; v16 = (int)&v18; } else { if ( sub_4669C0( (void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), &v28) ) { v37 = v29; v12 = *(_DWORD *)v3 + 4684; rgbValue = v28; LOBYTE(v13) = sub_466970(v12, &rgbValue); if ( !v13 ) v21 = 10311; v32 = v38; v14 = *(_DWORD *)v3 + 4684; v30 = rgbValue; v31 = v37; if ( !sub_4669C0((void *)(v14 + 36), v14, rgbValue, v37, &v33) ) v21 = 10311; memcpy(&v25, &v30, 0x6Cu); v26 = v34; v27 = v35; v16 = (int)&v18; } else { sprintf( &v39, "ERROR - fc_NC_ITEMDB_CAPSULEITEM_REQ : GetItemOptions Error ItemKey = %I64d ", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v17); sub_446350(1, "Msg", "%s", &v39); v21 = 10310; v16 = (int)&v18; } } v15 = sub_43BFB0(*(_DWORD *)(v3 + 4), v16); v42 = -1; nullsub_1(&v18); result = v15; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00425F50) -------------------------------------------------------- signed int __thiscall sub_425F50(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 __int16 v6; // dx@2 int v7; // ecx@2 int v8; // edx@2 int v9; // eax@2 signed __int16 v10; // cx@3 int v11; // ecx@4 int v12; // edx@4 unsigned int v13; // eax@4 int v14; // eax@4 bool v15; // zf@4 int v16; // eax@4 int v17; // eax@8 int v18; // edx@9 int v19; // eax@9 int v20; // ecx@11 int v21; // edx@11 signed int v22; // esi@19 int v23; // [sp-14h] [bp-4258h]@7 unsigned int v24; // [sp-10h] [bp-4254h]@1 int rgbValue; // [sp+0h] [bp-4244h]@8 int v26; // [sp+4h] [bp-4240h]@8 char v27; // [sp+8h] [bp-423Ch]@2 int v28; // [sp+Dh] [bp-4237h]@2 __int16 v29; // [sp+11h] [bp-4233h]@2 __int16 v30; // [sp+13h] [bp-4231h]@2 __int16 v31; // [sp+15h] [bp-422Fh]@2 char v32; // [sp+200Ch] [bp-2238h]@9 int v33; // [sp+2011h] [bp-2233h]@9 int v34; // [sp+2015h] [bp-222Fh]@9 int v35; // [sp+2019h] [bp-222Bh]@9 int v36; // [sp+201Dh] [bp-2227h]@9 int v37; // [sp+2021h] [bp-2223h]@11 int v38; // [sp+4010h] [bp-234h]@2 int v39; // [sp+4014h] [bp-230h]@2 unsigned __int8 v40; // [sp+401Ch] [bp-228h]@11 int v41; // [sp+401Eh] [bp-226h]@11 int v42; // [sp+4024h] [bp-220h]@4 int v43; // [sp+4028h] [bp-21Ch]@4 int v44; // [sp+402Ch] [bp-218h]@4 char v45; // [sp+4030h] [bp-214h]@4 __int16 v46; // [sp+4032h] [bp-212h]@4 char v47; // [sp+4034h] [bp-210h]@15 char v48; // [sp+4134h] [bp-110h]@3 unsigned int v49; // [sp+4234h] [bp-10h]@1 int v50; // [sp+4240h] [bp-4h]@2 int v51; // [sp+4244h] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v24 = (unsigned int)&v51 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v27); v50 = 0; sub_44E310((int)&v27, 0x34A5u, 0xAu, 0); v5 = *(_DWORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 12); v29 = *(_WORD *)(a2 + 6); v7 = *(_DWORD *)(a2 + 22); v28 = v5; v30 = v6; v8 = *(_DWORD *)(a2 + 26); v38 = v7; v31 = 10304; v9 = *(_DWORD *)v3; v39 = v8; if ( sub_460710(v9 + 4684, &v38) ) { v11 = *(_DWORD *)(a2 + 22); v12 = *(_DWORD *)(a2 + 26); v44 = *(_DWORD *)(a2 + 8); v13 = *(_WORD *)(a2 + 30); v42 = v11; LOBYTE(v11) = (v13 >> 10) & 0x3F; v43 = v12; v46 = v13 & 0x3FF; v14 = *(_DWORD *)v3; v45 = v11; v15 = sub_460890(v14 + 4684, &v42, 0) == 0; v16 = *(_DWORD *)v3; if ( v15 ) { if ( !sub_460890(v16 + 4684, &v38, 0) ) { sprintf( &v48, "ERROR - fc_NC_ITEMDB_GETFROMCHEST_REQ, ROLLBACK's p_Item_SetStorageAndOwner, ChestOwner=%d, ChestKey=%I64d, Chest's ItemKey=%I64d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18), v42, v43, v24); sub_446350(1, "Msg", "%s", &v48); } v31 = 2482; v23 = (int)&v27; goto LABEL_19; } rgbValue = *(_DWORD *)(a2 + 8); v26 = 0; sub_453050(v16 + 4684, &rgbValue); LOWORD(v17) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18)); if ( !v17 ) { sub_44E180((int)&v32); LOBYTE(v50) = 1; sub_44E310((int)&v32, 0x445u, 0x10u, 0); v18 = *(_DWORD *)(a2 + 8); v19 = *(_DWORD *)(a2 + 14); v35 = *(_DWORD *)(a2 + 18); v33 = v18; v34 = v19; v36 = 68043; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v32); LOBYTE(v50) = 0; nullsub_1(&v32); sub_44E180((int)&v32); LOBYTE(v50) = 2; sub_44E310((int)&v32, 0x44Cu, 0x14u, 0); v20 = *(_DWORD *)(a2 + 26); v21 = *(_DWORD *)(a2 + 8); v34 = *(_DWORD *)(a2 + 22); v35 = v20; v33 = v21; v37 = v26; LOWORD(v36) = (v41 ^ (v36 & 0x3FF | (unsigned __int16)(v40 << 10))) & 0x3FF ^ (v36 & 0x3FF | (unsigned __int16)(v40 << 10)); HIWORD(v36) = *(_WORD *)(a2 + 30); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v32); LOBYTE(v50) = 0; nullsub_1(&v32); goto LABEL_18; } if ( !sub_460890(*(_DWORD *)v3 + 4684, &v38, 0) ) { sprintf( &v47, "ERROR - fc_NC_ITEMDB_GETFROMCHEST_REQ, ROLLBACK's p_Item_SetStorageAndOwner, ChestOwner=%d, ChestKey=%I64d, Chest's ItemKey=%I64d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18), v42, v43, v24); sub_446350(1, "Msg", "%s", &v47); } v10 = 2483; } else { sprintf( &v48, "ERROR - fc_NC_ITEMDB_GETFROMCHEST_REQ, p_Item_GetStorageAndOwner, ChestOwner=%d, ChestKey=%I64d, Chest's ItemKey=%I64d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 18), v38, v39, v24); sub_446350(1, "Msg", "%s", &v48); v10 = 10307; } v31 = v10; LABEL_18: v23 = (int)&v27; LABEL_19: v22 = sub_43BFB0(*(_DWORD *)(v3 + 4), v23); v50 = -1; nullsub_1(&v27); result = v22; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00426360) -------------------------------------------------------- signed int __thiscall sub_426360(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // eax@2 int v7; // edx@2 int v8; // ecx@2 int v9; // edx@2 int v10; // ecx@2 int v11; // edx@2 int v12; // ecx@2 int v13; // edx@2 unsigned __int16 v14; // ax@2 int v15; // eax@4 int v16; // eax@6 signed __int16 v17; // dx@7 signed __int16 v18; // dx@9 unsigned int v19; // eax@17 int v20; // edx@18 int v21; // ecx@20 int v22; // eax@20 int v23; // ecx@22 int v24; // edx@23 signed __int16 v25; // ax@25 signed int v26; // esi@43 int v27; // [sp-14h] [bp-226Ch]@3 unsigned int v28; // [sp-10h] [bp-2268h]@1 int v29; // [sp+0h] [bp-2258h]@1 char v30; // [sp+4h] [bp-2254h]@2 int v31; // [sp+9h] [bp-224Fh]@2 __int16 v32; // [sp+Dh] [bp-224Bh]@2 __int16 v33; // [sp+Fh] [bp-2249h]@2 __int16 v34; // [sp+11h] [bp-2247h]@2 int v35; // [sp+13h] [bp-2245h]@2 int v36; // [sp+17h] [bp-2241h]@2 unsigned __int16 v37; // [sp+1Bh] [bp-223Dh]@2 int v38; // [sp+1Dh] [bp-223Bh]@2 int v39; // [sp+21h] [bp-2237h]@2 __int16 v40; // [sp+25h] [bp-2233h]@2 int v41; // [sp+27h] [bp-2231h]@2 int rgbValue; // [sp+2008h] [bp-250h]@2 int v43; // [sp+2010h] [bp-248h]@2 int v44; // [sp+2014h] [bp-244h]@2 __int16 v45; // [sp+2018h] [bp-240h]@2 int v46; // [sp+2020h] [bp-238h]@2 int v47; // [sp+2024h] [bp-234h]@2 int v48; // [sp+2028h] [bp-230h]@2 int v49; // [sp+202Ch] [bp-22Ch]@2 __int16 v50; // [sp+2030h] [bp-228h]@2 int v51; // [sp+2038h] [bp-220h]@2 int v52; // [sp+203Ch] [bp-21Ch]@2 int v53; // [sp+2040h] [bp-218h]@2 char v54; // [sp+2048h] [bp-210h]@22 char v55; // [sp+2148h] [bp-110h]@3 unsigned int v56; // [sp+2248h] [bp-10h]@1 int v57; // [sp+2254h] [bp-4h]@2 int v58; // [sp+2258h] [bp+0h]@1 v56 = (unsigned int)&v58 ^ __security_cookie; v28 = (unsigned int)&v58 ^ __security_cookie; v3 = this; v29 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v30); v57 = 0; sub_44E310((int)&v30, 0x34A7u, 0x22u, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 2); v33 = *(_WORD *)(a2 + 8); v36 = *(_DWORD *)(a2 + 14); v39 = *(_DWORD *)(a2 + 24); rgbValue = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)(a2 + 10); v32 = v5; v8 = *(_DWORD *)(a2 + 10); v43 = v7; v9 = *(_DWORD *)(a2 + 14); v35 = v8; v10 = *(_DWORD *)(a2 + 20); v44 = v9; v38 = v10; LOWORD(v10) = *(_WORD *)(a2 + 28); v45 = 0; v11 = *(_DWORD *)(a2 + 20); v31 = v6; v40 = v10; v12 = *(_DWORD *)(a2 + 30); v48 = v11; v13 = *(_DWORD *)(a2 + 24); v34 = 10368; v14 = *(_WORD *)(a2 + 18); v41 = v12; v51 = v12; v49 = v13; v37 = v14; v46 = 0; v47 = 0; v50 = 0; v52 = 0; v53 = 0; if ( v14 == -1 ) { sprintf( &v55, "ERROR - CPFsCharacter::fc_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_REQ : ItemDataBox::ItemDataBoxIndex = NULL (nItemID=%d)", 65535, v28); sub_446350(1, "Msg", "%s", &v55); v34 = 10378; v27 = (int)&v30; } else { v15 = sub_402D20((int)&unk_6EA3E8, v14); if ( v15 ) { v16 = *(_DWORD *)v15; if ( v16 ) { switch ( *(_DWORD *)(v16 + 102) ) { case 4: v18 = 426; goto LABEL_16; case 5: v45 = 522; break; case 6: v45 = 621; break; case 7: v18 = 721; goto LABEL_16; case 8: v45 = 821; break; case 0xA: v45 = 1002; break; case 0x17: v18 = 1603; LABEL_16: v45 = v18; break; default: v17 = 10380; goto LABEL_41; } v19 = *(_WORD *)(a2 + 28); if ( v19 < dword_6EA3EC ) { v20 = dword_6EACDC + 40 * v19; if ( v20 ) { if ( *(_DWORD *)v20 ) { v21 = **(_WORD **)v20; v22 = v21 + 10000 * v19; if ( (_WORD)v21 == *(_WORD *)(a2 + 28) ) { v24 = *(_DWORD *)v20; if ( v24 ) { switch ( *(_DWORD *)(v24 + 102) ) { default: goto LABEL_22; case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: v25 = 1; break; case 1: case 0x15: v25 = 2; break; case 2: v25 = 3; break; case 0x18: v25 = 4; break; case 3: v25 = 300; break; case 0x22: v25 = 2000; break; case 0x21: v25 = 2500; break; case 0x23: v25 = 2600; break; } v50 = v25; if ( (unsigned __int8)sub_463240(*(_DWORD *)v29 + 4684, &rgbValue) ) { LABEL_39: v27 = (int)&v30; v23 = *(_DWORD *)(v29 + 4); } else { switch ( v53 + 2525 ) { case 4: case 14: v34 = 10369; v27 = (int)&v30; v23 = *(_DWORD *)(v29 + 4); break; case 1: v34 = 10381; v27 = (int)&v30; v23 = *(_DWORD *)(v29 + 4); break; case 0: case 3: case 13: v27 = (int)&v30; v23 = *(_DWORD *)(v29 + 4); v34 = 10369; break; default: v34 = 10369; goto LABEL_39; } } goto LABEL_43; } } else { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v22); } } } } LABEL_22: sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_REQ : ItemDataBox::ItemDataBoxIndex = NULL (nItemID=%d)", *(_WORD *)(a2 + 28), v28); sub_446350(1, "Msg", "%s", &v54); v34 = 10379; v23 = *(_DWORD *)(v29 + 4); v27 = (int)&v30; LABEL_43: v26 = sub_43BFB0(v23, v27); v57 = -1; nullsub_1(&v30); return v26; } sprintf( &v55, "ERROR - CPFsCharacter::fc_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_REQ : pidbi->data = NULL (nItemID=%d)", *(_WORD *)(a2 + 18), v28); sub_446350(1, "Msg", "%s", &v55); v17 = 10378; LABEL_41: v27 = (int)&v30; v34 = v17; } else { sprintf( &v55, "ERROR - CPFsCharacter::fc_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_REQ : ItemDataBox::ItemDataBoxIndex = NULL (nItemID=%d)", *(_WORD *)(a2 + 18), v28); sub_446350(1, "Msg", "%s", &v55); v34 = 10378; v27 = (int)&v30; } } v23 = *(_DWORD *)(v3 + 4); goto LABEL_43; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (00426890) -------------------------------------------------------- signed int __thiscall sub_426890(int this, int a2, int a3) { int v3; // ebx@1 __int16 v4; // cx@2 __int16 v5; // dx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // eax@2 int v9; // ecx@3 signed int v10; // esi@3 signed int v12; // esi@5 int v13; // eax@6 int v14; // ecx@6 unsigned int v15; // [sp-10h] [bp-22BCh]@1 char v16; // [sp+0h] [bp-22ACh]@2 int v17; // [sp+5h] [bp-22A7h]@2 __int16 v18; // [sp+9h] [bp-22A3h]@2 __int16 v19; // [sp+Bh] [bp-22A1h]@2 __int16 v20; // [sp+Dh] [bp-229Fh]@2 int v21; // [sp+Fh] [bp-229Dh]@6 int v22; // [sp+13h] [bp-2299h]@6 __int16 v23; // [sp+17h] [bp-2295h]@6 char v24; // [sp+19h] [bp-2293h]@6 char v25; // [sp+7Dh] [bp-222Fh]@6 char v26; // [sp+2004h] [bp-2A8h]@4 char v27; // [sp+2068h] [bp-244h]@6 int rgbValue; // [sp+206Ch] [bp-240h]@2 int v29; // [sp+2070h] [bp-23Ch]@2 __int16 v30; // [sp+207Ch] [bp-230h]@6 char v31; // [sp+209Ch] [bp-210h]@5 char v32; // [sp+219Ch] [bp-110h]@3 unsigned int v33; // [sp+229Ch] [bp-10h]@1 int v34; // [sp+22A8h] [bp-4h]@2 int v35; // [sp+22ACh] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v15 = (unsigned int)&v35 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v16); v34 = 0; sub_44E310((int)&v16, 0x34A9u, 0x79u, 0); v4 = *(_WORD *)(a2 + 6); v5 = *(_WORD *)(a2 + 16); v17 = *(_DWORD *)(a2 + 2); v18 = v4; v6 = *(_DWORD *)(a2 + 8); v19 = 11008; v7 = *(_DWORD *)v3; rgbValue = v6; v20 = v5; v29 = *(_DWORD *)(a2 + 12); LOBYTE(v8) = sub_466970(v7 + 4684, &rgbValue); if ( !v8 ) { sprintf(&v32, "ERROR - fc_NC_ITEMDB_ITEMINFO_REQ, Get Item Data Failed, Key=%I64d", rgbValue, v29, v15); sub_446350(1, "Msg", "%s", &v32); v9 = *(_DWORD *)(v3 + 4); v19 = 11009; v10 = sub_43BFB0(v9, (int)&v16); v34 = -1; nullsub_1(&v16); return v10; } if ( !sub_4669C0( (void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), &v26) ) { sprintf( &v31, "ERROR - fc_NC_ITEMDB_ITEMINFO_REQ, Get ItemOption Data Failed, Key=%I64d", *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v15); sub_446350(1, "Msg", "%s", &v31); v19 = 11010; v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v34 = -1; nullsub_1(&v16); return v12; } v13 = *(_DWORD *)(a2 + 8); v22 = *(_DWORD *)(a2 + 12); v21 = v13; v23 = v30; memcpy(&v24, &v26, 0x64u); v14 = *(_DWORD *)(v3 + 4); v25 = v27; if ( !sub_43BFB0(v14, (int)&v16) ) { sub_446350(1, "Msg", "%s", "ERROR - fc_NC_ITEMDB_ITEMINFO_REQ, Data Send Fail"); v34 = -1; nullsub_1(&v16); return 0; } v34 = -1; nullsub_1(&v16); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00426B00) -------------------------------------------------------- signed int __thiscall sub_426B00(int this, int a2, int a3) { int v3; // edi@1 __int16 v4; // cx@2 __int16 v5; // dx@2 int v6; // eax@2 int v7; // ecx@2 unsigned int v8; // eax@2 int v9; // edx@2 int v10; // eax@2 int v11; // eax@2 int v12; // ecx@3 signed int v13; // esi@3 int v15; // eax@4 int v16; // eax@5 signed __int16 v17; // cx@7 signed int v18; // esi@8 int v19; // ecx@9 unsigned int v20; // edx@9 unsigned __int16 v21; // ax@9 int v22; // eax@9 int v23; // ecx@11 __int16 v24; // dx@11 int v25; // eax@11 unsigned int v26; // [sp-10h] [bp-4250h]@1 char v27; // [sp+0h] [bp-4240h]@11 int v28; // [sp+5h] [bp-423Bh]@11 int v29; // [sp+9h] [bp-4237h]@11 int v30; // [sp+Dh] [bp-4233h]@11 int v31; // [sp+11h] [bp-422Fh]@11 __int16 v32; // [sp+15h] [bp-422Bh]@11 __int16 v33; // [sp+17h] [bp-4229h]@11 char v34; // [sp+2004h] [bp-223Ch]@2 int v35; // [sp+2009h] [bp-2237h]@2 __int16 v36; // [sp+200Dh] [bp-2233h]@2 __int16 v37; // [sp+200Fh] [bp-2231h]@2 __int16 v38; // [sp+2011h] [bp-222Fh]@2 int rgbValue; // [sp+4008h] [bp-238h]@9 int v40; // [sp+400Ch] [bp-234h]@9 unsigned __int8 v41; // [sp+4010h] [bp-230h]@9 unsigned __int16 v42; // [sp+4012h] [bp-22Eh]@9 int v43; // [sp+4018h] [bp-228h]@2 int v44; // [sp+401Ch] [bp-224h]@2 int v45; // [sp+4020h] [bp-220h]@2 char v46; // [sp+4024h] [bp-21Ch]@2 __int16 v47; // [sp+4026h] [bp-21Ah]@2 int v48; // [sp+4028h] [bp-218h]@2 int v49; // [sp+402Ch] [bp-214h]@2 char v50; // [sp+4030h] [bp-210h]@6 char v51; // [sp+4130h] [bp-110h]@3 unsigned int v52; // [sp+4230h] [bp-10h]@1 int v53; // [sp+423Ch] [bp-4h]@2 int v54; // [sp+4240h] [bp+0h]@1 v52 = (unsigned int)&v54 ^ __security_cookie; v26 = (unsigned int)&v54 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v34); v53 = 0; sub_44E310((int)&v34, 0x34ABu, 0xAu, 0); v4 = *(_WORD *)(a2 + 6); v5 = *(_WORD *)(a2 + 8); v35 = *(_DWORD *)(a2 + 2); v38 = 11072; v6 = *(_DWORD *)(a2 + 18); v36 = v4; v7 = *(_DWORD *)(a2 + 44); v45 = v6; v8 = *(_WORD *)(a2 + 42); v43 = v7; v37 = v5; v9 = *(_DWORD *)(a2 + 48); v46 = (v8 >> 10) & 0x3F; v47 = v8 & 0x3FF; v10 = *(_DWORD *)v3; v44 = v9; v48 = *(_WORD *)(a2 + 52); v49 = 0; LOWORD(v11) = sub_46A440(v10 + 4684, &v43, a2 + 56, 1); if ( v11 ) { sprintf( &v51, "CPFsCharacter::fc_NC_ITEMDB_ITEMREBUILD_REQ : Item Create DB Error Key=%I64d, id=%d, Owner=%d, Error=%d )", v43, v44, v48, v45, v11, v26); sub_446350(1, "Msg", "%s", &v51); v12 = *(_DWORD *)(v3 + 4); v38 = 11073; v13 = sub_43BFB0(v12, (int)&v34); v53 = -1; nullsub_1(&v34); return v13; } LOWORD(v15) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); if ( v15 ) { sprintf( &v51, "CPFsCharacter::fc_NC_ITEMDB_ITEMREBUILD_REQ : Item Delete DB Error Key=%I64d, Owner=%d, Error=%d )", *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v45, v15, v26); sub_446350(1, "Msg", "%s", &v51); LOWORD(v16) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 44), *(_DWORD *)(a2 + 48)); if ( v16 ) { sprintf( &v50, "CPFsCharacter::fc_NC_ITEMDB_ITEMREBUILD_REQ : Item Delete DB Error Key=%I64d, Owner=%d, Error=%d )", v43, v44, v45, v16); sub_446350(1, "Msg", "%s", &v50); } v17 = 11074; goto LABEL_8; } v19 = *(_DWORD *)(a2 + 48); rgbValue = *(_DWORD *)(a2 + 44); v20 = (unsigned int)*(_WORD *)(a2 + 42) >> 10; v21 = *(_WORD *)(a2 + 42) & 0x3FF; v40 = v19; v42 = v21; v22 = *(_DWORD *)v3; v41 = v20 & 0x3F; if ( !sub_4607E0(v22 + 4684, &rgbValue) ) { sprintf( &v50, "CPFsCharacter::fc_NC_ITEMDB_ITEMREBUILD_REQ : Item Storage DB Error Key=%I64d, Owner=%d, Inven =%d, %d, Error=%d )", rgbValue, v40, *(_DWORD *)(a2 + 18), v41, v42, 0, v26); sub_446350(1, "Msg", "%s", &v50); v17 = 11075; LABEL_8: v38 = v17; v18 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v34); v53 = -1; nullsub_1(&v34); return v18; } sub_44E180((int)&v27); LOBYTE(v53) = 1; sub_44E310((int)&v27, 0x44Fu, 0x14u, 0); v23 = *(_DWORD *)(a2 + 48); v24 = *(_WORD *)(a2 + 52); v28 = *(_DWORD *)(a2 + 18); v29 = v28; v25 = *(_DWORD *)(a2 + 44); v31 = v23; v30 = v25; LOWORD(v25) = *(_WORD *)(a2 + 42); v32 = v24; v33 = v25; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v27); LOBYTE(v53) = 0; nullsub_1(&v27); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v34) ) { sub_446350(1, "Msg", "%s", "ERROR - fc_NC_ITEMDB_ITEMREBUILD_REQ, Data Send Fail"); v53 = -1; nullsub_1(&v34); return 0; } v53 = -1; nullsub_1(&v34); return 1; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00426F20) -------------------------------------------------------- signed int __thiscall sub_426F20(int this, int a2, int a3) { int v3; // edi@1 int v4; // eax@2 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // edx@2 int v9; // eax@2 __int16 v10; // cx@2 int v11; // edx@2 int v12; // ebx@2 int v13; // eax@2 int v14; // ecx@2 int v15; // edx@2 int v16; // eax@2 int v17; // eax@2 int v18; // ecx@2 int v19; // edx@2 int v20; // esi@2 int v21; // eax@2 int v22; // esi@2 int v23; // ebx@2 int v24; // ecx@3 int v25; // ecx@3 int v26; // ST14_4@4 int v27; // ebx@6 int v28; // ST14_4@6 int v29; // ecx@7 char *v31; // esi@12 int v32; // ecx@13 int v33; // eax@13 int v34; // ecx@13 void *v35; // esi@19 unsigned int v36; // [sp-10h] [bp-41A0h]@1 int v37; // [sp+0h] [bp-4190h]@6 int v38; // [sp+4h] [bp-418Ch]@6 int v39; // [sp+8h] [bp-4188h]@4 int v40; // [sp+Ch] [bp-4184h]@4 char v41; // [sp+10h] [bp-4180h]@2 int v42; // [sp+15h] [bp-417Bh]@2 __int16 v43; // [sp+19h] [bp-4177h]@2 int v44; // [sp+1Bh] [bp-4175h]@2 int v45; // [sp+1Fh] [bp-4171h]@2 int v46; // [sp+23h] [bp-416Dh]@2 int v47; // [sp+27h] [bp-4169h]@2 int v48; // [sp+2Bh] [bp-4165h]@2 __int16 v49; // [sp+2Fh] [bp-4161h]@2 int v50; // [sp+31h] [bp-415Fh]@22 __int16 v51; // [sp+35h] [bp-415Bh]@2 char TargetValue; // [sp+39h] [bp-4157h]@19 char v53; // [sp+2014h] [bp-217Ch]@2 int v54; // [sp+2019h] [bp-2177h]@2 __int16 v55; // [sp+201Dh] [bp-2173h]@2 int v56; // [sp+201Fh] [bp-2171h]@2 int v57; // [sp+2023h] [bp-216Dh]@2 int v58; // [sp+2027h] [bp-2169h]@2 int v59; // [sp+202Bh] [bp-2165h]@2 int v60; // [sp+202Fh] [bp-2161h]@2 __int16 v61; // [sp+2033h] [bp-215Dh]@2 int v62; // [sp+2035h] [bp-215Bh]@15 __int16 v63; // [sp+2039h] [bp-2157h]@2 char v64; // [sp+203Fh] [bp-2151h]@12 int v65; // [sp+4018h] [bp-178h]@13 int v66; // [sp+401Ch] [bp-174h]@13 int v67; // [sp+4020h] [bp-170h]@13 int v68; // [sp+4024h] [bp-16Ch]@13 int v69; // [sp+4028h] [bp-168h]@13 int v70; // [sp+402Ch] [bp-164h]@13 int rgbValue; // [sp+403Ch] [bp-154h]@2 int v72; // [sp+4040h] [bp-150h]@2 int v73; // [sp+4044h] [bp-14Ch]@2 int v74; // [sp+4048h] [bp-148h]@2 int v75; // [sp+404Ch] [bp-144h]@2 int v76; // [sp+4050h] [bp-140h]@2 char v77; // [sp+4054h] [bp-13Ch]@2 int v78; // [sp+4070h] [bp-120h]@13 int v79; // [sp+4074h] [bp-11Ch]@13 int v80; // [sp+4078h] [bp-118h]@2 int v81; // [sp+407Ch] [bp-114h]@13 char v82; // [sp+4080h] [bp-110h]@5 unsigned int v83; // [sp+4180h] [bp-10h]@1 int v84; // [sp+418Ch] [bp-4h]@2 int v85; // [sp+4190h] [bp+0h]@1 v83 = (unsigned int)&v85 ^ __security_cookie; v36 = (unsigned int)&v85 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v53); v84 = 0; sub_44E310((int)&v53, 0xC403u, 0x22u, 0); v4 = *(_DWORD *)(a2 + 2); v5 = *(_DWORD *)(a2 + 8); v55 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 16); v54 = v4; v7 = *(_DWORD *)(a2 + 12); v56 = v5; v8 = *(_DWORD *)(a2 + 20); v58 = v6; v57 = v7; v9 = *(_DWORD *)(a2 + 24); v59 = v8; v61 = 11200; v60 = v9; v63 = 0; sub_44E180((int)&v41); LOBYTE(v84) = 1; sub_44E310((int)&v41, 0xC404u, 0x22u, 0); v10 = *(_WORD *)(a2 + 6); v11 = *(_DWORD *)(a2 + 8); v12 = *(_DWORD *)(a2 + 16); v42 = *(_DWORD *)(a2 + 2); v13 = *(_DWORD *)(a2 + 12); v43 = v10; v14 = *(_DWORD *)(a2 + 16); v44 = v11; v15 = *(_DWORD *)(a2 + 20); v45 = v13; v16 = *(_DWORD *)(a2 + 24); v46 = v14; v47 = v15; v48 = v16; v17 = *(_DWORD *)(a2 + 20); v49 = 11200; v18 = *(_DWORD *)(a2 + 8); v51 = 0; v19 = *(_DWORD *)(a2 + 12); v20 = *(_DWORD *)(a2 + 24); v80 = v17; v21 = *(_DWORD *)v3; v72 = v18; v73 = v19; v75 = v80; v74 = v12; v76 = v20; v77 = 0; sub_457070(v21 + 4684, &rgbValue); v22 = rgbValue; v23 = 0; if ( !rgbValue ) { v24 = *(_DWORD *)(v3 + 4); v61 = 11201; sub_43BFB0(v24, (int)&v53); v25 = *(_DWORD *)(v3 + 4); v49 = 11201; sub_43BFB0(v25, (int)&v41); LOBYTE(v84) = 0; LABEL_9: nullsub_1(&v41); v84 = -1; nullsub_1(&v53); return 1; } v26 = *(_DWORD *)v3 + 4684; v39 = rgbValue; v40 = 0; if ( sub_465210(v26, &v39) ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { v31 = &v64; do { v32 = *(_DWORD *)v3; v78 = 0; v79 = 0; v80 = 0; v81 = 0; sub_44E540(v32 + 4684, v31 + 4); sub_44E570(*(_DWORD *)v3 + 4684, v31); sub_44E510(*(_DWORD *)v3 + 4684, v31 + 6); sub_44E6B0(*(_DWORD *)v3 + 4684, &v78); v65 = HIWORD(v80); v66 = (unsigned __int16)v80; v67 = HIWORD(v79); v68 = (unsigned __int16)v79; v69 = HIWORD(v78) - 1; v70 = (signed __int16)v78 - 1900; v33 = _LN52(&v65); v34 = *(_DWORD *)v3; *((_DWORD *)v31 - 1) = v33; ++v23; v31 += 11; } while ( sub_44E4A0(v34 + 4684) ); v22 = rgbValue; } sub_44E4D0(*(_DWORD *)v3 + 4684); v62 = v22; v63 = v23; sub_44E310((int)&v53, 0xC403u, 11 * (unsigned __int16)v23 + 36, 0); if ( sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v53) ) goto LABEL_6; sub_446350(1, "Msg", "%s", "ERROR - fc_NC_COLLECT_PEEPING_DB_REQ, CardCollect Data Send Fail"); LOBYTE(v84) = 0; nullsub_1(&v41); v84 = -1; nullsub_1(&v53); return 0; } sprintf(&v82, "CPFsCharacter::fc_NC_COLLECT_PEEPING_DB_REQ : DB Error nCharNo %d)", v22, v36); sub_446350(1, "Msg", "%s", &v82); v61 = 11202; sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v53); LABEL_6: v27 = 0; v28 = *(_DWORD *)v3 + 4684; v37 = v22; v38 = 0; if ( !sub_465310(v28, &v37) ) { sprintf(&v82, "CPFsCharacter::fc_NC_COLLECT_PEEPING_DB_REQ : DB Error nCharNo %d)", v22, v36); sub_446350(1, "Msg", "%s", &v82); v29 = *(_DWORD *)(v3 + 4); v49 = 11203; sub_43BFB0(v29, (int)&v41); LABEL_8: LOBYTE(v84) = 0; goto LABEL_9; } if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { v35 = &TargetValue; do { sub_44E540(*(_DWORD *)v3 + 4684, (char *)v35 - 2); sub_44E540(*(_DWORD *)v3 + 4684, v35); ++v27; v35 = (char *)v35 + 4; } while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); v22 = rgbValue; } sub_44E4D0(*(_DWORD *)v3 + 4684); v50 = v22; v51 = v27; sub_44E310((int)&v41, 0xC404u, 4 * (unsigned __int16)v27 + 36, 0); if ( sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v41) ) goto LABEL_8; sub_446350(1, "Msg", "%s", "ERROR - fc_NC_CHAR_CHARDATA_REQ, CardCollect Data Send Fail"); LOBYTE(v84) = 0; nullsub_1(&v41); v84 = -1; nullsub_1(&v53); return 0; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (004274A0) -------------------------------------------------------- signed int __thiscall sub_4274A0(int this, int a2, int a3) { int v3; // edi@1 int v4; // eax@2 __int16 v5; // dx@2 int v6; // ecx@2 int v7; // edx@2 int v8; // eax@2 int v9; // ecx@2 int v10; // eax@2 int v11; // eax@2 int v12; // ecx@2 unsigned int v14; // [sp-Ch] [bp-2148h]@1 char v15; // [sp+0h] [bp-213Ch]@2 int v16; // [sp+5h] [bp-2137h]@2 __int16 v17; // [sp+9h] [bp-2133h]@2 __int16 v18; // [sp+Bh] [bp-2131h]@2 int v19; // [sp+Dh] [bp-212Fh]@2 int v20; // [sp+11h] [bp-212Bh]@2 __int16 v21; // [sp+15h] [bp-2127h]@2 int rgbValue; // [sp+2004h] [bp-138h]@2 int v23; // [sp+2008h] [bp-134h]@2 int v24; // [sp+200Ch] [bp-130h]@2 int v25; // [sp+2010h] [bp-12Ch]@2 char v26; // [sp+2014h] [bp-128h]@2 int v27; // [sp+201Ch] [bp-120h]@2 int v28; // [sp+2020h] [bp-11Ch]@2 int v29; // [sp+2024h] [bp-118h]@2 char v30; // [sp+202Ch] [bp-110h]@3 unsigned int v31; // [sp+212Ch] [bp-10h]@1 int v32; // [sp+2138h] [bp-4h]@2 int v33; // [sp+213Ch] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v14 = (unsigned int)&v33 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v15); v32 = 0; sub_44E310((int)&v15, 0xC40Au, 0x12u, 0); v4 = *(_DWORD *)(a2 + 2); v5 = *(_WORD *)(a2 + 8); v17 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 18); v18 = v5; v7 = *(_DWORD *)(a2 + 22); v19 = v6; LOWORD(v6) = *(_WORD *)(a2 + 26); v16 = v4; rgbValue = v4; v8 = *(_WORD *)(a2 + 19); v20 = v7; v21 = v6; v9 = *(_DWORD *)(a2 + 22); v23 = v8; v10 = *(_DWORD *)(a2 + 10); v21 = 11152; LOBYTE(v7) = *(_BYTE *)(a2 + 21); v27 = v10; v11 = *(_DWORD *)v3; v24 = v9; v12 = *(_DWORD *)(a2 + 14); v26 = v7; v28 = v12; v25 = 0; v29 = 0; if ( !sub_465410(v11 + 4684, &rgbValue) ) { sprintf( &v30, "CPFsCharacter::fc_NC_COLLECT_REGIST_REQ : DB Error Owner=%d, Key=%I64d, Error=%d )", rgbValue, v27, v28, v29, v14); sub_446350(1, "Msg", "%s", &v30); v21 = 11158; } if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v15) ) { sub_446350(1, "Msg", "%s", "ERROR - fc_NC_COLLECT_REGIST_REQ, Send Fail"); v32 = -1; nullsub_1(&v15); return 0; } v32 = -1; nullsub_1(&v15); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00427680) -------------------------------------------------------- signed int __thiscall sub_427680(int this, int a2, int a3) { int v3; // edi@1 __int16 v4; // cx@2 __int16 v5; // dx@2 int v6; // ecx@2 char v7; // al@2 int v8; // eax@2 unsigned int v10; // [sp-Ch] [bp-2134h]@1 char v11; // [sp+0h] [bp-2128h]@2 int v12; // [sp+5h] [bp-2123h]@2 __int16 v13; // [sp+9h] [bp-211Fh]@2 __int16 v14; // [sp+Bh] [bp-211Dh]@2 __int16 v15; // [sp+Dh] [bp-211Bh]@2 __int16 v16; // [sp+Fh] [bp-2119h]@2 int rgbValue; // [sp+2004h] [bp-124h]@2 char v18; // [sp+2008h] [bp-120h]@2 int v19; // [sp+200Ch] [bp-11Ch]@2 bool v20; // [sp+2010h] [bp-118h]@2 int v21; // [sp+2014h] [bp-114h]@2 char v22; // [sp+2018h] [bp-110h]@3 unsigned int v23; // [sp+2118h] [bp-10h]@1 int v24; // [sp+2124h] [bp-4h]@2 int v25; // [sp+2128h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v10 = (unsigned int)&v25 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v11); v24 = 0; sub_44E310((int)&v11, 0xC40Eu, 0xCu, 0); v4 = *(_WORD *)(a2 + 6); v5 = *(_WORD *)(a2 + 8); v12 = *(_DWORD *)(a2 + 2); v13 = v4; v6 = *(_WORD *)(a2 + 10); rgbValue = v12; v7 = *(_BYTE *)(a2 + 8); v14 = v5; v18 = v7; v16 = 11168; v8 = *(_DWORD *)v3; v15 = v6; v19 = v6; v20 = (_WORD)v6 != -1; v21 = 0; if ( !sub_465580(v8 + 4684, &rgbValue) ) { sprintf( &v22, "CPFsCharacter::fc_NC_COLLECT_BOOKMARK_REGIST_DB_REQ : DB Error Owner=%d, Card=%d, Error=%d )", rgbValue, v19, v21, v10); sub_446350(1, "Msg", "%s", &v22); if ( v21 == -5555 ) v16 = 11171; else v16 = 11170; } if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v11) ) { sub_446350(1, "Msg", "%s", "ERROR - fc_NC_COLLECT_BOOKMARK_REGIST_DB_REQ, CardCollect Data Send Fail"); v24 = -1; nullsub_1(&v11); return 0; } v24 = -1; nullsub_1(&v11); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00427850) -------------------------------------------------------- signed int __thiscall sub_427850(int this, int a2, int a3) { int v3; // edi@1 int v4; // eax@2 __int16 v5; // dx@2 int v6; // edx@2 int v7; // ecx@2 int v8; // eax@2 int v9; // eax@2 int v10; // eax@2 int v11; // ecx@3 signed int v12; // esi@3 int v14; // eax@4 int v15; // edx@4 int v16; // eax@5 int v17; // edx@10 __int16 v18; // cx@10 unsigned int v19; // [sp-10h] [bp-424Ch]@1 char v20; // [sp+0h] [bp-423Ch]@10 int v21; // [sp+5h] [bp-4237h]@10 int v22; // [sp+9h] [bp-4233h]@10 int v23; // [sp+Dh] [bp-422Fh]@10 int v24; // [sp+11h] [bp-422Bh]@10 __int16 v25; // [sp+15h] [bp-4227h]@10 int v26; // [sp+17h] [bp-4225h]@10 char v27; // [sp+2004h] [bp-2238h]@2 int v28; // [sp+2009h] [bp-2233h]@2 __int16 v29; // [sp+200Dh] [bp-222Fh]@2 __int16 v30; // [sp+200Fh] [bp-222Dh]@2 __int16 v31; // [sp+2011h] [bp-222Bh]@2 int v32; // [sp+4008h] [bp-234h]@2 int v33; // [sp+400Ch] [bp-230h]@2 int v34; // [sp+4010h] [bp-22Ch]@2 char v35; // [sp+4014h] [bp-228h]@2 char v36[6]; // [sp+4016h] [bp-226h]@2 int v37; // [sp+401Ch] [bp-220h]@2 int rgbValue; // [sp+4020h] [bp-21Ch]@4 int v39; // [sp+4024h] [bp-218h]@4 int v40; // [sp+4028h] [bp-214h]@4 char v41; // [sp+402Ch] [bp-210h]@7 char v42; // [sp+412Ch] [bp-110h]@3 unsigned int v43; // [sp+422Ch] [bp-10h]@1 int v44; // [sp+4238h] [bp-4h]@2 int v45; // [sp+423Ch] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v19 = (unsigned int)&v45 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v27); v44 = 0; sub_44E310((int)&v27, 0xC412u, 0xAu, 0); v4 = *(_DWORD *)(a2 + 2); v5 = *(_WORD *)(a2 + 8); v29 = *(_WORD *)(a2 + 6); v30 = v5; v6 = *(_DWORD *)(a2 + 10); v28 = v4; v31 = 11176; v7 = *(_DWORD *)(a2 + 14); v34 = v4; v8 = *(_WORD *)(a2 + 18); v32 = v6; v33 = v7; *(_DWORD *)&v36[2] = v8; v9 = *(_DWORD *)v3; *(_WORD *)v36 = 0; v35 = 2; v37 = 0; LOWORD(v10) = sub_46A440(v9 + 4684, &v32, a2 + 20, 1); if ( v10 ) { sprintf(&v42, "CPFsCharacter::fc_NC_COLLECT_REWARD_DB_REQ - ¾ÆÀÌÅÛ »", v19); sub_446350(1, "Msg", "%s", &v42); v11 = *(_DWORD *)(v3 + 4); v31 = 11181; v12 = sub_43BFB0(v11, (int)&v27); v44 = -1; nullsub_1(&v27); return v12; } v14 = *(_DWORD *)v3; v15 = *(_WORD *)(a2 + 8); rgbValue = *(_DWORD *)(a2 + 2); v39 = v15; v40 = 0; if ( sub_4656D0(v14 + 4684, &rgbValue) ) { sub_44E180((int)&v20); LOBYTE(v44) = 1; sub_44E310((int)&v20, 0x44Fu, 0x14u, 0); v17 = *(_DWORD *)(a2 + 10); v18 = *(_WORD *)(a2 + 18); v21 = *(_DWORD *)(a2 + 2); v22 = v21; v24 = *(_DWORD *)(a2 + 14); v23 = v17; v25 = v18; LOWORD(v26) = (*(_WORD *)v36 ^ (v26 & 0x3FF | (unsigned __int16)((signed __int16)v35 << 10))) & 0x3FF ^ (v26 & 0x3FF | (unsigned __int16)((signed __int16)v35 << 10)); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v20); LOBYTE(v44) = 0; nullsub_1(&v20); } else { LOWORD(v16) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); if ( v16 ) { sprintf( &v42, "CPFsCharacter::fc_NC_COLLECT_REWARD_DB_REQ : Item Delete DB Error Key=%I64d, Owner=%d, Error=%d )", *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_DWORD *)(a2 + 2), v16, v19); sub_446350(1, "Msg", "%s", &v42); } sprintf( &v41, "CPFsCharacter::fc_NC_COLLECT_REWARD_DB_REQ : Reward DB Erorr nCharNo = %d, nRewordID = %d, nRet = %d )", rgbValue, v39, v40, v19); sub_446350(1, "Msg", "%s", &v41); if ( v40 == -2222 ) v31 = 11177; else v31 = 11182; } if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v27) ) { sub_446350(1, "Msg", "%s", "ERROR - fc_NC_COLLECT_REWARD_DB_REQ, Collect Reward Data Send Fail"); v44 = -1; nullsub_1(&v27); return 0; } v44 = -1; nullsub_1(&v27); return 1; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00427C10) -------------------------------------------------------- int __stdcall sub_427C10(int a1, int a2) { int result; // eax@1 result = a1; if ( a1 ) { if ( a2 ) { *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_WORD *)(a1 + 10) = *(_WORD *)a2; *(_WORD *)(a1 + 8) = *(_WORD *)(a2 + 4); *(_WORD *)(a1 + 6) = *(_WORD *)(a2 + 8); *(_WORD *)(a1 + 4) = *(_WORD *)(a2 + 12); *(_WORD *)(a1 + 2) = *(_WORD *)(a2 + 16) + 1; *(_WORD *)a1 = *(_WORD *)(a2 + 20) + 1900; } } return result; } //----- (00427C70) -------------------------------------------------------- signed int __thiscall sub_427C70(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ecx@2 int v6; // ST14_4@2 int v7; // ecx@5 int v8; // ecx@6 int *v9; // eax@6 int v10; // ecx@8 int v11; // ST14_4@9 int v12; // ecx@11 int v13; // ecx@12 signed int v14; // esi@15 const char *v15; // [sp-18h] [bp-2180h]@3 int v16; // [sp-14h] [bp-217Ch]@3 int v17; // [sp-14h] [bp-217Ch]@4 unsigned int v18; // [sp-10h] [bp-2178h]@1 int TargetValue; // [sp+0h] [bp-2168h]@12 char v20; // [sp+4h] [bp-2164h]@2 int v21; // [sp+9h] [bp-215Fh]@2 __int16 v22; // [sp+Dh] [bp-215Bh]@2 int v23; // [sp+Fh] [bp-2159h]@2 unsigned __int8 v24; // [sp+13h] [bp-2155h]@2 int v25; // [sp+14h] [bp-2154h]@2 int v26; // [sp+18h] [bp-2150h]@2 int v27; // [sp+1Ch] [bp-214Ch]@2 int v28; // [sp+20h] [bp-2148h]@2 int v29; // [sp+24h] [bp-2144h]@2 int v30; // [sp+28h] [bp-2140h]@2 int v31; // [sp+2Ch] [bp-213Ch]@2 unsigned __int8 v32; // [sp+404h] [bp-1D64h]@2 char v33[7171]; // [sp+405h] [bp-1D63h]@12 int rgbValue; // [sp+2008h] [bp-160h]@2 char v35; // [sp+200Ch] [bp-15Ch]@2 char v36; // [sp+201Ch] [bp-14Ch]@2 int v37; // [sp+202Ch] [bp-13Ch]@2 int v38; // [sp+2030h] [bp-138h]@9 char v39; // [sp+2034h] [bp-134h]@9 int v40; // [sp+2044h] [bp-124h]@9 int v41; // [sp+2048h] [bp-120h]@6 int v42; // [sp+204Ch] [bp-11Ch]@6 int v43; // [sp+2050h] [bp-118h]@6 int v44; // [sp+2054h] [bp-114h]@6 char v45; // [sp+2058h] [bp-110h]@4 unsigned int v46; // [sp+2158h] [bp-10h]@1 int v47; // [sp+2164h] [bp-4h]@2 int v48; // [sp+2168h] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v18 = (unsigned int)&v48 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v20); v5 = *(_DWORD *)(a2 + 2); v23 = *(_DWORD *)(a2 + 78); v25 = 0; v26 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v31 = 0; v21 = v5; rgbValue = v5; v47 = 0; v24 = 0; v22 = 11264; v32 = 0; sub_427C10((int)&v35, a2 + 6); sub_427C10((int)&v36, a2 + 42); v6 = *(_DWORD *)v3 + 4684; v37 = 0; if ( sub_45DCB0(v6, &rgbValue) ) { v7 = *(_DWORD *)v3 + 4684; v24 = 0; if ( sub_44E4A0(v7) ) { do { v8 = *(_DWORD *)v3 + 4684; v41 = 0; v42 = 0; v43 = 0; v44 = 0; sub_44E6B0(v8, &v41); v9 = &v25 + 9 * v24; if ( v9 ) { *v9 = 0; v9[1] = 0; v9[2] = 0; v9[3] = 0; v9[4] = 0; v9[5] = 0; v9[6] = 0; v9[7] = 0; v9[8] = 0; *v9 = HIWORD(v43); v9[1] = (unsigned __int16)v43; v9[2] = HIWORD(v42); v9[3] = (unsigned __int16)v42; v9[4] = HIWORD(v41) - 1; v9[5] = (signed __int16)v41 - 1900; } v10 = *(_DWORD *)v3; ++v24; } while ( sub_44E4A0(v10 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v38 = *(_DWORD *)(a2 + 2); sub_427C10((int)&v39, a2 + 6); v11 = *(_DWORD *)v3 + 4684; v40 = 0; if ( sub_45E050(v11, &v38) ) { v12 = *(_DWORD *)v3 + 4684; v32 = 0; if ( sub_44E4A0(v12) ) { do { v13 = *(_DWORD *)v3 + 4684; TargetValue = 0; v41 = 0; v42 = 0; v43 = 0; v44 = 0; sub_44E6B0(v13, &v41); sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); v33[v32++] = TargetValue; } while ( v32 < 0x1Cu && sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); sub_44E310((int)&v20, 0x10ECu, v32 + 1020, 0); v17 = (int)&v20; goto LABEL_15; } v16 = *(_DWORD *)(a2 + 2); v15 = "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_LIST_DB_REQ : Get Reward DB error nCharNo(%d)"; } else { v16 = *(_DWORD *)(a2 + 2); v15 = "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_LIST_DB_REQ : Get Attendance DB error nCharNo(%d)"; } sprintf(&v45, v15, v16, v18); sub_446350(1, "Msg", "%s", &v45); v22 = 11265; sub_44E310((int)&v20, 0x10ECu, v32 + 1020, 0); v17 = (int)&v20; LABEL_15: v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), v17); v47 = -1; nullsub_1(&v20); result = v14; } return result; } // 4DE38C: using guessed type int __security_cookie; // 427C70: using guessed type char var_1D63[7171]; //----- (00428010) -------------------------------------------------------- signed int __thiscall sub_428010(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ST18_4@2 signed int v6; // esi@6 unsigned int v7; // [sp-Ch] [bp-2138h]@1 char v8; // [sp+0h] [bp-212Ch]@2 int v9; // [sp+5h] [bp-2127h]@2 __int16 v10; // [sp+9h] [bp-2123h]@2 int rgbValue; // [sp+2004h] [bp-128h]@2 char v12; // [sp+2008h] [bp-124h]@2 int v13; // [sp+2018h] [bp-114h]@2 char v14; // [sp+201Ch] [bp-110h]@3 unsigned int v15; // [sp+211Ch] [bp-10h]@1 int v16; // [sp+2128h] [bp-4h]@2 int v17; // [sp+212Ch] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v7 = (unsigned int)&v17 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v8); v9 = *(_DWORD *)(a2 + 2); rgbValue = v9; v10 = 11272; v16 = 0; sub_427C10((int)&v12, a2 + 6); v5 = *(_DWORD *)v3 + 4684; v13 = 0; if ( !sub_45DDF0(v5, &rgbValue) ) { sprintf( &v14, "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_CHECK_DB_REQ : DB error nCharNo(%d), error(%d)", *(_DWORD *)(a2 + 2), v13, v7); sub_446350(1, "Msg", "%s", &v14); if ( v13 == -1111 ) v10 = 11274; else v10 = 11273; } sub_44E310((int)&v8, 0x10EFu, 6u, 0); v6 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v8); v16 = -1; nullsub_1(&v8); result = v6; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00428170) -------------------------------------------------------- signed int __thiscall sub_428170(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 unsigned int v5; // ebx@2 unsigned __int8 v6; // dl@2 int v7; // eax@2 int v8; // ST20_4@2 int v9; // eax@10 int v10; // eax@13 int v11; // ecx@13 int v12; // edx@13 int v13; // ebx@13 int v14; // ecx@16 int v15; // ebx@23 signed int v16; // eax@23 int v17; // eax@26 int v18; // ST20_4@27 signed __int16 v19; // ax@29 int v20; // eax@33 signed int v21; // esi@39 int v22; // [sp-14h] [bp-4300h]@3 unsigned int v23; // [sp-10h] [bp-42FCh]@1 signed __int16 v24; // [sp+4h] [bp-42E8h]@6 int v25; // [sp+4h] [bp-42E8h]@13 unsigned int v26; // [sp+8h] [bp-42E4h]@7 int TargetValue; // [sp+Ch] [bp-42E0h]@2 char v28; // [sp+10h] [bp-42DCh]@35 int v29; // [sp+15h] [bp-42D7h]@35 int v30; // [sp+19h] [bp-42D3h]@35 int v31; // [sp+1Dh] [bp-42CFh]@35 int v32; // [sp+21h] [bp-42CBh]@35 __int16 v33; // [sp+25h] [bp-42C7h]@35 int v34; // [sp+27h] [bp-42C5h]@35 char v35; // [sp+2014h] [bp-22D8h]@2 int v36; // [sp+2019h] [bp-22D3h]@2 char v37; // [sp+201Dh] [bp-22CFh]@2 unsigned __int8 v38; // [sp+201Eh] [bp-22CEh]@2 __int16 v39; // [sp+201Fh] [bp-22CDh]@2 int v40; // [sp+4018h] [bp-2D4h]@13 int rgbValue; // [sp+4080h] [bp-26Ch]@2 char v42; // [sp+4084h] [bp-268h]@2 char v43; // [sp+4094h] [bp-258h]@2 int v44; // [sp+40A4h] [bp-248h]@2 int v45; // [sp+40A8h] [bp-244h]@27 char v46; // [sp+40ACh] [bp-240h]@27 int v47; // [sp+40BCh] [bp-230h]@27 int v48; // [sp+40C0h] [bp-22Ch]@27 int v49; // [sp+40C4h] [bp-228h]@13 int v50; // [sp+40C8h] [bp-224h]@13 int v51; // [sp+40CCh] [bp-220h]@13 char v52; // [sp+40D0h] [bp-21Ch]@13 int v53; // [sp+40D2h] [bp-21Ah]@13 int v54; // [sp+40D8h] [bp-214h]@13 char v55; // [sp+40DCh] [bp-210h]@34 char v56; // [sp+41DCh] [bp-110h]@14 unsigned int v57; // [sp+42DCh] [bp-10h]@1 int v58; // [sp+42E8h] [bp-4h]@2 int v59; // [sp+42ECh] [bp+0h]@1 v57 = (unsigned int)&v59 ^ __security_cookie; v23 = (unsigned int)&v59 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v35); v5 = 0; v58 = 0; sub_44E310((int)&v35, 0x10F4u, 8u, 0); v6 = *(_BYTE *)(a2 + 43); v7 = *(_DWORD *)(a2 + 2); v37 = *(_BYTE *)(a2 + 6); v38 = v6; v36 = v7; rgbValue = v7; v39 = 11280; sub_427C10((int)&v42, a2 + 44); sub_427C10((int)&v43, a2 + 80); v8 = *(_DWORD *)v3 + 4684; v44 = 0; TargetValue = 0; if ( !sub_45DF10(v8, &rgbValue) ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : DB Error"); v39 = 11281; v22 = (int)&v35; LABEL_39: v21 = sub_43BFB0(*(_DWORD *)(v3 + 4), v22); v58 = -1; nullsub_1(&v35); return v21; } if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v3 + 4684); v24 = -1; if ( dword_6E9954 ) v26 = *(_DWORD *)(dword_6E9954 + 40); else v26 = 0; if ( v26 <= 0 ) goto LABEL_13; while ( 1 ) { v9 = sub_43E7B0((int)&unk_6E9920, v5); if ( !v9 ) { sub_446350( 1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : Reward Data NULL"); v39 = 11282; v22 = (int)&v35; goto LABEL_39; } if ( *(_BYTE *)v9 == *(_BYTE *)(a2 + 43) ) break; ++v5; if ( v5 >= v26 ) goto LABEL_13; } v14 = *(_DWORD *)(v9 + 1); if ( v14 ) { if ( v14 != 1 ) { sub_446350( 1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : Reward Data NULL"); v39 = 11282; v22 = (int)&v35; goto LABEL_39; } if ( TargetValue < *(_BYTE *)(v9 + 5) ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : Done condition"); v39 = 11286; v22 = (int)&v35; goto LABEL_39; } } else { if ( TargetValue != 7 ) { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : Done condition"); v39 = 11286; v22 = (int)&v35; goto LABEL_39; } } v15 = v9 + 6; v16 = sub_44B780(&unk_6EA3F0, (unsigned __int8 *)(v9 + 6)); if ( v16 != -1 && (v24 = v16, (_WORD)v16 != -1) ) { LABEL_13: v51 = *(_DWORD *)(a2 + 2); v10 = sub_404170(5, 0); v11 = (unsigned __int16)v24; v50 = v12; v25 = v12; LOWORD(v53) = 0; v54 = 0; v49 = v10; v13 = v10; *(int *)((char *)&v53 + 2) = v11; v52 = 2; if ( !sub_4661E0(v11, &v40) ) { sprintf( &v56, "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : Set Attr Fail ItemID(%d), Owner(%d)", *(int *)((char *)&v53 + 2), v51, v23); sub_446350(1, "Msg", "%s", &v56); v39 = 11285; v22 = (int)&v35; goto LABEL_39; } LOWORD(v17) = sub_46A440(*(_DWORD *)v3 + 4684, &v49, (int)&v40, 1); if ( v17 ) { v19 = 11285; v39 = 11285; } else { v45 = *(_DWORD *)(a2 + 2); sub_427C10((int)&v46, a2 + 7); v47 = *(_BYTE *)(a2 + 43); v18 = *(_DWORD *)v3 + 4684; v48 = 0; if ( sub_45E170(v18, &v45) ) { v19 = v39; if ( v39 == 11280 ) { sub_44E180((int)&v28); LOBYTE(v58) = 1; sub_44E310((int)&v28, 0x44Fu, 0x14u, 0); v29 = *(_DWORD *)(a2 + 2); v33 = HIWORD(v53); v30 = v51; v32 = v25; v31 = v13; LOWORD(v34) = (v53 ^ (v34 & 0x3FF | (unsigned __int16)((signed __int16)v52 << 10))) & 0x3FF ^ (v34 & 0x3FF | (unsigned __int16)((signed __int16)v52 << 10)); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v28); LOBYTE(v58) = 0; nullsub_1(&v28); goto LABEL_38; } } else { sprintf( &v56, "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : DB error nCharNo(%d), error(%d)", *(_DWORD *)(a2 + 2), v48, v23); sub_446350(1, "Msg", "%s", &v56); if ( v48 == -1111 ) { v19 = 11284; v39 = 11284; } else { v19 = 11281; v39 = 11281; } } } sprintf( &v56, "CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : Reward Erorr(%d) nCharNo(%d), nRewordID(%d), ItemID(%d) )", (unsigned __int16)v19, v51, v38, *(int *)((char *)&v53 + 2), v23); sub_446350(1, "Msg", "%s", &v56); LOWORD(v20) = sub_466950(*(_DWORD *)v3 + 4684, v13, v25); if ( v20 ) { sprintf( &v55, "CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : Item Delete DB Error Key=%I64d, Error=%d )", v49, v50, v20); sub_446350(1, "Msg", "%s", &v55); } } else { sprintf( &v56, "ERROR - CPFsCharacter::fc_NC_CHAR_EVENT_ATTENDANCE_REWARD_DB_REQ : Invalid Item ItemIndex(%s), Owner(%d)", v15, *(_DWORD *)(a2 + 2), v23); sub_446350(1, "Msg", "%s", &v56); v39 = 11282; } LABEL_38: v22 = (int)&v35; goto LABEL_39; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9954: using guessed type int dword_6E9954; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004287B0) -------------------------------------------------------- signed int __thiscall sub_4287B0(void *this, __int16 a2, int rgbValue) { void *v3; // esi@1 int v4; // ebx@1 int v5; // ecx@1 int v6; // eax@1 int v7; // ecx@3 char *v8; // edi@4 int v9; // edx@5 int v10; // eax@5 int v11; // ecx@5 int v12; // edi@6 size_t v13; // eax@6 char *v14; // ecx@7 int v15; // edx@11 char *v16; // eax@11 int v17; // eax@11 bool v18; // sf@11 unsigned __int8 v19; // of@11 signed int v20; // esi@13 int v22; // [sp-14h] [bp-9A6Ch]@2 unsigned int v23; // [sp-10h] [bp-9A68h]@1 int v24; // [sp+0h] [bp-9A58h]@6 char *v25; // [sp+4h] [bp-9A54h]@7 int TargetValue; // [sp+8h] [bp-9A50h]@3 size_t v27; // [sp+Ch] [bp-9A4Ch]@11 char v28; // [sp+13h] [bp-9A45h]@5 char v29; // [sp+14h] [bp-9A44h]@1 __int16 v30; // [sp+19h] [bp-9A3Fh]@1 int v31; // [sp+1Bh] [bp-9A3Dh]@6 __int16 v32; // [sp+1Dh] [bp-9A3Bh]@2 __int16 v33; // [sp+1Fh] [bp-9A39h]@6 __int16 v34; // [sp+21h] [bp-9A37h]@6 __int16 v35; // [sp+23h] [bp-9A35h]@9 __int16 v36; // [sp+25h] [bp-9A33h]@6 char v37[8177]; // [sp+27h] [bp-9A31h]@11 char v38; // [sp+2018h] [bp-7A40h]@3 char v39; // [sp+201Ah] [bp-7A3Eh]@4 char v40; // [sp+9548h] [bp-510h]@5 int v41; // [sp+9550h] [bp-508h]@5 int v42; // [sp+9554h] [bp-504h]@5 char v43; // [sp+9948h] [bp-110h]@2 unsigned int v44; // [sp+9A48h] [bp-10h]@1 int v45; // [sp+9A54h] [bp-4h]@1 int v46; // [sp+9A58h] [bp+0h]@1 v44 = (unsigned int)&v46 ^ __security_cookie; v23 = (unsigned int)&v46 ^ __security_cookie; v3 = this; sub_44E180((int)&v29); v4 = 0; v5 = *(_DWORD *)v3 + 4684; v45 = 0; v30 = a2; LOBYTE(v6) = sub_46B460(v5, rgbValue); if ( !v6 ) { sprintf(&v43, "ERROR - ij¸¯ÀÇ ¿Ï·á Ä", rgbValue, v23); sub_446350(1, "Msg", "%s", &v43); v32 = 1415; sub_44E310((int)&v29, 0x1006u, 6u, 0); v22 = (int)&v29; LABEL_13: v20 = sub_43BFB0(*((_DWORD *)v3 + 1), v22); v45 = -1; nullsub_1(&v29); return v20; } memset(&v38, 0, 0x7530u); v7 = *(_DWORD *)v3 + 4684; TargetValue = 0; if ( sub_44E4A0(v7) ) { v8 = &v39; do { memset(&v40, 0, 0x400u); sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v3 + 4684, &v28); sub_44E650(*(_DWORD *)v3 + 4684, &v40); v9 = v41; v10 = v42; *((_WORD *)v8 - 1) = TargetValue; v11 = *(_DWORD *)v3; *(_DWORD *)v8 = v9; *((_DWORD *)v8 + 1) = v10; ++v4; v8 += 10; } while ( sub_44E4A0(v11 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v30 = a2; v31 = rgbValue; v12 = 0; v36 = 0; v13 = 18; v33 = v4; v34 = 10 * v4 + 12; v24 = 0; if ( v4 <= 0 ) { LABEL_12: v35 = v12; sub_44E310((int)&v29, 0x100Bu, v13, 0); v22 = (int)&v29; goto LABEL_13; } v14 = &v38; v25 = &v38; while ( (signed int)v13 < 8000 ) { LABEL_11: v15 = *(_DWORD *)v14; v27 = v13 + 10; v16 = &v37[10 * v12]; *(_DWORD *)v16 = v15; *((_DWORD *)v16 + 1) = *((_DWORD *)v14 + 1); *((_WORD *)v16 + 4) = *((_WORD *)v14 + 4); v17 = v24 + 1; v14 += 10; ++v12; v24 = v17; v19 = __OFSUB__(v17, v4); v18 = v17 - v4 < 0; v13 = v27; v25 = v14; if ( !(v18 ^ v19) ) goto LABEL_12; } v35 = v12; sub_44E310((int)&v29, 0x100Bu, v13, 0); if ( sub_43BFB0(*((_DWORD *)v3 + 1), (int)&v29) ) { v36 += v12; v14 = v25; v12 = 0; v13 = 18; goto LABEL_11; } v45 = -1; nullsub_1(&v29); return 0; } // 4DE38C: using guessed type int __security_cookie; // 4287B0: using guessed type char var_9A31[8177]; //----- (00428A90) -------------------------------------------------------- signed int __thiscall sub_428A90(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_43E1E0((int)&unk_6E9960, a2 + 2, *(_DWORD *)(v3 + 4)); result = 1; } return result; } //----- (00428AD0) -------------------------------------------------------- signed int __thiscall sub_428AD0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@5 int v5; // eax@6 int v6; // edx@8 signed __int16 v7; // bx@8 int v8; // eax@8 int v9; // eax@10 int v10; // edx@10 signed int v11; // esi@10 unsigned int v12; // [sp-10h] [bp-2234h]@1 char v13; // [sp+0h] [bp-2224h]@10 int v14; // [sp+5h] [bp-221Fh]@10 int v15; // [sp+9h] [bp-221Bh]@10 int v16; // [sp+Dh] [bp-2217h]@10 __int16 v17; // [sp+11h] [bp-2213h]@10 int rgbValue; // [sp+2004h] [bp-220h]@8 int v19; // [sp+2008h] [bp-21Ch]@8 int v20; // [sp+200Ch] [bp-218h]@8 int v21; // [sp+2010h] [bp-214h]@8 char v22; // [sp+2014h] [bp-210h]@9 char v23; // [sp+2114h] [bp-110h]@4 unsigned int v24; // [sp+2214h] [bp-10h]@1 int v25; // [sp+2220h] [bp-4h]@10 int v26; // [sp+2224h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v12 = (unsigned int)&v26 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v3 + 4) ) { sprintf(&v23, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_MEMBER_DB_CHAT_BAN_CANCEL_REQ, Error=%d", 12737, v12); sub_446350(1, "Msg", "%s", &v23); return 0; } v5 = *(_DWORD *)v3; if ( *(_DWORD *)v3 ) { v6 = *(_DWORD *)(a2 + 10); rgbValue = *(_DWORD *)(a2 + 2); v20 = 0; v21 = 0; v19 = v6; v7 = 12712; LOBYTE(v8) = sub_455780(v5 + 4684, &rgbValue); if ( !v8 ) { sprintf( &v22, "FAILED - fc_NC_GUILD_ACADEMY_MEMBER_DB_CHAT_BAN_CANCEL_REQ, GuildNo : %d, CharNo : %d", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6), v12); sub_446350(1, "Msg", "%s", &v22); v7 = (v21 != -1511) + 12715; } sub_44E180((int)&v13); v9 = *(_DWORD *)(a2 + 2); v10 = *(_DWORD *)(a2 + 10); v15 = *(_DWORD *)(a2 + 6); v25 = 0; v14 = v9; v16 = v10; v17 = v7; sub_44E310((int)&v13, 0x988Eu, 0xEu, 0); v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v13); v25 = -1; nullsub_1(&v13); result = v11; } else { sprintf(&v23, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_MEMBER_DB_CHAT_BAN_CANCEL_REQ, Error=%d", 12736, v12); sub_446350(1, "Msg", "%s", &v23); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00428CB0) -------------------------------------------------------- signed int __thiscall sub_428CB0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@5 int v5; // esi@8 int v6; // eax@9 int v7; // eax@9 int v8; // ST18_4@10 int v9; // ecx@11 char *v10; // esi@12 int v11; // edx@13 int v12; // eax@13 int v13; // ecx@13 int v14; // edx@13 int v15; // ecx@13 int v16; // edx@13 int v17; // ecx@13 signed int v18; // esi@16 int v19; // [sp-14h] [bp-229Ch]@10 unsigned int v20; // [sp-10h] [bp-2298h]@1 int v21; // [sp+4h] [bp-2284h]@11 int v22; // [sp+8h] [bp-2280h]@11 unsigned __int8 TargetValue; // [sp+Fh] [bp-2279h]@13 char v24; // [sp+10h] [bp-2278h]@9 __int16 v25; // [sp+15h] [bp-2273h]@10 __int16 v26; // [sp+17h] [bp-2271h]@10 int v27; // [sp+19h] [bp-226Fh]@10 __int16 v28; // [sp+1Dh] [bp-226Bh]@10 char v29; // [sp+2Fh] [bp-2259h]@12 char rgbValue; // [sp+2014h] [bp-274h]@9 int v31; // [sp+2018h] [bp-270h]@9 int v32; // [sp+201Ch] [bp-26Ch]@9 __int16 v33; // [sp+2020h] [bp-268h]@13 char v34; // [sp+2022h] [bp-266h]@13 char v35; // [sp+2024h] [bp-264h]@13 int v36; // [sp+2030h] [bp-258h]@13 int v37; // [sp+2034h] [bp-254h]@13 char v38[4]; // [sp+2038h] [bp-250h]@11 int v39; // [sp+203Ch] [bp-24Ch]@11 int v40; // [sp+2040h] [bp-248h]@11 int v41; // [sp+2044h] [bp-244h]@11 int v42; // [sp+2048h] [bp-240h]@11 int v43; // [sp+204Ch] [bp-23Ch]@13 char v44; // [sp+2050h] [bp-238h]@10 char v45; // [sp+2150h] [bp-138h]@4 char v46; // [sp+2250h] [bp-38h]@13 unsigned int v47; // [sp+2278h] [bp-10h]@1 int v48; // [sp+2284h] [bp-4h]@9 int v49; // [sp+2288h] [bp+0h]@1 v47 = (unsigned int)&v49 ^ __security_cookie; v20 = (unsigned int)&v49 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v3 + 4) ) { sprintf(&v45, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_HISTORY_DB_LIST_REQ, Error=%d", 12737, v20); sub_446350(1, "Msg", "%s", &v45); return 0; } if ( *(_DWORD *)v3 ) { v5 = a2 + 2; if ( a2 == -2 ) return 0; sub_44E180((int)&v24); v6 = *(_DWORD *)v3 + 4684; v31 = *(_DWORD *)(a2 + 4); v32 = 30; v48 = 0; LOBYTE(v7) = sub_455B30(v6, &rgbValue); if ( v7 ) { v9 = *(_DWORD *)v3 + 4684; v22 = 0; v21 = 0; v42 = 0; v41 = 0; v40 = 0; v39 = 0; *(_DWORD *)v38 = 0; if ( sub_44E4A0(v9) ) { v10 = &v29; do { sub_44E600(*(_DWORD *)v3 + 4684, &v46); sub_44E510(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E6B0(*(_DWORD *)v3 + 4684, &v33); LOWORD(v37) = v33; BYTE2(v37) = v34; v36 = 30 - v22; BYTE3(v37) = v35; v42 = 0; v41 = 0; v40 = 0; v39 = 0; *(_DWORD *)v38 = 0; strncpy(v38, &v46, 0x14u); v11 = v37; v12 = TargetValue; *((_DWORD *)v10 - 4) = v36; v13 = *(_DWORD *)v38; *((_DWORD *)v10 - 3) = v11; v14 = v39; *((_DWORD *)v10 - 2) = v13; *(_DWORD *)v10 = v40; v15 = v42; *((_DWORD *)v10 - 1) = v14; v16 = v41; *((_DWORD *)v10 + 2) = v15; v17 = *(_DWORD *)v3; *((_DWORD *)v10 + 1) = v16; *((_DWORD *)v10 + 3) = v12; v43 = v12; ++v22; ++v21; v10 += 32; } while ( sub_44E4A0(v17 + 4684) ); v5 = a2 + 2; } sub_44E4D0(*(_DWORD *)v3 + 4684); v26 = *(_WORD *)v5; HIWORD(v27) = v22; LOWORD(v27) = v21; v28 = 0; v25 = 12680; sub_44E310((int)&v24, 0x9892u, 32 * v22 + 10, 0); v19 = (int)&v24; } else { v8 = *(_DWORD *)(a2 + 4); v25 = 12681; sprintf(&v44, "ERROR - fc_NC_GUILD_ACADEMY_HISTORY_DB_LIST_REQ, (nGuildAcademyNo=%d)", v8, v20); sub_446350(1, "Msg", "%s", &v44); v26 = *(_WORD *)v5; v28 = 0; v27 = 0; sub_44E310((int)&v24, 0x9892u, 0xAu, 0); v19 = (int)&v24; } v18 = sub_43BFB0(*(_DWORD *)(v3 + 4), v19); v48 = -1; nullsub_1(&v24); result = v18; } else { sprintf(&v45, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_HISTORY_DB_LIST_REQ, Error=%d", 12736, v20); sub_446350(1, "Msg", "%s", &v45); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00429040) -------------------------------------------------------- signed int __thiscall sub_429040(int this, int a2, int a3) { int v3; // ebx@1 int v4; // esi@1 int v6; // edi@8 __int16 v7; // dx@8 char v8; // al@8 int v9; // ecx@8 char *v10; // eax@9 int v11; // eax@14 char *v12; // edx@14 char v13; // cl@15 int v14; // eax@16 int v15; // eax@19 int v16; // ecx@19 int v17; // edx@22 int v18; // eax@24 int v19; // eax@25 int v20; // eax@27 int v21; // ecx@33 char *v22; // eax@34 int v23; // eax@39 int v24; // eax@46 int v25; // edx@46 int v26; // eax@46 signed __int16 v27; // ax@54 signed int v28; // esi@58 const char *v29; // [sp-1Ch] [bp-27B0h]@49 int v30; // [sp-18h] [bp-27ACh]@49 int v31; // [sp-14h] [bp-27A8h]@10 int v32; // [sp-14h] [bp-27A8h]@49 unsigned int v33; // [sp-10h] [bp-27A4h]@1 int v34; // [sp+0h] [bp-2794h]@19 int v35; // [sp+4h] [bp-2790h]@8 signed int v36; // [sp+8h] [bp-278Ch]@19 signed int v37; // [sp+10h] [bp-2784h]@23 int v38; // [sp+14h] [bp-2780h]@19 int v39; // [sp+18h] [bp-277Ch]@19 int v40; // [sp+1Ch] [bp-2778h]@8 int v41; // [sp+20h] [bp-2774h]@20 int v42; // [sp+24h] [bp-2770h]@22 int v43; // [sp+28h] [bp-276Ch]@23 int v44; // [sp+2Ch] [bp-2768h]@32 char v45; // [sp+3Ch] [bp-2758h]@34 char v46; // [sp+4E4h] [bp-22B0h]@8 __int16 v47; // [sp+4E9h] [bp-22ABh]@8 int v48; // [sp+4EBh] [bp-22A9h]@8 __int16 v49; // [sp+4EFh] [bp-22A5h]@10 char v50; // [sp+4F1h] [bp-22A3h]@8 int v51; // [sp+24E8h] [bp-2ACh]@22 int rgbValue; // [sp+2514h] [bp-280h]@14 char v53[16]; // [sp+2518h] [bp-27Ch]@14 int v54; // [sp+2528h] [bp-26Ch]@16 int v55; // [sp+252Ch] [bp-268h]@16 __int16 v56; // [sp+2530h] [bp-264h]@16 __int16 v57; // [sp+2532h] [bp-262h]@16 __int16 v58; // [sp+2534h] [bp-260h]@16 __int16 v59; // [sp+2536h] [bp-25Eh]@16 __int64 v60; // [sp+253Ch] [bp-258h]@16 int v61; // [sp+2544h] [bp-250h]@16 int v62; // [sp+2550h] [bp-244h]@46 int v63; // [sp+2554h] [bp-240h]@46 __int16 v64; // [sp+2558h] [bp-23Ch]@46 int v65; // [sp+255Ch] [bp-238h]@46 int v66; // [sp+2560h] [bp-234h]@12 int v67; // [sp+2564h] [bp-230h]@12 int v68; // [sp+2568h] [bp-22Ch]@12 int v69; // [sp+256Ch] [bp-228h]@12 int v70; // [sp+2570h] [bp-224h]@12 int v71; // [sp+2574h] [bp-220h]@12 int v72; // [sp+2578h] [bp-21Ch]@12 int v73; // [sp+257Ch] [bp-218h]@12 int v74; // [sp+2580h] [bp-214h]@12 char v75; // [sp+2584h] [bp-210h]@47 char v76; // [sp+2684h] [bp-110h]@4 unsigned int v77; // [sp+2784h] [bp-10h]@1 int v78; // [sp+2790h] [bp-4h]@8 int v79; // [sp+2794h] [bp+0h]@1 v77 = (unsigned int)&v79 ^ __security_cookie; v33 = (unsigned int)&v79 ^ __security_cookie; v3 = a2; v4 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v4 + 4) ) { sprintf(&v76, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ, Session Is Null", v33); sub_446350(1, "Msg", "%s", &v76); return 0; } if ( !*(_DWORD *)v4 ) { sprintf(&v76, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ, Session Worker Is Null", v33); sub_446350(1, "Msg", "%s", &v76); return 0; } sub_44E180((int)&v46); v6 = *(_DWORD *)(a2 + 5); v78 = 0; v35 = v6; sub_44E310((int)&v46, 0x1113u, 9u, 0); v7 = *(_WORD *)(a2 + 2); v8 = *(_BYTE *)(a2 + 13); v48 = *(_DWORD *)(a2 + 5); v9 = *(_DWORD *)v4 + 4684; v47 = v7; v50 = v8; v40 = 0; if ( sub_46AC00(v9, v6, (int)&v40) ) { if ( *(_BYTE *)(a2 + 13) ) { v38 = 0; v15 = sub_43D750(&unk_6E9994); v16 = 0; v34 = v15; v36 = 0; v39 = 0; if ( v15 > 0 ) { while ( 1 ) { if ( sub_43D840((int)&unk_6E9994, (int)&v41, v39) == 1 && v41 == (((unsigned int)(unsigned __int8)v40 >> 2) & 0x1F) ) { v71 = v6; v69 = sub_404170(5, 0); v70 = v17; HIWORD(v72) = v38; v73 = v42; LOBYTE(v72) = 9; v74 = 0; if ( !sub_4661E0(v42, &v51) ) { sprintf( &v76, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ - MakeItemAttr Fail, nCharNo=%d, CharClass=%d, ItemID=%d, ItemKey=%I64d )", v71, v41, v42, v69, v70, v33); sub_446350(1, "Msg", "%s", &v76); v49 = 12777; v31 = (int)&v46; goto LABEL_58; } sub_403C00(v42, (int)&v51, v43); v37 = 0; if ( !v36 ) { v18 = sub_402D20((int)&unk_6EA3E8, v42); if ( !v18 ) { v32 = v42; v30 = v71; v29 = "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ - ItemIndex Null, nCharNo=%d, ItemID=%d )"; LABEL_50: sprintf(&v76, v29, v30, v32, v33); sub_446350(1, "Msg", "%s", &v76); v49 = 12777; v31 = (int)&v46; goto LABEL_58; } v19 = *(_DWORD *)v18; if ( !v19 ) { v32 = v42; v30 = v71; v29 = "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ - ItemInfo Null, nCharNo=%d, ItemID=%d )"; goto LABEL_50; } if ( *(_DWORD *)(v19 + 102) == 5 ) { LOBYTE(v72) = 8; v20 = *(_DWORD *)(v19 + 110); if ( v20 == 10 ) { HIWORD(v72) = 10; } else { if ( v20 != 12 ) { v32 = v42; v30 = v71; v29 = "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ - Incorrect EquipInfo, nCharNo=%d, ItemID=%d )"; goto LABEL_50; } HIWORD(v72) = 12; } v37 = 1; } } if ( !sub_4689D0(*(_DWORD *)v4 + 4684, v71, (int)&v44) ) { v78 = -1; nullsub_1(&v46); return 0; } v21 = 0; if ( v44 <= 0 ) { LABEL_39: LOWORD(v23) = sub_46A440(*(_DWORD *)v4 + 4684, &v69, (int)&v51, 0); if ( v23 ) { sprintf( &v76, "CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ CreateItem Fail - nCharNo=%d, ItemID=%d, Itemkey=%I64d )", v71, v42, v69, v70, v33); sub_446350(1, "Msg", "%s", &v76); v27 = 12777; goto LABEL_56; } } else { v22 = &v45; while ( v22[2] != (char)v72 || *(_WORD *)v22 != SHIWORD(v72) ) { ++v21; v22 += 40; if ( v21 >= v44 ) { v6 = v35; v3 = a2; goto LABEL_39; } } v6 = v35; sprintf( &v76, "CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ Duplicate Inven Cell - Cannot Create Item (Skipped) - nCharNo=%d, ItemID=%d, Itemkey=%I64d, nStorageType:nStorage=%d:%d )", v35, v42, v69, v70, (char)v72, SHIWORD(v72), v33); sub_446350(1, "Msg", "%s", &v76); v3 = a2; } if ( v37 == 1 ) v36 = 1; else ++v38; } ++v39; if ( v39 >= v34 ) { v16 = 0; break; } } } v24 = *(_DWORD *)v4; v25 = *(_DWORD *)(v3 + 9); v65 = v16; v62 = v6; v63 = v25; v64 = 2; LOBYTE(v26) = sub_45E410(v24 + 4684, &v62); if ( !v26 ) { sprintf( &v75, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ - TutorialState Set Fail, nCharNo=%d", v6, v33); v10 = &v75; goto LABEL_10; } v27 = 12776; LABEL_56: v49 = v27; } else { v66 = 0; v67 = 0; v68 = 0; v69 = 0; v70 = 0; v71 = 0; v72 = 0; v73 = 0; v74 = 0; if ( !sub_43D760((int)&unk_6E9994, (int)&v66, ((unsigned int)(unsigned __int8)v40 >> 2) & 0x1F) ) { sprintf( &v76, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ - TutorialCharData Get Fail, nCharNo=%d, nShape=%d", v6, ((unsigned int)(unsigned __int8)v40 >> 2) & 0x1F, v33); sub_446350(1, "Msg", "%s", &v76); v49 = 12777; v31 = (int)&v46; goto LABEL_58; } memset(&rgbValue, 0, 0x38u); v11 = v67; rgbValue = v6; v12 = &v53[-v67]; do { v13 = *(_BYTE *)v11; v12[v11] = *(_BYTE *)v11; ++v11; } while ( v13 ); v55 = v69; v54 = v68; v58 = v72; v57 = v71; v56 = v70; v60 = v74; v14 = *(_DWORD *)v4 + 4684; v59 = v73; v61 = 0; if ( !sub_456AC0(v14, &rgbValue) ) { sprintf( &v76, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ - TutorialDefalutCharData Create Fail, nCharNo=%d", v6, v33); sub_446350(1, "Msg", "%s", &v76); v49 = 12777; v31 = (int)&v46; goto LABEL_58; } v49 = 12776; } v31 = (int)&v46; goto LABEL_58; } sprintf( &v76, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_MAKE_ITEM_REQ - CharacterShape Get Fail, nCharNo=%d", v6, v33); v10 = &v76; LABEL_10: sub_446350(1, "Msg", "%s", v10); v49 = 12777; v31 = (int)&v46; LABEL_58: v28 = sub_43BFB0(*(_DWORD *)(v4 + 4), v31); v78 = -1; nullsub_1(&v46); return v28; } // 43D750: using guessed type int __thiscall sub_43D750(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 429040: using guessed type char var_27C[16]; //----- (004297F0) -------------------------------------------------------- signed int __thiscall sub_4297F0(void *this, int a2) { void *v2; // esi@1 int v3; // ST14_4@1 int v4; // eax@1 signed int result; // eax@2 signed int v6; // esi@6 unsigned int v7; // [sp-Ch] [bp-212Ch]@1 int rgbValue; // [sp+0h] [bp-2120h]@1 int v9; // [sp+4h] [bp-211Ch]@1 unsigned __int8 TargetValue; // [sp+Ah] [bp-2116h]@4 char v11; // [sp+Bh] [bp-2115h]@4 char v12; // [sp+Ch] [bp-2114h]@1 int v13; // [sp+11h] [bp-210Fh]@1 int v14; // [sp+15h] [bp-210Bh]@1 char v15; // [sp+19h] [bp-2107h]@1 char v16; // [sp+2010h] [bp-110h]@2 unsigned int v17; // [sp+2110h] [bp-10h]@1 int v18; // [sp+211Ch] [bp-4h]@1 int v19; // [sp+2120h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v7 = (unsigned int)&v19 ^ __security_cookie; v2 = this; sub_44E180((int)&v12); v18 = 0; sub_44E310((int)&v12, 0x1114u, 9u, 0); v14 = 0; v15 = 0; v9 = 0; v3 = *(_DWORD *)v2 + 4684; v13 = a2; rgbValue = a2; LOBYTE(v4) = sub_45E360(v3, &rgbValue); if ( v4 ) { if ( sub_44E4A0(*(_DWORD *)v2 + 4684) == 1 ) { sub_44E510(*(_DWORD *)v2 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v2 + 4684, &v11); v14 = TargetValue; v15 = v11; } else { v14 = 3; v15 = 0; } sub_44E4D0(*(_DWORD *)v2 + 4684); v6 = sub_43BFB0(*((_DWORD *)v2 + 1), (int)&v12); v18 = -1; nullsub_1(&v12); result = v6; } else { sprintf( &v16, "ERROR - TutorialInfo Get Fail - fc_NC_CHAR_CHARDATA_REQ -> Send_NC_CHAR_TUTORIAL_INFO_WORLD_CMD, nCharNo=%d", a2, v7); sub_446350(1, "Msg", "%s", &v16); v18 = -1; nullsub_1(&v12); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00429990) -------------------------------------------------------- signed int __thiscall sub_429990(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@5 int v5; // edx@8 char v6; // al@8 int v7; // edx@8 int v8; // ST14_4@8 int v9; // eax@8 char v10; // al@10 int v11; // ecx@10 signed int v12; // esi@10 unsigned int v13; // [sp-Ch] [bp-2230h]@1 char v14; // [sp+0h] [bp-2224h]@8 int v15; // [sp+5h] [bp-221Fh]@8 int v16; // [sp+9h] [bp-221Bh]@8 char v17; // [sp+Dh] [bp-2217h]@8 int rgbValue; // [sp+2004h] [bp-220h]@8 int v19; // [sp+2008h] [bp-21Ch]@8 char v20; // [sp+200Ch] [bp-218h]@8 char v21; // [sp+200Dh] [bp-217h]@8 int v22; // [sp+2010h] [bp-214h]@8 char v23; // [sp+2014h] [bp-210h]@9 char v24; // [sp+2114h] [bp-110h]@4 unsigned int v25; // [sp+2214h] [bp-10h]@1 int v26; // [sp+2220h] [bp-4h]@8 int v27; // [sp+2224h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v13 = (unsigned int)&v27 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v3 + 4) ) { sprintf(&v24, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_STEP_SAVE_REQ, Session Is Null", v13); sub_446350(1, "Msg", "%s", &v24); return 0; } if ( *(_DWORD *)v3 ) { sub_44E180((int)&v14); v5 = *(_DWORD *)(a2 + 6); v6 = *(_BYTE *)(a2 + 10); rgbValue = *(_DWORD *)(a2 + 2); v21 = *(_BYTE *)(a2 + 14); v26 = 0; v19 = v5; v20 = v6; v22 = 0; sub_44E310((int)&v14, 0x1119u, 9u, 0); v7 = *(_DWORD *)(a2 + 2); v16 = 0; v17 = 0; v8 = *(_DWORD *)v3 + 4684; v15 = v7; LOBYTE(v9) = sub_45E410(v8, &rgbValue); if ( v9 ) { v10 = *(_BYTE *)(a2 + 14); v11 = *(_DWORD *)(v3 + 4); v16 = *(_DWORD *)(a2 + 10); v17 = v10; v12 = sub_43BFB0(v11, (int)&v14); v26 = -1; nullsub_1(&v14); result = v12; } else { sprintf(&v23, "ERROR - TutorialInfo Set Fail - fc_NC_CHAR_TUTORIAL_STEP_SAVE_REQ, nCharNo=%d", v15, v13); sub_446350(1, "Msg", "%s", &v23); v26 = -1; nullsub_1(&v14); result = 0; } } else { sprintf(&v24, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_STEP_SAVE_REQ, Session Worker Is Null", v13); sub_446350(1, "Msg", "%s", &v24); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00429B70) -------------------------------------------------------- signed int __thiscall sub_429B70(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@5 char v5; // cl@8 unsigned __int8 v6; // bl@9 signed int v7; // esi@15 int v8; // [sp-14h] [bp-2230h]@14 unsigned int v9; // [sp-10h] [bp-222Ch]@1 char v10; // [sp+3h] [bp-2219h]@8 unsigned __int8 v11; // [sp+7h] [bp-2215h]@9 char v12; // [sp+8h] [bp-2214h]@8 int v13; // [sp+Dh] [bp-220Fh]@8 __int16 v14; // [sp+11h] [bp-220Bh]@14 char v15; // [sp+200Ch] [bp-210h]@17 char v16; // [sp+210Ch] [bp-110h]@4 unsigned int v17; // [sp+220Ch] [bp-10h]@1 int v18; // [sp+2218h] [bp-4h]@8 int v19; // [sp+221Ch] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v9 = (unsigned int)&v19 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v3 + 4) ) { sprintf(&v16, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_FREESTAT_INIT_REQ, Session Is Null", v9); sub_446350(1, "Msg", "%s", &v16); return 0; } if ( *(_DWORD *)v3 ) { sub_44E180((int)&v12); v18 = 0; sub_44E310((int)&v12, 0x111Bu, 6u, 0); v13 = *(_DWORD *)(a2 + 2); v5 = 0; v10 = 0; while ( 1 ) { v6 = 0; v11 = *(_BYTE *)((unsigned __int8)v5 + a2 + 7); if ( v11 ) break; LABEL_13: ++v5; v10 = v5; if ( (unsigned __int8)v5 >= 5u ) { v14 = 12780; v8 = (int)&v12; goto LABEL_15; } } while ( sub_458340(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), v10) ) { ++v6; if ( v6 >= v11 ) { v5 = v10; goto LABEL_13; } } sprintf( &v15, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_FREESTAT_INIT_REQ, FreeStat init fail, FreeStat : = ", (unsigned __int8)v10, v9); sub_446350(1, "Msg", "%s", &v15); v14 = 12781; v8 = (int)&v12; LABEL_15: v7 = sub_43BFB0(*(_DWORD *)(v3 + 4), v8); v18 = -1; nullsub_1(&v12); result = v7; } else { sprintf(&v16, "ERROR - CPFsCharacter::fc_NC_CHAR_TUTORIAL_FREESTAT_INIT_REQ, Session Worker Is Null", v9); sub_446350(1, "Msg", "%s", &v16); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00429D50) -------------------------------------------------------- signed int __thiscall sub_429D50(int this, int a2, int a3) { signed int result; // eax@1 __int16 v4; // cx@2 __int16 v5; // dx@2 int v6; // edx@2 int v7; // ecx@2 int v8; // eax@4 int v9; // eax@6 int v10; // eax@7 int v11; // edx@10 __int16 v12; // cx@10 char v13; // al@10 int v14; // ecx@10 __int16 v15; // ax@10 int v16; // edx@10 int v17; // edx@10 int v18; // eax@10 signed int v19; // esi@13 int v20; // [sp-14h] [bp-4298h]@3 unsigned int v21; // [sp-10h] [bp-4294h]@1 int v22; // [sp+0h] [bp-4284h]@1 char v23; // [sp+4h] [bp-4280h]@10 int v24; // [sp+9h] [bp-427Bh]@10 __int16 v25; // [sp+Dh] [bp-4277h]@10 __int16 v26; // [sp+Fh] [bp-4275h]@10 __int16 v27; // [sp+11h] [bp-4273h]@10 char v28; // [sp+13h] [bp-4271h]@10 int v29; // [sp+14h] [bp-4270h]@10 int v30; // [sp+18h] [bp-426Ch]@10 __int16 v31; // [sp+1Ch] [bp-4268h]@10 char v32; // [sp+1Eh] [bp-4266h]@10 int v33; // [sp+1Fh] [bp-4265h]@10 int v34; // [sp+23h] [bp-4261h]@10 char v35; // [sp+2008h] [bp-227Ch]@2 __int16 v36; // [sp+200Dh] [bp-2277h]@2 int v37; // [sp+200Fh] [bp-2275h]@2 __int16 v38; // [sp+2013h] [bp-2271h]@2 __int16 v39; // [sp+2015h] [bp-226Fh]@2 char v40; // [sp+2017h] [bp-226Dh]@2 char v41; // [sp+2018h] [bp-226Ch]@2 __int16 v42; // [sp+2019h] [bp-226Bh]@2 char v43; // [sp+201Bh] [bp-2269h]@2 char v44; // [sp+207Fh] [bp-2205h]@2 int v45; // [sp+400Ch] [bp-278h]@2 char v46; // [sp+4074h] [bp-210h]@9 char v47; // [sp+4174h] [bp-110h]@3 unsigned int v48; // [sp+4274h] [bp-10h]@1 int v49; // [sp+4280h] [bp-4h]@2 int v50; // [sp+4284h] [bp+0h]@1 v48 = (unsigned int)&v50 ^ __security_cookie; v21 = (unsigned int)&v50 ^ __security_cookie; v22 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v35); v49 = 0; sub_44E310((int)&v35, 0x34ADu, 0x73u, 0); v4 = *(_WORD *)(a2 + 8); v5 = *(_WORD *)(a2 + 2); v37 = *(_DWORD *)(a2 + 4); v38 = v4; v40 = *(_BYTE *)(a2 + 10); v36 = v5; LOBYTE(v5) = *(_BYTE *)(a2 + 132); v39 = 12848; v42 = *(_WORD *)(a2 + 130); v41 = v5; v6 = *(_DWORD *)(a2 + 126); memcpy(&v43, (const void *)(a2 + 134), 0x64u); v7 = *(_DWORD *)(a2 + 122); v44 = *(_BYTE *)(a2 + 234); if ( sub_4669C0((void *)(*(_DWORD *)v22 + 4720), *(_DWORD *)v22 + 4684, v7, v6, &v45) ) { LOWORD(v8) = sub_468E40( *(_DWORD *)v22 + 4684, *(_DWORD *)(a2 + 122), *(_DWORD *)(a2 + 126), *(_WORD *)(a2 + 130), a2 + 134); if ( v8 ) { sprintf( &v47, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MOVER_UPGRADE_REQ Mover Set Attr Error - ( Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 122), *(_DWORD *)(a2 + 126), *(_WORD *)(a2 + 130), v8, v21); sub_446350(1, "Msg", "%s", &v47); v39 = 12850; v20 = (int)&v35; } else { LOWORD(v9) = sub_466950(*(_DWORD *)v22 + 4684, *(_DWORD *)(a2 + 11), *(_DWORD *)(a2 + 15)); if ( v9 ) { LOWORD(v10) = sub_468E40( *(_DWORD *)v22 + 4684, *(_DWORD *)(a2 + 122), *(_DWORD *)(a2 + 126), *(_WORD *)(a2 + 130), (int)&v45); if ( v10 ) { sprintf( &v47, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MOVER_UPGRADE_REQ Attr Recovery Error - ( MainKey=%I64d, SubKey=%I64d, Error=%d )", *(_DWORD *)(a2 + 122), *(_DWORD *)(a2 + 126), *(_DWORD *)(a2 + 11), *(_DWORD *)(a2 + 15), v10, v21); sub_446350(1, "Msg", "%s", &v47); v39 = 12852; v20 = (int)&v35; } else { sprintf( &v46, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MOVER_UPGRADE_REQ Mover Item Delete Error - ( Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 11), *(_DWORD *)(a2 + 15), 0, v21); sub_446350(1, "Msg", "%s", &v46); v39 = 12851; v20 = (int)&v35; } } else { sub_44E180((int)&v23); LOBYTE(v49) = 1; sub_44E310((int)&v23, 0x79Au, 0x1Eu, 0); v11 = *(_DWORD *)(a2 + 4); v12 = *(_WORD *)(a2 + 38); v25 = *(_WORD *)(a2 + 151); v13 = *(_BYTE *)(a2 + 150); v26 = v12; v14 = *(_DWORD *)(a2 + 122); v24 = v11; LOWORD(v11) = *(_WORD *)(a2 + 130); v28 = v13; v15 = *(_WORD *)(a2 + 19); v29 = v14; LOBYTE(v14) = *(_BYTE *)(a2 + 37); v27 = v11; v16 = *(_DWORD *)(a2 + 126); v32 = v14; v30 = v16; v17 = *(_DWORD *)(a2 + 11); v31 = v15; v18 = *(_DWORD *)(a2 + 15); v33 = v17; v34 = v18; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v23); LOBYTE(v49) = 0; nullsub_1(&v23); v20 = (int)&v35; } } } else { sprintf( &v47, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MOVER_UPGRADE_REQ Mover Get Attr Error - ( Key=%I64d )", *(_DWORD *)(a2 + 122), *(_DWORD *)(a2 + 126), v21); sub_446350(1, "Msg", "%s", &v47); v39 = 12849; v20 = (int)&v35; } v19 = sub_43BFB0(*(_DWORD *)(v22 + 4), v20); v49 = -1; nullsub_1(&v35); result = v19; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042A110) -------------------------------------------------------- signed int __thiscall sub_42A110(int this, int a2, int a3) { signed int result; // eax@1 __int16 v4; // dx@2 int v5; // eax@2 int v6; // edx@2 int v7; // eax@2 int v8; // edx@2 int v9; // ecx@2 unsigned int v10; // eax@2 int v11; // eax@2 int v12; // eax@2 int v13; // eax@4 bool v14; // zf@4 int v15; // eax@4 int v16; // eax@5 char *v17; // eax@6 int v18; // eax@9 int v19; // eax@10 int v20; // eax@13 __int16 v21; // dx@13 __int16 v22; // cx@13 int v23; // ecx@13 int v24; // edx@13 void *v25; // ecx@13 int v26; // eax@13 __int16 v27; // dx@15 char v28; // al@15 int v29; // edx@15 int v30; // eax@15 signed int v31; // esi@18 int v32; // [sp-14h] [bp-4248h]@3 unsigned int v33; // [sp-10h] [bp-4244h]@1 int v34; // [sp+0h] [bp-4234h]@1 char v35; // [sp+4h] [bp-4230h]@13 int v36; // [sp+9h] [bp-422Bh]@13 __int16 v37; // [sp+Dh] [bp-4227h]@13 __int16 v38; // [sp+Fh] [bp-4225h]@13 __int16 v39; // [sp+11h] [bp-4223h]@13 char v40; // [sp+13h] [bp-4221h]@13 int v41; // [sp+14h] [bp-4220h]@13 int v42; // [sp+18h] [bp-421Ch]@13 char v43; // [sp+1Ch] [bp-4218h]@13 __int16 v44; // [sp+1Dh] [bp-4217h]@13 char v45; // [sp+1Fh] [bp-4215h]@13 int v46; // [sp+20h] [bp-4214h]@13 int v47; // [sp+24h] [bp-4210h]@13 char v48; // [sp+2008h] [bp-222Ch]@2 __int16 v49; // [sp+200Dh] [bp-2227h]@2 int v50; // [sp+200Fh] [bp-2225h]@2 __int16 v51; // [sp+2013h] [bp-2221h]@2 __int16 v52; // [sp+2015h] [bp-221Fh]@2 char v53; // [sp+2017h] [bp-221Dh]@2 __int16 v54; // [sp+2018h] [bp-221Ch]@2 char v55; // [sp+201Ah] [bp-221Ah]@2 char v56; // [sp+207Eh] [bp-21B6h]@2 int rgbValue; // [sp+400Ch] [bp-228h]@2 int v58; // [sp+4010h] [bp-224h]@2 int v59; // [sp+4014h] [bp-220h]@2 char v60; // [sp+4018h] [bp-21Ch]@2 __int16 v61; // [sp+401Ah] [bp-21Ah]@2 int v62; // [sp+401Ch] [bp-218h]@2 int v63; // [sp+4020h] [bp-214h]@2 char v64; // [sp+4024h] [bp-210h]@8 char v65; // [sp+4124h] [bp-110h]@3 unsigned int v66; // [sp+4224h] [bp-10h]@1 int v67; // [sp+4230h] [bp-4h]@2 int v68; // [sp+4234h] [bp+0h]@1 v66 = (unsigned int)&v68 ^ __security_cookie; v33 = (unsigned int)&v68 ^ __security_cookie; v34 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v48); v67 = 0; sub_44E310((int)&v48, 0x34AFu, 0x72u, 0); v4 = *(_WORD *)(a2 + 2); v5 = *(_DWORD *)(a2 + 4); v51 = *(_WORD *)(a2 + 8); v49 = v4; v53 = *(_BYTE *)(a2 + 242); v6 = *(_WORD *)(a2 + 240); v50 = v5; v52 = 12856; v54 = v6; v59 = v5; v7 = v6; v8 = *(_DWORD *)(a2 + 236); memcpy(&v55, (const void *)(a2 + 244), 0x64u); v9 = *(_DWORD *)(a2 + 232); v62 = v7; v10 = *(_WORD *)(a2 + 242); rgbValue = v9; v60 = (v10 >> 10) & 0x3F; v56 = *(_BYTE *)(a2 + 344); v61 = v10 & 0x3FF; v11 = *(_DWORD *)v34; v58 = v8; v63 = 0; LOWORD(v12) = sub_46A440(v11 + 4684, &rgbValue, a2 + 244, 0); if ( v12 ) { sprintf( &v65, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MOVER_RAREMOVER_REQ Rare Mover Item Create Error - ( Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 232), *(_DWORD *)(a2 + 236), v12, v33); sub_446350(1, "Msg", "%s", &v65); v52 = 12857; v32 = (int)&v48; } else { LOWORD(v13) = sub_466950(*(_DWORD *)v34 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); v14 = v13 == 0; v15 = *(_DWORD *)v34; if ( v14 ) { LOWORD(v18) = sub_466950(v15 + 4684, *(_DWORD *)(a2 + 121), *(_DWORD *)(a2 + 125)); if ( !v18 ) { sub_44E180((int)&v35); LOBYTE(v67) = 1; sub_44E310((int)&v35, 0x79Bu, 0x1Fu, 0); v20 = *(_DWORD *)(a2 + 4); v21 = *(_WORD *)(a2 + 240); v37 = *(_WORD *)(a2 + 261); v41 = *(_DWORD *)(a2 + 232); v22 = *(_WORD *)(a2 + 18); v36 = v20; LOBYTE(v20) = *(_BYTE *)(a2 + 260); v44 = v22; v23 = *(_DWORD *)(a2 + 14); v39 = v21; v24 = *(_DWORD *)(a2 + 236); v40 = v20; LOWORD(v20) = *(_WORD *)(a2 + 37); v47 = v23; v25 = (void *)dword_6E9EC0; v42 = v24; LOBYTE(v24) = *(_BYTE *)(a2 + 36); v38 = v20; v26 = *(_DWORD *)(a2 + 10); v43 = 0; v45 = v24; v46 = v26; if ( dword_6E9EC0 ) { sub_44B7E0((void *)dword_6E9EC0, (int)&v35); v25 = (void *)dword_6E9EC0; } v27 = *(_WORD *)(a2 + 129); v38 = *(_WORD *)(a2 + 148); v28 = *(_BYTE *)(a2 + 147); v44 = v27; v29 = *(_DWORD *)(a2 + 121); v45 = v28; v30 = *(_DWORD *)(a2 + 125); v43 = 1; v46 = v29; v47 = v30; if ( v25 ) sub_44B7E0(v25, (int)&v35); LOBYTE(v67) = 0; nullsub_1(&v35); v32 = (int)&v48; goto LABEL_18; } LOWORD(v19) = sub_466950(*(_DWORD *)v34 + 4684, *(_DWORD *)(a2 + 232), *(_DWORD *)(a2 + 236)); if ( !v19 ) { sprintf( &v65, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MOVER_RAREMOVER_REQ Sub Mover Item Delete Error - ( Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 121), *(_DWORD *)(a2 + 125), 0, v33); sub_446350(1, "Msg", "%s", &v65); v52 = 12858; v32 = (int)&v48; goto LABEL_18; } sprintf( &v64, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MOVER_RAREMOVER_REQ Sub Mover Item Delete Recovery Error - ( Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 232), *(_DWORD *)(a2 + 236), v19, v33); v17 = &v64; } else { LOWORD(v16) = sub_466950(v15 + 4684, *(_DWORD *)(a2 + 232), *(_DWORD *)(a2 + 236)); if ( !v16 ) { sprintf( &v64, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MOVER_RAREMOVER_REQ Main Mover Item Delete Error - ( Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), 0, v33); sub_446350(1, "Msg", "%s", &v64); v52 = 12858; v32 = (int)&v48; goto LABEL_18; } sprintf( &v65, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MOVER_RAREMOVER_REQ Main Mover Item Delete Recovery Error - ( Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 232), *(_DWORD *)(a2 + 236), v16, v33); v17 = &v65; } sub_446350(1, "Msg", "%s", v17); v52 = 12859; v32 = (int)&v48; } LABEL_18: v31 = sub_43BFB0(*(_DWORD *)(v34 + 4), v32); v67 = -1; nullsub_1(&v48); result = v31; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042A5B0) -------------------------------------------------------- signed int __thiscall sub_42A5B0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 __int16 v6; // dx@2 int v7; // ecx@2 signed __int16 v8; // dx@4 int v9; // ecx@5 signed int v10; // eax@5 unsigned int v11; // eax@8 int v12; // eax@12 int v13; // ecx@13 int v14; // edi@14 signed int v15; // ebx@14 int v16; // eax@15 signed int v17; // edi@18 int v18; // edx@19 unsigned int v19; // ecx@19 int v20; // eax@22 int v21; // eax@24 __int16 v22; // dx@24 int v23; // ecx@24 int v24; // eax@24 signed int v25; // ebx@26 int v26; // edi@27 int v27; // ecx@28 __int16 v28; // dx@28 int v29; // eax@28 int v30; // edx@31 __int16 v31; // ax@31 int v32; // eax@31 int v33; // eax@34 int v34; // edx@34 __int16 v35; // cx@34 signed int v36; // ebx@37 int v37; // edi@38 int v38; // eax@39 int v39; // edx@39 int v40; // ecx@42 signed int v41; // esi@44 int v42; // [sp-20h] [bp-41CCh]@20 void *v43; // [sp-1Ch] [bp-41C8h]@20 int v44; // [sp-18h] [bp-41C4h]@20 int v45; // [sp-14h] [bp-41C0h]@20 int v46; // [sp-14h] [bp-41C0h]@42 unsigned int v47; // [sp-10h] [bp-41BCh]@1 char v48; // [sp+0h] [bp-41ACh]@24 unsigned int v49; // [sp+4h] [bp-41A8h]@6 int v50; // [sp+8h] [bp-41A4h]@6 int v51; // [sp+Ch] [bp-41A0h]@24 int v52; // [sp+10h] [bp-419Ch]@1 char v53; // [sp+14h] [bp-4198h]@2 __int16 v54; // [sp+19h] [bp-4193h]@2 int v55; // [sp+1Bh] [bp-4191h]@2 __int16 v56; // [sp+1Fh] [bp-418Dh]@2 __int16 v57; // [sp+21h] [bp-418Bh]@2 char v58; // [sp+2018h] [bp-2194h]@24 int v59; // [sp+201Dh] [bp-218Fh]@24 int v60; // [sp+2021h] [bp-218Bh]@24 int v61; // [sp+2025h] [bp-2187h]@24 int v62; // [sp+2029h] [bp-2183h]@24 int v63; // [sp+202Dh] [bp-217Fh]@24 __int16 v64; // [sp+2031h] [bp-217Bh]@24 int v65; // [sp+2033h] [bp-2179h]@24 int v66; // [sp+401Ch] [bp-190h]@3 int rgbValue; // [sp+4084h] [bp-128h]@19 int v68; // [sp+4088h] [bp-124h]@19 int v69; // [sp+408Ch] [bp-120h]@19 char v70; // [sp+4090h] [bp-11Ch]@19 __int16 v71; // [sp+4092h] [bp-11Ah]@19 int v72; // [sp+4094h] [bp-118h]@19 int v73; // [sp+4098h] [bp-114h]@19 char v74; // [sp+409Ch] [bp-110h]@4 unsigned int v75; // [sp+419Ch] [bp-10h]@1 int v76; // [sp+41A8h] [bp-4h]@2 int v77; // [sp+41ACh] [bp+0h]@1 v75 = (unsigned int)&v77 ^ __security_cookie; v47 = (unsigned int)&v77 ^ __security_cookie; v3 = this; v52 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v53); v76 = 0; sub_44E310((int)&v53, 0x34B2u, 0xAu, 0); v5 = *(_DWORD *)(a2 + 4); v6 = *(_WORD *)(a2 + 2); v56 = *(_WORD *)(a2 + 8); v7 = *(_DWORD *)(a2 + 20) & *(_DWORD *)(a2 + 16); v55 = v5; v54 = v6; v57 = 12864; if ( v7 != -1 ) { if ( !sub_4669C0( (void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), &v66) ) { sprintf( &v74, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYALL_REQ MoneyItem Get Attr Error - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), v47); sub_446350(1, "Msg", "%s", &v74); v8 = 12867; LABEL_5: v9 = *(_DWORD *)(v3 + 4); v57 = v8; v10 = sub_43BFB0(v9, (int)&v53); v76 = -1; LABEL_44: v41 = v10; nullsub_1(&v53); return v41; } if ( !sub_4038C0(*(_WORD *)(a2 + 24), (int)&v66, (int)&v49, (int)&v50) ) { sprintf( &v74, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYALL_REQ MoneyItem Not Lot Item - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), v47); sub_446350(1, "Msg", "%s", &v74); v57 = 12868; v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v53); v76 = -1; goto LABEL_44; } v11 = *(_DWORD *)(a2 + 26); if ( v49 <= v11 ) { sprintf( &v74, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYALL_REQ Not Enough MoneyItem - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), v47); sub_446350(1, "Msg", "%s", &v74); v8 = 12868; goto LABEL_5; } if ( !sub_403C00(*(_WORD *)(a2 + 24), (int)&v66, v49 - v11) ) { sprintf( &v74, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYALL_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), v47); sub_446350(1, "Msg", "%s", &v74); v8 = 12869; goto LABEL_5; } LOWORD(v12) = sub_468E40( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), *(_WORD *)(a2 + 24), (int)&v66); if ( v12 ) { sprintf( &v74, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYALL_REQ Item Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), *(_WORD *)(a2 + 24), v12, v47); sub_446350(1, "Msg", "%s", &v74); v13 = *(_DWORD *)(v3 + 4); v57 = 12869; v10 = sub_43BFB0(v13, (int)&v53); v76 = -1; goto LABEL_44; } } v14 = a2 + 36 + 113 * *(_BYTE *)(a2 + 35); v15 = 0; v50 = a2 + 36 + 113 * *(_BYTE *)(a2 + 35); if ( *(_BYTE *)(a2 + 34) ) { do { LOWORD(v16) = sub_466950(*(_DWORD *)v52 + 4684, *(_DWORD *)v14, *(_DWORD *)(v14 + 4)); if ( v16 ) { sprintf( &v74, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYALL_REQ Item Delete Error - ( CharNo=%d, Key=%I64d, Error=%d, %d/%d)", *(_DWORD *)(a2 + 4), *(_DWORD *)v14, *(_DWORD *)(v14 + 4), v16, v15 + 1, *(_BYTE *)(a2 + 34), v47); sub_446350(1, "Msg", "%s", &v74); v57 = 12870; } ++v15; v14 += 10; } while ( v15 < *(_BYTE *)(a2 + 34) ); } v17 = 0; if ( *(_BYTE *)(a2 + 35) ) { while ( 1 ) { v18 = *(_DWORD *)(113 * v17 + a2 + 36); v69 = *(_DWORD *)(a2 + 4); v72 = *(_WORD *)(113 * v17 + a2 + 44); v68 = *(_DWORD *)(113 * v17 + a2 + 40); v19 = *(_WORD *)(113 * v17 + a2 + 46); rgbValue = v18; v70 = (v19 >> 10) & 0x3F; v71 = v19 & 0x3FF; v73 = 0; if ( v17 ) { v45 = 1; v44 = 113 * v17 + a2 + 48; v43 = &rgbValue; v42 = *(_DWORD *)v52 + 4684; } else { v45 = 0; v44 = a2 + 48; v43 = &rgbValue; v42 = *(_DWORD *)v52 + 4684; } LOWORD(v20) = sub_46A440(v42, v43, v44, v45); if ( v20 ) break; ++v17; if ( v17 >= *(_BYTE *)(a2 + 35) ) goto LABEL_24; } sprintf( &v74, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYALL_REQ Item Create Error - ( CharNo=%d, Key=%I64d, Error=%d, %d/%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(113 * v17 + a2 + 36), *(_DWORD *)(113 * v17 + a2 + 40), v20, v17 + 1, *(_BYTE *)(a2 + 35), v47); sub_446350(1, "Msg", "%s", &v74); v40 = *(_DWORD *)(v52 + 4); v57 = 12866; v46 = (int)&v53; } else { LABEL_24: sub_4038C0(*(_WORD *)(a2 + 44), a2 + 48, (int)&v51, (int)&v48); sub_44E180((int)&v58); LOBYTE(v76) = 1; sub_44E310((int)&v58, 0x79Cu, 0x1Au, 0); v21 = *(_DWORD *)(a2 + 4); v22 = *(_WORD *)(a2 + 44); LOWORD(v60) = *(_WORD *)(a2 + 10); v62 = *(_DWORD *)(a2 + 40); v23 = *(_DWORD *)(a2 + 30); v59 = v21; v24 = *(_DWORD *)(a2 + 36); v65 = v23; HIWORD(v60) = v22; v61 = v24; LOWORD(v24) = *(_WORD *)(a2 + 24); v63 = v51; v64 = v24; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v58); LOBYTE(v76) = 0; nullsub_1(&v58); v25 = 1; if ( *(_BYTE *)(a2 + 35) > 1u ) { v26 = a2 + 157; do { sub_44E180((int)&v58); LOBYTE(v76) = 2; sub_44E310((int)&v58, 0x44Fu, 0x14u, 0); v27 = *(_DWORD *)(v26 - 4); v28 = *(_WORD *)v26; v59 = *(_DWORD *)(a2 + 4); v60 = v59; v29 = *(_DWORD *)(v26 - 8); v62 = v27; v61 = v29; LOWORD(v29) = *(_WORD *)(v26 + 2); LOWORD(v63) = v28; HIWORD(v63) = v29; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v58); LOBYTE(v76) = 0; nullsub_1(&v58); ++v25; v26 += 113; } while ( v25 < *(_BYTE *)(a2 + 35) ); } sub_44E180((int)&v58); LOBYTE(v76) = 3; sub_44E310((int)&v58, 0xC814u, 0x16u, 0); v30 = *(_DWORD *)(a2 + 4); v31 = *(_WORD *)(a2 + 44); v59 = *(_DWORD *)(a2 + 12); *(int *)((char *)&v61 + 2) = v51; v64 = *(_WORD *)(a2 + 10); v60 = v30; LOWORD(v30) = *(_WORD *)(a2 + 24); LOWORD(v61) = v31; v32 = *(_DWORD *)(a2 + 30); HIWORD(v62) = v30; v63 = v32; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v58); LOBYTE(v76) = 0; nullsub_1(&v58); if ( (*(_DWORD *)(a2 + 20) & *(_DWORD *)(a2 + 16)) != -1 ) { sub_44E180((int)&v58); LOBYTE(v76) = 4; sub_44E310((int)&v58, 0x459u, 0x10u, 0); v33 = *(_DWORD *)(a2 + 20); v34 = *(_DWORD *)(a2 + 16); v59 = *(_DWORD *)(a2 + 4); v35 = *(_WORD *)(a2 + 24); v61 = v33; LOWORD(v33) = v49 - *(_WORD *)(a2 + 26); LOWORD(v62) = v35; v60 = v34; HIWORD(v62) = v33; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v58); LOBYTE(v76) = 0; nullsub_1(&v58); } v36 = 0; if ( *(_BYTE *)(a2 + 34) ) { v37 = v50; do { sub_44E180((int)&v58); LOBYTE(v76) = 5; sub_44E310((int)&v58, 0x45Au, 0xEu, 0); v38 = *(_DWORD *)(a2 + 4); v39 = *(_DWORD *)(v37 + 4); v60 = *(_DWORD *)v37; v59 = v38; LOWORD(v38) = *(_WORD *)(v37 + 8); v61 = v39; LOWORD(v62) = v38; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v58); LOBYTE(v76) = 0; nullsub_1(&v58); ++v36; v37 += 10; } while ( v36 < *(_BYTE *)(a2 + 34) ); } v46 = (int)&v53; v40 = *(_DWORD *)(v52 + 4); } v10 = sub_43BFB0(v40, v46); v76 = -1; goto LABEL_44; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042AD90) -------------------------------------------------------- signed int __thiscall sub_42AD90(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // eax@2 __int16 v6; // dx@2 int v7; // ecx@2 int v8; // ecx@4 signed int v9; // eax@4 unsigned int v10; // eax@7 __int16 v11; // di@7 int v12; // eax@11 bool v13; // zf@14 int v14; // edi@15 int v15; // eax@16 int v16; // edx@18 int v17; // eax@26 __int16 v18; // dx@28 __int16 v19; // ax@28 __int16 v20; // cx@28 int v21; // edx@28 int v22; // eax@28 int v23; // edx@28 int v24; // edx@30 __int16 v25; // ax@30 int v26; // eax@30 __int16 v27; // di@33 int v28; // edx@33 int v29; // eax@33 int v30; // edi@37 int v31; // eax@38 int v32; // edx@38 unsigned int v33; // ecx@40 signed int v34; // esi@43 int v35; // [sp-14h] [bp-4204h]@8 unsigned int v36; // [sp-10h] [bp-4200h]@1 int v37; // [sp+0h] [bp-41F0h]@5 unsigned int v38; // [sp+4h] [bp-41ECh]@5 char v39; // [sp+8h] [bp-41E8h]@2 __int16 v40; // [sp+Dh] [bp-41E3h]@2 int v41; // [sp+Fh] [bp-41E1h]@2 __int16 v42; // [sp+13h] [bp-41DDh]@2 __int16 v43; // [sp+15h] [bp-41DBh]@2 char v44; // [sp+200Ch] [bp-21E4h]@28 int v45; // [sp+2011h] [bp-21DFh]@28 int v46; // [sp+2015h] [bp-21DBh]@28 int v47; // [sp+2019h] [bp-21D7h]@28 int v48; // [sp+201Dh] [bp-21D3h]@28 int v49; // [sp+2021h] [bp-21CFh]@28 __int16 v50; // [sp+2025h] [bp-21CBh]@28 int v51; // [sp+2027h] [bp-21C9h]@28 int v52; // [sp+4010h] [bp-1E0h]@3 int v53; // [sp+4078h] [bp-178h]@20 char v54; // [sp+40E0h] [bp-110h]@4 unsigned int v55; // [sp+41E0h] [bp-10h]@1 int v56; // [sp+41ECh] [bp-4h]@2 int v57; // [sp+41F0h] [bp+0h]@1 v55 = (unsigned int)&v57 ^ __security_cookie; v36 = (unsigned int)&v57 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v39); v56 = 0; sub_44E310((int)&v39, 0x34B2u, 0xAu, 0); v5 = *(_DWORD *)(a2 + 4); v6 = *(_WORD *)(a2 + 2); v42 = *(_WORD *)(a2 + 8); v7 = *(_DWORD *)(a2 + 38) & *(_DWORD *)(a2 + 34); v41 = v5; v40 = v6; v43 = 12864; if ( v7 == -1 ) { v11 = v38; } else { if ( !sub_4669C0( (void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 34), *(_DWORD *)(a2 + 38), &v52) ) { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ MoneyItem Get Attr Error - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 34), *(_DWORD *)(a2 + 38), v36); sub_446350(1, "Msg", "%s", &v54); v8 = *(_DWORD *)(v3 + 4); v43 = 12867; v9 = sub_43BFB0(v8, (int)&v39); v56 = -1; LABEL_43: v34 = v9; nullsub_1(&v39); return v34; } if ( !sub_4038C0(*(_WORD *)(a2 + 42), (int)&v52, (int)&v38, (int)&v37) ) { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ MoneyItem Not Lot Item - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 34), *(_DWORD *)(a2 + 38), v36); sub_446350(1, "Msg", "%s", &v54); v43 = 12868; v9 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v39); v56 = -1; goto LABEL_43; } v10 = *(_DWORD *)(a2 + 44); v11 = v38; if ( v38 <= v10 ) { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ Not Enough MoneyItem - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 34), *(_DWORD *)(a2 + 38), v36); sub_446350(1, "Msg", "%s", &v54); v43 = 12868; v35 = (int)&v39; LABEL_42: v9 = sub_43BFB0(*(_DWORD *)(v3 + 4), v35); v56 = -1; goto LABEL_43; } if ( !sub_403C00(*(_WORD *)(a2 + 42), (int)&v52, v38 - v10) ) { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 34), *(_DWORD *)(a2 + 38), v36); sub_446350(1, "Msg", "%s", &v54); v43 = 12869; v35 = (int)&v39; goto LABEL_42; } LOWORD(v12) = sub_468E40( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 34), *(_DWORD *)(a2 + 38), *(_WORD *)(a2 + 42), (int)&v52); if ( v12 ) { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ Item Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 34), *(_DWORD *)(a2 + 38), *(_WORD *)(a2 + 42), v12, v36); sub_446350(1, "Msg", "%s", &v54); v43 = 12869; v35 = (int)&v39; goto LABEL_42; } } v13 = *(_BYTE *)(a2 + 48) == 0; v37 = 0; if ( !v13 ) { v14 = a2 + 49; do { LOWORD(v15) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)v14, *(_DWORD *)(v14 + 4)); if ( v15 ) { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ Item Delete Error - ( CharNo=%d, Key=%I64d, Error=%d, %d/%d)", *(_DWORD *)(a2 + 4), *(_DWORD *)v14, *(_DWORD *)(v14 + 4), v15, v37 + 1, *(_BYTE *)(a2 + 48), v36); sub_446350(1, "Msg", "%s", &v54); v43 = 12870; } v16 = *(_BYTE *)(a2 + 48); v14 += 10; ++v37; } while ( v37 < v16 ); v11 = v38; } if ( sub_4669C0( (void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), &v53) ) { if ( !sub_4038C0(*(_WORD *)(a2 + 24), (int)&v53, (int)&v38, (int)&v37) ) { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), v36); sub_446350(1, "Msg", "%s", &v54); v43 = 12868; v35 = (int)&v39; goto LABEL_42; } if ( sub_403C00(*(_WORD *)(a2 + 24), (int)&v53, v38 + *(_DWORD *)(a2 + 26)) ) { LOWORD(v17) = sub_468E40( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), *(_WORD *)(a2 + 24), (int)&v53); if ( v17 ) { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ Item Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d, Addlot=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), *(_WORD *)(a2 + 24), v17, *(_DWORD *)(a2 + 26), v36); sub_446350(1, "Msg", "%s", &v54); v43 = 12869; v35 = (int)&v39; goto LABEL_42; } sub_44E180((int)&v44); LOBYTE(v56) = 1; sub_44E310((int)&v44, 0x79Cu, 0x1Au, 0); v18 = *(_WORD *)(a2 + 10); v19 = *(_WORD *)(a2 + 24); v45 = *(_DWORD *)(a2 + 4); v47 = *(_DWORD *)(a2 + 16); v20 = *(_WORD *)(a2 + 42); LOWORD(v46) = v18; v21 = *(_DWORD *)(a2 + 20); v50 = v20; HIWORD(v46) = v19; v22 = *(_DWORD *)(a2 + 26); v48 = v21; v23 = *(_DWORD *)(a2 + 30); v49 = v22; v51 = v23; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v44); LOBYTE(v56) = 0; nullsub_1(&v44); sub_44E180((int)&v44); LOBYTE(v56) = 2; sub_44E310((int)&v44, 0xC814u, 0x16u, 0); v24 = *(_DWORD *)(a2 + 4); v25 = *(_WORD *)(a2 + 24); v45 = *(_DWORD *)(a2 + 12); *(int *)((char *)&v47 + 2) = *(_DWORD *)(a2 + 26); v50 = *(_WORD *)(a2 + 10); v46 = v24; LOWORD(v24) = *(_WORD *)(a2 + 42); LOWORD(v47) = v25; v26 = *(_DWORD *)(a2 + 30); HIWORD(v48) = v24; v49 = v26; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v44); LOBYTE(v56) = 0; nullsub_1(&v44); if ( (*(_DWORD *)(a2 + 38) & *(_DWORD *)(a2 + 34)) != -1 ) { sub_44E180((int)&v44); LOBYTE(v56) = 3; sub_44E310((int)&v44, 0x459u, 0x10u, 0); v27 = v11 - *(_WORD *)(a2 + 44); v28 = *(_DWORD *)(a2 + 34); v29 = *(_DWORD *)(a2 + 38); v45 = *(_DWORD *)(a2 + 4); LOWORD(v48) = *(_WORD *)(a2 + 42); v46 = v28; v47 = v29; HIWORD(v48) = v27; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v44); LOBYTE(v56) = 0; nullsub_1(&v44); } v13 = *(_BYTE *)(a2 + 48) == 0; v38 = 0; if ( !v13 ) { v30 = a2 + 57; do { sub_44E180((int)&v44); LOBYTE(v56) = 4; sub_44E310((int)&v44, 0x45Au, 0xEu, 0); v31 = *(_DWORD *)(a2 + 4); v32 = *(_DWORD *)(v30 - 4); v46 = *(_DWORD *)(v30 - 8); v45 = v31; LOWORD(v31) = *(_WORD *)v30; v47 = v32; LOWORD(v48) = v31; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v44); LOBYTE(v56) = 0; nullsub_1(&v44); v33 = *(_BYTE *)(a2 + 48); v30 += 10; ++v38; } while ( (signed int)v38 < (signed int)v33 ); } } else { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), v36); sub_446350(1, "Msg", "%s", &v54); v43 = 12869; } } else { sprintf( &v54, "ERROR - CPFsCharacter::fc_NC_ITEMDB_ITEMMONEY_BUYLOT_REQ Item Get Attr Error - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), v36); sub_446350(1, "Msg", "%s", &v54); v43 = 12867; } v35 = (int)&v39; goto LABEL_42; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042B590) -------------------------------------------------------- signed int __thiscall sub_42B590(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@5 char v5; // dl@8 int v6; // ecx@8 int v7; // eax@8 int v8; // ecx@8 int v9; // edx@8 int v10; // eax@8 int v11; // ecx@8 __int16 v12; // cx@9 signed int v13; // ebx@9 signed __int16 v14; // dx@11 signed int v15; // esi@14 int v16; // [sp-14h] [bp-2248h]@9 unsigned int v17; // [sp-10h] [bp-2244h]@1 char v18; // [sp+0h] [bp-2234h]@8 __int16 v19; // [sp+5h] [bp-222Fh]@9 __int16 v20; // [sp+7h] [bp-222Dh]@9 int v21; // [sp+9h] [bp-222Bh]@9 int rgbValue; // [sp+2004h] [bp-230h]@8 int v23; // [sp+2008h] [bp-22Ch]@8 int v24; // [sp+200Ch] [bp-228h]@8 int v25; // [sp+2010h] [bp-224h]@8 int v26; // [sp+2014h] [bp-220h]@8 char v27; // [sp+2018h] [bp-21Ch]@8 char v28; // [sp+2019h] [bp-21Bh]@8 char v29; // [sp+201Ah] [bp-21Ah]@8 int v30; // [sp+201Ch] [bp-218h]@10 char v31; // [sp+2024h] [bp-210h]@11 char v32; // [sp+2124h] [bp-110h]@4 unsigned int v33; // [sp+2224h] [bp-10h]@1 int v34; // [sp+2230h] [bp-4h]@8 int v35; // [sp+2234h] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v17 = (unsigned int)&v35 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v3 + 4) ) { sprintf(&v32, "ERROR - CPFsCharacter::fc_NC_PET_CREATE_DB_REQ, Error=%d", 12737, v17); sub_446350(1, "Msg", "%s", &v32); return 0; } if ( *(_DWORD *)v3 ) { sub_44E180((int)&v18); v34 = 0; sub_44E310((int)&v18, 0xD40Eu, 8u, 0); v5 = *(_BYTE *)(a2 + 24); v6 = *(_DWORD *)(a2 + 4); v29 = *(_BYTE *)(a2 + 25); v23 = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v7 = *(_DWORD *)(a2 + 16); rgbValue = v6; v8 = *(_DWORD *)(a2 + 8); v28 = v5; v9 = *(_DWORD *)(a2 + 12); v25 = v7; v10 = *(_DWORD *)v3; v23 = v8; v11 = *(_DWORD *)(a2 + 20); v24 = v9; v26 = v11; v27 = 0; if ( sub_465B00(v10 + 4684, &rgbValue) ) { v13 = -1; if ( v30 == -1 ) { sprintf(&v31, "ERROR - CPFsCharacter::fc_NC_PET_CREATE_DB_REQ, Error=%d", 13312, v17); sub_446350(1, "Msg", "%s", &v31); v14 = 13312; v21 = -1; } else { v14 = 13320; v21 = v30; } v16 = (int)&v18; v20 = *(_WORD *)(a2 + 2); v19 = v14; } else { sprintf(&v32, "ERROR - fc_NC_PET_CREATE_DB_REQ, (nMasterRegNum=%d)", *(_DWORD *)(a2 + 4), v17); sub_446350(1, "Msg", "%s", &v32); v12 = *(_WORD *)(a2 + 2); v13 = -1; v19 = 13321; v20 = v12; v21 = -1; v16 = (int)&v18; } v15 = sub_43BFB0(*(_DWORD *)(v3 + 4), v16); v34 = v13; nullsub_1(&v18); result = v15; } else { sprintf(&v32, "ERROR - CPFsCharacter::fc_NC_PET_CREATE_DB_REQ, Error=%d", 12736, v17); sub_446350(1, "Msg", "%s", &v32); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0042B800) -------------------------------------------------------- signed int __thiscall sub_42B800(int this, int a2, int a3) { int v3; // edi@1 int v5; // edi@6 char v6; // cl@10 const char *v7; // [sp-8h] [bp-120h]@9 signed int v8; // [sp-4h] [bp-11Ch]@9 int rgbValue; // [sp+8h] [bp-110h]@10 char v10; // [sp+Ch] [bp-10Ch]@10 char v11; // [sp+Dh] [bp-10Bh]@10 char v12; // [sp+14h] [bp-104h]@4 unsigned int v13; // [sp+114h] [bp-4h]@1 int v14; // [sp+118h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v3 + 4) ) { sprintf(&v12, "ERROR - CPFsCharacter::fc_NC_PET_SET_TENDENCY_DB_REQ, Error=%d", 12737); sub_446350(1, "Msg", "%s", &v12); return 0; } v5 = *(_DWORD *)v3; if ( !v5 ) { sprintf(&v12, "ERROR - CPFsCharacter::fc_NC_PET_SET_TENDENCY_DB_REQ, Error=%d", 12736); sub_446350(1, "Msg", "%s", &v12); return 0; } if ( *(_DWORD *)(a2 + 4) == -1 ) { v8 = 13312; v7 = "ERROR - CPFsCharacter::fc_NC_PET_SET_TENDENCY_DB_REQ, Error=%d"; LABEL_12: sprintf(&v12, v7, v8); sub_446350(1, "Msg", "%s", &v12); return 1; } v6 = *(_BYTE *)(a2 + 9); rgbValue = *(_DWORD *)(a2 + 4); v10 = *(_BYTE *)(a2 + 8); v11 = v6; if ( !sub_465DE0(v5 + 4684, &rgbValue) ) { v8 = *(_DWORD *)(a2 + 4); v7 = "ERROR - fc_NC_PET_SET_TENDENCY_DB_REQ, (nPetRegNum=%d)"; goto LABEL_12; } return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0042B950) -------------------------------------------------------- signed int __thiscall sub_42B950(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@5 int v5; // edx@10 int v6; // ecx@10 int v7; // eax@10 int v8; // ecx@10 __int16 v9; // cx@11 int v10; // edx@11 __int16 v11; // ax@12 int v12; // ecx@13 signed int v13; // esi@13 int v14; // [sp-10h] [bp-2240h]@11 unsigned int v15; // [sp-Ch] [bp-223Ch]@1 char v16; // [sp+0h] [bp-2230h]@10 __int16 v17; // [sp+5h] [bp-222Bh]@11 __int16 v18; // [sp+7h] [bp-2229h]@11 int v19; // [sp+9h] [bp-2227h]@13 int rgbValue; // [sp+2004h] [bp-22Ch]@10 int v21; // [sp+2008h] [bp-228h]@10 int v22; // [sp+200Ch] [bp-224h]@10 int v23; // [sp+2010h] [bp-220h]@10 int v24; // [sp+2014h] [bp-21Ch]@10 char v25; // [sp+2018h] [bp-218h]@10 char v26; // [sp+2020h] [bp-210h]@11 char v27; // [sp+2120h] [bp-110h]@4 unsigned int v28; // [sp+2220h] [bp-10h]@1 int v29; // [sp+222Ch] [bp-4h]@10 int v30; // [sp+2230h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v15 = (unsigned int)&v30 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v3 + 4) ) { sprintf(&v27, "ERROR - CPFsCharacter::fc_NC_PET_SET_NAME_DB_REQ, Error=%d", 12737, v15); sub_446350(1, "Msg", "%s", &v27); return 0; } if ( *(_DWORD *)v3 ) { if ( *(_DWORD *)(a2 + 4) == -1 ) { sprintf(&v27, "ERROR - CPFsCharacter::fc_NC_PET_SET_NAME_DB_REQ, Error=%d", 13312, v15); sub_446350(1, "Msg", "%s", &v27); result = 1; } else { sub_44E180((int)&v16); v29 = 0; sub_44E310((int)&v16, 0xD404u, 8u, 0); v5 = *(_DWORD *)(a2 + 12); v6 = *(_DWORD *)(a2 + 8); rgbValue = *(_DWORD *)(a2 + 4); v21 = 0; v22 = 0; v23 = 0; v24 = 0; v25 = 0; v23 = *(_DWORD *)(a2 + 16); v7 = *(_DWORD *)v3; v21 = v6; v8 = *(_DWORD *)(a2 + 20); v22 = v5; v24 = v8; v25 = 0; if ( sub_465CD0(v7 + 4684, &rgbValue) ) { v11 = *(_WORD *)(a2 + 2); v10 = rgbValue; v17 = 13336; v18 = v11; v14 = (int)&v16; } else { sprintf(&v26, "ERROR - fc_NC_PET_SET_NAME_DB_REQ, (nPetRegNum=%d)", *(_DWORD *)(a2 + 4), v15); sub_446350(1, "Msg", "%s", &v26); v9 = *(_WORD *)(a2 + 2); v10 = *(_DWORD *)(a2 + 4); v17 = 13337; v18 = v9; v14 = (int)&v16; } v12 = *(_DWORD *)(v3 + 4); v19 = v10; v13 = sub_43BFB0(v12, v14); v29 = -1; nullsub_1(&v16); result = v13; } } else { sprintf(&v27, "ERROR - CPFsCharacter::fc_NC_PET_SET_NAME_DB_REQ, Error=%d", 12736, v15); sub_446350(1, "Msg", "%s", &v27); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0042BBA0) -------------------------------------------------------- signed int __thiscall sub_42BBA0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@5 int v5; // eax@11 int v6; // ecx@12 __int16 v7; // dx@12 signed int v8; // esi@13 int v9; // [sp-10h] [bp-2244h]@11 unsigned int v10; // [sp-Ch] [bp-2240h]@1 char v11; // [sp+0h] [bp-2234h]@10 __int16 v12; // [sp+5h] [bp-222Fh]@11 __int16 v13; // [sp+7h] [bp-222Dh]@11 int v14; // [sp+9h] [bp-222Bh]@11 char v15; // [sp+Dh] [bp-2227h]@11 __int16 v16; // [sp+1Dh] [bp-2217h]@11 int rgbValue; // [sp+2004h] [bp-230h]@10 char v18[4]; // [sp+200Ch] [bp-228h]@10 int v19; // [sp+2010h] [bp-224h]@10 int v20; // [sp+2014h] [bp-220h]@10 int v21; // [sp+2018h] [bp-21Ch]@10 char v22; // [sp+201Ch] [bp-218h]@10 __int16 v23; // [sp+201Dh] [bp-217h]@12 char v24; // [sp+2024h] [bp-210h]@11 char v25; // [sp+2124h] [bp-110h]@4 unsigned int v26; // [sp+2224h] [bp-10h]@1 int v27; // [sp+2230h] [bp-4h]@10 int v28; // [sp+2234h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v10 = (unsigned int)&v28 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v3 + 4) ) { sprintf(&v25, "ERROR - CPFsCharacter::fc_NC_PET_LOAD_INFO_DB_REQ, Error=%d", 12737, v10); sub_446350(1, "Msg", "%s", &v25); return 0; } if ( *(_DWORD *)v3 ) { if ( *(_DWORD *)(a2 + 4) == -1 ) { sprintf(&v25, "ERROR - CPFsCharacter::fc_NC_PET_LOAD_INFO_DB_REQ, Error=%d", 13312, v10); sub_446350(1, "Msg", "%s", &v25); result = 1; } else { sub_44E180((int)&v11); v27 = 0; sub_44E310((int)&v11, 0xD40Cu, 0x1Au, 0); rgbValue = *(_DWORD *)(a2 + 4); *(_DWORD *)v18 = 0; v19 = 0; v20 = 0; v21 = 0; v22 = 0; if ( sub_465F10(*(_DWORD *)v3 + 4684, &rgbValue) ) { v6 = *(_DWORD *)(a2 + 4); v7 = *(_WORD *)(a2 + 2); v12 = 13344; v14 = v6; v13 = v7; sub_4029E0(&v15, v18); v16 = v23; v9 = (int)&v11; } else { sprintf(&v24, "ERROR - fc_NC_PET_LOAD_INFO_DB_REQ, (nPetRegNum=%d)", *(_DWORD *)(a2 + 4), v10); sub_446350(1, "Msg", "%s", &v24); v5 = *(_DWORD *)(a2 + 4); v13 = *(_WORD *)(a2 + 2); v12 = 13345; v14 = v5; sub_4029E0(&v15, &byte_4B4667); v16 = 0; v9 = (int)&v11; } v8 = sub_43BFB0(*(_DWORD *)(v3 + 4), v9); v27 = -1; nullsub_1(&v11); result = v8; } } else { sprintf(&v25, "ERROR - CPFsCharacter::fc_NC_PET_LOAD_INFO_DB_REQ, Error=%d", 12736, v10); sub_446350(1, "Msg", "%s", &v25); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0042BE10) -------------------------------------------------------- signed int __thiscall sub_42BE10(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@5 int v5; // ecx@10 int v6; // eax@10 signed __int16 v7; // ax@11 int v8; // ecx@13 signed int v9; // esi@13 unsigned int v10; // [sp-Ch] [bp-222Ch]@1 char v11; // [sp+0h] [bp-2220h]@10 __int16 v12; // [sp+5h] [bp-221Bh]@13 __int16 v13; // [sp+7h] [bp-2219h]@13 int rgbValue; // [sp+2004h] [bp-21Ch]@10 int v15; // [sp+2008h] [bp-218h]@10 char v16; // [sp+2010h] [bp-210h]@11 char v17; // [sp+2110h] [bp-110h]@4 unsigned int v18; // [sp+2210h] [bp-10h]@1 int v19; // [sp+221Ch] [bp-4h]@10 int v20; // [sp+2220h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v10 = (unsigned int)&v20 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v3 + 4) ) { sprintf(&v17, "ERROR - CPFsCharacter::fc_NC_PET_REMOVE_DB_REQ, Error=%d", 12737, v10); sub_446350(1, "Msg", "%s", &v17); return 0; } if ( *(_DWORD *)v3 ) { if ( *(_DWORD *)(a2 + 4) == -1 ) { sprintf(&v17, "ERROR - CPFsCharacter::fc_NC_PET_REMOVE_DB_REQ, Error=%d", 13312, v10); sub_446350(1, "Msg", "%s", &v17); result = 1; } else { sub_44E180((int)&v11); v19 = 0; sub_44E310((int)&v11, 0xD410u, 4u, 0); v5 = *(_DWORD *)(a2 + 8); rgbValue = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)v3 + 4684; v15 = v5; if ( sub_4660B0(v6, &rgbValue) ) { v7 = 13352; } else { sprintf(&v16, "ERROR - fc_NC_PET_REMOVE_DB_REQ, (nPetRegNum=%d)", *(_DWORD *)(a2 + 4), v10); sub_446350(1, "Msg", "%s", &v16); v7 = 13353; } v13 = *(_WORD *)(a2 + 2); v8 = *(_DWORD *)(v3 + 4); v12 = v7; v9 = sub_43BFB0(v8, (int)&v11); v19 = -1; nullsub_1(&v11); result = v9; } } else { sprintf(&v17, "ERROR - CPFsCharacter::fc_NC_PET_REMOVE_DB_REQ, Error=%d", 12736, v10); sub_446350(1, "Msg", "%s", &v17); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0042C000) -------------------------------------------------------- signed int __thiscall sub_42C000(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ecx@2 __int16 v6; // dx@2 int v7; // ecx@2 int v8; // edx@2 __int16 v9; // ax@2 int v10; // ecx@2 int v11; // edx@2 int v12; // eax@12 int v13; // eax@16 int v14; // eax@18 unsigned __int16 v15; // ST1C_2@20 int v16; // ST18_4@20 int v17; // ST14_4@20 int v18; // ST10_4@20 int v19; // eax@20 int v20; // edx@20 int v21; // eax@20 int v22; // ecx@20 int v23; // ecx@20 int v24; // eax@20 int v25; // edx@20 signed int v26; // esi@24 const char *v27; // [sp-20h] [bp-41ACh]@5 int v28; // [sp-1Ch] [bp-41A8h]@5 int v29; // [sp-18h] [bp-41A4h]@5 int v30; // [sp-14h] [bp-41A0h]@3 int v31; // [sp-14h] [bp-41A0h]@5 unsigned int v32; // [sp-10h] [bp-419Ch]@1 char v33; // [sp+0h] [bp-418Ch]@4 int v34; // [sp+4h] [bp-4188h]@4 unsigned __int8 v35; // [sp+Bh] [bp-4181h]@20 char v36; // [sp+Ch] [bp-4180h]@20 int v37; // [sp+11h] [bp-417Bh]@20 int v38; // [sp+15h] [bp-4177h]@20 char v39; // [sp+19h] [bp-4173h]@20 int v40; // [sp+25h] [bp-4167h]@20 int v41; // [sp+29h] [bp-4163h]@20 int v42; // [sp+2Dh] [bp-415Fh]@20 int v43; // [sp+31h] [bp-415Bh]@20 int v44; // [sp+35h] [bp-4157h]@20 int v45; // [sp+39h] [bp-4153h]@20 int v46; // [sp+3Dh] [bp-414Fh]@20 int v47; // [sp+41h] [bp-414Bh]@20 int v48; // [sp+45h] [bp-4147h]@20 int v49; // [sp+49h] [bp-4143h]@20 char v50; // [sp+2010h] [bp-217Ch]@2 __int16 v51; // [sp+2015h] [bp-2177h]@2 int v52; // [sp+2017h] [bp-2175h]@2 __int16 v53; // [sp+201Bh] [bp-2171h]@2 __int16 v54; // [sp+201Dh] [bp-216Fh]@2 int v55; // [sp+201Fh] [bp-216Dh]@2 int v56; // [sp+2023h] [bp-2169h]@2 __int16 v57; // [sp+2027h] [bp-2165h]@2 char v58; // [sp+2029h] [bp-2163h]@2 int v59; // [sp+4014h] [bp-178h]@2 char v60; // [sp+407Ch] [bp-110h]@3 unsigned int v61; // [sp+417Ch] [bp-10h]@1 int v62; // [sp+4188h] [bp-4h]@2 int v63; // [sp+418Ch] [bp+0h]@1 v61 = (unsigned int)&v63 ^ __security_cookie; v32 = (unsigned int)&v63 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v50); v62 = 0; sub_44E310((int)&v50, 0x34C2u, 0x15u, 0); v5 = *(_DWORD *)(a2 + 4); v6 = *(_WORD *)(a2 + 8); v51 = *(_WORD *)(a2 + 2); v52 = v5; v7 = *(_DWORD *)(a2 + 24); v53 = v6; v8 = *(_DWORD *)(a2 + 28); v54 = 12872; v9 = *(_WORD *)(a2 + 32); v55 = v7; LOBYTE(v7) = *(_BYTE *)(a2 + 135); v56 = v8; v58 = v7; v10 = *(_DWORD *)(a2 + 14); v11 = *(_DWORD *)(a2 + 10); v57 = v9; if ( !sub_4669C0((void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, v11, v10, &v59) ) { sprintf( &v60, "ERROR - CPFsCharacter::fc_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_REQ Stuff Get Attr Error - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v32); sub_446350(1, "Msg", "%s", &v60); v54 = 12875; v30 = (int)&v50; LABEL_24: v26 = sub_43BFB0(*(_DWORD *)(v3 + 4), v30); v62 = -1; nullsub_1(&v50); return v26; } if ( !sub_4038C0(*(_WORD *)(a2 + 18), (int)&v59, (int)&v34, (int)&v33) ) { v31 = *(_DWORD *)(a2 + 14); v29 = *(_DWORD *)(a2 + 10); v28 = *(_DWORD *)(a2 + 4); v27 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_REQ Stuff Not Lot Item - ( CharNo=%d, Key=%I64d )"; LABEL_6: sprintf(&v60, v27, v28, v29, v31, v32); sub_446350(1, "Msg", "%s", &v60); v54 = 12876; v30 = (int)&v50; goto LABEL_24; } if ( !v34 ) { sprintf( &v60, "ERROR - CPFsCharacter::fc_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_REQ Stuff Invalid Item Option - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v32); sub_446350(1, "Msg", "%s", &v60); v54 = 12877; v30 = (int)&v50; goto LABEL_24; } if ( v34 - 1 == *(_DWORD *)(a2 + 20) ) { if ( v34 == 1 ) { LOWORD(v12) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); if ( v12 ) { sprintf( &v60, "ERROR - CPFsCharacter::fc_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_REQ Stuff Delete Error - ( CharNo=%d, Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v12, v32); sub_446350(1, "Msg", "%s", &v60); v54 = 12879; v30 = (int)&v50; goto LABEL_24; } } else { if ( !sub_403C00(*(_WORD *)(a2 + 18), (int)&v59, v34 - 1) ) { v31 = *(_DWORD *)(a2 + 14); v29 = *(_DWORD *)(a2 + 10); v28 = *(_DWORD *)(a2 + 4); v27 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )"; goto LABEL_6; } LOWORD(v13) = sub_468E40( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_WORD *)(a2 + 18), (int)&v59); if ( v13 ) { sprintf( &v60, "ERROR - CPFsCharacter::fc_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_REQ Item Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_WORD *)(a2 + 18), v13, v32); sub_446350(1, "Msg", "%s", &v60); v54 = 12880; goto LABEL_23; } } LOWORD(v14) = sub_402CD0( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 24), *(_DWORD *)(a2 + 28), *(_WORD *)(a2 + 32), a2 + 34); if ( v14 ) { sprintf( &v60, "ERROR - CPFsCharacter::fc_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_REQ Item Set RandOptChangedCount Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 24), *(_DWORD *)(a2 + 28), *(_WORD *)(a2 + 32), v14, v32); sub_446350(1, "Msg", "%s", &v60); v54 = 12880; v30 = (int)&v50; goto LABEL_24; } v15 = *(_WORD *)(a2 + 32); v16 = *(_DWORD *)(a2 + 28); v17 = *(_DWORD *)(a2 + 24); v18 = *(_DWORD *)v3 + 4684; v34 = 65535; v35 = -1; sub_4684C0(v18, v17, v16, v15, a2 + 34, (int)&v34, (int)&v35); sub_44E180((int)&v36); LOBYTE(v62) = 1; sub_44E310((int)&v36, 0x7F8u, 0x3Cu, 0); v19 = *(_DWORD *)(a2 + 4); v37 = 928; v38 = v19; sub_4029C0(&v39, "UseBijouH"); v20 = *(_WORD *)(a2 + 18); v21 = *(_DWORD *)(a2 + 10); v41 = *(_DWORD *)(a2 + 20); v22 = *(_DWORD *)(a2 + 14); v42 = v20; v45 = v22; v23 = *(_DWORD *)(a2 + 24); v44 = v21; v24 = *(_WORD *)(a2 + 32); v48 = v23; v46 = v35; v25 = *(_DWORD *)(a2 + 28); v40 = 0; v43 = 0; v47 = v24; v49 = v25; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v36); LOBYTE(v62) = 0; nullsub_1(&v36); } else { sprintf( &v60, "ERROR - CPFsCharacter::fc_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_REQ Not Matching Stuff Lot - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v32); sub_446350(1, "Msg", "%s", &v60); v54 = 12878; } LABEL_23: v30 = (int)&v50; goto LABEL_24; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042C530) -------------------------------------------------------- signed int __stdcall sub_42C530(unsigned __int16 a1, int a2, void *a3) { int v3; // esi@2 int v4; // ecx@4 signed int result; // eax@6 int v6; // esi@7 if ( a1 >= (unsigned int)dword_6EA3EC || (v3 = dword_6EACDC + 40 * a1) == 0 || !*(_DWORD *)v3 ) return 0; v4 = **(_WORD **)v3; if ( (_WORD)v4 != a1 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v4 + 10000 * a1); return 0; } v6 = *(_DWORD *)v3; if ( !v6 || !a2 || !a3 ) return 0; switch ( *(_DWORD *)(v6 + 102) ) { case 4: memcpy(a3, (const void *)(a2 + 37), 0x19u); result = 1; break; case 5: memcpy(a3, (const void *)(a2 + 64), 0x19u); result = 1; break; case 6: case 7: case 8: memcpy(a3, (const void *)(a2 + 12), 0x19u); result = 1; break; default: return 0; } return result; } // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (0042C610) -------------------------------------------------------- signed int __thiscall sub_42C610(void *this, int a2) { void *v2; // esi@1 int v3; // ST18_4@1 int v4; // eax@1 signed int result; // eax@2 signed int v6; // esi@5 unsigned int v7; // [sp-Ch] [bp-2128h]@1 int rgbValue; // [sp+0h] [bp-211Ch]@1 int v9; // [sp+4h] [bp-2118h]@1 char v10; // [sp+8h] [bp-2114h]@1 int v11; // [sp+Dh] [bp-210Fh]@1 __int16 TargetValue; // [sp+11h] [bp-210Bh]@1 char v13; // [sp+200Ch] [bp-110h]@2 unsigned int v14; // [sp+210Ch] [bp-10h]@1 int v15; // [sp+2118h] [bp-4h]@1 int v16; // [sp+211Ch] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v7 = (unsigned int)&v16 ^ __security_cookie; v2 = this; sub_44E180((int)&v10); v11 = a2; rgbValue = a2; v3 = *(_DWORD *)v2 + 4684; v15 = 0; TargetValue = 0; v9 = 0; LOBYTE(v4) = sub_45E570(v3, &rgbValue); if ( v4 ) { if ( sub_44E4A0(*(_DWORD *)v2 + 4684) == 1 ) { sub_44E510(*(_DWORD *)v2 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v2 + 4684, (char *)&TargetValue + 1); } sub_44E4D0(*(_DWORD *)v2 + 4684); sub_44E310((int)&v10, 0x111Eu, 6u, 0); v6 = sub_43BFB0(*((_DWORD *)v2 + 1), (int)&v10); v15 = -1; nullsub_1(&v10); result = v6; } else { sprintf( &v13, "ERROR - ChatColor Get Fail - fc_NC_CHAR_CHARDATA_REQ -> Send_NC_CHAR_CHAT_COLOR_CMD, nCharNo=%d, nRet=%d", rgbValue, v9, v7); sub_446350(1, "Msg", "%s", &v13); v15 = -1; nullsub_1(&v10); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0042C780) -------------------------------------------------------- bool __thiscall sub_42C780(int this, int a2, int a3) { return sub_43B000(this, a2) != 0; } //----- (0042C7B0) -------------------------------------------------------- signed int __thiscall sub_42C7B0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // dx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // ecx@2 int v9; // edx@2 int v10; // eax@2 int v11; // ST20_4@2 void *v12; // ecx@2 signed int v13; // esi@9 __int16 v14; // bx@13 char *v15; // ecx@14 int v16; // eax@17 int v17; // edx@19 int v18; // eax@19 void *v19; // ecx@19 int v20; // eax@23 int v21; // edx@25 __int16 v22; // ax@25 int v23; // edx@25 char v24; // bl@28 int v25; // edx@33 int v26; // ST24_4@33 int v27; // eax@33 char v28; // cl@36 int v29; // eax@36 int v30; // eax@36 const char *v31; // [sp-20h] [bp-42C0h]@3 int v32; // [sp-1Ch] [bp-42BCh]@3 int v33; // [sp-18h] [bp-42B8h]@3 int v34; // [sp-14h] [bp-42B4h]@3 int v35; // [sp-14h] [bp-42B4h]@4 int v36; // [sp-14h] [bp-42B4h]@20 unsigned int v37; // [sp-10h] [bp-42B0h]@1 char v38; // [sp+0h] [bp-42A0h]@5 int v39; // [sp+4h] [bp-429Ch]@2 char v40; // [sp+8h] [bp-4298h]@19 int v41; // [sp+Dh] [bp-4293h]@19 int v42; // [sp+11h] [bp-428Fh]@19 int v43; // [sp+15h] [bp-428Bh]@19 __int16 v44; // [sp+19h] [bp-4287h]@19 __int16 v45; // [sp+1Bh] [bp-4285h]@25 char v46; // [sp+200Ch] [bp-2294h]@2 __int16 v47; // [sp+2011h] [bp-228Fh]@2 __int16 v48; // [sp+2013h] [bp-228Dh]@2 int v49; // [sp+2015h] [bp-228Bh]@2 __int16 v50; // [sp+2021h] [bp-227Fh]@2 int v51; // [sp+2023h] [bp-227Dh]@2 char v52; // [sp+2027h] [bp-2279h]@2 int v53; // [sp+4010h] [bp-290h]@2 int v54; // [sp+4078h] [bp-228h]@36 char v55; // [sp+407Ch] [bp-224h]@36 int v56; // [sp+4080h] [bp-220h]@36 int rgbValue; // [sp+4084h] [bp-21Ch]@33 char v58; // [sp+4088h] [bp-218h]@33 int v59; // [sp+408Ch] [bp-214h]@33 char v60; // [sp+4090h] [bp-210h]@37 char v61; // [sp+4190h] [bp-110h]@4 unsigned int v62; // [sp+4290h] [bp-10h]@1 int v63; // [sp+429Ch] [bp-4h]@2 int v64; // [sp+42A0h] [bp+0h]@1 v62 = (unsigned int)&v64 ^ __security_cookie; v37 = (unsigned int)&v64 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v46); v63 = 0; sub_44E310((int)&v46, 0x34B6u, 0x17u, 0); v5 = *(_WORD *)(a2 + 16); v48 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 22); v50 = v5; LOBYTE(v5) = *(_BYTE *)(a2 + 26); v51 = v6; v47 = 13824; v7 = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)(a2 + 8); v52 = v5; v9 = *(_DWORD *)(a2 + 12); v49 = v7; v10 = *(_DWORD *)v3 + 4684; v11 = v8; v12 = (void *)(*(_DWORD *)v3 + 4720); v39 = 0; if ( !sub_4669C0(v12, v10, v11, v9, &v53) ) { v34 = *(_DWORD *)(a2 + 12); v33 = *(_DWORD *)(a2 + 8); v32 = *(_DWORD *)(a2 + 4); v31 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ Get Attr Error - ( CharNo=%d, Key=%I64d )"; LABEL_4: sprintf(&v61, v31, v32, v33, v34, v37); sub_446350(1, "Msg", "%s", &v61); v47 = 13825; v35 = (int)&v46; LABEL_9: v13 = sub_43BFB0(*(_DWORD *)(v3 + 4), v35); v63 = -1; nullsub_1(&v46); return v13; } if ( !sub_4038C0(*(_WORD *)(a2 + 16), (int)&v53, (int)&v39, (int)&v38) ) { sprintf( &v61, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v37); sub_446350(1, "Msg", "%s", &v61); LABEL_7: v47 = 13825; goto LABEL_8; } if ( !v39 ) { v34 = *(_DWORD *)(a2 + 12); v33 = *(_DWORD *)(a2 + 8); v32 = *(_DWORD *)(a2 + 4); v31 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ Stuff Invalid Item Option - ( CharNo=%d, Key=%I64d )"; goto LABEL_4; } v14 = v39 - 1; if ( v39 - 1 != *(_DWORD *)(a2 + 18) ) { sprintf( &v61, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ Not Matching Stuff Lot - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v37); v15 = &v61; goto LABEL_15; } if ( v39 == 1 ) { LOWORD(v16) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12)); if ( v16 ) { sprintf( &v61, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ Stuff Delete Error - ( CharNo=%d, Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v16, v37); sub_446350(1, "Msg", "%s", &v61); v47 = 13825; v35 = (int)&v46; goto LABEL_9; } sub_44E180((int)&v40); LOBYTE(v63) = 1; sub_44E310((int)&v40, 0x45Au, 0xEu, 0); v17 = *(_DWORD *)(a2 + 8); v18 = *(_DWORD *)(a2 + 12); v41 = *(_DWORD *)(a2 + 4); v44 = *(_WORD *)(a2 + 16); v19 = (void *)dword_6E9EC0; v42 = v17; v43 = v18; if ( dword_6E9EC0 ) { v36 = (int)&v40; LABEL_27: sub_44B7E0(v19, v36); goto LABEL_28; } } else { if ( !sub_403C00(*(_WORD *)(a2 + 16), (int)&v53, v39 - 1) ) { v34 = *(_DWORD *)(a2 + 12); v33 = *(_DWORD *)(a2 + 8); v32 = *(_DWORD *)(a2 + 4); v31 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )"; goto LABEL_4; } LOWORD(v20) = sub_468E40( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), *(_WORD *)(a2 + 16), (int)&v53); if ( v20 ) { sprintf( &v61, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ Item Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), *(_WORD *)(a2 + 16), v20, v37); sub_446350(1, "Msg", "%s", &v61); goto LABEL_7; } sub_44E180((int)&v40); LOBYTE(v63) = 2; sub_44E310((int)&v40, 0x459u, 0x10u, 0); v21 = *(_DWORD *)(a2 + 4); v22 = *(_WORD *)(a2 + 16); v42 = *(_DWORD *)(a2 + 8); v19 = (void *)dword_6E9EC0; v41 = v21; v23 = *(_DWORD *)(a2 + 12); v44 = v22; v43 = v23; v45 = v14; if ( dword_6E9EC0 ) { v36 = (int)&v40; goto LABEL_27; } } LABEL_28: LOBYTE(v63) = 0; nullsub_1(&v40); v24 = 0; if ( *(_DWORD *)(a2 + 22) != 1 ) { if ( *(_DWORD *)(a2 + 22) == 2 ) { LABEL_36: v28 = *(_BYTE *)(a2 + 26); v54 = *(_DWORD *)(a2 + 4); v29 = *(_DWORD *)v3 + 4684; v55 = v28; v56 = 0; LOBYTE(v30) = sub_45E7B0(v29, &v54); if ( v30 ) goto LABEL_8; sprintf( &v60, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ : usp_ChatColor_setBalloon DB Error - ( CharNo=%d, Color=%d, nRet=%d", *(_DWORD *)(a2 + 4), *(_BYTE *)(a2 + 26), v56, v37); v15 = &v60; LABEL_15: sub_446350(1, "Msg", "%s", v15); v47 = 13825; v35 = (int)&v46; goto LABEL_9; } if ( *(_DWORD *)(a2 + 22) != 3 ) { sprintf( &v61, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ Invalid ChatColorITemType Error - ( CharNo=%d, id=%d, Type=%d )", *(_DWORD *)(a2 + 4), *(_WORD *)(a2 + 16), *(_DWORD *)(a2 + 22), v37); sub_446350(1, "Msg", "%s", &v61); goto LABEL_8; } v24 = 1; } v25 = *(_DWORD *)(a2 + 4); v58 = *(_BYTE *)(a2 + 26); v26 = *(_DWORD *)v3 + 4684; rgbValue = v25; v59 = 0; LOBYTE(v27) = sub_45E680(v26, &rgbValue); if ( !v27 ) { v34 = v59; v33 = *(_BYTE *)(a2 + 26); v32 = *(_DWORD *)(a2 + 4); v31 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_CHAT_COLOR_CHANGE_REQ : usp_ChatColor_setFont DB Error - ( CharNo=%d, Color=%d, nRet=%d"; goto LABEL_4; } if ( v24 != 1 ) { LABEL_8: v35 = (int)&v46; goto LABEL_9; } goto LABEL_36; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042CCF0) -------------------------------------------------------- signed int __thiscall sub_42CCF0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 __int16 v6; // dx@2 int v7; // ecx@2 int v8; // edx@2 int v9; // ebx@9 int v10; // eax@12 int v11; // edx@14 int v12; // eax@14 void *v13; // ecx@14 int v14; // eax@18 int v15; // edx@20 __int16 v16; // ax@20 int v17; // edx@20 int v18; // eax@23 unsigned int v19; // eax@25 int v20; // ecx@25 int v21; // edx@25 int v22; // ecx@25 int v23; // edx@25 int v24; // edx@25 int v25; // eax@25 signed int v26; // esi@29 const char *v27; // [sp-20h] [bp-61ACh]@3 int v28; // [sp-1Ch] [bp-61A8h]@3 int v29; // [sp-18h] [bp-61A4h]@3 int v30; // [sp-14h] [bp-61A0h]@3 int v31; // [sp-14h] [bp-61A0h]@4 int v32; // [sp-14h] [bp-61A0h]@15 unsigned int v33; // [sp-10h] [bp-619Ch]@1 char v34; // [sp+0h] [bp-618Ch]@5 int v35; // [sp+4h] [bp-6188h]@5 char v36; // [sp+8h] [bp-6184h]@25 int v37; // [sp+Dh] [bp-617Fh]@25 int v38; // [sp+11h] [bp-617Bh]@25 char v39; // [sp+15h] [bp-6177h]@25 int v40; // [sp+21h] [bp-616Bh]@25 int v41; // [sp+25h] [bp-6167h]@25 unsigned int v42; // [sp+29h] [bp-6163h]@25 int v43; // [sp+2Dh] [bp-615Fh]@25 int v44; // [sp+31h] [bp-615Bh]@25 int v45; // [sp+35h] [bp-6157h]@25 int v46; // [sp+39h] [bp-6153h]@25 unsigned int v47; // [sp+3Dh] [bp-614Fh]@25 unsigned int v48; // [sp+41h] [bp-614Bh]@25 int v49; // [sp+45h] [bp-6147h]@25 int v50; // [sp+49h] [bp-6143h]@25 int v51; // [sp+4Dh] [bp-613Fh]@25 char v52; // [sp+200Ch] [bp-4180h]@14 int v53; // [sp+2011h] [bp-417Bh]@14 int v54; // [sp+2015h] [bp-4177h]@14 int v55; // [sp+2019h] [bp-4173h]@14 __int16 v56; // [sp+201Dh] [bp-416Fh]@14 __int16 v57; // [sp+201Fh] [bp-416Dh]@20 char v58; // [sp+4010h] [bp-217Ch]@2 __int16 v59; // [sp+4015h] [bp-2177h]@2 int v60; // [sp+4017h] [bp-2175h]@2 __int16 v61; // [sp+401Bh] [bp-2171h]@2 __int16 v62; // [sp+401Dh] [bp-216Fh]@2 int v63; // [sp+6014h] [bp-178h]@2 char v64; // [sp+607Ch] [bp-110h]@4 unsigned int v65; // [sp+617Ch] [bp-10h]@1 int v66; // [sp+6188h] [bp-4h]@2 int v67; // [sp+618Ch] [bp+0h]@1 v65 = (unsigned int)&v67 ^ __security_cookie; v33 = (unsigned int)&v67 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v58); v66 = 0; sub_44E310((int)&v58, 0x34B8u, 0xAu, 0); v5 = *(_DWORD *)(a2 + 4); v6 = *(_WORD *)(a2 + 2); v61 = *(_WORD *)(a2 + 8); v60 = v5; v7 = *(_DWORD *)(a2 + 10); v59 = v6; v8 = *(_DWORD *)(a2 + 14); v62 = 13848; if ( !sub_4669C0((void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, v7, v8, &v63) ) { v30 = *(_DWORD *)(a2 + 14); v29 = *(_DWORD *)(a2 + 10); v28 = *(_DWORD *)(a2 + 4); v27 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_TERMEXTEND_REQ ExtendItem Get Attr Error - ( CharNo=%d, Key=%I64d )"; LABEL_4: sprintf(&v64, v27, v28, v29, v30, v33); sub_446350(1, "Msg", "%s", &v64); v62 = 13849; v31 = (int)&v58; LABEL_29: v26 = sub_43BFB0(*(_DWORD *)(v3 + 4), v31); v66 = -1; nullsub_1(&v58); return v26; } if ( !sub_4038C0(*(_WORD *)(a2 + 18), (int)&v63, (int)&v35, (int)&v34) ) { sprintf( &v64, "ERROR - CPFsCharacter::fc_NC_ITEMDB_TERMEXTEND_REQ ExtendItem Not Lot Item - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v33); sub_446350(1, "Msg", "%s", &v64); v62 = 13849; v31 = (int)&v58; goto LABEL_29; } if ( !v35 ) { v30 = *(_DWORD *)(a2 + 14); v29 = *(_DWORD *)(a2 + 10); v28 = *(_DWORD *)(a2 + 4); v27 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_TERMEXTEND_REQ ExtendItem Invalid Item Option - ( CharNo=%d, Key=%I64d )"; goto LABEL_4; } v9 = v35 - 1; if ( v35 - 1 != *(_DWORD *)(a2 + 20) ) { sprintf( &v64, "ERROR - CPFsCharacter::fc_NC_ITEMDB_TERMEXTEND_REQ Not Matching ExtendItem Lot - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v33); sub_446350(1, "Msg", "%s", &v64); v62 = 13849; LABEL_28: v31 = (int)&v58; goto LABEL_29; } if ( v35 == 1 ) { LOWORD(v10) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); if ( v10 ) { sprintf( &v64, "ERROR - CPFsCharacter::fc_NC_ITEMDB_TERMEXTEND_REQ ExtendItem Delete Error - ( CharNo=%d, Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), v10, v33); sub_446350(1, "Msg", "%s", &v64); v62 = 13849; goto LABEL_28; } sub_44E180((int)&v52); LOBYTE(v66) = 1; sub_44E310((int)&v52, 0x45Au, 0xEu, 0); v11 = *(_DWORD *)(a2 + 10); v12 = *(_DWORD *)(a2 + 14); v53 = *(_DWORD *)(a2 + 4); v56 = *(_WORD *)(a2 + 18); v13 = (void *)dword_6E9EC0; v54 = v11; v55 = v12; if ( !dword_6E9EC0 ) { LABEL_23: LOBYTE(v66) = 0; nullsub_1(&v52); LOWORD(v18) = sub_402CB0( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 24), *(_DWORD *)(a2 + 28), *(_WORD *)(a2 + 32), a2 + 34); if ( v18 ) { sprintf( &v64, "ERROR - CPFsCharacter::fc_NC_ITEMDB_TERMEXTEND_REQ TermItem Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 24), *(_DWORD *)(a2 + 28), *(_WORD *)(a2 + 32), v18, v33); sub_446350(1, "Msg", "%s", &v64); v62 = 13849; } else { sub_44E180((int)&v36); LOBYTE(v66) = 3; sub_44E310((int)&v36, 0x7E8u, 0x44u, 0); v38 = *(_DWORD *)(a2 + 4); v37 = 2030; sub_4029C0(&v39, &byte_4B4667); v19 = *(_DWORD *)(a2 + 135); v41 = (*(_DWORD *)(a2 + 135) >> 8) & 0x1F; v20 = *(_WORD *)(a2 + 18); v40 = (unsigned __int8)v19; v43 = v20; v45 = *(_DWORD *)(a2 + 24); v42 = (v19 >> 13) & 0x3F; v21 = *(_WORD *)(a2 + 32); v47 = (v19 >> 19) & 0x3F; v22 = *(_DWORD *)(a2 + 14); v44 = v21; v23 = *(_DWORD *)(a2 + 28); v51 = v22; v46 = v23; v24 = *(_DWORD *)(a2 + 139); v48 = v19 >> 25; v25 = *(_DWORD *)(a2 + 10); v49 = v24; v50 = v25; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v36); LOBYTE(v66) = 0; nullsub_1(&v36); } goto LABEL_28; } v32 = (int)&v52; } else { if ( !sub_403C00(*(_WORD *)(a2 + 18), (int)&v63, v9) ) { v30 = *(_DWORD *)(a2 + 14); v29 = *(_DWORD *)(a2 + 10); v28 = *(_DWORD *)(a2 + 4); v27 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_TERMEXTEND_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )"; goto LABEL_4; } LOWORD(v14) = sub_468E40( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_WORD *)(a2 + 18), (int)&v63); if ( v14 ) { sprintf( &v64, "ERROR - CPFsCharacter::fc_NC_ITEMDB_TERMEXTEND_REQ ExtendItem Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_WORD *)(a2 + 18), v14, v33); sub_446350(1, "Msg", "%s", &v64); v62 = 13849; v31 = (int)&v58; goto LABEL_29; } sub_44E180((int)&v52); LOBYTE(v66) = 2; sub_44E310((int)&v52, 0x459u, 0x10u, 0); v15 = *(_DWORD *)(a2 + 4); v16 = *(_WORD *)(a2 + 18); v54 = *(_DWORD *)(a2 + 10); v13 = (void *)dword_6E9EC0; v53 = v15; v17 = *(_DWORD *)(a2 + 14); v56 = v16; v55 = v17; v57 = v9; if ( !dword_6E9EC0 ) goto LABEL_23; v32 = (int)&v52; } sub_44B7E0(v13, v32); goto LABEL_23; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042D280) -------------------------------------------------------- signed int __thiscall sub_42D280(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 int v5; // eax@1 int v7; // ST18_4@6 int v8; // eax@6 int v9; // ST18_4@13 int v10; // eax@13 signed int v11; // esi@20 const char *v12; // [sp-1Ch] [bp-2254h]@2 int v13; // [sp-18h] [bp-2250h]@2 int v14; // [sp-14h] [bp-224Ch]@2 unsigned int v15; // [sp-10h] [bp-2248h]@1 int rgbValue; // [sp+0h] [bp-2238h]@1 int v17; // [sp+4h] [bp-2234h]@1 unsigned int TargetValue; // [sp+8h] [bp-2230h]@9 char v19; // [sp+Ch] [bp-222Ch]@1 __int16 v20; // [sp+11h] [bp-2227h]@1 int v21; // [sp+13h] [bp-2225h]@1 __int16 v22; // [sp+17h] [bp-2221h]@1 int v23; // [sp+19h] [bp-221Fh]@1 int v24; // [sp+1Dh] [bp-221Bh]@1 int v25; // [sp+21h] [bp-2217h]@1 int v26; // [sp+25h] [bp-2213h]@1 int v27; // [sp+29h] [bp-220Fh]@1 int v28; // [sp+2Dh] [bp-220Bh]@1 int v29; // [sp+31h] [bp-2207h]@1 int v30; // [sp+35h] [bp-2203h]@1 int v31; // [sp+39h] [bp-21FFh]@1 int v32; // [sp+3Dh] [bp-21FBh]@1 int v33; // [sp+41h] [bp-21F7h]@1 int v34; // [sp+45h] [bp-21F3h]@1 int v35; // [sp+2010h] [bp-228h]@6 int v36; // [sp+2014h] [bp-224h]@6 int v37; // [sp+2018h] [bp-220h]@6 int v38; // [sp+201Ch] [bp-21Ch]@13 int v39; // [sp+2020h] [bp-218h]@13 int v40; // [sp+2024h] [bp-214h]@13 char v41; // [sp+2028h] [bp-210h]@18 char v42; // [sp+2128h] [bp-110h]@3 unsigned int v43; // [sp+2228h] [bp-10h]@1 int v44; // [sp+2234h] [bp-4h]@1 int v45; // [sp+2238h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v15 = (unsigned int)&v45 ^ __security_cookie; v2 = this; sub_44E180((int)&v19); v3 = *(_DWORD *)(a2 + 2); v20 = *(_WORD *)a2; v23 = -1; v24 = -1; v25 = -1; v26 = -1; v27 = -1; v28 = -1; v21 = v3; v29 = -1; v30 = -1; v31 = -1; v32 = -1; v33 = -1; v34 = -1; v4 = *(_DWORD *)v2; rgbValue = v3; v44 = 0; v22 = 0; v17 = 0; LOBYTE(v5) = sub_45EB40(v4 + 4684, &rgbValue); if ( !v5 ) { v14 = v17; v13 = *(_DWORD *)(a2 + 2); v12 = "ERROR - Send_NC_CHAR_USEITEM_MINIMON_INFO_CMD : Get autoscrollinfo fail nCharNo=%d, nRet=%d"; LABEL_3: sprintf(&v42, v12, v13, v14, v15); sub_446350(1, "Msg", "%s", &v42); v44 = -1; nullsub_1(&v19); return 0; } if ( sub_44E4A0(*(_DWORD *)v2 + 4684) == 1 ) { sub_44E510(*(_DWORD *)v2 + 4684, &v22); sub_44E510(*(_DWORD *)v2 + 4684, (char *)&v22 + 1); } sub_44E4D0(*(_DWORD *)v2 + 4684); v7 = *(_DWORD *)v2 + 4684; v35 = *(_DWORD *)(a2 + 2); v36 = 2; v37 = 0; LOBYTE(v8) = sub_45EDB0(v7, &v35); if ( !v8 ) { v14 = v17; v13 = *(_DWORD *)(a2 + 2); v12 = "ERROR - Send_NC_CHAR_USEITEM_MINIMON_INFO_CMD : Get buffitemlist fail nCharNo=%d, nRet=%d"; goto LABEL_3; } while ( sub_44E4A0(*(_DWORD *)v2 + 4684) == 1 ) { sub_44E4E0(*(_DWORD *)v2 + 4684, &TargetValue); if ( TargetValue > 0xB ) { sprintf( &v42, "ERROR - Send_NC_CHAR_USEITEM_MINIMON_INFO_CMD : invalid buffitemlist SlotNo nCharNo=%d, Slot=%d", *(_DWORD *)(a2 + 2), TargetValue, v15); sub_446350(1, "Msg", "%s", &v42); } else { sub_44E540(*(_DWORD *)v2 + 4684, (char *)&v23 + 2 * TargetValue); } } sub_44E4D0(*(_DWORD *)v2 + 4684); v9 = *(_DWORD *)v2 + 4684; v38 = *(_DWORD *)(a2 + 2); v39 = 1; v40 = 0; LOBYTE(v10) = sub_45EDB0(v9, &v38); if ( !v10 ) { v14 = v17; v13 = *(_DWORD *)(a2 + 2); v12 = "ERROR - Send_NC_CHAR_USEITEM_MINIMON_INFO_CMD : Get chargeditemlist fail nCharNo=%d, nRet=%d"; goto LABEL_3; } while ( sub_44E4A0(*(_DWORD *)v2 + 4684) == 1 ) { sub_44E4E0(*(_DWORD *)v2 + 4684, &TargetValue); if ( TargetValue > 0xB ) { sprintf( &v41, "ERROR - Send_NC_CHAR_USEITEM_MINIMON_INFO_CMD : invalid chargeditemlist SlotNo nCharNo=%d, Slot=%d", *(_DWORD *)(a2 + 2), TargetValue, v15); sub_446350(1, "Msg", "%s", &v41); } else { sub_44E540(*(_DWORD *)v2 + 4684, (char *)&v29 + 2 * TargetValue); } } sub_44E4D0(*(_DWORD *)v2 + 4684); sub_44E310((int)&v19, 0x1121u, 0x38u, 0); v11 = sub_43BFB0(*((_DWORD *)v2 + 1), (int)&v19); v44 = -1; nullsub_1(&v19); return v11; } // 4DE38C: using guessed type int __security_cookie; //----- (0042D620) -------------------------------------------------------- signed int __thiscall sub_42D620(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 char v5; // cl@2 int v6; // eax@2 signed int v7; // esi@2 int v8; // eax@2 int v9; // eax@4 char v10; // dl@4 int v11; // eax@4 int v12; // edx@9 int v13; // ST18_4@9 int v14; // eax@9 signed int v15; // esi@11 int v16; // ebx@11 int v17; // edx@14 int v18; // ST18_4@14 int v19; // eax@14 char *v20; // [sp-18h] [bp-158h]@3 const char *v21; // [sp-10h] [bp-150h]@5 int v22; // [sp-Ch] [bp-14Ch]@5 int v23; // [sp-8h] [bp-148h]@5 int v24; // [sp+8h] [bp-138h]@1 int v25; // [sp+Ch] [bp-134h]@6 int v26; // [sp+10h] [bp-130h]@4 char v27; // [sp+14h] [bp-12Ch]@4 int v28; // [sp+18h] [bp-128h]@4 int rgbValue; // [sp+1Ch] [bp-124h]@2 char v30; // [sp+20h] [bp-120h]@2 int v31; // [sp+24h] [bp-11Ch]@2 int v32; // [sp+28h] [bp-118h]@6 int v33; // [sp+2Ch] [bp-114h]@6 int v34; // [sp+30h] [bp-110h]@9 int v35; // [sp+34h] [bp-10Ch]@9 int v36; // [sp+38h] [bp-108h]@9 char v37; // [sp+3Ch] [bp-104h]@3 unsigned int v38; // [sp+13Ch] [bp-4h]@1 int v39; // [sp+140h] [bp+0h]@1 v38 = (unsigned int)&v39 ^ __security_cookie; v3 = this; v24 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_BYTE *)(a2 + 6); rgbValue = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)v3 + 4684; v30 = v5; v7 = 0; v31 = 0; LOBYTE(v8) = sub_45E8E0(v6, &rgbValue); if ( v8 ) { v9 = *(_DWORD *)v3; v10 = *(_BYTE *)(a2 + 7); v26 = *(_DWORD *)(a2 + 2); v27 = v10; v28 = 0; LOBYTE(v11) = sub_45EA10(v9 + 4684, &v26); if ( v11 ) { v32 = *(_DWORD *)(a2 + 2); v33 = 2; v25 = a2 + 8; do { if ( *(_WORD *)v25 != -1 || *(_BYTE *)(v7 + a2 + 56) ) { v12 = *(_WORD *)v25; v13 = *(_DWORD *)v3 + 4684; v34 = v7; v35 = v12; v36 = 0; LOBYTE(v14) = sub_45EC50(v13, &v32); if ( !v14 ) { v23 = v36; v22 = *(_DWORD *)(a2 + 2); v21 = "ERROR - fc_NC_CHARSAVE_USEITEM_MINIMON_INFO_DB_CMD : set buffitem fail nCharNo=%d, nRet=%d"; goto LABEL_19; } } v25 += 2; ++v7; } while ( v7 < 12 ); v33 = 1; v15 = 0; v16 = a2 + 32; while ( 1 ) { if ( *(_WORD *)v16 != -1 || *(_BYTE *)(v15 + a2 + 68) ) { v17 = *(_WORD *)v16; v18 = *(_DWORD *)v24 + 4684; v34 = v15; v35 = v17; v36 = 0; LOBYTE(v19) = sub_45EC50(v18, &v32); if ( !v19 ) break; } ++v15; v16 += 2; if ( v15 >= 12 ) goto LABEL_21; } v23 = v36; v22 = *(_DWORD *)(a2 + 2); v21 = "ERROR - fc_NC_CHARSAVE_USEITEM_MINIMON_INFO_DB_CMD : set chargeditem fail nCharNo=%d, nRet=%d"; } else { v23 = v28; v22 = *(_DWORD *)(a2 + 2); v21 = "ERROR - fc_NC_CHARSAVE_USEITEM_MINIMON_INFO_DB_CMD : set chargedbuffscroll fail nCharNo=%d, nRet=%d"; } LABEL_19: sprintf(&v37, v21, v22, v23); v20 = &v37; } else { sprintf( &v37, "ERROR - fc_NC_CHARSAVE_USEITEM_MINIMON_INFO_DB_CMD : set buffscroll fail nCharNo=%d, nRet=%d", *(_DWORD *)(a2 + 2), v31); v20 = &v37; } sub_446350(1, "Msg", "%s", v20); LABEL_21: result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0042D850) -------------------------------------------------------- signed int __thiscall sub_42D850(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // edx@2 int v6; // ecx@2 unsigned int v7; // eax@2 char v8; // ST30_1@2 int v9; // ST24_4@2 int v10; // eax@2 signed __int16 v11; // di@4 int v12; // edx@7 int v13; // ecx@7 int v14; // eax@7 unsigned __int16 v15; // ST30_2@7 int v16; // ecx@7 int v17; // eax@7 int v18; // edx@7 int v19; // edx@9 __int16 v20; // ax@9 int v21; // ecx@9 int v22; // edx@12 __int16 v23; // ax@12 signed int v24; // esi@12 unsigned int v25; // [sp-10h] [bp-614Ch]@1 char v26; // [sp+0h] [bp-613Ch]@7 int v27; // [sp+4h] [bp-6138h]@6 char v28; // [sp+8h] [bp-6134h]@12 __int16 v29; // [sp+Dh] [bp-612Fh]@12 int v30; // [sp+Fh] [bp-612Dh]@12 __int16 v31; // [sp+13h] [bp-6129h]@12 __int16 v32; // [sp+15h] [bp-6127h]@12 char v33; // [sp+200Ch] [bp-4130h]@9 int v34; // [sp+2011h] [bp-412Bh]@9 int v35; // [sp+2015h] [bp-4127h]@9 __int16 v36; // [sp+2019h] [bp-4123h]@9 int v37; // [sp+201Bh] [bp-4121h]@9 int v38; // [sp+201Fh] [bp-411Dh]@9 __int16 v39; // [sp+2023h] [bp-4119h]@9 char v40; // [sp+4010h] [bp-212Ch]@7 int v41; // [sp+4015h] [bp-2127h]@7 int v42; // [sp+4019h] [bp-2123h]@7 int v43; // [sp+401Dh] [bp-211Fh]@7 int v44; // [sp+4021h] [bp-211Bh]@7 int v45; // [sp+4025h] [bp-2117h]@7 int v46; // [sp+4029h] [bp-2113h]@7 char v47; // [sp+402Dh] [bp-210Fh]@7 int v48; // [sp+4031h] [bp-210Bh]@7 int v49; // [sp+4035h] [bp-2107h]@7 int v50; // [sp+4039h] [bp-2103h]@7 int v51; // [sp+403Dh] [bp-20FFh]@7 int rgbValue; // [sp+6014h] [bp-128h]@2 int v53; // [sp+6018h] [bp-124h]@2 int v54; // [sp+601Ch] [bp-120h]@2 char v55; // [sp+6020h] [bp-11Ch]@2 __int16 v56; // [sp+6022h] [bp-11Ah]@2 int v57; // [sp+6024h] [bp-118h]@2 int v58; // [sp+6028h] [bp-114h]@2 char v59; // [sp+602Ch] [bp-110h]@5 unsigned int v60; // [sp+612Ch] [bp-10h]@1 int v61; // [sp+6138h] [bp-4h]@7 int v62; // [sp+613Ch] [bp+0h]@1 v60 = (unsigned int)&v62 ^ __security_cookie; v25 = (unsigned int)&v62 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 10); v6 = *(_DWORD *)(a2 + 40); rgbValue = *(_DWORD *)(a2 + 36); v7 = *(_WORD *)(a2 + 34); v53 = v6; v54 = v5; v57 = *(_WORD *)(a2 + 44); v55 = (v7 >> 10) & 0x3F; v8 = *(_DWORD *)(a2 + 48); v56 = v7 & 0x3FF; v9 = *(_DWORD *)v3 + 4684; v58 = 0; v10 = sub_46A220(v9, &rgbValue, a2 + 66, v8, 0, 0, 0); if ( v10 ) { if ( v10 == 1 ) { v27 = 13934; v11 = 13934; } else { v11 = 13935; } sprintf( &v59, "Item Repurchase DB Error - ( Key=%I64d, id=%d, price=%d, Owner=%d, Inven/Pos=%d,%d, SellItemKet = %I64d, Error=%d )", *(_DWORD *)(a2 + 36), *(_DWORD *)(a2 + 40), *(_WORD *)(a2 + 44), *(_DWORD *)(a2 + 48), *(_DWORD *)(a2 + 10), (unsigned int)*(_WORD *)(a2 + 34) >> 10, *(_WORD *)(a2 + 34) & 0x3FF, *(_DWORD *)(a2 + 52), *(_DWORD *)(a2 + 56), (unsigned __int16)v11, v25); sub_446350(1, "Msg", "%s", &v59); } else { v27 = 13928; sub_44E180((int)&v40); v12 = *(_DWORD *)(a2 + 36); v42 = *(_DWORD *)(a2 + 4); v13 = *(_DWORD *)(a2 + 40); v45 = v12; v46 = v13; v61 = 0; v43 = 0; v14 = *(_WORD *)(a2 + 44); v15 = *(_WORD *)(a2 + 44); v41 = 2040; v44 = v14; sub_4038C0(v15, a2 + 66, (int)&v47, (int)&v26); v16 = *(_DWORD *)(a2 + 52); v17 = *(_DWORD *)(a2 + 48); v48 = *(_WORD *)(a2 + 34); v18 = *(_DWORD *)(a2 + 56); v50 = v16; v49 = v17; v51 = v18; sub_44E310((int)&v40, 0x7FDu, 0x2Cu, 0); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v40); sub_44E180((int)&v33); v19 = *(_DWORD *)(a2 + 4); v20 = *(_WORD *)(a2 + 44); v34 = *(_DWORD *)(a2 + 60); v21 = *(_DWORD *)(a2 + 48); v35 = v19; LOWORD(v19) = *(_WORD *)(a2 + 64); v37 = v21; LOBYTE(v61) = 1; v36 = v20; v38 = 0; v39 = v19; sub_44E310((int)&v33, 0xC815u, 0x14u, 0); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v33); LOBYTE(v61) = 0; nullsub_1(&v33); v61 = -1; nullsub_1(&v40); v11 = v27; } sub_44E180((int)&v28); v22 = *(_DWORD *)(a2 + 4); v23 = *(_WORD *)(a2 + 8); v29 = *(_WORD *)(a2 + 2); v61 = 2; v30 = v22; v32 = v23; v31 = v11; sub_44E310((int)&v28, 0x34BAu, 0xAu, 0); v24 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v28); v61 = -1; nullsub_1(&v28); result = v24; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042DB70) -------------------------------------------------------- signed int __thiscall sub_42DB70(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@3 int v6; // edx@3 int v7; // eax@3 int v8; // eax@3 int v9; // eax@3 int v10; // edx@7 int v11; // eax@7 int v12; // ecx@7 int v13; // eax@7 int v14; // ecx@7 int v15; // edx@7 int v16; // eax@7 int v17; // eax@9 __int16 v18; // dx@9 __int16 v19; // cx@9 int v20; // eax@9 int v21; // ecx@12 __int16 v22; // dx@12 signed int v23; // esi@12 unsigned int v24; // [sp-10h] [bp-6164h]@1 int v25; // [sp+0h] [bp-6154h]@2 int v26; // [sp+4h] [bp-6150h]@2 char v27; // [sp+8h] [bp-614Ch]@12 __int16 v28; // [sp+Dh] [bp-6147h]@12 int v29; // [sp+Fh] [bp-6145h]@12 __int16 v30; // [sp+13h] [bp-6141h]@12 __int16 v31; // [sp+15h] [bp-613Fh]@12 char v32; // [sp+200Ch] [bp-4148h]@9 int v33; // [sp+2011h] [bp-4143h]@9 int v34; // [sp+2015h] [bp-413Fh]@9 __int16 v35; // [sp+2019h] [bp-413Bh]@9 int v36; // [sp+201Bh] [bp-4139h]@9 int v37; // [sp+201Fh] [bp-4135h]@9 __int16 v38; // [sp+2023h] [bp-4131h]@9 char v39; // [sp+4010h] [bp-2144h]@7 int v40; // [sp+4015h] [bp-213Fh]@7 int v41; // [sp+4019h] [bp-213Bh]@7 int v42; // [sp+401Dh] [bp-2137h]@7 int v43; // [sp+4021h] [bp-2133h]@7 int v44; // [sp+4025h] [bp-212Fh]@7 int v45; // [sp+4029h] [bp-212Bh]@7 int v46; // [sp+402Dh] [bp-2127h]@7 int v47; // [sp+4031h] [bp-2123h]@7 int v48; // [sp+4035h] [bp-211Fh]@7 int v49; // [sp+4039h] [bp-211Bh]@7 int v50; // [sp+403Dh] [bp-2117h]@7 int rgbValue; // [sp+6014h] [bp-140h]@3 int v52; // [sp+6018h] [bp-13Ch]@3 int v53; // [sp+601Ch] [bp-138h]@3 __int16 v54; // [sp+6020h] [bp-134h]@3 int v55; // [sp+6024h] [bp-130h]@3 int v56; // [sp+6028h] [bp-12Ch]@3 int v57; // [sp+602Ch] [bp-128h]@3 int v58; // [sp+6030h] [bp-124h]@3 int v59; // [sp+6034h] [bp-120h]@3 int v60; // [sp+6038h] [bp-11Ch]@3 char v61; // [sp+6044h] [bp-110h]@15 unsigned int v62; // [sp+6144h] [bp-10h]@1 int v63; // [sp+6150h] [bp-4h]@7 int v64; // [sp+6154h] [bp+0h]@1 v62 = (unsigned int)&v64 ^ __security_cookie; v24 = (unsigned int)&v64 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( sub_4038C0(*(_WORD *)(a2 + 10), a2 + 42, (int)&v25, (int)&v26) == 1 ) { v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(a2 + 16); rgbValue = *(_DWORD *)(a2 + 12); v53 = v5; v7 = *(_DWORD *)(a2 + 24); v52 = v6; v54 = v26; v57 = v7; v8 = *(_DWORD *)v3; v55 = v25; v56 = 0; v58 = 0; v59 = 0; v60 = 0; v9 = sub_460ED0(v8 + 4684, &rgbValue); if ( !v9 ) { v26 = 13928; sub_44E180((int)&v39); v10 = *(_WORD *)(a2 + 10); v11 = *(_DWORD *)(a2 + 12); v41 = *(_DWORD *)(a2 + 4); v12 = *(_DWORD *)(a2 + 16); v44 = v11; v13 = *(_WORD *)(a2 + 22); v43 = v10; v45 = v12; v14 = *(_DWORD *)(a2 + 24); v46 = v25; v15 = *(_DWORD *)(a2 + 28); v47 = v13; v16 = *(_DWORD *)(a2 + 32); v48 = v14; v63 = 0; v40 = 2040; v42 = 0; v49 = v15; v50 = v16; sub_44E310((int)&v39, 0x7FDu, 0x2Cu, 0); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v39); sub_44E180((int)&v32); v17 = *(_DWORD *)(a2 + 36); v18 = *(_WORD *)(a2 + 10); v34 = *(_DWORD *)(a2 + 4); v19 = *(_WORD *)(a2 + 40); v33 = v17; v20 = *(_DWORD *)(a2 + 24); v38 = v19; LOBYTE(v63) = 1; v35 = v18; v36 = v20; v37 = 0; sub_44E310((int)&v32, 0xC815u, 0x14u, 0); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v32); LOBYTE(v63) = 0; nullsub_1(&v32); v63 = -1; nullsub_1(&v39); goto LABEL_12; } if ( v9 == 1 ) v26 = 13934; else v26 = 13935; } else { v26 = 521; } sprintf( &v61, "Item Repurchase DB Error - ( Key=%I64d, id=%d, price=%d, Owner=%d, SellItemKet = %I64d, Error=%d )", *(_DWORD *)(a2 + 12), *(_DWORD *)(a2 + 16), *(_WORD *)(a2 + 10), *(_DWORD *)(a2 + 24), *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 28), *(_DWORD *)(a2 + 32), (unsigned __int16)v26, v24); sub_446350(1, "Msg", "%s", &v61); LABEL_12: sub_44E180((int)&v27); v21 = *(_DWORD *)(a2 + 4); v22 = *(_WORD *)(a2 + 8); v28 = *(_WORD *)(a2 + 2); v29 = v21; v63 = 2; v31 = v22; v30 = v26; sub_44E310((int)&v27, 0x34BCu, 0xAu, 0); v23 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v27); v63 = -1; nullsub_1(&v27); result = v23; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042DEA0) -------------------------------------------------------- signed int __thiscall sub_42DEA0(int this, int a2, int a3) { int v3; // edi@1 unsigned int v4; // ebx@2 __int16 v5; // ax@2 int v6; // ecx@2 char v7; // dl@2 int v8; // eax@2 int v9; // eax@2 int v10; // eax@6 int v11; // eax@8 unsigned int v12; // ebx@11 int v13; // ecx@16 int v14; // ebx@27 int v15; // eax@32 int v16; // eax@36 int v17; // ST24_4@38 int i; // ebx@46 char v20; // cl@47 int v21; // eax@47 int v22; // eax@50 int v23; // ecx@50 int v24; // ecx@50 int v25; // edx@50 int v26; // eax@50 int v27; // ecx@50 int v28; // edx@50 int v29; // ecx@50 int v30; // edx@50 int v31; // ecx@50 int v32; // eax@50 int v33; // eax@50 int v34; // edx@50 signed int v35; // esi@54 const char *v36; // [sp-20h] [bp-45D0h]@22 const char *v37; // [sp-20h] [bp-45D0h]@25 int v38; // [sp-1Ch] [bp-45CCh]@22 int v39; // [sp-1Ch] [bp-45CCh]@25 int v40; // [sp-18h] [bp-45C8h]@22 int v41; // [sp-18h] [bp-45C8h]@25 int v42; // [sp-14h] [bp-45C4h]@3 int v43; // [sp-14h] [bp-45C4h]@22 int v44; // [sp-14h] [bp-45C4h]@25 unsigned int v45; // [sp-10h] [bp-45C0h]@1 char TargetValue; // [sp+0h] [bp-45B0h]@44 int rgbValue; // [sp+4h] [bp-45ACh]@4 __int16 v48; // [sp+8h] [bp-45A8h]@6 int v49; // [sp+Ch] [bp-45A4h]@38 int v50; // [sp+10h] [bp-45A0h]@38 int v51; // [sp+14h] [bp-459Ch]@5 int v52; // [sp+18h] [bp-4598h]@2 unsigned __int8 v53; // [sp+1Fh] [bp-4591h]@12 char v54; // [sp+20h] [bp-4590h]@50 int v55; // [sp+25h] [bp-458Bh]@50 int v56; // [sp+29h] [bp-4587h]@50 int v57; // [sp+39h] [bp-4577h]@50 int v58; // [sp+3Dh] [bp-4573h]@50 int v59; // [sp+41h] [bp-456Fh]@50 int v60; // [sp+45h] [bp-456Bh]@50 int v61; // [sp+49h] [bp-4567h]@50 int v62; // [sp+4Dh] [bp-4563h]@50 int v63; // [sp+51h] [bp-455Fh]@50 int v64; // [sp+55h] [bp-455Bh]@50 int v65; // [sp+59h] [bp-4557h]@50 int v66; // [sp+5Dh] [bp-4553h]@50 int v67; // [sp+61h] [bp-454Fh]@50 int v68; // [sp+65h] [bp-454Bh]@50 char v69; // [sp+2024h] [bp-258Ch]@2 int v70; // [sp+2029h] [bp-2587h]@2 __int16 v71; // [sp+202Dh] [bp-2583h]@2 __int16 v72; // [sp+202Fh] [bp-2581h]@2 unsigned __int16 v73; // [sp+2031h] [bp-257Fh]@2 int v74; // [sp+4028h] [bp-588h]@21 int v75; // [sp+4090h] [bp-520h]@47 char v76; // [sp+4094h] [bp-51Ch]@47 __int16 v77; // [sp+4096h] [bp-51Ah]@47 int v78; // [sp+4098h] [bp-518h]@47 int v79; // [sp+409Ch] [bp-514h]@47 char v80; // [sp+40A0h] [bp-510h]@43 char v81; // [sp+40A1h] [bp-50Fh]@43 char v82; // [sp+41A0h] [bp-410h]@3 unsigned int v83; // [sp+45A0h] [bp-10h]@1 int v84; // [sp+45ACh] [bp-4h]@2 int v85; // [sp+45B0h] [bp+0h]@1 v83 = (unsigned int)&v85 ^ __security_cookie; v45 = (unsigned int)&v85 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v69); v4 = 0; v84 = 0; sub_44E310((int)&v69, 0x34BEu, 0xAu, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 2); v72 = *(_WORD *)(a2 + 37); v7 = *(_BYTE *)(a2 + 28); v71 = v5; LOBYTE(v52) = v7; v73 = 13952; v8 = *(_DWORD *)v3 + 4684; v70 = v6; LOBYTE(v9) = sub_458640(v8, v6, v7); if ( v9 ) { rgbValue = *(_DWORD *)(a2 + 2); if ( *(_DWORD *)(a2 + 39) <= 0u ) { LABEL_8: LOBYTE(v11) = sub_451980(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2)); if ( !v11 ) { sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Empower Reset Error - ( CharNo=%d )", *(_DWORD *)(a2 + 2), v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13960; v42 = (int)&v69; goto LABEL_54; } v12 = 0; do { BYTE3(v51) = *(_BYTE *)(a2 + v12 + 23); v53 = 0; if ( BYTE3(v51) ) { while ( sub_458340(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), v12) ) { ++v53; if ( v53 >= BYTE3(v51) ) goto LABEL_15; } sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ, FreeStat init fail, FreeStat : = ", v12, v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13961; goto LABEL_53; } LABEL_15: ++v12; } while ( v12 < 5 ); v13 = *(_DWORD *)(a2 + 29); if ( (*(_DWORD *)(a2 + 33) || v13) && !sub_457D20(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 2), v13, *(_DWORD *)(a2 + 33)) ) { sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Add Money Error - ( CharNo=%d, Money=%I64d )", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 29), *(_DWORD *)(a2 + 33), v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13962; v42 = (int)&v69; goto LABEL_54; } if ( !sub_4669C0( (void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), &v74) ) { v43 = *(_DWORD *)(a2 + 12); v40 = *(_DWORD *)(a2 + 8); v38 = *(_DWORD *)(a2 + 2); v36 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Stuff Get Attr Error - ( CharNo=%d, Key=%I64d )"; LABEL_23: sprintf(&v82, v36, v38, v40, v43, v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13963; v42 = (int)&v69; goto LABEL_54; } if ( !sub_4038C0(*(_WORD *)(a2 + 16), (int)&v74, (int)&v52, (int)&v51) ) { v44 = *(_DWORD *)(a2 + 12); v41 = *(_DWORD *)(a2 + 8); v39 = *(_DWORD *)(a2 + 2); v37 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Stuff Not Lot Item - ( CharNo=%d, Key=%I64d )"; LABEL_26: sprintf(&v82, v37, v39, v41, v44, v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13963; goto LABEL_53; } v14 = 0; if ( !v52 ) { v43 = *(_DWORD *)(a2 + 12); v40 = *(_DWORD *)(a2 + 8); v38 = *(_DWORD *)(a2 + 2); v36 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Stuff Invalid Item Option - ( CharNo=%d, Key=%I64d )"; goto LABEL_23; } if ( v52 - 1 != *(_DWORD *)(a2 + 18) ) { sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Not Matching Stuff Lot - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13963; v42 = (int)&v69; goto LABEL_54; } if ( v52 == 1 ) { LOWORD(v15) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12)); if ( v15 ) { sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Stuff Delete Error - ( CharNo=%d, Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), v73, v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13963; goto LABEL_53; } } else { if ( !sub_403C00(*(_WORD *)(a2 + 16), (int)&v74, v52 - 1) ) { v44 = *(_DWORD *)(a2 + 12); v41 = *(_DWORD *)(a2 + 8); v39 = *(_DWORD *)(a2 + 2); v37 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )"; goto LABEL_26; } LOWORD(v16) = sub_468E40( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), *(_WORD *)(a2 + 16), (int)&v74); if ( v16 ) { sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Item Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12), *(_WORD *)(a2 + 16), v73, v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13963; v42 = (int)&v69; goto LABEL_54; } } v49 = *(_DWORD *)(a2 + 2); v17 = *(_DWORD *)v3 + 4684; v50 = 0; if ( !sub_45C100(v17, &v49) ) { if ( v50 != -2721 ) { sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Get ShortCut Error, CharNo=%d", *(_DWORD *)(a2 + 2), v45); sub_446350(1, "Msg", "%s", &v82); } v84 = -1; nullsub_1(&v69); return 0; } v52 = 0; v80 = 0; memset(&v81, 0, 0xFFu); if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { do { sub_44E510(*(_DWORD *)v3 + 4684, &v80 + v14); sub_44E540(*(_DWORD *)v3 + 4684, &v51); sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); ++v14; } while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); v52 = v14; } sub_44E4D0(*(_DWORD *)v3 + 4684); for ( i = 0; i < v52; ++i ) { v20 = *(&v80 + i); v75 = *(_DWORD *)(a2 + 2); v21 = *(_DWORD *)v3; v76 = v20; v77 = 0; v78 = 0; v79 = 1; if ( !sub_45C200(v21 + 4684, &v75) ) { sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Set ShortCut Error, CharNo=%d", *(_DWORD *)(a2 + 2), v45); sub_446350(1, "Msg", "%s", &v82); } } sub_44E180((int)&v54); LOBYTE(v84) = 1; sub_44E310((int)&v54, 0x7E8u, 0x44u, 0); v22 = *(_BYTE *)(a2 + 22); v23 = *(_BYTE *)(a2 + 23) << 8; v56 = *(_DWORD *)(a2 + 2); v24 = *(_BYTE *)(a2 + 24) | v23; v25 = *(_BYTE *)(a2 + 26); v57 = v22; v26 = *(_BYTE *)(a2 + 27); v27 = v25 | ((*(_BYTE *)(a2 + 25) | (v24 << 8)) << 8); v28 = *(_DWORD *)(a2 + 39); v58 = v27; v60 = *(_BYTE *)(a2 + 28); v29 = *(_DWORD *)(a2 + 12); v61 = v28; v30 = *(_WORD *)(a2 + 16); v63 = v29; v31 = *(_DWORD *)(a2 + 29); v59 = v26 << 24; v32 = *(_DWORD *)(a2 + 8); v67 = v31; v62 = v32; v33 = *(_DWORD *)(a2 + 18); v64 = v30; v34 = *(_DWORD *)(a2 + 33); v55 = 930; v65 = v33; v66 = 0; v68 = v34; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v54); LOBYTE(v84) = 0; nullsub_1(&v54); } else { v51 = a2 + 43; while ( 1 ) { v48 = *(_WORD *)v51; LOBYTE(v10) = sub_4517A0(*(_DWORD *)v3 + 4684, &rgbValue); if ( !v10 ) break; v51 += 2; ++v4; if ( v4 >= *(_DWORD *)(a2 + 39) ) goto LABEL_8; } sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Delete Skill Error - ( CharNo=%d, Skill=%d )", *(_DWORD *)(a2 + 2), *(_WORD *)(a2 + 2 * v4 + 43), v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13959; } LABEL_53: v42 = (int)&v69; goto LABEL_54; } sprintf( &v82, "ERROR - CPFsCharacter::fc_NC_ITEMDB_CLASS_CHANGE_REQ Class Change Error - ( CharNo=%d, New Class=%d )", *(_DWORD *)(a2 + 2), *(_BYTE *)(a2 + 28), v45); sub_446350(1, "Msg", "%s", &v82); v73 = 13958; v42 = (int)&v69; LABEL_54: v35 = sub_43BFB0(*(_DWORD *)(v3 + 4), v42); v84 = -1; nullsub_1(&v69); return v35; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042E710) -------------------------------------------------------- signed int __thiscall sub_42E710(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // dx@2 __int16 v6; // cx@2 int v7; // eax@2 int v8; // eax@2 int v9; // eax@2 char *v10; // edx@3 int v11; // ecx@8 int v12; // edx@10 int v13; // eax@10 int v14; // eax@10 int v15; // edx@12 int v16; // ecx@12 unsigned int v17; // eax@12 int v18; // edx@12 unsigned int v19; // ecx@12 int v20; // eax@12 int v21; // eax@12 unsigned __int16 v22; // ax@14 signed int v23; // esi@17 const void *v24; // [sp-14h] [bp-4560h]@4 int v25; // [sp-14h] [bp-4560h]@5 unsigned int v26; // [sp-10h] [bp-455Ch]@1 char v27; // [sp+0h] [bp-454Ch]@14 int rgbValue; // [sp+4h] [bp-4548h]@2 int v29; // [sp+8h] [bp-4544h]@2 int TargetValue; // [sp+Ch] [bp-4540h]@2 char v31; // [sp+10h] [bp-453Ch]@12 char v32[6]; // [sp+15h] [bp-4537h]@12 __int16 v33; // [sp+1Bh] [bp-4531h]@12 int v34; // [sp+1Dh] [bp-452Fh]@12 int v35; // [sp+21h] [bp-452Bh]@14 int v36; // [sp+25h] [bp-4527h]@14 int v37; // [sp+29h] [bp-4523h]@14 int v38; // [sp+2Dh] [bp-451Fh]@14 int v39; // [sp+31h] [bp-451Bh]@14 int v40; // [sp+35h] [bp-4517h]@14 char v41; // [sp+2014h] [bp-2538h]@2 __int16 v42; // [sp+2019h] [bp-2533h]@2 int v43; // [sp+201Bh] [bp-2531h]@2 __int16 v44; // [sp+201Fh] [bp-252Dh]@2 __int16 v45; // [sp+2021h] [bp-252Bh]@2 unsigned __int16 v46; // [sp+2023h] [bp-2529h]@2 __int16 v47; // [sp+2025h] [bp-2527h]@2 unsigned __int8 v48; // [sp+2027h] [bp-2525h]@2 int v49; // [sp+4018h] [bp-534h]@10 int v50; // [sp+401Ch] [bp-530h]@10 int v51; // [sp+4020h] [bp-52Ch]@10 int v52; // [sp+4024h] [bp-528h]@12 int v53; // [sp+4028h] [bp-524h]@12 int v54; // [sp+402Ch] [bp-520h]@12 char v55; // [sp+4030h] [bp-51Ch]@12 __int16 v56; // [sp+4032h] [bp-51Ah]@12 int v57; // [sp+4034h] [bp-518h]@12 int v58; // [sp+4038h] [bp-514h]@12 char v59; // [sp+403Ch] [bp-510h]@3 char v60; // [sp+443Ch] [bp-110h]@9 unsigned int v61; // [sp+453Ch] [bp-10h]@1 int v62; // [sp+4548h] [bp-4h]@2 int v63; // [sp+454Ch] [bp+0h]@1 v61 = (unsigned int)&v63 ^ __security_cookie; v26 = (unsigned int)&v63 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v41); v5 = *(_WORD *)(a2 + 12); v42 = *(_WORD *)(a2 + 2); v6 = *(_WORD *)(a2 + 22); v44 = 14016; v7 = *(_DWORD *)(a2 + 4); v47 = v5; v45 = v6; v43 = v7; rgbValue = v7; v8 = *(_DWORD *)v3; v46 = 0; v48 = 0; v62 = 0; v29 = 0; TargetValue = 0; LOBYTE(v9) = sub_45EEE0(v8 + 4684, &rgbValue); if ( v9 ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v3 + 4684); } v11 = *(_WORD *)(a2 + 10); if ( TargetValue < v11 ) { sprintf( &v60, "ERROR - CPFsCharacter::fc_NC_ITEMDB_UES_FRIEND_POINT_REQ Lack FriendPoint (FriendPoint = %d, CharNo = %d)", TargetValue, *(_DWORD *)(a2 + 4), v26); sub_446350(1, "Msg", "%s", &v60); v44 = 14019; sub_44E310((int)&v41, 0x34C0u, 0xFu, 0); v25 = (int)&v41; goto LABEL_17; } v12 = *(_DWORD *)(a2 + 4); v50 = TargetValue - v11; v13 = *(_DWORD *)v3; v49 = v12; v51 = 0; LOBYTE(v14) = sub_45EFF0(v13 + 4684, &v49); if ( v14 ) { v46 = v50; sub_44E180((int)&v31); *(_DWORD *)&v32[2] = v49; v33 = v50; LOBYTE(v62) = 1; LOWORD(v34) = 0; *(_WORD *)v32 = 1; sub_44E310((int)&v31, 0x541Cu, 0xAu, 0); sub_402D80((int)&v31); LOBYTE(v62) = 0; nullsub_1(&v31); v15 = *(_DWORD *)(a2 + 4); v16 = *(_DWORD *)(a2 + 18); v52 = *(_DWORD *)(a2 + 14); v17 = *(_WORD *)(a2 + 8); v53 = v16; v54 = v15; v18 = *(_WORD *)(a2 + 22); v19 = v17; v58 = 0; v56 = v17 & 0x3FF; v20 = *(_DWORD *)v3; v57 = v18; v55 = (v19 >> 10) & 0x3F; LOWORD(v21) = sub_46A440(v20 + 4684, &v52, a2 + 24, 0); if ( !v21 ) { v22 = *(_WORD *)(a2 + 22); v44 = 14016; sub_4038C0(v22, a2 + 24, (int)&v48, (int)&v27); sub_44E180((int)&v31); LOBYTE(v62) = 2; sub_44E310((int)&v31, 0x7F2u, 0x24u, 0); v35 = v57; *(_DWORD *)&v32[4] = v54; v37 = v53; v38 = v48; v36 = v52; *(_DWORD *)v32 = 929; v34 = 0; v39 = TargetValue; v40 = v46; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v31); LOBYTE(v62) = 0; nullsub_1(&v31); sub_44E310((int)&v41, 0x34C0u, 0xFu, 0); v25 = (int)&v41; goto LABEL_17; } sprintf( &v60, "ERROR - CPFsCharacter::fc_NC_ITEMDB_UES_FRIEND_POINT_REQ FriendPoint CreateItem - ( Key=%I64d, id=%d, Owner=%d, Error=%d )", v52, v53, v57, v54, v21, v26); sub_446350(1, "Msg", "%s", &v60); v24 = 0; goto LABEL_5; } sprintf( &v60, "Error - CPFsCharacter::fc_NC_ITEMDB_UES_FRIEND_POINT_REQ usp_Character_setFriendpoint : CharNo = %d", *(_DWORD *)(a2 + 4), v26); v10 = &v60; } else { sprintf( &v59, "ERROR - CPFsCharacter::fc_NC_ITEMDB_UES_FRIEND_POINT_REQ usp_Character_getFriendpoint : CharNo = %d", *(_DWORD *)(a2 + 4), v26); v10 = &v59; } sub_446350(1, "Msg", "%s", v10); v24 = 0; LABEL_5: v44 = 14018; sub_44E310((int)&v41, 0x34C0u, 0xFu, v24); v25 = (int)&v41; LABEL_17: v23 = sub_43BFB0(*(_DWORD *)(v3 + 4), v25); v62 = -1; nullsub_1(&v41); result = v23; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042EB90) -------------------------------------------------------- signed int __thiscall sub_42EB90(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // edi@4 int v7; // eax@4 signed int v8; // esi@8 int v9; // [sp+0h] [bp-2084h]@2 char v10; // [sp+5h] [bp-207Fh]@2 char v11; // [sp+6h] [bp-207Eh]@2 char TargetValue; // [sp+7h] [bp-207Dh]@2 char v13; // [sp+8h] [bp-207Ch]@2 char v14; // [sp+Dh] [bp-2077h]@2 unsigned __int16 v15; // [sp+Eh] [bp-2076h]@2 int v16; // [sp+10h] [bp-2074h]@4 char v17; // [sp+14h] [bp-2070h]@4 char v18; // [sp+15h] [bp-206Fh]@4 int v19; // [sp+16h] [bp-206Eh]@4 int v20; // [sp+1Ah] [bp-206Ah]@4 char v21[8174]; // [sp+1Eh] [bp-2066h]@4 int v22; // [sp+200Ch] [bp-78h]@2 int v23; // [sp+2010h] [bp-74h]@2 int v24; // [sp+2014h] [bp-70h]@2 int v25; // [sp+2018h] [bp-6Ch]@2 int v26; // [sp+201Ch] [bp-68h]@2 int v27; // [sp+2020h] [bp-64h]@2 int v28; // [sp+2024h] [bp-60h]@2 int v29; // [sp+2028h] [bp-5Ch]@2 int v30; // [sp+202Ch] [bp-58h]@2 int v31; // [sp+2030h] [bp-54h]@2 int v32; // [sp+2034h] [bp-50h]@2 int v33; // [sp+2038h] [bp-4Ch]@2 int v34; // [sp+203Ch] [bp-48h]@2 int v35; // [sp+2040h] [bp-44h]@2 int v36; // [sp+2044h] [bp-40h]@2 int v37; // [sp+2048h] [bp-3Ch]@2 int v38; // [sp+204Ch] [bp-38h]@2 int v39; // [sp+2050h] [bp-34h]@2 __int16 v40; // [sp+2054h] [bp-30h]@2 int v41; // [sp+2056h] [bp-2Eh]@2 int v42; // [sp+205Ah] [bp-2Ah]@2 int v43; // [sp+205Eh] [bp-26h]@2 __int16 v44; // [sp+2062h] [bp-22h]@2 __int16 v45; // [sp+2064h] [bp-20h]@2 int v46; // [sp+2066h] [bp-1Eh]@2 int v47; // [sp+206Ah] [bp-1Ah]@2 int v48; // [sp+206Eh] [bp-16h]@2 __int16 v49; // [sp+2072h] [bp-12h]@2 unsigned int v50; // [sp+2074h] [bp-10h]@1 int v51; // [sp+2080h] [bp-4h]@2 int v52; // [sp+2084h] [bp+0h]@1 v50 = (unsigned int)&v52 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v13); v15 = 0; TargetValue = -1; v11 = -1; v10 = -1; v46 = 0; v47 = 0; v48 = 0; v49 = 0; v41 = 0; v42 = 0; v43 = 0; v44 = 0; v32 = 0; v33 = 0; v34 = 0; v35 = 0; v36 = 0; v37 = 0; v38 = 0; v39 = 0; v23 = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v5 = *(_DWORD *)v3 + 4684; v45 = 0; v51 = 0; v14 = 1; v9 = 0; v40 = 0; v31 = 0; v22 = 0; if ( sub_455DB0(v5) == 1 ) { while ( sub_44E4A0(*(_DWORD *)v3 + 4684) == 1 ) { sub_44E570(*(_DWORD *)v3 + 4684, &v9); sub_44E510(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v3 + 4684, &v11); sub_44E6B0(*(_DWORD *)v3 + 4684, &v45); sub_44E6B0(*(_DWORD *)v3 + 4684, &v40); sub_44E510(*(_DWORD *)v3 + 4684, &v10); v36 = v45 - 1900; v35 = (unsigned __int16)v46 - 1; v34 = HIWORD(v46); v33 = (unsigned __int16)v47; v32 = HIWORD(v47); v31 = (unsigned __int16)v48; v6 = _LN52(&v31); v27 = v40 - 1900; v26 = (unsigned __int16)v41 - 1; v25 = HIWORD(v41); v24 = (unsigned __int16)v42; v23 = HIWORD(v42); v22 = (unsigned __int16)v43; v7 = _LN52(&v22); *(int *)((char *)&v16 + 15 * v15) = v9; *(&v17 + 15 * v15) = TargetValue; *(&v18 + 15 * v15) = v11; *(int *)((char *)&v19 + 15 * v15) = v6 != -1 ? v6 : 0; *(int *)((char *)&v20 + 15 * v15) = v7 != -1 ? v7 : 0; v21[15 * v15++] = v10; if ( 15 * v15 + 3 >= 2046 ) { sub_44E310((int)&v13, 0x7504u, 15 * v15 + 3, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v13); v15 = 0; v14 = 0; } } sub_44E4D0(*(_DWORD *)v3 + 4684); } v14 = 2; sub_44E310((int)&v13, 0x7504u, 15 * v15 + 3, 0); v8 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v13); v51 = -1; nullsub_1(&v13); result = v8; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 42EB90: using guessed type char var_2066[8174]; //----- (0042EF20) -------------------------------------------------------- signed int __thiscall sub_42EF20(int this, int a2, int a3) { __int16 v3; // cx@2 int v4; // edx@2 int v5; // eax@2 int v6; // edx@2 int v7; // eax@2 signed int v9; // esi@5 unsigned int v10; // [sp-10h] [bp-2180h]@1 int v11; // [sp+0h] [bp-2170h]@1 char v12; // [sp+4h] [bp-216Ch]@2 int v13; // [sp+9h] [bp-2167h]@2 __int16 v14; // [sp+Dh] [bp-2163h]@2 int v15; // [sp+Fh] [bp-2161h]@2 int rgbValue; // [sp+2008h] [bp-168h]@2 int v17; // [sp+200Ch] [bp-164h]@2 int v18; // [sp+2010h] [bp-160h]@2 __int16 v19; // [sp+2014h] [bp-15Ch]@2 __int16 v20; // [sp+2016h] [bp-15Ah]@2 __int16 v21; // [sp+2018h] [bp-158h]@2 __int16 v22; // [sp+201Ah] [bp-156h]@2 __int16 v23; // [sp+201Ch] [bp-154h]@2 __int16 v24; // [sp+201Eh] [bp-152h]@2 int v25; // [sp+2020h] [bp-150h]@2 int v26; // [sp+2024h] [bp-14Ch]@2 int v27; // [sp+2028h] [bp-148h]@2 int v28; // [sp+202Ch] [bp-144h]@2 int v29; // [sp+2030h] [bp-140h]@2 char v30; // [sp+2034h] [bp-13Ch]@2 int v31; // [sp+2038h] [bp-138h]@2 struct tm Tm; // [sp+203Ch] [bp-134h]@2 char v33; // [sp+2060h] [bp-110h]@3 unsigned int v34; // [sp+2160h] [bp-10h]@1 int v35; // [sp+216Ch] [bp-4h]@2 int v36; // [sp+2170h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v10 = (unsigned int)&v36 ^ __security_cookie; v11 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v12); v3 = *(_WORD *)(a2 + 10); v4 = *(_DWORD *)(a2 + 12); v13 = *(_DWORD *)(a2 + 2); v35 = 0; v14 = v3; v15 = v4; memset(&rgbValue, 0, 0x34u); v5 = *(_BYTE *)(a2 + 11); v6 = *(_BYTE *)(a2 + 10); rgbValue = *(_DWORD *)(a2 + 6); v18 = v5; v17 = v6; Tm.tm_sec = 0; Tm.tm_min = 0; Tm.tm_hour = 0; Tm.tm_mday = 0; Tm.tm_mon = 0; Tm.tm_year = 0; Tm.tm_wday = 0; Tm.tm_yday = 0; Tm.tm_isdst = 0; _localtime32_s(&Tm, (const __time32_t *)(a2 + 12)); v20 = LOWORD(Tm.tm_mon) + 1; v23 = LOWORD(Tm.tm_min); v19 = LOWORD(Tm.tm_year) + 1900; v21 = LOWORD(Tm.tm_mday); v28 = 0; v7 = *(_DWORD *)v11; v22 = LOWORD(Tm.tm_hour); v24 = Tm.tm_sec; v25 = 0; v26 = 67436; v27 = 1; v29 = 0; v30 = 0; v31 = 0; if ( !sub_455EA0(v7 + 4684, &rgbValue) ) { sprintf( &v33, "ERROR - fc_NC_GUILD_EMBLEM_SAVE_DB_REQ - usp_GuildEmblem_SetInfo, (nGuildNo=%d), (nCharNo=%d)", *(_DWORD *)(a2 + 6), *(_DWORD *)(a2 + 2), v10); sub_446350(1, "Msg", "%s", &v33); v35 = -1; nullsub_1(&v12); return 0; } sub_44E310((int)&v12, 0x7508u, 0xAu, 0); v9 = sub_43BFB0(*(_DWORD *)(v11 + 4), (int)&v12); v35 = -1; nullsub_1(&v12); return v9; } // 4DE38C: using guessed type int __security_cookie; //----- (0042F160) -------------------------------------------------------- signed int __thiscall sub_42F160(int this, int a2, int a3) { int v3; // ebx@1 int v4; // ecx@2 char v5; // dl@2 int v6; // edx@2 int v7; // eax@2 int v8; // ecx@5 int v9; // eax@5 char v10; // cl@8 signed int v12; // esi@21 unsigned int v13; // [sp-10h] [bp-21A4h]@1 int rgbValue; // [sp+0h] [bp-2194h]@2 char v15; // [sp+5h] [bp-218Fh]@2 unsigned __int8 v16; // [sp+6h] [bp-218Eh]@2 unsigned __int8 TargetValue; // [sp+7h] [bp-218Dh]@2 char v18; // [sp+8h] [bp-218Ch]@2 int v19; // [sp+Dh] [bp-2187h]@2 int v20; // [sp+11h] [bp-2183h]@2 char v21; // [sp+15h] [bp-217Fh]@2 __int16 v22; // [sp+200Ch] [bp-188h]@2 int v23; // [sp+200Eh] [bp-186h]@2 int v24; // [sp+2012h] [bp-182h]@2 int v25; // [sp+2016h] [bp-17Eh]@2 __int16 v26; // [sp+201Ah] [bp-17Ah]@2 struct tm Tm; // [sp+201Ch] [bp-178h]@7 int v28; // [sp+2040h] [bp-154h]@5 int v29; // [sp+2044h] [bp-150h]@5 int v30; // [sp+2048h] [bp-14Ch]@5 int v31; // [sp+204Ch] [bp-148h]@5 __int64 v32; // [sp+2050h] [bp-144h]@5 int v33; // [sp+2058h] [bp-13Ch]@5 int v34; // [sp+205Ch] [bp-138h]@6 int v35; // [sp+2060h] [bp-134h]@6 int v36; // [sp+2064h] [bp-130h]@6 int v37; // [sp+2068h] [bp-12Ch]@6 char v38; // [sp+206Ch] [bp-128h]@13 int v39; // [sp+2070h] [bp-124h]@18 char v40[10]; // [sp+2074h] [bp-120h]@2 int v41; // [sp+207Eh] [bp-116h]@2 __int16 v42; // [sp+2082h] [bp-112h]@2 char v43; // [sp+2084h] [bp-110h]@19 unsigned int v44; // [sp+2184h] [bp-10h]@1 int v45; // [sp+2190h] [bp-4h]@2 int v46; // [sp+2194h] [bp+0h]@1 v44 = (unsigned int)&v46 ^ __security_cookie; v13 = (unsigned int)&v46 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v18); v4 = *(_DWORD *)(a2 + 2); v5 = *(_BYTE *)(a2 + 10); v45 = 0; v19 = v4; v21 = v5; v6 = *(_DWORD *)(a2 + 6); v15 = 0; *(_QWORD *)&v40[2] = 0i64; v41 = 0; v42 = 0; v23 = 0; v24 = 0; v25 = 0; v26 = 0; v7 = *(_DWORD *)v3; rgbValue = v4; v20 = v6; TargetValue = -1; v16 = -1; *(_WORD *)v40 = 0; v22 = 0; if ( sub_455E10(v7 + 4684, &rgbValue) == 1 && sub_44E4A0(*(_DWORD *)v3 + 4684) == 1 ) { sub_44E510(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v3 + 4684, &v16); sub_44E6B0(*(_DWORD *)v3 + 4684, v40); sub_44E6B0(*(_DWORD *)v3 + 4684, &v22); sub_44E510(*(_DWORD *)v3 + 4684, &v15); sub_44E4D0(*(_DWORD *)v3 + 4684); } v8 = *(_DWORD *)(a2 + 2); v30 = v16; v28 = v8; v29 = TargetValue; v31 = *(_DWORD *)v40; v9 = 0; v32 = *(_QWORD *)&v40[4]; v33 = *(int *)((char *)&v41 + 2); if ( *(_DWORD *)(a2 + 6) ) { Tm.tm_sec = 0; Tm.tm_min = 0; Tm.tm_hour = 0; Tm.tm_mday = 0; Tm.tm_mon = 0; Tm.tm_year = 0; Tm.tm_wday = 0; Tm.tm_yday = 0; Tm.tm_isdst = 0; _localtime32_s(&Tm, (const __time32_t *)(a2 + 6)); LOWORD(v34) = LOWORD(Tm.tm_year) + 1900; LOWORD(v35) = LOWORD(Tm.tm_mday); HIWORD(v34) = LOWORD(Tm.tm_mon) + 1; HIWORD(v35) = LOWORD(Tm.tm_hour); LOWORD(v36) = LOWORD(Tm.tm_min); HIWORD(v36) = Tm.tm_sec; v37 = 0; v9 = 0; } else { v34 = 67436; v35 = 1; v36 = 0; v37 = 0; } v10 = *(_BYTE *)(a2 + 10); if ( v10 && v10 != 3 ) { switch ( v10 ) { case -1: case -252: v38 = -1; break; case -255: v38 = 1; break; case -254: v38 = 2; break; } } else { v38 = 0; } v39 = v9; if ( !sub_455EA0(*(_DWORD *)v3 + 4684, &v28) ) { sprintf( &v43, "ERROR - fc_NC_GUILD_EMBLEM_STATE_DB_REQ - usp_GuildEmblem_SetInfo, (nGuildNo=%d)", *(_DWORD *)(a2 + 2), v13); sub_446350(1, "Msg", "%s", &v43); v45 = -1; nullsub_1(&v18); return 0; } sub_44E310((int)&v18, 0x750Eu, 9u, 0); v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v18); v45 = -1; nullsub_1(&v18); return v12; } // 4DE38C: using guessed type int __security_cookie; //----- (0042F500) -------------------------------------------------------- signed int __thiscall sub_42F500(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // dx@2 int v6; // eax@2 int v7; // ecx@2 int v8; // edx@2 int v9; // ecx@2 int v10; // eax@2 int v11; // ecx@2 int v12; // edx@2 int v13; // eax@10 int v14; // eax@13 int v15; // eax@17 int v16; // ecx@20 int v17; // edx@20 int v18; // eax@20 int v19; // edx@20 int v20; // eax@20 int v21; // eax@22 int v22; // edx@22 int v23; // eax@22 signed int v24; // esi@26 const char *v25; // [sp-2Ch] [bp-41CCh]@3 const char *v26; // [sp-2Ch] [bp-41CCh]@8 int v27; // [sp-28h] [bp-41C8h]@3 int v28; // [sp-28h] [bp-41C8h]@8 int v29; // [sp-24h] [bp-41C4h]@3 int v30; // [sp-24h] [bp-41C4h]@8 int v31; // [sp-20h] [bp-41C0h]@3 int v32; // [sp-20h] [bp-41C0h]@8 int v33; // [sp-14h] [bp-41B4h]@9 unsigned int v34; // [sp+0h] [bp-41A0h]@5 int v35; // [sp+4h] [bp-419Ch]@5 char v36; // [sp+8h] [bp-4198h]@22 int v37; // [sp+Dh] [bp-4193h]@22 int v38; // [sp+11h] [bp-418Fh]@22 int v39; // [sp+15h] [bp-418Bh]@22 __int16 v40; // [sp+19h] [bp-4187h]@22 __int16 v41; // [sp+1Bh] [bp-4185h]@22 char v42; // [sp+200Ch] [bp-2194h]@2 __int16 v43; // [sp+2011h] [bp-218Fh]@2 int v44; // [sp+2013h] [bp-218Dh]@2 __int16 v45; // [sp+2017h] [bp-2189h]@2 int v46; // [sp+2019h] [bp-2187h]@2 int v47; // [sp+201Dh] [bp-2183h]@2 int v48; // [sp+2021h] [bp-217Fh]@2 __int16 v49; // [sp+2025h] [bp-217Bh]@2 int v50; // [sp+2027h] [bp-2179h]@2 __int16 v51; // [sp+202Bh] [bp-2175h]@2 int v52; // [sp+4010h] [bp-190h]@2 int rgbValue; // [sp+4078h] [bp-128h]@20 int v54; // [sp+407Ch] [bp-124h]@20 int v55; // [sp+4080h] [bp-120h]@20 int v56; // [sp+4084h] [bp-11Ch]@20 int v57; // [sp+4088h] [bp-118h]@20 char v58; // [sp+408Ch] [bp-114h]@20 char v59; // [sp+4090h] [bp-110h]@3 char v60; // [sp+4091h] [bp-10Fh]@3 unsigned int v61; // [sp+4190h] [bp-10h]@1 int v62; // [sp+419Ch] [bp-4h]@2 int v63; // [sp+41A0h] [bp+0h]@1 v61 = (unsigned int)&v63 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v42); v62 = 0; sub_44E310((int)&v42, 0x34CAu, 0x1Cu, 0); v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v45 = *(_WORD *)(a2 + 8); v7 = *(_DWORD *)(a2 + 14); v43 = v5; v8 = *(_DWORD *)(a2 + 18); v47 = v7; v9 = *(_DWORD *)(a2 + 24); v44 = v6; v10 = *(_DWORD *)(a2 + 10); v48 = v8; v50 = v9; v46 = v10; LOWORD(v10) = *(_WORD *)(a2 + 22); v11 = *(_DWORD *)(a2 + 28); v51 = 14152; v12 = *(_DWORD *)(a2 + 32); v49 = v10; if ( !sub_4669C0((void *)(*(_DWORD *)v3 + 4720), *(_DWORD *)v3 + 4684, v11, v12, &v52) ) { v59 = 0; memset(&v60, 0, 0xFFu); v31 = *(_DWORD *)(a2 + 32); v29 = *(_DWORD *)(a2 + 28); v27 = *(_DWORD *)(a2 + 4); v25 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_MAPLINK_ITEM_CONSUME_REQ Get Attr Error - ( CharNo=%d, Key=%I64d )"; LABEL_4: sprintf(&v59, v25, v27, v29, v31); sub_446350(1, "Msg", "%s", &v59); v51 = 14160; LABEL_25: v33 = (int)&v42; goto LABEL_26; } if ( !sub_4038C0(*(_WORD *)(a2 + 36), (int)&v52, (int)&v34, (int)&v35) ) { v59 = 0; memset(&v60, 0, 0xFFu); v31 = *(_DWORD *)(a2 + 32); v29 = *(_DWORD *)(a2 + 28); v27 = *(_DWORD *)(a2 + 4); v25 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_MAPLINK_ITEM_CONSUME_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )"; goto LABEL_4; } if ( v34 <= 0 ) { v59 = 0; memset(&v60, 0, 0xFFu); v32 = *(_DWORD *)(a2 + 32); v30 = *(_DWORD *)(a2 + 28); v28 = *(_DWORD *)(a2 + 4); v26 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_MAPLINK_ITEM_CONSUME_REQ Stuff Invalid Item Option - ( CharNo=%d, Key=%I64d )"; LABEL_9: sprintf(&v59, v26, v28, v30, v32); sub_446350(1, "Msg", "%s", &v59); v51 = 14160; v33 = (int)&v42; LABEL_26: v24 = sub_43BFB0(*(_DWORD *)(v3 + 4), v33); v62 = -1; nullsub_1(&v42); return v24; } v13 = v34 - 1; v34 = v13; if ( v13 != *(_DWORD *)(a2 + 38) ) { v59 = 0; memset(&v60, 0, 0xFFu); sprintf( &v59, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MAPLINK_ITEM_CONSUME_REQ Not Matching Stuff Lot - ( CharNo=%d, Key=%I64d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 28), *(_DWORD *)(a2 + 32)); sub_446350(1, "Msg", "%s", &v59); v51 = 14160; v33 = (int)&v42; goto LABEL_26; } if ( v13 ) { if ( !sub_403C00(*(_WORD *)(a2 + 36), (int)&v52, v13) ) { v59 = 0; memset(&v60, 0, 0xFFu); v32 = *(_DWORD *)(a2 + 32); v30 = *(_DWORD *)(a2 + 28); v28 = *(_DWORD *)(a2 + 4); v26 = "ERROR - CPFsCharacter::fc_NC_ITEMDB_MAPLINK_ITEM_CONSUME_REQ Not Lot Item - ( CharNo=%d, Key=%I64d )"; goto LABEL_9; } LOWORD(v15) = sub_468E40( *(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 28), *(_DWORD *)(a2 + 32), *(_WORD *)(a2 + 36), (int)&v52); v35 = v15; if ( v15 ) { v59 = 0; memset(&v60, 0, 0xFFu); sprintf( &v59, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MAPLINK_ITEM_CONSUME_REQ Item Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 28), *(_DWORD *)(a2 + 32), *(_WORD *)(a2 + 36), v35); sub_446350(1, "Msg", "%s", &v59); v51 = 14160; goto LABEL_25; } } else { LOWORD(v14) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 28), *(_DWORD *)(a2 + 32)); v35 = v14; if ( v14 ) { v59 = 0; memset(&v60, 0, 0xFFu); sprintf( &v59, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MAPLINK_ITEM_CONSUME_REQ Stuff Delete Error - ( CharNo=%d, Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 28), *(_DWORD *)(a2 + 32), v35); sub_446350(1, "Msg", "%s", &v59); v51 = 14160; v33 = (int)&v42; goto LABEL_26; } } if ( 14152 == v51 ) { v16 = *(_DWORD *)(a2 + 14); v17 = *(_DWORD *)(a2 + 4); v55 = 0; v56 = 0; v57 = 0; v58 = 0; v55 = *(_DWORD *)(a2 + 10); v18 = *(_DWORD *)v3; v56 = v16; v54 = v17; v19 = *(_DWORD *)(a2 + 18); rgbValue = 0; v57 = v19; v58 = 0; LOBYTE(v20) = sub_45F230(v18 + 4684, &rgbValue); if ( !v20 ) { v59 = 0; memset(&v60, 0, 0xFFu); sprintf( &v59, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MAPLINK_ITEM_COMPARE_MAP_REQ : sp call fail SET MapLinkScrollDest charRegNum %u", *(_DWORD *)(a2 + 4)); sub_446350(1, "Msg", "%s", &v59); } } sub_44E180((int)&v36); LOBYTE(v62) = 1; sub_44E310((int)&v36, 0x459u, 0x10u, 0); v21 = *(_DWORD *)(a2 + 4); v22 = *(_DWORD *)(a2 + 28); v40 = *(_WORD *)(a2 + 36); v41 = v34; v37 = v21; v23 = *(_DWORD *)(a2 + 32); v38 = v22; v39 = v23; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v36); LOBYTE(v62) = 0; nullsub_1(&v36); goto LABEL_25; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0042FA80) -------------------------------------------------------- signed int __thiscall sub_42FA80(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // ST20_4@2 int v6; // eax@2 int rgbValue; // [sp+8h] [bp-11Ch]@2 int v8; // [sp+Ch] [bp-118h]@2 int v9; // [sp+10h] [bp-114h]@2 int v10; // [sp+14h] [bp-110h]@2 int v11; // [sp+18h] [bp-10Ch]@2 char v12; // [sp+1Ch] [bp-108h]@2 char v13; // [sp+20h] [bp-104h]@3 char v14; // [sp+21h] [bp-103h]@3 unsigned int v15; // [sp+120h] [bp-4h]@1 int v16; // [sp+124h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v8 = *(_DWORD *)(a2 + 2); v9 = 0; v10 = 0; v11 = 0; v12 = 0; v5 = *(_DWORD *)v3 + 4684; rgbValue = 0; LOBYTE(v6) = sub_45F230(v5, &rgbValue); if ( !v6 ) { v13 = 0; memset(&v14, 0, 0xFFu); sprintf( &v13, "ERROR - CPFsCharacter::fc_NC_ITEMDB_MAPLINK_ITEM_COMPARE_MAP_REQ : sp call fail SET MapLinkScrollDest charRegNum %u", *(_DWORD *)(a2 + 2)); sub_446350(1, "Msg", "%s", &v13); } result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0042FB70) -------------------------------------------------------- void __thiscall sub_42FB70(void *this) { int v1; // ebx@1 void **v2; // esi@1 signed int v3; // edi@1 *(_DWORD *)this = &off_4B634C; v1 = (int)((char *)this + 4100); v2 = (void **)((char *)this + 4); v3 = 1024; do { if ( *v2 != (void *)v1 ) sub_48DB99(*v2); ++v2; --v3; } while ( v3 ); } // 4B634C: using guessed type int (__thiscall *off_4B634C)(void *, char); //----- (0042FBA0) -------------------------------------------------------- int __thiscall sub_42FBA0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@2 int v6; // ecx@4 int result; // eax@4 v4 = this; if ( *((void **)this + a3 + 1) == (char *)this + 4100 ) { *((_DWORD *)this + a3 + 1) = unknown_libname_17(256); v5 = 0; do { *(_DWORD *)(v5 + *((_DWORD *)v4 + a3 + 1)) = *((_DWORD *)v4 + 1089); *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + v5 + 4) = *((_DWORD *)v4 + 1089); *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + v5 + 8) = *((_DWORD *)v4 + 1089); *(_DWORD *)(v5 + *((_DWORD *)v4 + a3 + 1) + 12) = *((_DWORD *)v4 + 1089); v5 += 16; } while ( v5 < 256 ); } v6 = *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + 4 * a2); result = v6 == *((_DWORD *)v4 + 1089); if ( v6 == *((_DWORD *)v4 + 1089) ) { *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + 4 * a2) = a4; } else { sub_44B580( &unk_4DCB00, (int)"PROTOCOLFUNCTIONTEMPLETE::pft_Store : Duplicate protocol set", v6 == *((_DWORD *)v4 + 1089)); loc_44B5D0("PROTOCOLFUNCTIONTEMPLETE::pft_Store"); result = a4; *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + 4 * a2) = a4; } return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (0042FC70) -------------------------------------------------------- signed int __thiscall sub_42FC70(void *this, int a2) { void *v2; // edi@1 int v3; // ecx@2 int v4; // edx@2 unsigned int v5; // eax@2 int v6; // ST24_4@2 int v7; // eax@2 int v8; // eax@2 int v10; // eax@4 signed int v11; // ebx@6 int v12; // edi@7 int v13; // eax@9 int v14; // eax@11 void *v15; // [sp+8h] [bp-120h]@1 int rgbValue; // [sp+Ch] [bp-11Ch]@2 int v17; // [sp+10h] [bp-118h]@2 int v18; // [sp+14h] [bp-114h]@2 char v19; // [sp+18h] [bp-110h]@2 __int16 v20; // [sp+1Ah] [bp-10Eh]@2 int v21; // [sp+1Ch] [bp-10Ch]@2 int v22; // [sp+20h] [bp-108h]@2 char v23; // [sp+24h] [bp-104h]@3 unsigned int v24; // [sp+124h] [bp-4h]@1 int v25; // [sp+128h] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v2 = this; v15 = this; if ( *(_BYTE *)(a2 + 10) ) { v3 = *(_DWORD *)(a2 + 41); v4 = *(_DWORD *)(a2 + 11); rgbValue = *(_DWORD *)(a2 + 37); v5 = *(_WORD *)(a2 + 35); v17 = v3; v19 = (v5 >> 10) & 0x3F; v6 = a2 + *(_WORD *)(a2 + 47); v20 = v5 & 0x3FF; v7 = *(_DWORD *)v2; v18 = v4; v21 = *(_WORD *)(a2 + 45); v22 = 0; LOWORD(v8) = sub_46A440(v7 + 4684, &rgbValue, v6, 0); if ( v8 ) { sprintf(&v23, "ERROR - fc_NC_ITEMDB_PRODUCE_REQ Á¦ÀÛÅÛ »", rgbValue, v17, v21, v18, v8); sub_446350(1, "Msg", "%s", &v23); return 2829; } } else { LOWORD(v10) = sub_468E40( *(_DWORD *)this + 4684, *(_DWORD *)(a2 + 11), *(_DWORD *)(a2 + 15), *(_WORD *)(a2 + 8), a2 + *(_WORD *)(a2 + 19)); if ( v10 ) { sprintf( &v23, "ERROR - fc_NC_ITEMDB_PRODUCE_REQ Á¦ÀÛÅÛ ¼Ó¼ºº¯°æ ¿¡·¯ - ( Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 11), *(_DWORD *)(a2 + 15), *(_WORD *)(a2 + 8), v10); sub_446350(1, "Msg", "%s", &v23); return 2830; } } v11 = 0; if ( !*(_BYTE *)(a2 + 49) ) return 2817; v12 = a2 + 63; while ( *(_BYTE *)(v12 - 13) ) { LOWORD(v13) = sub_466950(*(_DWORD *)v15 + 4684, *(_DWORD *)(v12 - 8), *(_DWORD *)(v12 - 4)); if ( v13 ) { sprintf( &v23, "ERROR - fc_NC_ITEMDB_PRODUCE_REQ Á¦ÀÛÅÛ Àç·á»èÁ¦ ¿¡·¯ - ( Key=%I64d, Error=%d )", *(_DWORD *)(v11 + a2 + 16 * v11 + 55), *(_DWORD *)(v11 + a2 + 16 * v11 + 59), v13); sub_446350(1, "Msg", "%s", &v23); return 2831; } LABEL_12: ++v11; v12 += 17; if ( v11 >= *(_BYTE *)(a2 + 49) ) return 2817; } LOWORD(v14) = sub_468E40( *(_DWORD *)v15 + 4684, *(_DWORD *)(v12 - 8), *(_DWORD *)(v12 - 4), *(_WORD *)(v12 - 12), a2 + *(_WORD *)v12); if ( !v14 ) goto LABEL_12; sprintf( &v23, "ERROR - fc_NC_ITEMDB_PRODUCE_REQ Á¦ÀÛÅÛ ¼Ó¼ºº¯°æ ¿¡·¯ - ( Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(v11 + a2 + 16 * v11 + 55), *(_DWORD *)(v11 + a2 + 16 * v11 + 59), *(_WORD *)(v11 + a2 + 16 * (v11 + 3) + 3), v14); sub_446350(1, "Msg", "%s", &v23); return 2832; } // 4DE38C: using guessed type int __security_cookie; //----- (0042FF40) -------------------------------------------------------- void *__thiscall sub_42FF40(char *this, char a2) { void *v2; // edi@1 void **v3; // esi@1 signed int v4; // ebx@1 v2 = this; *(_DWORD *)this = &off_4B634C; v3 = (void **)(this + 4); v4 = 1024; do { if ( *v3 != (char *)v2 + 4100 ) sub_48DB99(*v3); ++v3; --v4; } while ( v4 ); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B634C: using guessed type int (__thiscall *off_4B634C)(void *, char); //----- (0042FF90) -------------------------------------------------------- signed int __thiscall sub_42FF90(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // esi@3 int v7; // ecx@4 int v8; // edx@4 unsigned int v9; // eax@4 unsigned int v10; // ecx@4 int v11; // eax@4 int v12; // ecx@4 int v13; // eax@4 int v14; // eax@4 int v15; // esi@8 int v16; // eax@9 int v17; // esi@19 int v18; // eax@19 unsigned __int8 v19; // al@21 int v20; // ecx@23 int v21; // eax@23 int v22; // eax@26 char v23; // dl@26 signed int v24; // edi@28 int v25; // esi@29 __int16 v26; // dx@30 int v27; // eax@30 int v28; // ecx@30 __int16 v29; // dx@30 int v30; // edx@34 int v31; // ecx@34 int v32; // eax@34 unsigned int v33; // esi@34 __int16 v34; // cx@37 int v35; // eax@37 __int16 v36; // cx@40 int v37; // edx@40 int v38; // eax@40 __int16 v39; // dx@43 char v40; // al@43 __int16 v41; // cx@45 char v42; // dl@45 bool v43; // zf@47 int v44; // ecx@47 __int16 v45; // dx@47 int v46; // eax@47 signed __int64 v47; // qax@50 char v48; // cl@57 char v49; // al@57 int v50; // ecx@57 int v51; // esi@58 int v52; // eax@58 int v53; // eax@58 int v54; // esi@62 int v55; // eax@64 char v56; // dl@64 signed int v57; // esi@64 unsigned int v58; // [sp-10h] [bp-827Ch]@1 int v59; // [sp+0h] [bp-826Ch]@17 unsigned int v60; // [sp+8h] [bp-8264h]@13 int v61; // [sp+10h] [bp-825Ch]@1 int v62; // [sp+14h] [bp-8258h]@2 int v63; // [sp+18h] [bp-8254h]@19 int v64; // [sp+1Ch] [bp-8250h]@2 int v65; // [sp+20h] [bp-824Ch]@2 char v66; // [sp+24h] [bp-8248h]@45 int v67; // [sp+29h] [bp-8243h]@45 char v68[4]; // [sp+2Dh] [bp-823Fh]@45 int v69; // [sp+31h] [bp-823Bh]@45 int v70; // [sp+35h] [bp-8237h]@45 int v71; // [sp+39h] [bp-8233h]@45 int v72; // [sp+3Dh] [bp-822Fh]@45 __int16 v73; // [sp+41h] [bp-822Bh]@45 char v74; // [sp+43h] [bp-8229h]@45 char v75; // [sp+2028h] [bp-6244h]@64 int v76; // [sp+202Dh] [bp-623Fh]@64 __int16 v77; // [sp+2031h] [bp-623Bh]@64 char v78; // [sp+2033h] [bp-6239h]@64 char v79; // [sp+2034h] [bp-6238h]@64 __int16 v80; // [sp+2054h] [bp-6218h]@64 __int16 v81; // [sp+2056h] [bp-6216h]@64 char v82; // [sp+402Ch] [bp-4240h]@47 int v83; // [sp+4031h] [bp-423Bh]@47 int v84; // [sp+4035h] [bp-4237h]@47 __int16 v85; // [sp+4039h] [bp-4233h]@47 int v86; // [sp+403Bh] [bp-4231h]@47 int v87; // [sp+403Fh] [bp-422Dh]@47 __int16 v88; // [sp+4043h] [bp-4229h]@48 int v89; // [sp+4045h] [bp-4227h]@50 int v90; // [sp+4049h] [bp-4223h]@50 __int16 v91; // [sp+404Dh] [bp-421Fh]@50 char v92; // [sp+6030h] [bp-223Ch]@2 int v93; // [sp+6035h] [bp-2237h]@30 __int16 v94; // [sp+6039h] [bp-2233h]@30 int v95; // [sp+603Bh] [bp-2231h]@30 int v96; // [sp+603Fh] [bp-222Dh]@30 unsigned __int64 v97; // [sp+6043h] [bp-2229h]@30 int v98; // [sp+8034h] [bp-238h]@26 __int16 v99; // [sp+8038h] [bp-234h]@26 char v100; // [sp+803Ah] [bp-232h]@26 char v101; // [sp+803Bh] [bp-231h]@26 int rgbValue; // [sp+8040h] [bp-22Ch]@4 int v103; // [sp+8044h] [bp-228h]@4 int v104; // [sp+8048h] [bp-224h]@4 char v105; // [sp+804Ch] [bp-220h]@4 __int16 v106; // [sp+804Eh] [bp-21Eh]@4 int v107; // [sp+8050h] [bp-21Ch]@4 int v108; // [sp+8054h] [bp-218h]@4 char v109; // [sp+805Ch] [bp-210h]@10 char v110; // [sp+815Ch] [bp-110h]@7 char v111; // [sp+81DCh] [bp-90h]@20 unsigned int v112; // [sp+825Ch] [bp-10h]@1 int v113; // [sp+8268h] [bp-4h]@2 int v114; // [sp+826Ch] [bp+0h]@1 v112 = (unsigned int)&v114 ^ __security_cookie; v58 = (unsigned int)&v114 ^ __security_cookie; v3 = this; v61 = this; result = sub_43B000(this, a2); if ( !result ) return result; v65 = 2881; sub_44E180((int)&v92); v5 = *(_BYTE *)(a2 + 84); v113 = 0; v64 = v5; v62 = 0; if ( v5 > 0 ) { v6 = a2 + 109; while ( 1 ) { v7 = *(_DWORD *)(v6 + 6); v8 = *(_DWORD *)(v6 - 24); rgbValue = *(_DWORD *)(v6 + 2); v9 = *(_WORD *)v6; v103 = v7; v10 = v9; v106 = v9 & 0x3FF; v11 = *(_WORD *)(v6 + 12); v105 = (v10 >> 10) & 0x3F; v12 = v11 + a2 + 2; v13 = *(_DWORD *)v3; v104 = v8; v107 = *(_WORD *)(v6 + 10); v108 = 0; LOWORD(v14) = sub_46A440(v13 + 4684, &rgbValue, v12, 0); if ( v14 ) break; v6 += 38; ++v62; if ( v62 >= v64 ) goto LABEL_13; } sprintf(&v110, "ERROR - fc_NC_QUEST_DB_DONE_REQ Ä", rgbValue, v103, v107, v104, v14, v58); sub_446350(1, "Msg", "%s", &v110); if ( v62 > 0 ) { v15 = a2 + 111; v65 = v62; do { LOWORD(v16) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)v15, *(_DWORD *)(v15 + 4)); if ( v16 ) { sprintf( &v109, "ERROR - fc_NC_ITEMDB_QUESTREWARD_REQ Ä", *(_DWORD *)v15, *(_DWORD *)(v15 + 4), *(_WORD *)(v15 + 8), *(_DWORD *)(v15 - 26), v16); sub_446350(1, "Msg", "%s", &v109); } v15 += 38; --v65; } while ( v65 ); } v65 = 3010; } LABEL_13: v60 = *(_DWORD *)(a2 + 47); if ( v60 && (_WORD)v65 == 2881 && !sub_457D20(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 47), 0) ) v65 = 3011; v59 = *(_DWORD *)(a2 + 51); if ( v59 ) { if ( (_WORD)v65 == 2881 ) { v17 = *(_DWORD *)(a2 + 4); v63 = *(_DWORD *)(a2 + 51); v64 = 0; LOBYTE(v18) = sub_458540(*(_DWORD *)v3 + 4684, v17, &v63); if ( !v18 ) { sprintf(&v111, "CharAddExp ERROR:CharNo=%d, Exp=%I64d", v17, v63, v64, v58); sub_446350(1, "Msg", "%s", &v111); } } } v19 = *(_BYTE *)(a2 + 79); if ( !v19 ) { if ( (_WORD)v65 != 2881 ) goto LABEL_54; goto LABEL_26; } if ( (_WORD)v65 == 2881 ) { v20 = *(_DWORD *)(a2 + 4); LOWORD(v64) = __PAIR__(*(_BYTE *)(a2 + 80) & 0x3F, v19) | 0x8000; LOBYTE(v21) = sub_46BA10((void *)(*(_DWORD *)v3 + 4684), v20, 1, (int)&v64); if ( !v21 ) { v65 = 3013; goto LABEL_54; } LABEL_26: v22 = *(_DWORD *)(a2 + 2); v23 = *(_BYTE *)(a2 + 14); v99 = *(_WORD *)(a2 + 6); v98 = v22; v100 = v23; memcpy(&v101, (const void *)(a2 + 15), 0x20u); if ( sub_406B20((void *)v61, (int)&v98) ) { v24 = 0; if ( *(_BYTE *)(a2 + 84) ) { v25 = a2 + 111; do { sub_44E310((int)&v92, 0x51Au, 0x10u, 0); v26 = *(_WORD *)(a2 + 15); v27 = *(_DWORD *)v25; v93 = *(_DWORD *)(v25 - 26); v28 = *(_DWORD *)(v25 + 4); v94 = v26; v29 = *(_WORD *)(v25 + 8); v96 = v28; v95 = v27; LOWORD(v97) = v29; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v92); ++v24; v25 += 38; } while ( v24 < *(_BYTE *)(a2 + 84) ); } if ( *(_DWORD *)(a2 + 47) ) { sub_44E310((int)&v92, 0x519u, 0x16u, 0); v30 = *(_DWORD *)(a2 + 4); v31 = *(_DWORD *)(a2 + 63); v94 = *(_WORD *)(a2 + 15); v32 = *(_DWORD *)(a2 + 59); v33 = *(_DWORD *)(a2 + 59); v93 = v30; v96 = v31; v97 = __PAIR__(v31, v60) + v33; v95 = v32; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v92); } if ( *(_DWORD *)(a2 + 51) ) { sub_44E310((int)&v92, 0x518u, 0x16u, 0); v34 = *(_WORD *)(a2 + 15); v93 = *(_DWORD *)(a2 + 4); v35 = *(_DWORD *)(a2 + 67); v94 = v34; v96 = *(_DWORD *)(a2 + 71); LODWORD(v97) = v59 + v35; HIDWORD(v97) = __CFADD__(v59, v35) + v96; v95 = v35; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v92); } if ( *(_DWORD *)(a2 + 55) ) { sub_44E310((int)&v92, 0x51Cu, 0xEu, 0); v36 = *(_WORD *)(a2 + 15); v37 = *(_DWORD *)(a2 + 55); v93 = *(_DWORD *)(a2 + 4); v38 = *(_DWORD *)(a2 + 75); v94 = v36; v96 = v38 + v37; v95 = v38; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v92); } if ( *(_BYTE *)(a2 + 79) ) { sub_44E310((int)&v92, 0x51Fu, 8u, 0); v39 = *(_WORD *)(a2 + 15); v40 = *(_BYTE *)(a2 + 79); v93 = *(_DWORD *)(a2 + 4); BYTE1(v95) = *(_BYTE *)(a2 + 80); v94 = v39; LOBYTE(v95) = v40; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v92); } sub_44E180((int)&v66); LOBYTE(v113) = 1; sub_44E310((int)&v66, 0x43Eu, 0x1Bu, 0); v41 = *(_WORD *)(a2 + 15); v42 = *(_BYTE *)(a2 + 17); v67 = *(_DWORD *)(a2 + 4); v73 = v41; v74 = v42; v70 = 0; v69 = 0; *(_DWORD *)v68 = 0; strncpy(v68, "Need", 0xCu); v71 = 0; v72 = 0; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v66); sub_44E180((int)&v82); LOBYTE(v113) = 2; sub_44E310((int)&v82, 0xC810u, 0x1Eu, 0); v43 = *(_BYTE *)(a2 + 84) == 0; v44 = *(_DWORD *)(a2 + 4); v45 = *(_WORD *)(a2 + 15); v83 = *(_DWORD *)(a2 + 8); v46 = *(_DWORD *)(a2 + 47); v84 = v44; v85 = v45; v86 = v46; v87 = 0; if ( v43 ) v88 = -1; else v88 = *(_WORD *)(a2 + 119); v47 = (*(_QWORD *)(a2 + 26) - *(_QWORD *)(a2 + 18)) / 60i64; v90 = (unsigned __int64)((*(_QWORD *)(a2 + 26) - *(_QWORD *)(a2 + 18)) / 60i64) >> 32; WORD2(v47) = *(_WORD *)(a2 + 12); v89 = v47; v91 = WORD2(v47); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v82); LOBYTE(v113) = 1; nullsub_1(&v82); LOBYTE(v113) = 0; nullsub_1(&v66); } else { v65 = 2883; } v3 = v61; } LABEL_54: switch ( (unsigned __int16)v65 ) { case 0xB43u: if ( *(_BYTE *)(a2 + 79) && (_WORD)v65 == 2881 ) { v48 = *(_BYTE *)(a2 + 81); LOBYTE(v64) = *(_BYTE *)(a2 + 79); v49 = (v48 << 6) | *(_BYTE *)(a2 + 80) & 0x3F; v50 = *(_DWORD *)v3; BYTE1(v64) = v49; sub_46BA10((void *)(v50 + 4684), *(_DWORD *)(a2 + 4), 1, (int)&v64); } goto LABEL_58; case 0xBC5u: LABEL_58: v51 = *(_DWORD *)(a2 + 4); v64 = 0; v52 = *(_DWORD *)v3 + 4684; v63 = v59; LOBYTE(v53) = sub_4585C0(v52, v51, &v63); if ( !v53 ) { sprintf(&v111, "CharSubExp ERROR:CharNo=%d, Exp=%I64d", v51, v63, v64, v58); sub_446350(1, "Msg", "%s", &v111); } goto LABEL_60; case 0xBC4u: LABEL_60: sub_457DC0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), v60, 0); goto LABEL_61; case 0xBC3u: LABEL_61: if ( v62 > 0 ) { v54 = a2 + 111; do { sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)v54, *(_DWORD *)(v54 + 4)); v54 += 38; --v62; } while ( v62 ); } break; default: break; } sub_44E180((int)&v75); v55 = *(_DWORD *)(a2 + 2); v56 = *(_BYTE *)(a2 + 14); v77 = *(_WORD *)(a2 + 6); v76 = v55; LOWORD(v55) = *(_WORD *)(a2 + 82); v78 = v56; memcpy(&v79, (const void *)(a2 + 15), 0x20u); v81 = v65; LOBYTE(v113) = 3; v80 = v55; sub_44E310((int)&v75, 0x441Bu, 0x2Bu, 0); v57 = sub_43BFB0(*(_DWORD *)(v61 + 4), (int)&v75); LOBYTE(v113) = 0; nullsub_1(&v75); v113 = -1; nullsub_1(&v92); return v57; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004308E0) -------------------------------------------------------- signed int __thiscall sub_4308E0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // edx@2 int v7; // ST18_4@2 int v8; // eax@2 int v9; // eax@4 int v10; // eax@6 signed int v11; // esi@8 int v12; // [sp-14h] [bp-2258h]@3 unsigned int v13; // [sp-10h] [bp-2254h]@1 char v14; // [sp+0h] [bp-2244h]@2 int v15; // [sp+5h] [bp-223Fh]@2 int v16; // [sp+9h] [bp-223Bh]@2 __int16 v17; // [sp+Dh] [bp-2237h]@2 char v18; // [sp+Fh] [bp-2235h]@4 int rgbValue; // [sp+2004h] [bp-240h]@2 int v20; // [sp+2008h] [bp-23Ch]@2 __int16 v21; // [sp+2014h] [bp-230h]@4 char v22; // [sp+2034h] [bp-210h]@5 char v23; // [sp+2134h] [bp-110h]@3 unsigned int v24; // [sp+2234h] [bp-10h]@1 int v25; // [sp+2240h] [bp-4h]@2 int v26; // [sp+2244h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v13 = (unsigned int)&v26 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v14); v25 = 0; sub_44E310((int)&v14, 0x344Cu, 0x6Fu, 0); v15 = -1; v16 = -1; memset(&v17, 0, 0x67u); v5 = *(_DWORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 2); v17 = -1; v20 = v5; v7 = *(_DWORD *)v3 + 4684; rgbValue = v6; LOBYTE(v8) = sub_466970(v7, &rgbValue); if ( v8 ) { v9 = *(_DWORD *)v3; v17 = v21; if ( sub_4669C0((void *)(v9 + 4720), v9 + 4684, *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6), &v18) ) { v10 = *(_DWORD *)(a2 + 6); v15 = *(_DWORD *)(a2 + 2); v16 = v10; } else { sprintf(&v22, "ERROR - fc_NC_ITEMDB_ITEMTOTALINFORM_REQ, Get OPT Failed, Key=%I64d", rgbValue, v20, v13); sub_446350(1, "Msg", "%s", &v22); v15 = -1; v16 = -1; } v12 = (int)&v14; } else { sprintf(&v23, "ERROR - fc_NC_ITEMDB_ITEMTOTALINFORM_REQ, Get Data Failed, Key=%I64d", rgbValue, v20, v13); sub_446350(1, "Msg", "%s", &v23); v15 = -1; v16 = -1; v12 = (int)&v14; } v11 = sub_43BFB0(*(_DWORD *)(v3 + 4), v12); v25 = -1; nullsub_1(&v14); result = v11; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00430AD0) -------------------------------------------------------- signed int __thiscall sub_430AD0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // edi@2 int v6; // esi@2 int v7; // eax@2 int v8; // eax@5 signed int v9; // eax@8 __int16 v10; // cx@11 __int16 v11; // dx@11 __int16 v12; // cx@12 __int16 v13; // dx@12 const char *v14; // [sp-Ch] [bp-134h]@3 char *v15; // [sp-Ch] [bp-134h]@11 int v16; // [sp-8h] [bp-130h]@3 unsigned int v17; // [sp-8h] [bp-130h]@11 char v18; // [sp+8h] [bp-120h]@11 __int16 v19; // [sp+9h] [bp-11Fh]@11 int v20; // [sp+Bh] [bp-11Dh]@11 __int16 v21; // [sp+Fh] [bp-119h]@11 __int16 v22; // [sp+11h] [bp-117h]@11 __int16 v23; // [sp+13h] [bp-115h]@11 char v24; // [sp+18h] [bp-110h]@12 __int16 v25; // [sp+19h] [bp-10Fh]@12 int v26; // [sp+1Bh] [bp-10Dh]@12 __int16 v27; // [sp+1Fh] [bp-109h]@12 __int16 v28; // [sp+21h] [bp-107h]@12 char v29; // [sp+24h] [bp-104h]@4 unsigned int v30; // [sp+124h] [bp-4h]@1 int v31; // [sp+128h] [bp+0h]@1 v30 = (unsigned int)&v31 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 36); v6 = a2 + 2; v7 = sub_402D20((int)&unk_6EA3E8, v5); if ( v7 ) { v8 = *(_DWORD *)v7; if ( v8 ) { if ( *(_DWORD *)(v8 + 102) == 15 ) v9 = sub_40F2F0((void *)v3, v6); else v9 = sub_40E690((void *)v3, v6); if ( v9 ) { v12 = *(_WORD *)(a2 + 6); v13 = *(_WORD *)(a2 + 12); v26 = *(_DWORD *)v6; v27 = v12; v17 = 11; v28 = v13; v24 = 10; v25 = 13390; v15 = &v24; return sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v15, v17); } LABEL_11: v10 = *(_WORD *)(a2 + 6); v11 = *(_WORD *)(a2 + 12); v20 = *(_DWORD *)v6; v21 = v10; v22 = v11; v17 = 13; v23 = 2474; v18 = 12; v19 = 13391; v15 = &v18; return sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v15, v17); } v16 = v5; v14 = "ERROR - CreateItemList's pidbi->data = NULL (nItemID=%d)"; } else { v16 = v5; v14 = "ERROR - CreateItemList's ItemDataBox::ItemDataBoxIndex = NULL (nItemID=%d)"; } sprintf(&v29, v14, v16); sub_446350(1, "Msg", "%s", &v29); goto LABEL_11; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00430C10) -------------------------------------------------------- signed int __thiscall sub_430C10(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // edi@4 int v6; // eax@10 unsigned int v7; // ecx@10 int v8; // edi@13 int v9; // eax@14 __int16 v10; // cx@17 __int16 v11; // dx@17 char *v12; // edx@17 int v13; // eax@20 int v14; // edx@20 int v15; // eax@20 int v16; // eax@24 int v17; // edx@24 __int16 v18; // dx@27 __int16 v19; // ax@27 unsigned int v20; // [sp-14h] [bp-214Ch]@17 unsigned int v21; // [sp-10h] [bp-2148h]@1 signed int v22; // [sp+0h] [bp-2138h]@13 signed __int16 v23; // [sp+4h] [bp-2134h]@3 char v24; // [sp+8h] [bp-2130h]@20 int v25; // [sp+Dh] [bp-212Bh]@20 __int16 v26; // [sp+11h] [bp-2127h]@20 int v27; // [sp+13h] [bp-2125h]@20 int v28; // [sp+17h] [bp-2121h]@20 int v29; // [sp+1Bh] [bp-211Dh]@20 int v30; // [sp+1Fh] [bp-2119h]@20 char v31; // [sp+200Ch] [bp-12Ch]@17 __int16 v32; // [sp+200Dh] [bp-12Bh]@17 int v33; // [sp+200Fh] [bp-129h]@17 __int16 v34; // [sp+2013h] [bp-125h]@17 __int16 v35; // [sp+2015h] [bp-123h]@17 __int16 v36; // [sp+2017h] [bp-121h]@17 char v37; // [sp+201Ch] [bp-11Ch]@27 __int16 v38; // [sp+201Dh] [bp-11Bh]@27 int v39; // [sp+201Fh] [bp-119h]@27 __int16 v40; // [sp+2023h] [bp-115h]@27 __int16 v41; // [sp+2025h] [bp-113h]@27 char v42; // [sp+2028h] [bp-110h]@15 unsigned int v43; // [sp+2128h] [bp-10h]@1 int v44; // [sp+2134h] [bp-4h]@20 int v45; // [sp+2138h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v21 = (unsigned int)&v45 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { if ( !sub_40F2F0((void *)v3, a2 + 14) ) { v23 = 4353; LABEL_17: v10 = *(_WORD *)(a2 + 18); v11 = *(_WORD *)(a2 + 24); v33 = *(_DWORD *)(a2 + 14); v34 = v10; v35 = v11; v36 = v23; v31 = 12; v32 = 22551; v20 = 13; v12 = &v31; return sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v12, v20); } v5 = 0; if ( *(_QWORD *)(a2 + 6) > 0ui64 ) { if ( !sub_457D20(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 20), *(_DWORD *)(a2 + 6), *(_DWORD *)(a2 + 10)) ) { v23 = 4354; LABEL_13: v8 = a2 + 37; v22 = 0; if ( *(_BYTE *)(a2 + 36) ) { do { LOWORD(v9) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)(v8 + 3), *(_DWORD *)(v8 + 7)); if ( v9 ) { sprintf( &v42, "ERROR - CPFsCharacter::fc_NC_KQ_REWARD_REQ, ¾ÆÀÌÅÛµé ¸¸µé±âÁß ¿¡·¯³ª¼­ ÀÌ¹Ì ¸¸µé¾îÁ", *(_DWORD *)(v8 + 3), *(_DWORD *)(v8 + 7), *(_DWORD *)(a2 + 20), v21); sub_446350(1, "Msg", "%s", &v42); } v8 += 114 * *(_BYTE *)v8; ++v22; } while ( v22 < *(_BYTE *)(a2 + 36) ); } goto LABEL_17; } v5 = 0; } if ( *(_DWORD *)(a2 + 2) <= (unsigned int)v5 || sub_410EA0((void *)v3, *(_DWORD *)(a2 + 20), *(_DWORD *)(a2 + 2)) ) { if ( *(_DWORD *)(a2 + 10) > (unsigned int)v5 || *(_DWORD *)(a2 + 6) > (unsigned int)v5 ) { sub_44E180((int)&v24); v44 = v5; sub_44E310((int)&v24, 0x519u, 0x16u, (const void *)v5); v13 = *(_DWORD *)(a2 + 20); v14 = *(_DWORD *)(a2 + 6); v26 = 0; v25 = v13; v15 = *(_DWORD *)(a2 + 10); v29 = v14; v30 = v15; v27 = v5; v28 = v5; if ( dword_6E9EC0 != v5 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v24); v44 = -1; nullsub_1(&v24); } if ( *(_DWORD *)(a2 + 2) > (unsigned int)v5 ) { sub_44E180((int)&v24); v44 = 1; sub_44E310((int)&v24, 0x51Cu, 0xEu, (const void *)v5); v16 = *(_DWORD *)(a2 + 20); v17 = *(_DWORD *)(a2 + 2); v26 = 0; v25 = v16; v28 = v17; v27 = v5; if ( dword_6E9EC0 != v5 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v24); v44 = -1; nullsub_1(&v24); } v18 = *(_WORD *)(a2 + 18); v19 = *(_WORD *)(a2 + 24); v39 = *(_DWORD *)(a2 + 14); v40 = v18; v41 = v19; v37 = 10; v38 = 22550; v20 = 11; v12 = &v37; return sub_43BFE0(*(_DWORD *)(v3 + 4), (int)v12, v20); } v6 = *(_DWORD *)(a2 + 10); v7 = *(_DWORD *)(a2 + 6); v23 = 4355; if ( v6 > (unsigned int)v5 || v7 > v5 ) sub_402C60(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 20), v7, v6); goto LABEL_13; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00430F30) -------------------------------------------------------- signed int __thiscall sub_430F30(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 __int16 v6; // dx@2 __int16 v7; // ax@2 signed int v8; // esi@2 char v9; // [sp+0h] [bp-2014h]@2 int v10; // [sp+5h] [bp-200Fh]@2 __int16 v11; // [sp+9h] [bp-200Bh]@2 __int16 v12; // [sp+Bh] [bp-2009h]@2 __int16 v13; // [sp+Dh] [bp-2007h]@2 __int16 v14; // [sp+Fh] [bp-2005h]@2 unsigned int v15; // [sp+2004h] [bp-10h]@1 int v16; // [sp+2010h] [bp-4h]@2 int v17; // [sp+2014h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v9); v5 = *(_WORD *)(a2 + 6); v6 = *(_WORD *)(a2 + 8); v10 = *(_DWORD *)(a2 + 2); v7 = *(_WORD *)(a2 + 10); v11 = v5; v16 = 0; v12 = v6; v13 = v7; v14 = sub_42FC70((void *)v3, a2 + 2); sub_44E310((int)&v9, 0x3458u, 0xCu, 0); v8 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v9); v16 = -1; nullsub_1(&v9); result = v8; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00431020) -------------------------------------------------------- signed int __thiscall sub_431020(int this, int a2, int a3) { signed int result; // eax@1 int v4; // edi@2 signed __int16 v5; // bx@2 int v6; // eax@2 int v7; // eax@7 __int16 v8; // dx@7 signed int v9; // esi@7 unsigned int v10; // [sp-10h] [bp-2228h]@1 int v11; // [sp+0h] [bp-2218h]@1 char v12; // [sp+4h] [bp-2214h]@7 int v13; // [sp+9h] [bp-220Fh]@7 __int16 v14; // [sp+Dh] [bp-220Bh]@7 __int16 v15; // [sp+Fh] [bp-2209h]@7 __int16 v16; // [sp+11h] [bp-2207h]@7 char v17; // [sp+2008h] [bp-210h]@5 char v18; // [sp+2108h] [bp-110h]@4 unsigned int v19; // [sp+2208h] [bp-10h]@1 int v20; // [sp+2214h] [bp-4h]@7 int v21; // [sp+2218h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v10 = (unsigned int)&v21 ^ __security_cookie; v11 = this; result = sub_43B000(this, a2); if ( result ) { v4 = v11; v5 = 2945; v6 = sub_4123B0((void *)v11, a2, a2 + 2, (int)&v11) - 1; if ( v6 ) { if ( v6 != 1 ) { LABEL_7: sub_44E180((int)&v12); v7 = *(_DWORD *)(a2 + 2); v8 = *(_WORD *)(a2 + 8); v14 = *(_WORD *)(a2 + 6); v20 = 0; v13 = v7; v15 = v8; v16 = v5; sub_44E310((int)&v12, 0x345Au, 0xAu, 0); v9 = sub_43BFB0(*(_DWORD *)(v4 + 4), (int)&v12); v20 = -1; nullsub_1(&v12); return v9; } sprintf( &v18, "ERROR - fc_NC_ITEMDB_DESTROY_REQ »èÁ¦ÅÛ »èÁ¦½ÇÆÐ - ( Key=%I64d, Error=%d )", *(_DWORD *)(a2 + 13), *(_DWORD *)(a2 + 17), v11, v10); sub_446350(1, "Msg", "%s", &v18); } else { sprintf( &v17, "ERROR - fc_NC_ITEMDB_DESTROY_REQ »èÁ¦ÅÛ ¼Ó¼ºº¯°æ ¿¡·¯ - ( Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 13), *(_DWORD *)(a2 + 17), *(_WORD *)(a2 + 11), v11, v10); sub_446350(1, "Msg", "%s", &v17); } v5 = 2946; goto LABEL_7; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004311B0) -------------------------------------------------------- signed int __thiscall sub_4311B0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 int v5; // eax@2 int v6; // edi@3 int v7; // ecx@4 int v8; // edx@4 unsigned int v9; // eax@4 unsigned int v10; // ecx@4 int v11; // eax@4 int v12; // ecx@4 int v13; // eax@4 int v14; // eax@4 int v15; // edi@10 int v16; // eax@11 int v17; // edi@15 int v18; // ecx@16 int v19; // eax@16 int v20; // eax@16 int v21; // ecx@19 char v22; // dl@19 int v23; // ST20_4@19 void *v24; // ecx@19 int v25; // eax@19 int v26; // ST20_4@20 int v27; // edi@22 bool v28; // zf@25 int v29; // edi@26 int v30; // eax@27 int v31; // edx@27 int v32; // eax@27 int v33; // ecx@29 int v34; // edx@32 int v35; // edi@32 int v36; // eax@32 int v37; // edx@32 int v38; // edi@32 int v39; // eax@32 int v40; // eax@36 int v41; // ecx@36 int v42; // kr00_4@36 unsigned int v43; // edi@36 unsigned __int64 v44; // kr08_8@36 int v45; // eax@36 int v46; // eax@39 __int16 v47; // dx@39 int v48; // eax@42 char v49; // dl@42 int v50; // eax@44 __int16 v51; // dx@44 signed int v52; // esi@44 unsigned int v53; // [sp-10h] [bp-4264h]@1 int v54; // [sp+0h] [bp-4254h]@6 int v55; // [sp+8h] [bp-424Ch]@15 int v56; // [sp+10h] [bp-4244h]@16 int v57; // [sp+14h] [bp-4240h]@16 int v58; // [sp+18h] [bp-423Ch]@2 int v59; // [sp+1Ch] [bp-4238h]@2 int v60; // [sp+20h] [bp-4234h]@2 char v61; // [sp+24h] [bp-4230h]@44 int v62; // [sp+29h] [bp-422Bh]@44 __int16 v63; // [sp+2Dh] [bp-4227h]@44 __int16 v64; // [sp+2Fh] [bp-4225h]@44 __int16 v65; // [sp+31h] [bp-4223h]@44 __int16 v66; // [sp+33h] [bp-4221h]@44 char v67; // [sp+2028h] [bp-222Ch]@2 int v68; // [sp+202Dh] [bp-2227h]@27 __int16 v69; // [sp+2031h] [bp-2223h]@27 int v70; // [sp+2033h] [bp-2221h]@27 int v71; // [sp+2037h] [bp-221Dh]@27 unsigned __int64 v72; // [sp+203Bh] [bp-2219h]@27 int rgbValue; // [sp+402Ch] [bp-228h]@4 int v74; // [sp+4030h] [bp-224h]@4 int v75; // [sp+4034h] [bp-220h]@4 char v76; // [sp+4038h] [bp-21Ch]@4 __int16 v77; // [sp+403Ah] [bp-21Ah]@4 int v78; // [sp+403Ch] [bp-218h]@4 int v79; // [sp+4040h] [bp-214h]@4 char v80; // [sp+4044h] [bp-210h]@12 char v81; // [sp+4144h] [bp-110h]@9 char v82; // [sp+41C4h] [bp-90h]@17 unsigned int v83; // [sp+4244h] [bp-10h]@1 int v84; // [sp+4250h] [bp-4h]@2 int v85; // [sp+4254h] [bp+0h]@1 v83 = (unsigned int)&v85 ^ __security_cookie; v53 = (unsigned int)&v85 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v59 = 3009; sub_44E180((int)&v67); v5 = *(_BYTE *)(a2 + 46); v84 = 0; v58 = v5; v60 = 0; if ( v5 <= 0 ) { LABEL_6: v54 = *(_DWORD *)(a2 + 12); if ( !v54 || sub_457D20(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 12), 0) ) { v17 = *(_DWORD *)(a2 + 16); v55 = *(_DWORD *)(a2 + 16); if ( v55 ) { v18 = *(_DWORD *)(a2 + 4); v57 = 0; v19 = *(_DWORD *)v3 + 4684; v58 = v18; v56 = v17; LOBYTE(v20) = sub_458540(v19, v18, &v56); if ( !v20 ) { sprintf(&v82, "CharAddExp ERROR:CharNo=%d, Exp=%I64d", v58, v56, v57, v53); sub_446350(1, "Msg", "%s", &v82); } } if ( !*(_BYTE *)(a2 + 44) || (v21 = *(_DWORD *)(a2 + 4), v22 = *(_BYTE *)(a2 + 45), LOBYTE(v58) = *(_BYTE *)(a2 + 44), v23 = v21, v24 = (void *)(*(_DWORD *)v3 + 4684), BYTE1(v58) = v22 & 0x3F | 0x80, LOBYTE(v25) = sub_46BA10(v24, v23, 1, (int)&v58), v25) ) { v28 = *(_BYTE *)(a2 + 46) == 0; v60 = 0; if ( !v28 ) { v29 = a2 + 73; do { sub_44E310((int)&v67, 0x51Au, 0x10u, 0); v30 = *(_DWORD *)(v29 - 26); v31 = *(_DWORD *)v29; v69 = *(_WORD *)(a2 + 10); LOWORD(v72) = *(_WORD *)(v29 + 8); v68 = v30; v32 = *(_DWORD *)(v29 + 4); v70 = v31; v71 = v32; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v67); v33 = *(_BYTE *)(a2 + 46); v29 += 38; ++v60; } while ( v60 < v33 ); v17 = v55; } if ( *(_DWORD *)(a2 + 12) ) { sub_44E310((int)&v67, 0x519u, 0x16u, 0); v34 = *(_DWORD *)(a2 + 4); v35 = *(_DWORD *)(a2 + 28); v69 = *(_WORD *)(a2 + 10); v36 = *(_DWORD *)(a2 + 24); v68 = v34; v37 = v54 + v36; v38 = __CFADD__(v54, v36) + v35; v70 = v36; v39 = *(_DWORD *)(a2 + 28); v72 = __PAIR__(v38, v37); v71 = v39; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v67); v17 = v55; } if ( *(_DWORD *)(a2 + 16) ) { sub_44E310((int)&v67, 0x518u, 0x16u, 0); v40 = *(_DWORD *)(a2 + 32); v41 = *(_DWORD *)(a2 + 4); v69 = *(_WORD *)(a2 + 10); v42 = v17; v43 = *(_DWORD *)(a2 + 36); v68 = v41; v44 = __PAIR__(v43, v42) + (unsigned int)v40; v70 = v40; v45 = *(_DWORD *)(a2 + 36); v72 = v44; v71 = v45; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v67); } if ( *(_DWORD *)(a2 + 20) ) { sub_44E310((int)&v67, 0x51Cu, 0xEu, 0); v46 = *(_DWORD *)(a2 + 40); v47 = *(_WORD *)(a2 + 10); v68 = *(_DWORD *)(a2 + 4); v71 = v46 + *(_DWORD *)(a2 + 20); v69 = v47; v70 = v46; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v67); } if ( *(_BYTE *)(a2 + 44) ) { sub_44E310((int)&v67, 0x51Fu, 8u, 0); v48 = *(_DWORD *)(a2 + 4); v49 = *(_BYTE *)(a2 + 44); v69 = *(_WORD *)(a2 + 10); v68 = v48; LOBYTE(v48) = *(_BYTE *)(a2 + 45); LOBYTE(v70) = v49; BYTE1(v70) = v48; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v67); } goto LABEL_44; } v26 = *(_DWORD *)(a2 + 4); v59 = 3013; sub_410E20((void *)v3, v26, v17, 0); sub_457DC0(*(_DWORD *)v3 + 4684, *(_DWORD *)(a2 + 4), v54, 0); } else { v59 = 3011; } } else { v6 = a2 + 71; while ( 1 ) { v7 = *(_DWORD *)(v6 + 6); v8 = *(_DWORD *)(v6 - 24); rgbValue = *(_DWORD *)(v6 + 2); v9 = *(_WORD *)v6; v74 = v7; v10 = v9; v77 = v9 & 0x3FF; v11 = *(_WORD *)(v6 + 12); v76 = (v10 >> 10) & 0x3F; v12 = v11 + a2 + 2; v13 = *(_DWORD *)v3; v75 = v8; v78 = *(_WORD *)(v6 + 10); v79 = 0; LOWORD(v14) = sub_46A440(v13 + 4684, &rgbValue, v12, 0); if ( v14 ) break; v6 += 38; ++v60; if ( v60 >= v58 ) goto LABEL_6; } sprintf(&v81, "ERROR - fc_NC_ITEMDB_QUESTREWARD_REQ Ä", rgbValue, v74, v78, v75, v14, v53); sub_446350(1, "Msg", "%s", &v81); if ( v60 > 0 ) { v15 = a2 + 73; v59 = v60; do { LOWORD(v16) = sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)v15, *(_DWORD *)(v15 + 4)); if ( v16 ) { sprintf( &v80, "ERROR - fc_NC_ITEMDB_QUESTREWARD_REQ Ä", *(_DWORD *)v15, *(_DWORD *)(v15 + 4), *(_WORD *)(v15 + 8), *(_DWORD *)(v15 - 26), v16); sub_446350(1, "Msg", "%s", &v80); } v15 += 38; --v59; } while ( v59 ); } v59 = 3010; } if ( v60 > 0 ) { v27 = a2 + 73; do { sub_466950(*(_DWORD *)v3 + 4684, *(_DWORD *)v27, *(_DWORD *)(v27 + 4)); v27 += 38; --v60; } while ( v60 ); } LABEL_44: sub_44E180((int)&v61); v50 = *(_DWORD *)(a2 + 2); v51 = *(_WORD *)(a2 + 8); v63 = *(_WORD *)(a2 + 6); v62 = v50; LOWORD(v50) = *(_WORD *)(a2 + 10); v66 = v59; LOBYTE(v84) = 1; v64 = v51; v65 = v50; sub_44E310((int)&v61, 0x345Cu, 0xCu, 0); v52 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v61); LOBYTE(v84) = 0; nullsub_1(&v61); v84 = -1; nullsub_1(&v67); result = v52; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004317D0) -------------------------------------------------------- signed int __thiscall sub_4317D0(int this, int a2, int a3) { const void *v3; // edi@1 int v4; // ebx@1 int v5; // eax@3 int v6; // eax@3 int v7; // esi@5 int v8; // ecx@5 int v9; // eax@6 char v10; // cl@7 char *v11; // esi@8 int v12; // ecx@8 size_t v13; // eax@8 signed int v14; // esi@15 signed int result; // eax@15 int v16; // [sp-14h] [bp-22F0h]@4 unsigned int v17; // [sp-10h] [bp-22ECh]@1 int rgbValue; // [sp+0h] [bp-22DCh]@3 int v19; // [sp+4h] [bp-22D8h]@5 char v20; // [sp+8h] [bp-22D4h]@3 int v21; // [sp+Dh] [bp-22CFh]@3 __int16 v22; // [sp+11h] [bp-22CBh]@3 char v23; // [sp+13h] [bp-22C9h]@5 __int16 v24; // [sp+14h] [bp-22C8h]@10 char v25[8182]; // [sp+16h] [bp-22C6h]@8 char v26[4]; // [sp+200Ch] [bp-2D0h]@5 int v27; // [sp+2010h] [bp-2CCh]@5 int v28; // [sp+2014h] [bp-2C8h]@5 int v29; // [sp+2018h] [bp-2C4h]@5 int v30; // [sp+201Ch] [bp-2C0h]@5 char v31; // [sp+2020h] [bp-2BCh]@6 int v32; // [sp+2021h] [bp-2BBh]@6 __int16 v33; // [sp+2025h] [bp-2B7h]@6 char v34[64]; // [sp+2027h] [bp-2B5h]@7 int v35; // [sp+2067h] [bp-275h]@8 char v36; // [sp+206Bh] [bp-271h]@8 char v37; // [sp+206Ch] [bp-270h]@8 char v38; // [sp+206Dh] [bp-26Fh]@8 char v39[4]; // [sp+206Eh] [bp-26Eh]@5 int v40; // [sp+2072h] [bp-26Ah]@5 int v41; // [sp+2076h] [bp-266h]@5 int v42; // [sp+207Ah] [bp-262h]@6 __time32_t Time; // [sp+207Eh] [bp-25Eh]@6 int v44; // [sp+2082h] [bp-25Ah]@6 int v45; // [sp+2086h] [bp-256h]@6 char v46; // [sp+208Ah] [bp-252h]@6 int TargetValue; // [sp+20FCh] [bp-1E0h]@6 __int16 v48; // [sp+2100h] [bp-1DCh]@6 unsigned __int16 v49; // [sp+2102h] [bp-1DAh]@6 unsigned __int16 v50; // [sp+2104h] [bp-1D8h]@6 unsigned __int16 v51; // [sp+2106h] [bp-1D6h]@6 unsigned __int16 v52; // [sp+2108h] [bp-1D4h]@6 unsigned __int16 v53; // [sp+210Ah] [bp-1D2h]@6 char v54; // [sp+2110h] [bp-1CCh]@6 __int16 v55; // [sp+2112h] [bp-1CAh]@6 int v56; // [sp+2114h] [bp-1C8h]@6 char v57[65]; // [sp+2118h] [bp-1C4h]@6 char v58; // [sp+2159h] [bp-183h]@6 char v59; // [sp+2181h] [bp-15Bh]@6 char v60; // [sp+2182h] [bp-15Ah]@6 char v61; // [sp+2184h] [bp-158h]@6 int v62; // [sp+2194h] [bp-148h]@6 char v63; // [sp+2198h] [bp-144h]@8 int v64; // [sp+219Ah] [bp-142h]@8 int v65; // [sp+21A8h] [bp-134h]@6 int v66; // [sp+21ACh] [bp-130h]@6 int v67; // [sp+21B0h] [bp-12Ch]@6 int v68; // [sp+21B4h] [bp-128h]@6 int v69; // [sp+21B8h] [bp-124h]@6 int v70; // [sp+21BCh] [bp-120h]@6 int v71; // [sp+21C0h] [bp-11Ch]@6 int v72; // [sp+21C4h] [bp-118h]@6 int v73; // [sp+21C8h] [bp-114h]@6 char v74; // [sp+21CCh] [bp-110h]@4 unsigned int v75; // [sp+22CCh] [bp-10h]@1 int v76; // [sp+22D8h] [bp-4h]@3 int v77; // [sp+22DCh] [bp+0h]@1 v75 = (unsigned int)&v77 ^ __security_cookie; v17 = (unsigned int)&v77 ^ __security_cookie; v3 = 0; v4 = this; if ( a2 && sub_43B000(this, a2) ) { sub_44E180((int)&v20); v21 = *(_DWORD *)(a2 + 2); rgbValue = v21; v5 = *(_DWORD *)v4 + 4684; v22 = 3137; v76 = 0; LOBYTE(v6) = sub_4531F0(v5, &rgbValue); if ( v6 ) { v7 = 0; v8 = *(_DWORD *)v4 + 4684; v30 = 0; v29 = 0; v28 = 0; v27 = 0; *(_DWORD *)v26 = 0; v41 = 0; v40 = 0; *(_DWORD *)v39 = 0; v19 = 0; v23 = 1; if ( sub_44E4A0(v8) ) { while ( 1 ) { sub_44E4E0(*(_DWORD *)v4 + 4684, &TargetValue); sub_44E6B0(*(_DWORD *)v4 + 4684, &v48); sub_44E510(*(_DWORD *)v4 + 4684, &v54); sub_44E4E0(*(_DWORD *)v4 + 4684, &v56); sub_44E540(*(_DWORD *)v4 + 4684, &v55); sub_44E600(*(_DWORD *)v4 + 4684, v57); sub_44E600(*(_DWORD *)v4 + 4684, &v58); sub_44E510(*(_DWORD *)v4 + 4684, &v59); sub_44E540(*(_DWORD *)v4 + 4684, &v60); sub_44E600(*(_DWORD *)v4 + 4684, &v61); sub_44E6B0(*(_DWORD *)v4 + 4684, &v62); v71 = 0; v72 = 0; v73 = 0; v42 = TargetValue; v66 = v52; v67 = v51; v65 = v53; v68 = v50; v69 = v49 - 1; v70 = v48 - 1900; Time = _LN52(&v65); memcpy(&v46, _localtime32(&Time), 0x24u); v33 = v55; v44 = 0; v45 = 0; v31 = v54; v32 = v56; v9 = 0; do { v10 = v57[v9]; v34[v9++] = v10; } while ( v10 ); v30 = 0; v29 = 0; v28 = 0; v27 = 0; *(_DWORD *)v26 = 0; strncpy(v26, &v58, 0x14u); v36 = v59; v37 = v60; v38 = 0; v41 = 0; v40 = 0; *(_DWORD *)v39 = 0; strncpy(v39, &v61, 0xCu); v35 = v35 & 0xFC000000 | 2 * (v62 & 0x7FF | ((BYTE2(v62) & 0xF | 16 * (v63 & 0x1F | 32 * (v64 & 0x1F))) << 11)); v11 = &v25[234 * v19]; sub_4055B0((int)&v25[234 * v19], (int)v26); memcpy(v11 + 110, &v42, 0x7Cu); v12 = v19 + 1; v13 = 234 * (v19++ + 1) + 9; if ( (signed int)v13 >= 2046 && v12 > 1 ) { v24 = v12; sub_44E310((int)&v20, 0x7455u, v13, 0); if ( !sub_43BFB0(*(_DWORD *)(v4 + 4), (int)&v20) ) { sub_44E4D0(*(_DWORD *)v4 + 4684); v76 = -1; nullsub_1(&v20); goto LABEL_18; } v19 = 0; v23 = 0; } v3 = 0; if ( !sub_44E4A0(*(_DWORD *)v4 + 4684) ) { v7 = v19; break; } } } sub_44E4D0(*(_DWORD *)v4 + 4684); v23 |= 2u; v24 = v7; sub_44E310((int)&v20, 0x7455u, 234 * v7 + 9, v3); v16 = (int)&v20; } else { sprintf(&v74, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_REQ, GuildNo=%d", *(_DWORD *)(a2 + 2), v17); sub_446350(1, "Msg", "%s", &v74); v22 = 3140; sub_44E310((int)&v20, 0x7455u, 9u, 0); v16 = (int)&v20; } v14 = sub_43BFB0(*(_DWORD *)(v4 + 4), v16); v76 = -1; nullsub_1(&v20); result = v14; } else { LABEL_18: result = 0; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 4317D0: using guessed type char var_1C4[65]; // 4317D0: using guessed type char var_2B5[64]; // 4317D0: using guessed type char var_22C6[8182]; //----- (00431D20) -------------------------------------------------------- signed int __thiscall sub_431D20(int this, int a2, int a3) { int v3; // esi@1 int v4; // ST38_4@2 int v5; // eax@2 int v6; // ecx@4 signed int v7; // edi@4 int v8; // eax@5 char v9; // cl@6 int v10; // eax@7 char v11; // cl@8 signed int v12; // esi@15 signed int result; // eax@15 int v14; // [sp-14h] [bp-2758h]@3 char v15; // [sp+0h] [bp-2744h]@2 __int16 v16; // [sp+5h] [bp-273Fh]@2 char v17; // [sp+7h] [bp-273Dh]@4 __int16 v18; // [sp+8h] [bp-273Ch]@11 char v19[8186]; // [sp+Ah] [bp-273Ah]@9 int v20; // [sp+2004h] [bp-740h]@5 char v21[4]; // [sp+2008h] [bp-73Ch]@4 int v22; // [sp+200Ch] [bp-738h]@4 int v23; // [sp+2010h] [bp-734h]@4 int v24; // [sp+2014h] [bp-730h]@4 char v25[4]; // [sp+2018h] [bp-72Ch]@4 int v26; // [sp+201Ch] [bp-728h]@4 int v27; // [sp+2020h] [bp-724h]@4 __int16 v28; // [sp+2024h] [bp-720h]@5 int v29; // [sp+2026h] [bp-71Eh]@5 int v30; // [sp+202Ah] [bp-71Ah]@5 char v31; // [sp+202Eh] [bp-716h]@5 char v32; // [sp+202Fh] [bp-715h]@5 int v33; // [sp+2030h] [bp-714h]@5 __int16 v34; // [sp+2034h] [bp-710h]@5 int v35; // [sp+2036h] [bp-70Eh]@5 int v36; // [sp+203Ah] [bp-70Ah]@5 int v37; // [sp+203Eh] [bp-706h]@5 int v38; // [sp+2042h] [bp-702h]@5 int v39; // [sp+2046h] [bp-6FEh]@5 int v40; // [sp+204Ah] [bp-6FAh]@5 int v41; // [sp+204Eh] [bp-6F6h]@5 int v42; // [sp+2052h] [bp-6F2h]@5 int v43; // [sp+2056h] [bp-6EEh]@5 int v44; // [sp+205Ah] [bp-6EAh]@5 char v45; // [sp+205Eh] [bp-6E6h]@5 int v46; // [sp+205Fh] [bp-6E5h]@5 char v47[128]; // [sp+2063h] [bp-6E1h]@8 int v48; // [sp+20E3h] [bp-661h]@5 char v49[4]; // [sp+20E7h] [bp-65Dh]@4 int v50; // [sp+20EBh] [bp-659h]@4 int v51; // [sp+20EFh] [bp-655h]@4 int v52; // [sp+20F3h] [bp-651h]@4 int v53; // [sp+20F7h] [bp-64Dh]@4 char v54[513]; // [sp+20FBh] [bp-649h]@6 int TargetValue; // [sp+22FCh] [bp-448h]@5 char v56; // [sp+2300h] [bp-444h]@5 char v57; // [sp+2313h] [bp-431h]@5 __int16 v58; // [sp+231Eh] [bp-426h]@5 int v59; // [sp+2324h] [bp-420h]@5 int v60; // [sp+2328h] [bp-41Ch]@5 char v61; // [sp+232Ch] [bp-418h]@5 char v62; // [sp+232Dh] [bp-417h]@5 int v63; // [sp+2330h] [bp-414h]@5 __int16 v64; // [sp+2334h] [bp-410h]@5 int v65; // [sp+233Ch] [bp-408h]@5 int v66; // [sp+2340h] [bp-404h]@5 __int16 v67; // [sp+2344h] [bp-400h]@5 unsigned __int16 v68; // [sp+2346h] [bp-3FEh]@5 unsigned __int16 v69; // [sp+2348h] [bp-3FCh]@5 unsigned __int16 v70; // [sp+234Ah] [bp-3FAh]@5 unsigned __int16 v71; // [sp+234Ch] [bp-3F8h]@5 unsigned __int16 v72; // [sp+234Eh] [bp-3F6h]@5 __int16 v73; // [sp+2354h] [bp-3F0h]@5 unsigned __int16 v74; // [sp+2356h] [bp-3EEh]@5 unsigned __int16 v75; // [sp+2358h] [bp-3ECh]@5 unsigned __int16 v76; // [sp+235Ah] [bp-3EAh]@5 unsigned __int16 v77; // [sp+235Ch] [bp-3E8h]@5 unsigned __int16 v78; // [sp+235Eh] [bp-3E6h]@5 __int16 v79; // [sp+2364h] [bp-3E0h]@5 unsigned __int16 v80; // [sp+2366h] [bp-3DEh]@5 unsigned __int16 v81; // [sp+2368h] [bp-3DCh]@5 unsigned __int16 v82; // [sp+236Ah] [bp-3DAh]@5 unsigned __int16 v83; // [sp+236Ch] [bp-3D8h]@5 unsigned __int16 v84; // [sp+236Eh] [bp-3D6h]@5 __int16 v85; // [sp+2374h] [bp-3D0h]@5 unsigned __int16 v86; // [sp+2376h] [bp-3CEh]@5 unsigned __int16 v87; // [sp+2378h] [bp-3CCh]@5 unsigned __int16 v88; // [sp+237Ah] [bp-3CAh]@5 unsigned __int16 v89; // [sp+237Ch] [bp-3C8h]@5 unsigned __int16 v90; // [sp+237Eh] [bp-3C6h]@5 int v91; // [sp+2384h] [bp-3C0h]@5 int v92; // [sp+2388h] [bp-3BCh]@5 int v93; // [sp+238Ch] [bp-3B8h]@5 int v94; // [sp+2390h] [bp-3B4h]@5 char v95; // [sp+2394h] [bp-3B0h]@5 __int16 v96; // [sp+2398h] [bp-3ACh]@5 unsigned __int16 v97; // [sp+239Ah] [bp-3AAh]@5 unsigned __int16 v98; // [sp+239Ch] [bp-3A8h]@5 unsigned __int16 v99; // [sp+239Eh] [bp-3A6h]@5 unsigned __int16 v100; // [sp+23A0h] [bp-3A4h]@5 unsigned __int16 v101; // [sp+23A2h] [bp-3A2h]@5 char v102[132]; // [sp+23A8h] [bp-39Ch]@5 __int16 v103; // [sp+242Ch] [bp-318h]@5 unsigned __int16 v104; // [sp+242Eh] [bp-316h]@5 unsigned __int16 v105; // [sp+2430h] [bp-314h]@5 unsigned __int16 v106; // [sp+2432h] [bp-312h]@5 unsigned __int16 v107; // [sp+2434h] [bp-310h]@5 unsigned __int16 v108; // [sp+2436h] [bp-30Eh]@5 char v109; // [sp+243Ch] [bp-308h]@5 char v110[523]; // [sp+2451h] [bp-2F3h]@5 int v111; // [sp+265Ch] [bp-E8h]@5 int v112; // [sp+2660h] [bp-E4h]@5 int v113; // [sp+2664h] [bp-E0h]@5 int v114; // [sp+2668h] [bp-DCh]@5 int v115; // [sp+266Ch] [bp-D8h]@5 int v116; // [sp+2670h] [bp-D4h]@5 int v117; // [sp+2674h] [bp-D0h]@5 int v118; // [sp+2678h] [bp-CCh]@5 int v119; // [sp+267Ch] [bp-C8h]@5 int v120; // [sp+2680h] [bp-C4h]@5 int v121; // [sp+2684h] [bp-C0h]@5 int v122; // [sp+2688h] [bp-BCh]@5 int v123; // [sp+268Ch] [bp-B8h]@5 int v124; // [sp+2690h] [bp-B4h]@5 int v125; // [sp+2694h] [bp-B0h]@5 int v126; // [sp+2698h] [bp-ACh]@5 int v127; // [sp+269Ch] [bp-A8h]@5 int v128; // [sp+26A0h] [bp-A4h]@5 int v129; // [sp+26A4h] [bp-A0h]@5 int v130; // [sp+26A8h] [bp-9Ch]@5 int v131; // [sp+26ACh] [bp-98h]@5 int v132; // [sp+26B0h] [bp-94h]@5 int v133; // [sp+26B4h] [bp-90h]@5 int v134; // [sp+26B8h] [bp-8Ch]@5 int v135; // [sp+26BCh] [bp-88h]@5 int v136; // [sp+26C0h] [bp-84h]@5 int v137; // [sp+26C4h] [bp-80h]@5 int v138; // [sp+26C8h] [bp-7Ch]@5 int v139; // [sp+26CCh] [bp-78h]@5 int v140; // [sp+26D0h] [bp-74h]@5 int v141; // [sp+26D4h] [bp-70h]@5 int v142; // [sp+26D8h] [bp-6Ch]@5 int v143; // [sp+26DCh] [bp-68h]@5 int v144; // [sp+26E0h] [bp-64h]@5 int v145; // [sp+26E4h] [bp-60h]@5 int v146; // [sp+26E8h] [bp-5Ch]@5 int v147; // [sp+26ECh] [bp-58h]@5 int v148; // [sp+26F0h] [bp-54h]@5 int v149; // [sp+26F4h] [bp-50h]@5 int v150; // [sp+26F8h] [bp-4Ch]@5 int v151; // [sp+26FCh] [bp-48h]@5 int v152; // [sp+2700h] [bp-44h]@5 int v153; // [sp+2704h] [bp-40h]@5 int v154; // [sp+2708h] [bp-3Ch]@5 int v155; // [sp+270Ch] [bp-38h]@5 int v156; // [sp+2710h] [bp-34h]@5 int v157; // [sp+2714h] [bp-30h]@5 int v158; // [sp+2718h] [bp-2Ch]@5 int v159; // [sp+271Ch] [bp-28h]@5 int v160; // [sp+2720h] [bp-24h]@5 int v161; // [sp+2724h] [bp-20h]@5 int v162; // [sp+2728h] [bp-1Ch]@5 int v163; // [sp+272Ch] [bp-18h]@5 int v164; // [sp+2730h] [bp-14h]@5 unsigned int v165; // [sp+2734h] [bp-10h]@1 int v166; // [sp+2740h] [bp-4h]@2 int v167; // [sp+2744h] [bp+0h]@1 v165 = (unsigned int)&v167 ^ __security_cookie; v3 = this; if ( sub_43B000(this, a2) ) { sub_44E180((int)&v15); v16 = 3137; v4 = *(_DWORD *)v3 + 4684; v166 = 0; LOBYTE(v5) = sub_4520F0(v4); if ( v5 ) { v6 = *(_DWORD *)v3 + 4684; v24 = 0; v23 = 0; v22 = 0; *(_DWORD *)v21 = 0; v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; v53 = 0; v52 = 0; v51 = 0; v50 = 0; *(_DWORD *)v49 = 0; v7 = 0; v17 = 1; if ( sub_44E4A0(v6) ) { do { sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E600(*(_DWORD *)v3 + 4684, &v56); sub_44E600(*(_DWORD *)v3 + 4684, &v57); sub_44E540(*(_DWORD *)v3 + 4684, &v58); sub_44E5A0(*(_DWORD *)v3 + 4684, &v59); sub_44E510(*(_DWORD *)v3 + 4684, &v61); sub_44E510(*(_DWORD *)v3 + 4684, &v62); sub_44E4E0(*(_DWORD *)v3 + 4684, &v63); sub_44E540(*(_DWORD *)v3 + 4684, &v64); sub_44E5A0(*(_DWORD *)v3 + 4684, &v65); sub_44E6B0(*(_DWORD *)v3 + 4684, &v67); sub_44E6B0(*(_DWORD *)v3 + 4684, &v73); sub_44E6B0(*(_DWORD *)v3 + 4684, &v79); sub_44E6B0(*(_DWORD *)v3 + 4684, &v85); sub_44E4E0(*(_DWORD *)v3 + 4684, &v91); sub_44E4E0(*(_DWORD *)v3 + 4684, &v92); sub_44E4E0(*(_DWORD *)v3 + 4684, &v93); sub_44E4E0(*(_DWORD *)v3 + 4684, &v94); sub_44E510(*(_DWORD *)v3 + 4684, &v95); sub_44E6B0(*(_DWORD *)v3 + 4684, &v96); sub_44E6B0(*(_DWORD *)v3 + 4684, &v103); sub_44E600(*(_DWORD *)v3 + 4684, &v109); sub_44E600(*(_DWORD *)v3 + 4684, v110); sub_44E600(*(_DWORD *)v3 + 4684, v102); v20 = TargetValue; v24 = 0; v23 = 0; v22 = 0; *(_DWORD *)v21 = 0; strncpy(v21, &v56, 0x10u); v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; strncpy(v25, &v57, 0xCu); v29 = v59; v28 = v58; v30 = v60; v32 = v62; v31 = v61; v33 = v63; v35 = v65; v34 = v64; v36 = v66; v153 = 0; v154 = 0; v155 = 0; v147 = v72; v148 = v71; v149 = v70; v150 = v69; v151 = v68 - 1; v152 = v67 - 1900; v37 = _LN52(&v147); v117 = 0; v118 = 0; v119 = 0; v111 = v78; v112 = v77; v113 = v76; v114 = v75; v115 = v74 - 1; v116 = v73 - 1900; v38 = _LN52(&v111); v135 = 0; v136 = 0; v137 = 0; v129 = v84; v130 = v83; v131 = v82; v132 = v81; v133 = v80 - 1; v134 = v79 - 1900; v39 = _LN52(&v129); v126 = 0; v127 = 0; v128 = 0; v120 = v90; v121 = v89; v122 = v88; v123 = v87; v124 = v86 - 1; v125 = v85 - 1900; v40 = _LN52(&v120); v41 = v91; v42 = v92; v44 = v94; v43 = v93; v45 = v95; v162 = 0; v163 = 0; v164 = 0; v156 = v101; v157 = v100; v158 = v99; v159 = v98; v160 = v97 - 1; v161 = v96 - 1900; v46 = _LN52(&v156); v144 = 0; v145 = 0; v146 = 0; v138 = v108; v139 = v107; v140 = v106; v141 = v105; v142 = v104 - 1; v143 = v103 - 1900; v48 = _LN52(&v138); v53 = 0; v52 = 0; v51 = 0; v50 = 0; *(_DWORD *)v49 = 0; strncpy(v49, &v109, 0x14u); v8 = 0; do { v9 = v110[v8]; v54[v8++] = v9; } while ( v9 ); v10 = 0; do { v11 = v102[v10]; v47[v10++] = v11; } while ( v11 ); sub_4142B0((int)&v19[759 * v7++], (int)&v20); if ( 759 * v7 + 5 >= 2046 && v7 > 1 ) { v18 = v7; sub_44E310((int)&v15, 0x7457u, 759 * v7 + 5, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v15) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); v166 = -1; nullsub_1(&v15); goto LABEL_18; } v7 = 0; v17 = 0; } } while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v17 |= 2u; v18 = v7; sub_44E310((int)&v15, 0x7457u, 759 * v7 + 5, 0); v14 = (int)&v15; } else { sub_446350(1, "Msg", "%s", "ERROR - CPFsCharacter::fc_NC_GUILD_DB_LIST_REQ"); v16 = 3139; sub_44E310((int)&v15, 0x7457u, 5u, 0); v14 = (int)&v15; } v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), v14); v166 = -1; nullsub_1(&v15); result = v12; } else { LABEL_18: result = 0; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 431D20: using guessed type char var_2F3[523]; // 431D20: using guessed type char var_39C[132]; // 431D20: using guessed type char var_649[513]; // 431D20: using guessed type char var_6E1[128]; // 431D20: using guessed type char var_273A[8186]; //----- (004325F0) -------------------------------------------------------- signed int __thiscall sub_4325F0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ebx@2 int v6; // ecx@2 __int16 v7; // dx@2 int v8; // eax@2 int v9; // ST18_4@2 int v10; // ST18_4@3 char *v11; // edi@5 __int16 v12; // dx@9 int v13; // ecx@9 signed int v14; // esi@10 unsigned int v15; // [sp-10h] [bp-2174h]@1 int rgbValue; // [sp+0h] [bp-2164h]@2 int v17; // [sp+4h] [bp-2160h]@2 int v18; // [sp+8h] [bp-215Ch]@6 __int16 v19; // [sp+Ch] [bp-2158h]@9 char v20; // [sp+10h] [bp-2154h]@2 int v21; // [sp+15h] [bp-214Fh]@2 __int16 v22; // [sp+19h] [bp-214Bh]@2 __int16 v23; // [sp+1Bh] [bp-2149h]@2 __int16 v24; // [sp+1Dh] [bp-2147h]@10 char v25; // [sp+1Fh] [bp-2145h]@5 char TargetValue; // [sp+2014h] [bp-150h]@6 __int16 v27; // [sp+2018h] [bp-14Ch]@6 char v28; // [sp+201Ch] [bp-148h]@6 __int16 v29; // [sp+2020h] [bp-144h]@6 unsigned __int16 v30; // [sp+2022h] [bp-142h]@8 unsigned __int16 v31; // [sp+2024h] [bp-140h]@8 unsigned __int16 v32; // [sp+2026h] [bp-13Eh]@8 unsigned __int16 v33; // [sp+2028h] [bp-13Ch]@8 unsigned __int16 v34; // [sp+202Ah] [bp-13Ah]@8 int v35; // [sp+2030h] [bp-134h]@8 int v36; // [sp+2034h] [bp-130h]@8 int v37; // [sp+2038h] [bp-12Ch]@8 int v38; // [sp+203Ch] [bp-128h]@8 int v39; // [sp+2040h] [bp-124h]@8 int v40; // [sp+2044h] [bp-120h]@8 int v41; // [sp+2048h] [bp-11Ch]@8 int v42; // [sp+204Ch] [bp-118h]@8 int v43; // [sp+2050h] [bp-114h]@8 char v44; // [sp+2054h] [bp-110h]@3 unsigned int v45; // [sp+2154h] [bp-10h]@1 int v46; // [sp+2160h] [bp-4h]@2 int v47; // [sp+2164h] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v15 = (unsigned int)&v47 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v20); v5 = 0; v46 = 0; sub_44E310((int)&v20, 0x8C5Au, 0xAu, 0); v6 = *(_DWORD *)(a2 + 2); v7 = *(_WORD *)(a2 + 6); v23 = 6664; v8 = *(_DWORD *)(a2 + 4); v21 = v6; rgbValue = v8; v9 = *(_DWORD *)v3 + 4684; v22 = v7; v17 = 0; if ( !sub_459480(v9, &rgbValue) ) { v10 = *(_DWORD *)(a2 + 4); v23 = 6665; sprintf(&v44, "ERROR - CPFsCharacter::fc_NC_MINIHOUSE_DB_PORTAL_LIST_REQ : CharNo=%d, nRet=%d", v10, v17, v15); sub_446350(1, "Msg", "%s", &v44); } if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { v11 = &v25; do { sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4E0(*(_DWORD *)v3 + 4684, &v27); sub_44E510(*(_DWORD *)v3 + 4684, &v28); sub_44E6B0(*(_DWORD *)v3 + 4684, &v29); LOWORD(v18) = v27; if ( v28 ) { v41 = 0; v42 = 0; v43 = 0; v35 = v34; v36 = v33; v37 = v32; v38 = v31; v39 = v30 - 1; v40 = v29 - 1900; *(int *)((char *)&v18 + 2) = _LN52(&v35); } else { *(int *)((char *)&v18 + 2) = 0; } v12 = v19; *(_DWORD *)v11 = v18; v13 = *(_DWORD *)v3; *((_WORD *)v11 + 2) = v12; ++v5; v11 += 6; } while ( sub_44E4A0(v13 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v24 = v5; sub_44E310((int)&v20, 0x8C5Au, 6 * v5 + 10, 0); v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v20); v46 = -1; nullsub_1(&v20); result = v14; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (004328C0) -------------------------------------------------------- signed int __thiscall sub_4328C0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // dx@2 int v6; // ebx@2 char v7; // cl@2 int v8; // ecx@2 int v9; // eax@2 int v10; // ebx@2 int v11; // eax@2 int v12; // ST18_4@2 int v13; // ST18_4@3 signed int v14; // esi@4 unsigned int v15; // [sp-10h] [bp-2154h]@1 char v16; // [sp+0h] [bp-2144h]@2 int v17; // [sp+5h] [bp-213Fh]@2 __int16 v18; // [sp+9h] [bp-213Bh]@2 __int16 v19; // [sp+Bh] [bp-2139h]@2 char v20; // [sp+Dh] [bp-2137h]@2 int v21; // [sp+Eh] [bp-2136h]@2 __int16 v22; // [sp+12h] [bp-2132h]@2 __int16 v23; // [sp+14h] [bp-2130h]@2 int rgbValue; // [sp+2004h] [bp-140h]@2 int v25; // [sp+2008h] [bp-13Ch]@2 char v26; // [sp+200Ch] [bp-138h]@2 int v27; // [sp+2010h] [bp-134h]@2 int v28; // [sp+2024h] [bp-120h]@2 int v29; // [sp+2028h] [bp-11Ch]@2 int v30; // [sp+202Ch] [bp-118h]@2 char v31; // [sp+2034h] [bp-110h]@3 unsigned int v32; // [sp+2134h] [bp-10h]@1 int v33; // [sp+2140h] [bp-4h]@2 int v34; // [sp+2144h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v15 = (unsigned int)&v34 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v16); v33 = 0; sub_44E310((int)&v16, 0x8C5Eu, 0x11u, 0); v5 = *(_WORD *)(a2 + 6); v6 = *(_DWORD *)(a2 + 11); v17 = *(_DWORD *)(a2 + 2); v7 = *(_BYTE *)(a2 + 10); v18 = v5; v20 = v7; v26 = v7; v8 = *(_DWORD *)(a2 + 17); v23 = 6672; v9 = *(_WORD *)(a2 + 8); v21 = v6; LOWORD(v6) = *(_WORD *)(a2 + 15); v28 = v8; v19 = v9; v22 = v6; v10 = *(_DWORD *)(a2 + 4); v25 = v9; v11 = *(_DWORD *)(a2 + 21); rgbValue = v10; v29 = v11; sub_417FC0((__time32_t *)(a2 + 11), (int)&v27); v12 = *(_DWORD *)v3 + 4684; v30 = 0; if ( !sub_459570(v12, &rgbValue) ) { v13 = *(_DWORD *)(a2 + 4); v23 = 6673; sprintf(&v31, "ERROR - CPFsCharacter::fc_NC_MINIHOUSE_DB_PORTAL_ADD_REQ : CharNo=%d, nRet=%d", v13, v30, v15); sub_446350(1, "Msg", "%s", &v31); } sub_44E310((int)&v16, 0x8C5Eu, 0x11u, 0); v14 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v16); v33 = -1; nullsub_1(&v16); result = v14; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00432A70) -------------------------------------------------------- signed int __thiscall sub_432A70(int this, int a2, int a3) { int v3; // esi@1 int v4; // ST14_4@2 int v5; // eax@2 int v6; // ecx@4 signed int v7; // edi@4 int v8; // eax@5 char v9; // cl@6 int v10; // eax@7 char v11; // cl@8 signed int v12; // esi@15 signed int result; // eax@15 size_t v14; // [sp-18h] [bp-2768h]@3 const void *v15; // [sp-14h] [bp-2764h]@3 unsigned int v16; // [sp-10h] [bp-2760h]@1 int rgbValue; // [sp+0h] [bp-2750h]@2 char v18; // [sp+4h] [bp-274Ch]@2 __int16 v19; // [sp+9h] [bp-2747h]@2 char v20; // [sp+Bh] [bp-2745h]@4 __int16 v21; // [sp+Ch] [bp-2744h]@11 char v22[8186]; // [sp+Eh] [bp-2742h]@9 int TargetValue; // [sp+2008h] [bp-748h]@5 int v24; // [sp+200Ch] [bp-744h]@5 char v25; // [sp+2010h] [bp-740h]@5 __int16 v26; // [sp+2038h] [bp-718h]@5 int v27; // [sp+2040h] [bp-710h]@5 int v28; // [sp+2044h] [bp-70Ch]@5 int v29; // [sp+2048h] [bp-708h]@5 int v30; // [sp+204Ch] [bp-704h]@5 __int16 v31; // [sp+2050h] [bp-700h]@5 unsigned __int16 v32; // [sp+2052h] [bp-6FEh]@5 unsigned __int16 v33; // [sp+2054h] [bp-6FCh]@5 unsigned __int16 v34; // [sp+2056h] [bp-6FAh]@5 unsigned __int16 v35; // [sp+2058h] [bp-6F8h]@5 unsigned __int16 v36; // [sp+205Ah] [bp-6F6h]@5 __int16 v37; // [sp+2060h] [bp-6F0h]@5 unsigned __int16 v38; // [sp+2062h] [bp-6EEh]@5 unsigned __int16 v39; // [sp+2064h] [bp-6ECh]@5 unsigned __int16 v40; // [sp+2066h] [bp-6EAh]@5 unsigned __int16 v41; // [sp+2068h] [bp-6E8h]@5 unsigned __int16 v42; // [sp+206Ah] [bp-6E6h]@5 char v43[513]; // [sp+2070h] [bp-6E0h]@5 char v44[131]; // [sp+2271h] [bp-4DFh]@5 int v45; // [sp+22F4h] [bp-45Ch]@5 char v46; // [sp+22F8h] [bp-458h]@5 __int16 v47; // [sp+2320h] [bp-430h]@5 int v48; // [sp+2328h] [bp-428h]@5 int v49; // [sp+232Ch] [bp-424h]@5 char v50[4]; // [sp+2330h] [bp-420h]@4 int v51; // [sp+2334h] [bp-41Ch]@4 int v52; // [sp+2338h] [bp-418h]@4 int v53; // [sp+233Ch] [bp-414h]@4 int v54; // [sp+2340h] [bp-410h]@4 __int16 v55; // [sp+2344h] [bp-40Ch]@5 int v56; // [sp+2346h] [bp-40Ah]@5 int v57; // [sp+234Ah] [bp-406h]@5 int v58; // [sp+234Eh] [bp-402h]@5 int v59; // [sp+2352h] [bp-3FEh]@5 int v60; // [sp+2356h] [bp-3FAh]@5 int v61; // [sp+235Ah] [bp-3F6h]@5 char v62[512]; // [sp+235Eh] [bp-3F2h]@6 char v63[128]; // [sp+255Eh] [bp-1F2h]@8 int v64; // [sp+25DEh] [bp-172h]@9 char v65[4]; // [sp+25E2h] [bp-16Eh]@4 int v66; // [sp+25E6h] [bp-16Ah]@4 int v67; // [sp+25EAh] [bp-166h]@4 int v68; // [sp+25EEh] [bp-162h]@4 int v69; // [sp+25F2h] [bp-15Eh]@4 __int16 v70; // [sp+25F6h] [bp-15Ah]@9 int v71; // [sp+25F8h] [bp-158h]@5 int v72; // [sp+25FCh] [bp-154h]@5 int v73; // [sp+2600h] [bp-150h]@5 int v74; // [sp+2604h] [bp-14Ch]@5 int v75; // [sp+2608h] [bp-148h]@5 int v76; // [sp+260Ch] [bp-144h]@5 int v77; // [sp+2610h] [bp-140h]@5 int v78; // [sp+2614h] [bp-13Ch]@5 int v79; // [sp+2618h] [bp-138h]@5 int v80; // [sp+261Ch] [bp-134h]@5 int v81; // [sp+2620h] [bp-130h]@5 int v82; // [sp+2624h] [bp-12Ch]@5 int v83; // [sp+2628h] [bp-128h]@5 int v84; // [sp+262Ch] [bp-124h]@5 int v85; // [sp+2630h] [bp-120h]@5 int v86; // [sp+2634h] [bp-11Ch]@5 int v87; // [sp+2638h] [bp-118h]@5 int v88; // [sp+263Ch] [bp-114h]@5 char v89; // [sp+2640h] [bp-110h]@3 unsigned int v90; // [sp+2740h] [bp-10h]@1 int v91; // [sp+274Ch] [bp-4h]@2 int v92; // [sp+2750h] [bp+0h]@1 v90 = (unsigned int)&v92 ^ __security_cookie; v16 = (unsigned int)&v92 ^ __security_cookie; v3 = this; if ( sub_43B000(this, a2) ) { sub_44E180((int)&v18); v19 = 6016; v4 = *(_DWORD *)v3 + 4684; v91 = 0; LOBYTE(v5) = sub_4540E0(v4, &rgbValue); if ( v5 ) { v6 = *(_DWORD *)v3 + 4684; v54 = 0; v53 = 0; v52 = 0; v51 = 0; *(_DWORD *)v50 = 0; v69 = 0; v68 = 0; v67 = 0; v66 = 0; *(_DWORD *)v65 = 0; v7 = 0; v20 = 1; if ( sub_44E4A0(v6) ) { do { sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4E0(*(_DWORD *)v3 + 4684, &v24); sub_44E600(*(_DWORD *)v3 + 4684, &v25); sub_44E540(*(_DWORD *)v3 + 4684, &v26); sub_44E5A0(*(_DWORD *)v3 + 4684, &v27); sub_44E4E0(*(_DWORD *)v3 + 4684, &v29); sub_44E4E0(*(_DWORD *)v3 + 4684, &v30); sub_44E6B0(*(_DWORD *)v3 + 4684, &v31); sub_44E6B0(*(_DWORD *)v3 + 4684, &v37); sub_44E600(*(_DWORD *)v3 + 4684, v43); sub_44E600(*(_DWORD *)v3 + 4684, v44); sub_44E4E0(*(_DWORD *)v3 + 4684, &v45); sub_44E600(*(_DWORD *)v3 + 4684, &v46); sub_44E540(*(_DWORD *)v3 + 4684, &v47); v48 = TargetValue; v49 = v24; v54 = 0; v53 = 0; v52 = 0; v51 = 0; *(_DWORD *)v50 = 0; strncpy(v50, &v25, 0x14u); v57 = v28; v55 = v26; v56 = v27; v86 = 0; v87 = 0; v88 = 0; v58 = v29; v59 = v30; v80 = v36; v81 = v35; v82 = v34; v83 = v33; v84 = v32 - 1; v85 = v31 - 1900; v60 = _LN52(&v80); v77 = 0; v78 = 0; v79 = 0; v71 = v42; v72 = v41; v73 = v40; v74 = v39; v75 = v38 - 1; v76 = v37 - 1900; v61 = _LN52(&v71); v8 = 0; do { v9 = v43[v8]; v62[v8++] = v9; } while ( v9 ); v10 = 0; do { v11 = v44[v10]; v63[v10++] = v11; } while ( v11 ); v64 = v45; v69 = 0; v68 = 0; v67 = 0; v66 = 0; *(_DWORD *)v65 = 0; strncpy(v65, &v46, 0x14u); v70 = v47; sub_41B440((int)&v22[720 * v7++], (int)&v48); if ( 720 * v7 + 5 >= 2046 && v7 > 1 ) { v21 = v7; sub_44E310((int)&v18, 0x9802u, 720 * v7 + 5, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v18) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); v91 = -1; nullsub_1(&v18); goto LABEL_18; } v7 = 0; v20 = 0; } } while ( sub_44E4A0(*(_DWORD *)v3 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v20 |= 2u; v15 = 0; v21 = v7; v14 = 720 * v7 + 5; } else { sprintf(&v89, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_START_DB_ALL_REQ, nRet = (%d)", rgbValue, v16); sub_446350(1, "Msg", "%s", &v89); v15 = 0; v19 = 6033; v14 = 5; } sub_44E310((int)&v18, 0x9802u, v14, v15); v12 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v18); v91 = -1; nullsub_1(&v18); result = v12; } else { LABEL_18: result = 0; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 432A70: using guessed type char var_6E0[513]; // 432A70: using guessed type char var_4DF[131]; // 432A70: using guessed type char var_3F2[512]; // 432A70: using guessed type char var_1F2[128]; // 432A70: using guessed type char var_2742[8186]; //----- (00433030) -------------------------------------------------------- signed int __thiscall sub_433030(int this, int a2, int a3) { int v3; // ebx@1 int v4; // esi@2 __int16 v5; // cx@2 int v6; // eax@2 int v7; // eax@2 int v8; // ST18_4@3 int v9; // ecx@6 int v10; // eax@6 int v11; // eax@6 int v12; // ST18_4@7 int v13; // edi@8 int v14; // ecx@8 struct tm *v15; // eax@9 int v16; // edx@9 const void *v17; // esi@9 char *v18; // eax@9 int v19; // edx@9 signed int v20; // esi@16 signed int result; // eax@16 unsigned int v22; // [sp-10h] [bp-223Ch]@1 int v23; // [sp+0h] [bp-222Ch]@6 int v24; // [sp+4h] [bp-2228h]@6 int rgbValue; // [sp+8h] [bp-2224h]@2 int v26; // [sp+Ch] [bp-2220h]@2 __int16 TargetValue; // [sp+10h] [bp-221Ch]@5 int v28; // [sp+14h] [bp-2218h]@8 char v29; // [sp+18h] [bp-2214h]@2 __int16 v30; // [sp+1Dh] [bp-220Fh]@2 __int16 v31; // [sp+1Fh] [bp-220Dh]@2 char v32; // [sp+21h] [bp-220Bh]@8 int v33; // [sp+22h] [bp-220Ah]@2 __int16 v34; // [sp+5Eh] [bp-21CEh]@6 __int16 v35; // [sp+60h] [bp-21CCh]@12 char v36[8122]; // [sp+62h] [bp-21CAh]@9 char v37; // [sp+201Ch] [bp-210h]@9 char v38; // [sp+2044h] [bp-1E8h]@9 char v39; // [sp+2046h] [bp-1E6h]@9 __int16 v40; // [sp+2048h] [bp-1E4h]@9 unsigned __int16 v41; // [sp+204Ah] [bp-1E2h]@9 unsigned __int16 v42; // [sp+204Ch] [bp-1E0h]@9 unsigned __int16 v43; // [sp+204Eh] [bp-1DEh]@9 unsigned __int16 v44; // [sp+2050h] [bp-1DCh]@9 unsigned __int16 v45; // [sp+2052h] [bp-1DAh]@9 char v46; // [sp+2058h] [bp-1D4h]@9 __int16 v47; // [sp+205Ch] [bp-1D0h]@9 unsigned __int16 v48; // [sp+205Eh] [bp-1CEh]@9 unsigned __int16 v49; // [sp+2060h] [bp-1CCh]@9 unsigned __int16 v50; // [sp+2062h] [bp-1CAh]@9 unsigned __int16 v51; // [sp+2064h] [bp-1C8h]@9 unsigned __int16 v52; // [sp+2066h] [bp-1C6h]@9 char v53[4]; // [sp+206Ch] [bp-1C0h]@8 int v54; // [sp+2070h] [bp-1BCh]@8 int v55; // [sp+2074h] [bp-1B8h]@8 int v56; // [sp+2078h] [bp-1B4h]@8 int v57; // [sp+207Ch] [bp-1B0h]@8 char v58; // [sp+2080h] [bp-1ACh]@9 char v59; // [sp+2081h] [bp-1ABh]@9 __time32_t Time; // [sp+2082h] [bp-1AAh]@9 char v61; // [sp+2086h] [bp-1A6h]@9 char v62; // [sp+20AAh] [bp-182h]@9 int v63; // [sp+20ABh] [bp-181h]@9 char v64; // [sp+20AFh] [bp-17Dh]@9 int v65; // [sp+20D4h] [bp-158h]@9 int v66; // [sp+20D8h] [bp-154h]@9 int v67; // [sp+20DCh] [bp-150h]@9 int v68; // [sp+20E0h] [bp-14Ch]@9 int v69; // [sp+20E4h] [bp-148h]@9 int v70; // [sp+20E8h] [bp-144h]@9 int v71; // [sp+20ECh] [bp-140h]@9 int v72; // [sp+20F0h] [bp-13Ch]@9 int v73; // [sp+20F4h] [bp-138h]@9 int v74; // [sp+20F8h] [bp-134h]@9 int v75; // [sp+20FCh] [bp-130h]@9 int v76; // [sp+2100h] [bp-12Ch]@9 int v77; // [sp+2104h] [bp-128h]@9 int v78; // [sp+2108h] [bp-124h]@9 int v79; // [sp+210Ch] [bp-120h]@9 int v80; // [sp+2110h] [bp-11Ch]@9 int v81; // [sp+2114h] [bp-118h]@9 int v82; // [sp+2118h] [bp-114h]@9 char v83; // [sp+211Ch] [bp-110h]@3 unsigned int v84; // [sp+221Ch] [bp-10h]@1 int v85; // [sp+2228h] [bp-4h]@2 int v86; // [sp+222Ch] [bp+0h]@1 v84 = (unsigned int)&v86 ^ __security_cookie; v22 = (unsigned int)&v86 ^ __security_cookie; v3 = this; if ( sub_43B000(this, a2) ) { sub_44E180((int)&v29); v4 = 0; v85 = 0; sub_44E310((int)&v29, 0x984Cu, 0x45u, 0); v5 = *(_WORD *)(a2 + 2); v30 = 6568; v33 = *(_DWORD *)(a2 + 4); rgbValue = v33; v6 = *(_DWORD *)v3 + 4684; v31 = v5; v26 = 0; LOBYTE(v7) = sub_4551B0(v6, &rgbValue); if ( !v7 ) { v8 = *(_DWORD *)(a2 + 4); v30 = 6571; sprintf( &v83, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_GET_GRADUATE_REQ : GuildNo=%d, nRet=%d", v8, v26, v22); sub_446350(1, "Msg", "%s", &v83); } if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E4D0(*(_DWORD *)v3 + 4684); v9 = *(_DWORD *)(a2 + 4); v34 = TargetValue; v10 = *(_DWORD *)v3 + 4684; v23 = v9; v24 = 0; LOBYTE(v11) = sub_4552A0(v10, &v23); if ( !v11 ) { v12 = *(_DWORD *)(a2 + 4); v30 = 6571; sprintf( &v83, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_GET_GRADUATE_REQ : GuildNo=%d, nRet=%d", v12, v24, v22); sub_446350(1, "Msg", "%s", &v83); } v13 = 0; v14 = *(_DWORD *)v3 + 4684; v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; v28 = 0; v32 = 1; if ( sub_44E4A0(v14) ) { while ( 1 ) { sub_44E600(*(_DWORD *)v3 + 4684, &v37); sub_44E510(*(_DWORD *)v3 + 4684, &v38); sub_44E540(*(_DWORD *)v3 + 4684, &v39); sub_44E6B0(*(_DWORD *)v3 + 4684, &v40); sub_44E540(*(_DWORD *)v3 + 4684, &v46); sub_44E6B0(*(_DWORD *)v3 + 4684, &v47); v57 = v4; v56 = v4; v55 = v4; v54 = v4; *(_DWORD *)v53 = v4; strncpy(v53, &v37, 0x14u); v80 = 0; v81 = 0; v82 = 0; v58 = v38; v59 = v39; v74 = v45; v75 = v44; v76 = v43; v77 = v42; v78 = v41 - 1; v79 = v40 - 1900; Time = _LN52(&v74); memcpy(&v61, _localtime32(&Time), 0x24u); v71 = 0; v72 = 0; v73 = 0; v62 = v46; v65 = v52; v66 = v51; v67 = v50; v68 = v49; v69 = v48 - 1; v70 = v47 - 1900; v63 = _LN52(&v65); v15 = _localtime32((const __time32_t *)&v63); v16 = v28; v17 = v15; v18 = &v36[103 * v28]; memcpy(&v64, v17, 0x24u); *(_DWORD *)v18 = *(_DWORD *)v53; *((_DWORD *)v18 + 1) = v54; *((_DWORD *)v18 + 2) = v55; *((_DWORD *)v18 + 3) = v56; *((_DWORD *)v18 + 4) = v57; v18[20] = v58; v18[21] = v59; *(_DWORD *)(v18 + 22) = Time; memcpy(v18 + 26, &v61, 0x24u); v18[62] = v62; *(_DWORD *)(v18 + 63) = v63; v19 = v16 + 1; memcpy(v18 + 67, &v64, 0x24u); v28 = v19; if ( (103 * v19 + 69 >= 2046 || v19 >= 144) && v19 > 1 ) { v35 = v19; sub_44E310((int)&v29, 0x984Cu, 103 * v19 + 69, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v29) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); v85 = -1; nullsub_1(&v29); goto LABEL_19; } v28 = 0; v32 = 0; } v4 = 0; if ( !sub_44E4A0(*(_DWORD *)v3 + 4684) ) { v13 = v28; break; } } } sub_44E4D0(*(_DWORD *)v3 + 4684); v32 |= 2u; v35 = v13; sub_44E310((int)&v29, 0x984Cu, 103 * v13 + 69, (const void *)v4); v20 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v29); v85 = -1; nullsub_1(&v29); result = v20; } else { LABEL_19: result = 0; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 433030: using guessed type char var_21CA[8122]; //----- (00433610) -------------------------------------------------------- signed int __thiscall sub_433610(int this, int a2, int a3) { int v3; // esi@1 __int16 v4; // cx@2 int v5; // edx@2 int v6; // eax@2 int v7; // eax@2 int v8; // ST18_4@3 int v9; // edi@4 int v10; // ecx@4 int v11; // edx@5 int v12; // ecx@5 int *v13; // eax@5 int v14; // edx@5 int v15; // ecx@5 int v16; // edx@5 int v17; // ecx@5 int v18; // edx@5 int v19; // ecx@5 int v20; // edx@5 int v21; // edi@5 int v22; // ecx@5 size_t v23; // edi@5 bool v24; // al@9 int v25; // eax@10 signed int v26; // esi@10 unsigned int v28; // [sp-10h] [bp-21DCh]@1 int rgbValue; // [sp+0h] [bp-21CCh]@2 int v30; // [sp+4h] [bp-21C8h]@2 int v31; // [sp+8h] [bp-21C4h]@4 char v32; // [sp+Ch] [bp-21C0h]@2 __int16 v33; // [sp+11h] [bp-21BBh]@2 __int16 v34; // [sp+13h] [bp-21B9h]@2 char v35; // [sp+15h] [bp-21B7h]@2 int v36; // [sp+16h] [bp-21B6h]@2 int v37; // [sp+3Eh] [bp-218Eh]@2 int v38; // [sp+42h] [bp-218Ah]@2 int v39[2034]; // [sp+46h] [bp-2186h]@5 __int16 v40; // [sp+2010h] [bp-1BCh]@5 unsigned __int16 v41; // [sp+2012h] [bp-1BAh]@7 unsigned __int16 v42; // [sp+2014h] [bp-1B8h]@7 unsigned __int16 v43; // [sp+2016h] [bp-1B6h]@7 unsigned __int16 v44; // [sp+2018h] [bp-1B4h]@7 unsigned __int16 v45; // [sp+201Ah] [bp-1B2h]@7 int v46; // [sp+2020h] [bp-1ACh]@5 char TargetValue; // [sp+2024h] [bp-1A8h]@5 char v48; // [sp+2028h] [bp-1A4h]@5 char v49; // [sp+203Ch] [bp-190h]@5 char v50; // [sp+2040h] [bp-18Ch]@5 int v51; // [sp+2068h] [bp-164h]@5 int v52; // [sp+206Ch] [bp-160h]@5 char v53[4]; // [sp+2070h] [bp-15Ch]@4 int v54; // [sp+2074h] [bp-158h]@4 int v55; // [sp+2078h] [bp-154h]@4 int v56; // [sp+207Ch] [bp-150h]@4 char v57[4]; // [sp+2080h] [bp-14Ch]@4 int v58; // [sp+2084h] [bp-148h]@4 int v59; // [sp+2088h] [bp-144h]@4 int v60; // [sp+208Ch] [bp-140h]@4 int v61; // [sp+2090h] [bp-13Ch]@4 int v62; // [sp+2094h] [bp-138h]@5 int v63; // [sp+2098h] [bp-134h]@7 int v64; // [sp+209Ch] [bp-130h]@7 int v65; // [sp+20A0h] [bp-12Ch]@7 int v66; // [sp+20A4h] [bp-128h]@7 int v67; // [sp+20A8h] [bp-124h]@7 int v68; // [sp+20ACh] [bp-120h]@7 int v69; // [sp+20B0h] [bp-11Ch]@7 int v70; // [sp+20B4h] [bp-118h]@7 int v71; // [sp+20B8h] [bp-114h]@7 char v72; // [sp+20BCh] [bp-110h]@3 unsigned int v73; // [sp+21BCh] [bp-10h]@1 int v74; // [sp+21C8h] [bp-4h]@2 int v75; // [sp+21CCh] [bp+0h]@1 v73 = (unsigned int)&v75 ^ __security_cookie; v28 = (unsigned int)&v75 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; sub_44E180((int)&v32); v74 = 0; sub_44E310((int)&v32, 0x9850u, 0x35u, 0); v4 = *(_WORD *)(a2 + 2); v5 = *(_DWORD *)(a2 + 4); v33 = 6576; v6 = *(_DWORD *)v3; v34 = v4; v35 = 3; v36 = 0; v37 = 0; v38 = 0; rgbValue = v5; v30 = 0; LOBYTE(v7) = sub_455390(v6 + 4684, &rgbValue); if ( !v7 ) { v8 = *(_DWORD *)(a2 + 4); v33 = 6579; sprintf( &v72, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_GET_RANKING_LIST_REQ : Round Time=%d, nRet=%d", v8, v30, v28); sub_446350(1, "Msg", "%s", &v72); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v32) ) { LABEL_13: v74 = -1; nullsub_1(&v32); return 0; } } v9 = 0; v10 = *(_DWORD *)v3 + 4684; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; v61 = 0; v60 = 0; v59 = 0; v58 = 0; *(_DWORD *)v57 = 0; v31 = 0; v35 = 1; if ( sub_44E4A0(v10) ) { do { sub_44E6B0(*(_DWORD *)v3 + 4684, &v40); sub_44E570(*(_DWORD *)v3 + 4684, &v46); sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E600(*(_DWORD *)v3 + 4684, &v48); sub_44E4E0(*(_DWORD *)v3 + 4684, &v49); sub_44E600(*(_DWORD *)v3 + 4684, &v50); sub_44E570(*(_DWORD *)v3 + 4684, &v51); v62 = v51; v52 = v46; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, &v48, 0x10u); v61 = 0; v60 = 0; v59 = 0; v58 = 0; *(_DWORD *)v57 = 0; strncpy(v57, &v50, 0x14u); v11 = *(_DWORD *)v53; v39[11 * v9] = v52; v12 = v54; v13 = &v39[11 * v9]; v13[1] = v11; v14 = v55; v13[2] = v12; v15 = v56; v13[3] = v14; v16 = *(_DWORD *)v57; v13[4] = v15; v17 = v58; v13[5] = v16; v18 = v59; v13[6] = v17; v19 = v60; v13[7] = v18; v20 = v61; v21 = v9 + 1; v31 = v21; v13[8] = v19; v22 = v62; v23 = 44 * v21 + 53; v13[9] = v20; v13[10] = v22; if ( (signed int)v23 >= 2046 && v31 > 1 ) { v38 = v31; v69 = 0; v70 = 0; v71 = 0; v63 = v45; v64 = v44; v65 = v43; v66 = v42; v67 = v41 - 1; v68 = v40 - 1900; v36 = _LN52(&v63); sub_44E310((int)&v32, 0x9850u, v23, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v32) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); goto LABEL_13; } v31 = 0; v35 = 0; } v24 = sub_44E4A0(*(_DWORD *)v3 + 4684); v9 = v31; } while ( v24 ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v38 = v31; v63 = v45; v64 = v44; v65 = v43; v66 = v42; v69 = 0; v70 = 0; v71 = 0; v67 = v41 - 1; v68 = v40 - 1900; v25 = _LN52(&v63); v35 |= 2u; v36 = v25; sub_44E310((int)&v32, 0x9850u, 44 * v9 + 53, 0); v26 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v32); v74 = -1; nullsub_1(&v32); return v26; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 433610: using guessed type int var_2186[2034]; //----- (00433B60) -------------------------------------------------------- signed int __thiscall sub_433B60(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // cx@2 int v6; // edx@2 __int16 v7; // ax@2 __int16 v8; // cx@2 int v9; // eax@2 int v10; // edx@2 int v11; // ecx@2 int v12; // eax@2 int v13; // eax@2 int v14; // eax@7 int v15; // ecx@10 int v16; // edx@10 int v17; // eax@10 int v18; // eax@10 const char *v19; // [sp-1Ch] [bp-21F0h]@3 int v20; // [sp-18h] [bp-21ECh]@3 int v21; // [sp-14h] [bp-21E8h]@3 int v22; // [sp-14h] [bp-21E8h]@6 unsigned int v23; // [sp-10h] [bp-21E4h]@1 char v24; // [sp+0h] [bp-21D4h]@2 __int16 v25; // [sp+5h] [bp-21CFh]@2 __int16 v26; // [sp+7h] [bp-21CDh]@2 int v27; // [sp+9h] [bp-21CBh]@2 __int16 v28; // [sp+Dh] [bp-21C7h]@2 __int16 v29; // [sp+Fh] [bp-21C5h]@2 int v30; // [sp+11h] [bp-21C3h]@2 int v31; // [sp+15h] [bp-21BFh]@2 int v32; // [sp+19h] [bp-21BBh]@2 int v33; // [sp+1Dh] [bp-21B7h]@2 int v34; // [sp+2004h] [bp-1D0h]@2 int v35; // [sp+2008h] [bp-1CCh]@2 __int16 v36; // [sp+200Ch] [bp-1C8h]@2 char v37; // [sp+200Eh] [bp-1C6h]@7 int v38; // [sp+202Ah] [bp-1AAh]@10 int v39; // [sp+202Eh] [bp-1A6h]@10 int rgbValue; // [sp+2074h] [bp-160h]@2 int v41; // [sp+2078h] [bp-15Ch]@2 __int16 v42; // [sp+2084h] [bp-150h]@7 int v43; // [sp+20A4h] [bp-130h]@10 int v44; // [sp+20ACh] [bp-128h]@10 int v45; // [sp+20B0h] [bp-124h]@10 int v46; // [sp+20B4h] [bp-120h]@10 int v47; // [sp+20B8h] [bp-11Ch]@10 int v48; // [sp+20BCh] [bp-118h]@10 char v49; // [sp+20C4h] [bp-110h]@4 unsigned int v50; // [sp+21C4h] [bp-10h]@1 int v51; // [sp+21D0h] [bp-4h]@2 int v52; // [sp+21D4h] [bp+0h]@1 v50 = (unsigned int)&v52 ^ __security_cookie; v23 = (unsigned int)&v52 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v24); v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v25 = 7424; v7 = *(_WORD *)(a2 + 8); v26 = v5; v8 = *(_WORD *)(a2 + 10); v28 = v7; v9 = *(_DWORD *)(a2 + 16); v29 = v8; v27 = v6; v10 = *(_DWORD *)(a2 + 12); v31 = v9; v51 = 0; v30 = v10; v32 = 0; v33 = 0; v34 = -1; v35 = -1; memset(&v36, 0, 0x67u); v11 = *(_DWORD *)(a2 + 16); rgbValue = *(_DWORD *)(a2 + 12); v12 = *(_DWORD *)v3; v36 = -1; v41 = v11; LOBYTE(v13) = sub_466970(v12 + 4684, &rgbValue); if ( !v13 ) { v21 = v41; v20 = rgbValue; v19 = "ERROR - fc_NC_DICE_TAISAI_DB_RECEIPT_INCOME_MONEY_REQ, Get Data Failed, Key=%I64d"; LABEL_4: sprintf(&v49, v19, v20, v21, v23); sub_446350(1, "Msg", "%s", &v49); v25 = 7444; LABEL_6: sub_44E310((int)&v24, 0xAC11u, 0x1Cu, 0); v22 = (int)&v24; LABEL_26: sub_43BFB0(*(_DWORD *)(v3 + 4), v22); v51 = -1; nullsub_1(&v24); return 1; } if ( v25 != 7424 ) goto LABEL_6; v14 = *(_DWORD *)v3; v36 = v42; if ( !sub_4669C0((void *)(v14 + 4720), v14 + 4684, *(_DWORD *)(a2 + 12), *(_DWORD *)(a2 + 16), &v37) ) { v21 = v41; v20 = rgbValue; v19 = "ERROR - fc_NC_DICE_TAISAI_DB_RECEIPT_INCOME_MONEY_REQ, Get OPT Failed, Key=%I64d"; goto LABEL_4; } if ( v25 != 7424 ) goto LABEL_6; sprintf(&v49, "DEBUG - fc_NC_DICE_TAISAI_DB_RECEIPT_INCOME_MONEY_REQ, money=%I64d", v38, v39, v23); sub_446350(1, "Msg", "%s", &v49); v15 = *(_DWORD *)(a2 + 16); v16 = *(_DWORD *)(a2 + 6); v44 = *(_DWORD *)(a2 + 12); v45 = v15; v47 = v39; v17 = *(_DWORD *)v3 + 4684; v43 = v16; v46 = v38; v48 = 0; v18 = sub_45B9C0(v17, &v43); if ( v48 > -2416 ) { if ( v48 == -2412 ) { v25 = 7439; goto LABEL_25; } if ( v48 == -2411 ) { v25 = 7438; goto LABEL_25; } if ( !v48 ) { if ( v18 ) { v25 = 7424; v32 = v38; v33 = v39; } else { v25 = 7437; } goto LABEL_25; } } else { if ( v48 == -2416 ) { v25 = 7440; goto LABEL_25; } if ( v48 == -2494 ) { v25 = 7441; goto LABEL_25; } if ( v48 == -2493 ) { v25 = 7442; goto LABEL_25; } if ( v48 == -2492 ) { v25 = 7443; LABEL_25: sub_44E310((int)&v24, 0xAC11u, 0x1Cu, 0); v22 = (int)&v24; goto LABEL_26; } } v25 = 7437; goto LABEL_25; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00433EF0) -------------------------------------------------------- signed int __thiscall sub_433EF0(void *this, int a2) { void *v2; // esi@1 signed int v3; // eax@1 signed int result; // eax@2 unsigned int v5; // [sp-Ch] [bp-2220h]@1 char v6; // [sp+0h] [bp-2214h]@1 int v7; // [sp+5h] [bp-220Fh]@1 int v8; // [sp+9h] [bp-220Bh]@1 char v9; // [sp+2004h] [bp-210h]@8 char v10; // [sp+2104h] [bp-110h]@4 unsigned int v11; // [sp+2204h] [bp-10h]@1 int v12; // [sp+2210h] [bp-4h]@1 int v13; // [sp+2214h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v5 = (unsigned int)&v13 ^ __security_cookie; v2 = this; sub_44E180((int)&v6); v12 = 0; v7 = a2; v8 = 2; sub_44E310((int)&v6, 0x702Cu, 8u, 0); v3 = sub_43BFB0(*((_DWORD *)v2 + 1), (int)&v6); v12 = -1; if ( v3 ) { nullsub_1(&v6); if ( sub_422200(v2, a2) ) { if ( sub_4225A0(v2, a2) ) { if ( sub_422C50(v2, a2) ) { result = 1; } else { sprintf(&v9, "FAILED - GetCharOptionImprove_GameOption, nCharNo=%d", a2, v5); sub_446350(1, "Msg", "%s", &v9); result = 0; } } else { sprintf(&v10, "FAILED - GetCharOptionImprove_KeyMapData, nCharNo=%d", a2, v5); sub_446350(1, "Msg", "%s", &v10); result = 0; } } else { sprintf(&v10, "FAILED - GetCharOptionImprove_ShortCutData, nCharNo=%d", a2, v5); sub_446350(1, "Msg", "%s", &v10); result = 0; } } else { nullsub_1(&v6); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00434070) -------------------------------------------------------- signed int __thiscall sub_434070(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 signed int result; // eax@5 int v6; // eax@8 int v7; // eax@8 int v8; // ecx@10 char *v9; // esi@11 int v10; // edx@12 int v11; // eax@12 int v12; // ecx@12 int v13; // edx@12 int v14; // ecx@12 int v15; // edx@12 int v16; // ecx@12 signed int v17; // esi@15 int v18; // [sp-14h] [bp-229Ch]@9 unsigned int v19; // [sp-10h] [bp-2298h]@1 int v20; // [sp+4h] [bp-2284h]@10 int v21; // [sp+8h] [bp-2280h]@10 unsigned __int8 TargetValue; // [sp+Fh] [bp-2279h]@12 char v23; // [sp+10h] [bp-2278h]@8 __int16 v24; // [sp+15h] [bp-2273h]@9 __int16 v25; // [sp+17h] [bp-2271h]@9 int v26; // [sp+19h] [bp-226Fh]@9 __int16 v27; // [sp+1Dh] [bp-226Bh]@9 char v28; // [sp+2Fh] [bp-2259h]@11 char rgbValue; // [sp+2014h] [bp-274h]@8 int v30; // [sp+2018h] [bp-270h]@8 int v31; // [sp+201Ch] [bp-26Ch]@8 __int16 v32; // [sp+2020h] [bp-268h]@12 char v33; // [sp+2022h] [bp-266h]@12 char v34; // [sp+2024h] [bp-264h]@12 int v35; // [sp+2030h] [bp-258h]@12 int v36; // [sp+2034h] [bp-254h]@12 char v37[4]; // [sp+2038h] [bp-250h]@10 int v38; // [sp+203Ch] [bp-24Ch]@10 int v39; // [sp+2040h] [bp-248h]@10 int v40; // [sp+2044h] [bp-244h]@10 int v41; // [sp+2048h] [bp-240h]@10 int v42; // [sp+204Ch] [bp-23Ch]@12 char v43; // [sp+2050h] [bp-238h]@9 char v44; // [sp+2150h] [bp-138h]@4 char v45; // [sp+2250h] [bp-38h]@12 unsigned int v46; // [sp+2278h] [bp-10h]@1 int v47; // [sp+2284h] [bp-4h]@8 int v48; // [sp+2288h] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v19 = (unsigned int)&v48 ^ __security_cookie; v3 = a2; v4 = this; if ( !a2 || !sub_43B000(this, a2) ) return 0; if ( !*(_DWORD *)(v4 + 4) ) { sprintf(&v44, "ERROR - CPFsCharacter::fc_NC_GUILD_HISTORY_DB_LIST_REQ, Error=%d", 12737, v19); sub_446350(1, "Msg", "%s", &v44); return 0; } if ( *(_DWORD *)v4 ) { sub_44E180((int)&v23); v6 = *(_DWORD *)v4 + 4684; v30 = *(_DWORD *)(a2 + 4); v31 = 30; v47 = 0; LOBYTE(v7) = sub_4558B0(v6, &rgbValue); if ( v7 ) { v8 = *(_DWORD *)v4 + 4684; v21 = 0; v20 = 0; v41 = 0; v40 = 0; v39 = 0; v38 = 0; *(_DWORD *)v37 = 0; if ( sub_44E4A0(v8) ) { v9 = &v28; do { sub_44E600(*(_DWORD *)v4 + 4684, &v45); sub_44E510(*(_DWORD *)v4 + 4684, &TargetValue); sub_44E6B0(*(_DWORD *)v4 + 4684, &v32); LOWORD(v36) = v32; BYTE2(v36) = v33; v35 = 30 - v21; BYTE3(v36) = v34; v41 = 0; v40 = 0; v39 = 0; v38 = 0; *(_DWORD *)v37 = 0; strncpy(v37, &v45, 0x14u); v10 = v36; v11 = TargetValue; *((_DWORD *)v9 - 4) = v35; v12 = *(_DWORD *)v37; *((_DWORD *)v9 - 3) = v10; v13 = v38; *((_DWORD *)v9 - 2) = v12; *(_DWORD *)v9 = v39; v14 = v41; *((_DWORD *)v9 - 1) = v13; v15 = v40; *((_DWORD *)v9 + 2) = v14; v16 = *(_DWORD *)v4; *((_DWORD *)v9 + 1) = v15; *((_DWORD *)v9 + 3) = v11; v42 = v11; ++v21; ++v20; v9 += 32; } while ( sub_44E4A0(v16 + 4684) ); v3 = a2; } sub_44E4D0(*(_DWORD *)v4 + 4684); v25 = *(_WORD *)(v3 + 2); HIWORD(v26) = v21; LOWORD(v26) = v20; v27 = 0; v24 = 12672; sub_44E310((int)&v23, 0x7500u, 32 * v21 + 10, 0); v18 = (int)&v23; } else { sprintf(&v43, "ERROR - fc_NC_GUILD_HISTORY_DB_LIST_REQ, (nGuildNo=%d)", *(_DWORD *)(a2 + 4), v19); sub_446350(1, "Msg", "%s", &v43); sub_44E310((int)&v23, 0x7500u, 0xAu, 0); v25 = *(_WORD *)(a2 + 2); v26 = 0; v27 = 0; v24 = 12673; v18 = (int)&v23; } v17 = sub_43BFB0(*(_DWORD *)(v4 + 4), v18); v47 = -1; nullsub_1(&v23); result = v17; } else { sprintf(&v44, "ERROR - CPFsCharacter::fc_NC_GUILD_HISTORY_DB_LIST_REQ, Error=%d", 12736, v19); sub_446350(1, "Msg", "%s", &v44); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00434400) -------------------------------------------------------- signed int __thiscall sub_434400(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // dx@2 __int16 v6; // ax@2 unsigned __int16 v7; // cx@2 int v8; // edx@2 unsigned __int16 v9; // ST28_2@2 int v10; // ecx@2 int v11; // eax@2 int v12; // ecx@5 char *v13; // ecx@6 unsigned int v14; // edi@6 int v15; // esi@29 char *v16; // ecx@30 unsigned int v17; // esi@30 signed int v18; // esi@52 int v19; // [sp-14h] [bp-6150h]@3 unsigned int v20; // [sp-10h] [bp-614Ch]@1 int v21; // [sp+0h] [bp-613Ch]@1 char v22; // [sp+4h] [bp-6138h]@2 __int16 v23; // [sp+9h] [bp-6133h]@2 int v24; // [sp+Bh] [bp-6131h]@2 __int16 v25; // [sp+Fh] [bp-612Dh]@2 __int16 v26; // [sp+11h] [bp-612Bh]@2 char v27; // [sp+2008h] [bp-4134h]@5 int v28; // [sp+200Dh] [bp-412Fh]@5 int v29; // [sp+2011h] [bp-412Bh]@5 char v30[4]; // [sp+2015h] [bp-4127h]@5 int v31; // [sp+2019h] [bp-4123h]@5 int v32; // [sp+201Dh] [bp-411Fh]@5 int v33; // [sp+2021h] [bp-411Bh]@17 int v34; // [sp+2025h] [bp-4117h]@18 int v35; // [sp+2029h] [bp-4113h]@19 int v36; // [sp+202Dh] [bp-410Fh]@20 int v37; // [sp+2031h] [bp-410Bh]@21 int v38; // [sp+2035h] [bp-4107h]@5 int v39; // [sp+2039h] [bp-4103h]@5 char v40; // [sp+400Ch] [bp-2130h]@5 int v41; // [sp+4011h] [bp-212Bh]@5 int v42; // [sp+4015h] [bp-2127h]@5 char v43[4]; // [sp+4019h] [bp-2123h]@5 int v44; // [sp+401Dh] [bp-211Fh]@5 int v45; // [sp+4021h] [bp-211Bh]@5 int v46; // [sp+4025h] [bp-2117h]@8 int v47; // [sp+4029h] [bp-2113h]@9 int v48; // [sp+402Dh] [bp-210Fh]@10 int v49; // [sp+4031h] [bp-210Bh]@11 int v50; // [sp+4035h] [bp-2107h]@12 int v51; // [sp+4039h] [bp-2103h]@5 int v52; // [sp+403Dh] [bp-20FFh]@5 int v53; // [sp+4041h] [bp-20FBh]@13 int v54; // [sp+4045h] [bp-20F7h]@14 int v55; // [sp+4049h] [bp-20F3h]@15 __int64 v56; // [sp+404Dh] [bp-20EFh]@16 unsigned __int8 v57; // [sp+6010h] [bp-12Ch]@4 char v58; // [sp+6012h] [bp-12Ah]@6 char v59; // [sp+602Ch] [bp-110h]@3 unsigned int v60; // [sp+612Ch] [bp-10h]@1 int v61; // [sp+6138h] [bp-4h]@2 int v62; // [sp+613Ch] [bp+0h]@1 v60 = (unsigned int)&v62 ^ __security_cookie; v20 = (unsigned int)&v62 ^ __security_cookie; v3 = this; v21 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v22); v61 = 0; sub_44E310((int)&v22, 0x34B4u, 0xAu, 0); v5 = *(_WORD *)(a2 + 8); v6 = *(_WORD *)(a2 + 2); v24 = *(_DWORD *)(a2 + 4); v7 = *(_WORD *)(a2 + 18); v25 = v5; v8 = *(_DWORD *)(a2 + 10); v9 = v7; v10 = *(_DWORD *)(a2 + 14); v23 = v6; v26 = 12872; LOWORD(v11) = sub_468E40(*(_DWORD *)v3 + 4684, v8, v10, v9, a2 + 20); if ( v11 ) { sprintf( &v59, "ERROR - CPFsCharacter::fc_NC_ITEMDB_RANDOMOPTION_CHANGE_REQ Item Set Attr Error - ( CharNo=%d, Key=%I64d, id=%d, Error=%d )", *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), *(_WORD *)(a2 + 18), v11, v20); sub_446350(1, "Msg", "%s", &v59); v26 = 12880; v19 = (int)&v22; } else { if ( sub_42C530(*(_WORD *)(a2 + 18), a2 + 121, &v57) == 1 ) { sub_44E180((int)&v40); LOBYTE(v61) = 1; sub_44E180((int)&v27); LOBYTE(v61) = 2; sub_44E310((int)&v40, 0x79Eu, 0x44u, 0); sub_44E310((int)&v27, 0x79Eu, 0x44u, 0); memset(&v41, 0, 0x44u); memset(&v28, 0, 0x44u); v41 = 926; v28 = 926; v42 = *(_DWORD *)(a2 + 4); v29 = v42; v45 = 0; v44 = 0; *(_DWORD *)v43 = 0; strncpy(v43, "1", 0xCu); v32 = 0; v31 = 0; *(_DWORD *)v30 = 0; strncpy(v30, "2", 0xCu); v12 = *(_DWORD *)(a2 + 14); v51 = *(_DWORD *)(a2 + 10); v38 = v51; v52 = v12; v39 = v12; if ( (signed int)((unsigned int)v57 >> 1) > 0 ) { v13 = &v58; v14 = (unsigned int)v57 >> 1; do { switch ( *(v13 - 1) ) { case 0: v46 = *(_WORD *)v13; break; case 1: v47 = *(_WORD *)v13; break; case 2: v48 = *(_WORD *)v13; break; case 3: v49 = *(_WORD *)v13; break; case 4: v50 = *(_WORD *)v13; break; case 5: v53 = *(_WORD *)v13; break; case 6: v54 = *(_WORD *)v13; break; case 7: v55 = *(_WORD *)v13; break; case 8: v56 = *(_WORD *)v13; break; case 9: v33 = *(_WORD *)v13; break; case 0xA: v34 = *(_WORD *)v13; break; case 0xB: v35 = *(_WORD *)v13; break; case 0xC: v36 = *(_WORD *)v13; break; case 0xD: v37 = *(_WORD *)v13; break; default: break; } v13 += 3; --v14; } while ( v14 ); v3 = v21; } if ( dword_6E9EC0 ) { sub_44B7E0((void *)dword_6E9EC0, (int)&v40); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v27); } LOBYTE(v61) = 1; nullsub_1(&v27); LOBYTE(v61) = 0; nullsub_1(&v40); } if ( sub_42C530(*(_WORD *)(a2 + 18), a2 + 20, &v57) == 1 ) { sub_44E180((int)&v40); LOBYTE(v61) = 3; sub_44E180((int)&v27); LOBYTE(v61) = 4; sub_44E310((int)&v40, 0x79Fu, 0x44u, 0); sub_44E310((int)&v27, 0x79Fu, 0x44u, 0); memset(&v41, 0, 0x44u); memset(&v28, 0, 0x44u); v41 = 927; v28 = 927; v42 = *(_DWORD *)(a2 + 4); v29 = v42; v45 = 0; v44 = 0; *(_DWORD *)v43 = 0; strncpy(v43, "1", 0xCu); v32 = 0; v31 = 0; *(_DWORD *)v30 = 0; strncpy(v30, "2", 0xCu); v15 = *(_DWORD *)(a2 + 14); v51 = *(_DWORD *)(a2 + 10); v38 = v51; v52 = v15; v39 = v15; if ( (signed int)((unsigned int)v57 >> 1) > 0 ) { v16 = &v58; v17 = (unsigned int)v57 >> 1; do { switch ( *(v16 - 1) ) { case 0: v46 = *(_WORD *)v16; break; case 1: v47 = *(_WORD *)v16; break; case 2: v48 = *(_WORD *)v16; break; case 3: v49 = *(_WORD *)v16; break; case 4: v50 = *(_WORD *)v16; break; case 5: v53 = *(_WORD *)v16; break; case 6: v54 = *(_WORD *)v16; break; case 7: v55 = *(_WORD *)v16; break; case 8: v56 = *(_WORD *)v16; break; case 9: v33 = *(_WORD *)v16; break; case 0xA: v34 = *(_WORD *)v16; break; case 0xB: v35 = *(_WORD *)v16; break; case 0xC: v36 = *(_WORD *)v16; break; case 0xD: v37 = *(_WORD *)v16; break; default: break; } v16 += 3; --v17; } while ( v17 ); } if ( dword_6E9EC0 ) { sub_44B7E0((void *)dword_6E9EC0, (int)&v40); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v27); } LOBYTE(v61) = 3; nullsub_1(&v27); LOBYTE(v61) = 0; nullsub_1(&v40); } v19 = (int)&v22; } v18 = sub_43BFB0(*(_DWORD *)(v3 + 4), v19); v61 = -1; nullsub_1(&v22); result = v18; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00434A40) -------------------------------------------------------- signed int __thiscall sub_434A40(int this, int a2, int a3) { signed int result; // eax@1 char v4; // dl@2 int v5; // ecx@2 int v6; // ebx@2 int v7; // edi@2 int v8; // eax@2 int v9; // edx@2 int v10; // eax@2 int v11; // ecx@4 int v12; // [sp+8h] [bp-A8h]@1 char v13; // [sp+Ch] [bp-A4h]@4 __int16 v14; // [sp+Dh] [bp-A3h]@4 __int16 v15; // [sp+Fh] [bp-A1h]@2 int v16; // [sp+11h] [bp-9Fh]@2 char v17; // [sp+15h] [bp-9Bh]@2 int v18; // [sp+16h] [bp-9Ah]@2 int v19; // [sp+1Ah] [bp-96h]@2 int v20; // [sp+1Eh] [bp-92h]@2 int v21; // [sp+22h] [bp-8Eh]@2 int v22; // [sp+26h] [bp-8Ah]@2 __int16 v23; // [sp+2Ah] [bp-86h]@2 int v24; // [sp+2Ch] [bp-84h]@2 int v25; // [sp+30h] [bp-80h]@2 int v26; // [sp+34h] [bp-7Ch]@2 int v27; // [sp+38h] [bp-78h]@2 int v28; // [sp+3Ch] [bp-74h]@2 char v29; // [sp+40h] [bp-70h]@2 unsigned int v30; // [sp+ACh] [bp-4h]@1 int v31; // [sp+B0h] [bp+0h]@1 v30 = (unsigned int)&v31 ^ __security_cookie; v12 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_BYTE *)(a2 + 8); v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(a2 + 21); v7 = *(_DWORD *)(a2 + 17); v15 = *(_WORD *)(a2 + 2); v8 = *(_DWORD *)(a2 + 9); v17 = v4; v9 = *(_DWORD *)(a2 + 13); v22 = *(_DWORD *)(a2 + 25); v18 = v8; v24 = v8; v19 = v9; v23 = 208; v25 = v9; v28 = v22; v10 = *(_DWORD *)v12 + 4684; v16 = v5; v20 = v7; v21 = v6; v26 = v7; v27 = v6; v29 = 0; if ( sub_456CE0(v10, v5, &v24) ) v23 = 209; v14 = 5138; v11 = *(_DWORD *)(v12 + 4); v13 = 31; result = sub_43BFE0(v11, (int)&v13, 0x20u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00434B60) -------------------------------------------------------- signed int __thiscall sub_434B60(int this, int a2, int a3) { int v3; // ebx@1 char v4; // dl@2 int v5; // ecx@2 int v6; // eax@2 int v7; // esi@2 int v8; // eax@2 int v9; // edi@4 int v10; // ecx@4 int v11; // eax@5 char v12; // cl@6 int v13; // esi@7 int v14; // ecx@7 size_t v15; // eax@7 bool v16; // al@11 signed int v17; // esi@13 signed int result; // eax@13 int v19; // [sp-14h] [bp-22F0h]@3 unsigned int v20; // [sp-10h] [bp-22ECh]@1 int rgbValue; // [sp+0h] [bp-22DCh]@2 int v22; // [sp+4h] [bp-22D8h]@4 char v23; // [sp+8h] [bp-22D4h]@2 __int16 v24; // [sp+Dh] [bp-22CFh]@2 int v25; // [sp+Fh] [bp-22CDh]@2 char v26; // [sp+13h] [bp-22C9h]@2 int v27; // [sp+14h] [bp-22C8h]@2 __int16 v28; // [sp+18h] [bp-22C4h]@2 char v29; // [sp+1Ah] [bp-22C2h]@4 __int16 v30; // [sp+1Bh] [bp-22C1h]@9 char v31[8175]; // [sp+1Dh] [bp-22BFh]@7 char v32[4]; // [sp+200Ch] [bp-2D0h]@4 int v33; // [sp+2010h] [bp-2CCh]@4 int v34; // [sp+2014h] [bp-2C8h]@4 int v35; // [sp+2018h] [bp-2C4h]@4 int v36; // [sp+201Ch] [bp-2C0h]@4 char v37; // [sp+2020h] [bp-2BCh]@5 int v38; // [sp+2021h] [bp-2BBh]@5 __int16 v39; // [sp+2025h] [bp-2B7h]@5 char v40[64]; // [sp+2027h] [bp-2B5h]@6 int v41; // [sp+2067h] [bp-275h]@7 char v42; // [sp+206Bh] [bp-271h]@7 char v43; // [sp+206Ch] [bp-270h]@7 char v44; // [sp+206Dh] [bp-26Fh]@7 char v45[4]; // [sp+206Eh] [bp-26Eh]@4 int v46; // [sp+2072h] [bp-26Ah]@4 int v47; // [sp+2076h] [bp-266h]@4 int v48; // [sp+207Ah] [bp-262h]@5 int v49; // [sp+207Eh] [bp-25Eh]@5 int TargetValue; // [sp+20FCh] [bp-1E0h]@5 __int16 v51; // [sp+2100h] [bp-1DCh]@5 unsigned __int16 v52; // [sp+2102h] [bp-1DAh]@5 unsigned __int16 v53; // [sp+2104h] [bp-1D8h]@5 unsigned __int16 v54; // [sp+2106h] [bp-1D6h]@5 unsigned __int16 v55; // [sp+2108h] [bp-1D4h]@5 unsigned __int16 v56; // [sp+210Ah] [bp-1D2h]@5 char v57; // [sp+2110h] [bp-1CCh]@5 __int16 v58; // [sp+2112h] [bp-1CAh]@5 int v59; // [sp+2114h] [bp-1C8h]@5 char v60[65]; // [sp+2118h] [bp-1C4h]@5 char v61; // [sp+2159h] [bp-183h]@5 char v62; // [sp+2181h] [bp-15Bh]@5 char v63; // [sp+2182h] [bp-15Ah]@5 char v64; // [sp+2184h] [bp-158h]@5 int v65; // [sp+2194h] [bp-148h]@5 char v66; // [sp+2198h] [bp-144h]@7 int v67; // [sp+219Ah] [bp-142h]@7 int v68; // [sp+21A8h] [bp-134h]@5 int v69; // [sp+21ACh] [bp-130h]@5 int v70; // [sp+21B0h] [bp-12Ch]@5 int v71; // [sp+21B4h] [bp-128h]@5 int v72; // [sp+21B8h] [bp-124h]@5 int v73; // [sp+21BCh] [bp-120h]@5 int v74; // [sp+21C0h] [bp-11Ch]@5 int v75; // [sp+21C4h] [bp-118h]@5 int v76; // [sp+21C8h] [bp-114h]@5 char v77; // [sp+21CCh] [bp-110h]@3 unsigned int v78; // [sp+22CCh] [bp-10h]@1 int v79; // [sp+22D8h] [bp-4h]@2 int v80; // [sp+22DCh] [bp+0h]@1 v78 = (unsigned int)&v80 ^ __security_cookie; v20 = (unsigned int)&v80 ^ __security_cookie; v3 = this; if ( sub_43B000(this, a2) ) { sub_44E180((int)&v23); v4 = *(_BYTE *)(a2 + 12); v5 = *(_DWORD *)(a2 + 4); v24 = *(_WORD *)(a2 + 2); v27 = *(_DWORD *)(a2 + 8); rgbValue = v27; v6 = *(_DWORD *)v3; v26 = v4; v25 = v5; v28 = 3137; v7 = 0; v79 = 0; LOBYTE(v8) = sub_4531F0(v6 + 4684, &rgbValue); if ( v8 ) { v9 = 0; v10 = *(_DWORD *)v3 + 4684; v36 = 0; v35 = 0; v34 = 0; v33 = 0; *(_DWORD *)v32 = 0; v47 = 0; v46 = 0; *(_DWORD *)v45 = 0; v22 = 0; v29 = 1; if ( sub_44E4A0(v10) ) { do { sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E6B0(*(_DWORD *)v3 + 4684, &v51); sub_44E510(*(_DWORD *)v3 + 4684, &v57); sub_44E4E0(*(_DWORD *)v3 + 4684, &v59); sub_44E540(*(_DWORD *)v3 + 4684, &v58); sub_44E600(*(_DWORD *)v3 + 4684, v60); sub_44E600(*(_DWORD *)v3 + 4684, &v61); sub_44E510(*(_DWORD *)v3 + 4684, &v62); sub_44E540(*(_DWORD *)v3 + 4684, &v63); sub_44E600(*(_DWORD *)v3 + 4684, &v64); sub_44E6B0(*(_DWORD *)v3 + 4684, &v65); v74 = 0; v75 = 0; v76 = 0; v48 = TargetValue; v69 = v55; v70 = v54; v68 = v56; v71 = v53; v72 = v52 - 1; v73 = v51 - 1900; v49 = _LN52(&v68); v37 = v57; v38 = v59; v39 = v58; v11 = 0; do { v12 = v60[v11]; v40[v11++] = v12; } while ( v12 ); v36 = v7; v35 = v7; v34 = v7; v33 = v7; *(_DWORD *)v32 = v7; strncpy(v32, &v61, 0x14u); v42 = v62; v43 = v63; v44 = 0; v47 = v7; v46 = v7; *(_DWORD *)v45 = v7; strncpy(v45, &v64, 0xCu); v41 = v41 & 0xFC000000 | 2 * (v65 & 0x7FF | ((BYTE2(v65) & 0xF | 16 * (v66 & 0x1F | 32 * (v67 & 0x1F))) << 11)); v13 = (int)&v31[234 * v9]; sub_4055B0(v13, (int)v32); memcpy((void *)(v13 + 110), &v48, 0x7Cu); v14 = v22 + 1; v15 = 234 * (v22++ + 1) + 14; if ( (signed int)v15 >= 2046 && v14 > 1 ) { v30 = v14; sub_44E310((int)&v23, 0x1416u, v15, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v23) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); v79 = -1; nullsub_1(&v23); goto LABEL_16; } v22 = 0; v29 = 0; } v16 = sub_44E4A0(*(_DWORD *)v3 + 4684); v9 = v22; v7 = 0; } while ( v16 ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v29 |= 2u; v30 = v9; sub_44E310((int)&v23, 0x1416u, 234 * v9 + 14, (const void *)v7); v19 = (int)&v23; } else { sprintf(&v77, "ERROR - CPFsCharacter::fc_NC_AVATAR_GUILD_MEMBER_DATA_REQ, GuildNo=%d", *(_DWORD *)(a2 + 8), v20); sub_446350(1, "Msg", "%s", &v77); v28 = 3140; sub_44E310((int)&v23, 0x1416u, 0xEu, 0); v19 = (int)&v23; } v17 = sub_43BFB0(*(_DWORD *)(v3 + 4), v19); v79 = -1; nullsub_1(&v23); result = v17; } else { LABEL_16: result = 0; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 434B60: using guessed type char var_1C4[65]; // 434B60: using guessed type char var_2B5[64]; // 434B60: using guessed type char var_22BF[8175]; //----- (004350A0) -------------------------------------------------------- signed int __thiscall sub_4350A0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 __int16 v5; // ax@2 int v6; // edx@2 int v7; // ecx@2 int v8; // eax@2 int v9; // ecx@2 int v10; // edx@2 int v11; // eax@2 int v12; // ecx@2 int v13; // edx@2 int v14; // eax@2 int v15; // ecx@2 int v16; // ebx@2 int v17; // edx@2 int v18; // eax@2 int v19; // ecx@4 int v20; // eax@4 int v21; // eax@4 int v22; // ecx@7 int v23; // [sp+8h] [bp-74h]@2 int v24; // [sp+Ch] [bp-70h]@2 int v25; // [sp+10h] [bp-6Ch]@2 int v26; // [sp+14h] [bp-68h]@2 int v27; // [sp+18h] [bp-64h]@2 int v28; // [sp+1Ch] [bp-60h]@2 char v29; // [sp+20h] [bp-5Ch]@2 int rgbValue; // [sp+38h] [bp-44h]@4 int v31; // [sp+3Ch] [bp-40h]@4 char v32; // [sp+44h] [bp-38h]@7 __int16 v33; // [sp+45h] [bp-37h]@7 __int16 v34; // [sp+47h] [bp-35h]@2 int v35; // [sp+49h] [bp-33h]@2 int v36; // [sp+4Dh] [bp-2Fh]@2 int v37; // [sp+51h] [bp-2Bh]@2 int v38; // [sp+55h] [bp-27h]@2 int v39; // [sp+59h] [bp-23h]@2 int v40; // [sp+5Dh] [bp-1Fh]@2 int v41; // [sp+61h] [bp-1Bh]@2 int v42; // [sp+65h] [bp-17h]@2 int v43; // [sp+69h] [bp-13h]@2 int v44; // [sp+6Dh] [bp-Fh]@2 int v45; // [sp+71h] [bp-Bh]@2 __int16 v46; // [sp+75h] [bp-7h]@3 unsigned int v47; // [sp+78h] [bp-4h]@1 int v48; // [sp+7Ch] [bp+0h]@1 v47 = (unsigned int)&v48 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 8); v35 = *(_DWORD *)(a2 + 4); v38 = *(_DWORD *)(a2 + 16); v41 = *(_DWORD *)(a2 + 28); v7 = *(_DWORD *)(a2 + 40); v34 = v5; v8 = *(_DWORD *)(a2 + 12); v44 = v7; v9 = *(_DWORD *)(a2 + 28); v36 = v6; v10 = *(_DWORD *)(a2 + 20); v37 = v8; v11 = *(_DWORD *)(a2 + 24); v24 = v9; v12 = *(_DWORD *)(a2 + 40); v39 = v10; v13 = *(_DWORD *)(a2 + 32); v40 = v11; v14 = *(_DWORD *)(a2 + 36); v27 = v12; v15 = *(_DWORD *)(a2 + 44); v16 = v14; v42 = v13; v17 = *(_DWORD *)(a2 + 44); v43 = v14; v18 = *(_DWORD *)v3; v28 = v15; v45 = v17; v25 = *(_DWORD *)(a2 + 32); v26 = v16; v29 = 0; sub_457070(v18 + 4684, &v23); if ( v23 ) { v19 = *(_DWORD *)(a2 + 4); v31 = v23; v20 = *(_DWORD *)v3 + 4684; rgbValue = v19; LOBYTE(v21) = sub_451C90(v20, &rgbValue); if ( v21 ) v46 = 2385; else v46 = 2386; } else { v46 = 2387; } v22 = *(_DWORD *)(v3 + 4); v32 = 50; v33 = 21523; result = sub_43BFE0(v22, (int)&v32, 0x33u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004351D0) -------------------------------------------------------- int __thiscall sub_4351D0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 25) = 0; *(_DWORD *)(this + 21) = 0; *(_DWORD *)(this + 17) = 0; *(_DWORD *)(this + 13) = 0; *(_DWORD *)(this + 234) = 0; *(_DWORD *)(this + 230) = 0; *(_DWORD *)(this + 226) = 0; *(_DWORD *)(this + 222) = 0; *(_DWORD *)(this + 560) = 0; *(_DWORD *)(this + 556) = 0; *(_DWORD *)(this + 552) = 0; *(_DWORD *)(this + 548) = 0; *(_DWORD *)(this + 544) = 0; *(_DWORD *)(this + 1088) = 0; *(_DWORD *)(this + 1084) = 0; *(_DWORD *)(this + 1080) = 0; return result; } //----- (00435230) -------------------------------------------------------- signed int __thiscall sub_435230(int this, int a2, int a3) { int v3; // edi@1 int v4; // edx@4 int v6; // ecx@7 int v7; // eax@7 int v8; // ecx@7 int v9; // eax@7 int v10; // ecx@7 int v11; // eax@7 int v12; // edx@7 int v13; // ST20_4@8 int v14; // ecx@9 int v15; // eax@9 int v16; // ecx@9 int v17; // edx@9 int v18; // eax@9 int v19; // eax@9 int v20; // ecx@11 int rgbValue; // [sp+8h] [bp-158h]@7 int v22; // [sp+Ch] [bp-154h]@7 char v23; // [sp+14h] [bp-14Ch]@9 int v24; // [sp+18h] [bp-148h]@9 int v25; // [sp+1Ch] [bp-144h]@9 int v26; // [sp+20h] [bp-140h]@9 int v27; // [sp+24h] [bp-13Ch]@9 int v28; // [sp+28h] [bp-138h]@9 int v29; // [sp+2Ch] [bp-134h]@9 int v30; // [sp+30h] [bp-130h]@9 int v31; // [sp+34h] [bp-12Ch]@9 char v32; // [sp+38h] [bp-128h]@11 __int16 v33; // [sp+39h] [bp-127h]@11 __int16 v34; // [sp+3Bh] [bp-125h]@7 int v35; // [sp+3Dh] [bp-123h]@7 int v36; // [sp+41h] [bp-11Fh]@7 int v37; // [sp+45h] [bp-11Bh]@7 int v38; // [sp+49h] [bp-117h]@7 int v39; // [sp+4Dh] [bp-113h]@7 int v40; // [sp+51h] [bp-10Fh]@7 int v41; // [sp+55h] [bp-10Bh]@7 __int16 v42; // [sp+59h] [bp-107h]@7 char v43; // [sp+5Ch] [bp-104h]@5 unsigned int v44; // [sp+15Ch] [bp-4h]@1 int v45; // [sp+160h] [bp+0h]@1 v44 = (unsigned int)&v45 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; v4 = *(_DWORD *)v3; if ( !*(_DWORD *)v3 ) { sprintf(&v43, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_VANISH_REQ, Error=%d", 12736); sub_446350(1, "Msg", "%s", &v43); return 0; } v6 = *(_DWORD *)(a2 + 4); v34 = *(_WORD *)(a2 + 2); v36 = *(_DWORD *)(a2 + 8); v7 = *(_DWORD *)(a2 + 16); v35 = v6; v8 = *(_DWORD *)(a2 + 12); v38 = v7; v9 = *(_DWORD *)(a2 + 24); v37 = v8; v10 = *(_DWORD *)(a2 + 20); v40 = v9; rgbValue = v9; v39 = v10; v41 = *(_DWORD *)(a2 + 28); v42 = 3137; v22 = v41; LOBYTE(v11) = sub_453310(v4 + 4684, &rgbValue); v12 = *(_DWORD *)(a2 + 24); if ( v11 ) { v14 = *(_DWORD *)(a2 + 4); v25 = *(_DWORD *)(a2 + 28); v15 = *(_DWORD *)(a2 + 12); v26 = v14; v16 = *(_DWORD *)(a2 + 16); v24 = v12; v17 = *(_DWORD *)(a2 + 8); v28 = v15; v18 = *(_DWORD *)v3; v29 = v16; v27 = v17; v30 = *(_DWORD *)(a2 + 20); v31 = 3; LOBYTE(v19) = sub_4559D0(v18 + 4684, &v23); if ( !v19 ) { sprintf( &v43, "ERROR - fc_NC_GUILD_DB_MEMBER_VANISH_REQ - SetGuildHistory, (nGuildNo=%d), (nCharNo=%d), (nMsgType=%d)", v24, v25, v31); sub_446350(1, "Msg", "%s", &v43); } } else { v13 = *(_DWORD *)(a2 + 28); v42 = 3318; sprintf(&v43, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_VANISH_REQ, GuildNo=%d, CharNo=%d", v12, v13); sub_446350(1, "Msg", "%s", &v43); } v33 = 29810; v20 = *(_DWORD *)(v3 + 4); v32 = 34; return sub_43BFE0(v20, (int)&v32, 0x23u); } // 4DE38C: using guessed type int __security_cookie; //----- (00435450) -------------------------------------------------------- signed int __thiscall sub_435450(int this, int a2, int a3) { int v3; // edi@1 int v4; // edi@4 signed int result; // eax@6 int v6; // eax@7 int v7; // ecx@7 int v8; // edx@7 int v9; // eax@7 int v10; // ecx@7 int v11; // eax@7 int v12; // ecx@7 int v13; // ebx@7 int v14; // eax@7 int v15; // ST20_4@10 int v16; // ST1C_4@10 int v17; // edx@11 int v18; // eax@11 int v19; // ecx@13 int v20; // edx@13 int v21; // eax@13 int v22; // ecx@13 int v23; // eax@13 int v24; // edx@13 int v25; // ecx@13 int v26; // eax@15 int v27; // ecx@18 signed int v28; // esi@23 unsigned int v29; // [sp-10h] [bp-4288h]@1 int v30; // [sp+0h] [bp-4278h]@1 char v31; // [sp+4h] [bp-4274h]@23 char v32; // [sp+2008h] [bp-2270h]@11 int v33; // [sp+200Dh] [bp-226Bh]@11 int v34; // [sp+2011h] [bp-2267h]@11 int v35; // [sp+2015h] [bp-2263h]@11 char v36; // [sp+2019h] [bp-225Fh]@11 char v37; // [sp+201Ah] [bp-225Eh]@11 int rgbValue; // [sp+400Ch] [bp-26Ch]@7 int v39; // [sp+4010h] [bp-268h]@7 char v40; // [sp+4014h] [bp-264h]@7 int v41; // [sp+4018h] [bp-260h]@8 char v42; // [sp+401Ch] [bp-25Ch]@18 __int16 v43; // [sp+401Dh] [bp-25Bh]@18 __int16 v44; // [sp+401Fh] [bp-259h]@7 int v45; // [sp+4021h] [bp-257h]@7 int v46; // [sp+4025h] [bp-253h]@7 int v47; // [sp+4029h] [bp-24Fh]@7 int v48; // [sp+402Dh] [bp-24Bh]@7 int v49; // [sp+4031h] [bp-247h]@7 int v50; // [sp+4035h] [bp-243h]@7 int v51; // [sp+4039h] [bp-23Fh]@7 char v52; // [sp+403Dh] [bp-23Bh]@7 __int16 v53; // [sp+403Eh] [bp-23Ah]@7 int v54; // [sp+4040h] [bp-238h]@7 char v55; // [sp+4044h] [bp-234h]@15 int v56; // [sp+4048h] [bp-230h]@13 int v57; // [sp+404Ch] [bp-22Ch]@13 int v58; // [sp+4050h] [bp-228h]@13 int v59; // [sp+4054h] [bp-224h]@13 int v60; // [sp+4058h] [bp-220h]@13 int v61; // [sp+405Ch] [bp-21Ch]@13 int v62; // [sp+4060h] [bp-218h]@13 int v63; // [sp+4064h] [bp-214h]@13 char v64; // [sp+4068h] [bp-210h]@16 char v65; // [sp+4168h] [bp-110h]@5 unsigned int v66; // [sp+4268h] [bp-10h]@1 int v67; // [sp+4274h] [bp-4h]@11 int v68; // [sp+4278h] [bp+0h]@1 v66 = (unsigned int)&v68 ^ __security_cookie; v29 = (unsigned int)&v68 ^ __security_cookie; v3 = this; v30 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; v4 = *(_DWORD *)v3; if ( !v4 ) { sprintf(&v65, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_GRADE_REQ, Error=%d", 12736, v29); sub_446350(1, "Msg", "%s", &v65); return 0; } v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)(a2 + 8); v44 = *(_WORD *)(a2 + 2); v8 = *(_DWORD *)(a2 + 12); v45 = v6; v9 = *(_DWORD *)(a2 + 16); v47 = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 32); v46 = v7; v10 = *(_DWORD *)(a2 + 20); v48 = v9; v11 = *(_DWORD *)(a2 + 24); v52 = v8; v40 = v8; v49 = v10; v12 = *(_DWORD *)(a2 + 28); v53 = 3137; v13 = *(_DWORD *)(a2 + 33); v50 = v11; rgbValue = v11; v51 = v12; v54 = v13; v39 = v12; LOBYTE(v14) = sub_4533B0(v4 + 4684, &rgbValue); if ( v14 ) { sub_44E180((int)&v32); v67 = 0; sub_44E310((int)&v32, 0x4A3u, 0xEu, 0); v17 = *(_DWORD *)(a2 + 24); v18 = *(_DWORD *)(a2 + 28); v33 = *(_DWORD *)(a2 + 33); v36 = *(_BYTE *)(a2 + 37); v34 = v17; LOBYTE(v17) = *(_BYTE *)(a2 + 32); v35 = v18; v37 = v17; if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v32); v19 = *(_DWORD *)(a2 + 24); v20 = *(_DWORD *)(a2 + 28); v58 = *(_DWORD *)(a2 + 4); v21 = *(_DWORD *)(a2 + 16); v56 = v19; v22 = *(_DWORD *)(a2 + 8); v61 = v21; v23 = *(_BYTE *)(a2 + 32); v57 = v20; v24 = *(_DWORD *)(a2 + 12); v59 = v22; v25 = *(_DWORD *)(a2 + 20); v60 = v24; v62 = v25; v63 = -1; switch ( v23 ) { case 0: v63 = 10; goto LABEL_15; case 1: v63 = 11; goto LABEL_15; case 3: v63 = 12; goto LABEL_15; case 4: v63 = 13; LABEL_15: LOBYTE(v26) = sub_4559D0(*(_DWORD *)v30 + 4684, &v55); if ( !v26 ) { sprintf( &v64, "ERROR - fc_NC_GUILD_DB_MEMBER_GRADE_REQ - SetGuildHistory, (nGuildNo=%d), (nCharNo=%d), (nMsgType=%d)", v56, v57, v63, v29); sub_446350(1, "Msg", "%s", &v64); } v67 = -1; nullsub_1(&v32); goto LABEL_18; default: sub_44E180((int)&v31); LOBYTE(v67) = 1; sub_44E310((int)&v31, 0x7470u, 0x25u, &v44); v28 = sub_43BFB0(*(_DWORD *)(v30 + 4), (int)&v31); LOBYTE(v67) = 0; nullsub_1(&v31); v67 = -1; nullsub_1(&v32); result = v28; break; } } else { if ( v41 == -1324 ) { v53 = 3210; } else { v15 = *(_BYTE *)(a2 + 32); v16 = *(_DWORD *)(a2 + 28); v53 = 3209; sprintf( &v65, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MEMBER_GRADE_REQ, GuildNo=%d, CharNo=%d, MemberGrade=%d", *(_DWORD *)(a2 + 24), v16, v15, v29); sub_446350(1, "Msg", "%s", &v65); } LABEL_18: v43 = 29808; v27 = *(_DWORD *)(v30 + 4); v42 = 39; result = sub_43BFE0(v27, (int)&v42, 0x28u); } return result; } // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (00435800) -------------------------------------------------------- signed int __thiscall sub_435800(int this, int a2, int a3) { signed int result; // eax@1 __int16 v4; // dx@2 int v5; // ecx@2 int v6; // eax@2 int v7; // edx@2 int v8; // eax@2 int v9; // ecx@2 int v10; // edx@2 int v11; // eax@2 int v12; // eax@2 int v13; // eax@2 int v14; // eax@3 signed __int16 v15; // dx@8 int v16; // ecx@13 int v17; // [sp+4h] [bp-1ECh]@1 __int16 rgbValue; // [sp+8h] [bp-1E8h]@2 char v19; // [sp+Ah] [bp-1E6h]@2 char v20; // [sp+10Ah] [bp-E6h]@2 int v21; // [sp+10Bh] [bp-E5h]@2 char v22[4]; // [sp+10Fh] [bp-E1h]@2 int v23; // [sp+113h] [bp-DDh]@2 int v24; // [sp+117h] [bp-D9h]@2 int v25; // [sp+11Bh] [bp-D5h]@2 int v26; // [sp+11Fh] [bp-D1h]@2 char v27; // [sp+123h] [bp-CDh]@2 __int16 v28; // [sp+124h] [bp-CCh]@2 int v29; // [sp+126h] [bp-CAh]@2 int v30; // [sp+12Ah] [bp-C6h]@2 int v31; // [sp+12Eh] [bp-C2h]@2 int v32; // [sp+132h] [bp-BEh]@2 char v33; // [sp+136h] [bp-BAh]@2 char v34; // [sp+178h] [bp-78h]@13 __int16 v35; // [sp+179h] [bp-77h]@13 __int16 v36; // [sp+17Bh] [bp-75h]@9 __int16 v37; // [sp+17Dh] [bp-73h]@13 int v38; // [sp+17Fh] [bp-71h]@13 char v39[4]; // [sp+183h] [bp-6Dh]@2 int v40; // [sp+187h] [bp-69h]@2 int v41; // [sp+18Bh] [bp-65h]@2 int v42; // [sp+18Fh] [bp-61h]@2 int v43; // [sp+193h] [bp-5Dh]@2 __int16 v44; // [sp+197h] [bp-59h]@13 int v45; // [sp+199h] [bp-57h]@13 int v46; // [sp+19Dh] [bp-53h]@13 int v47; // [sp+1A1h] [bp-4Fh]@13 int v48; // [sp+1A5h] [bp-4Bh]@13 char v49; // [sp+1A9h] [bp-47h]@13 unsigned int v50; // [sp+1ECh] [bp-4h]@1 int v51; // [sp+1F0h] [bp+0h]@1 v50 = (unsigned int)&v51 ^ __security_cookie; v17 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_WORD *)(a2 + 284); v21 = *(_DWORD *)(a2 + 260); v5 = *(_DWORD *)(a2 + 290); rgbValue = 0; v43 = 0; v42 = 0; v41 = 0; v40 = 0; *(_DWORD *)v39 = 0; v6 = *(_DWORD *)(a2 + 286); v30 = v5; v28 = v4; v7 = *(_DWORD *)(a2 + 294); v29 = v6; v8 = *(_DWORD *)(a2 + 298); v31 = v7; v32 = v8; memcpy(&v33, (const void *)(a2 + 302), 0x40u); sub_402A10((int)&v19, a2 + 4); v9 = *(_DWORD *)(a2 + 272); v10 = *(_DWORD *)(a2 + 264); v23 = *(_DWORD *)(a2 + 268); v11 = *(_DWORD *)(a2 + 280); v24 = v9; v26 = v11; v12 = *(_DWORD *)v17; *(_DWORD *)v22 = v10; v13 = v12 + 4684; v25 = *(_DWORD *)(a2 + 276); v20 = 0; v27 = 0; if ( v21 ) LOBYTE(v14) = sub_464280(v13, &rgbValue); else LOBYTE(v14) = sub_464390(v13, &rgbValue); if ( v14 ) { if ( rgbValue == 1 ) { v36 = 3457; } else { if ( rgbValue != 2 ) { v15 = 3456; LABEL_12: v36 = v15; goto LABEL_13; } v36 = 3458; } LABEL_13: v37 = *(_WORD *)(a2 + 2); v38 = v21; v43 = 0; v42 = 0; v41 = 0; v40 = 0; *(_DWORD *)v39 = 0; strncpy(v39, v22, 0x14u); v44 = v28; v45 = v29; v47 = v31; v46 = v30; v48 = v32; memcpy(&v49, &v33, 0x40u); v16 = *(_DWORD *)(v17 + 4); v34 = 112; v35 = 31756; return sub_43BFE0(v16, (int)&v34, 0x71u); } v15 = 3463; goto LABEL_12; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00435A20) -------------------------------------------------------- signed int __thiscall sub_435A20(int this, int a2, int a3) { signed int result; // eax@1 int v4; // ecx@2 __int16 v5; // dx@2 __int16 v6; // ax@2 int v7; // ecx@2 int v8; // eax@2 int v9; // edx@2 int v10; // eax@2 int v11; // ecx@2 int v12; // edx@2 int v13; // eax@2 int v14; // eax@2 int v15; // eax@2 int v16; // eax@3 signed __int16 v17; // dx@8 int v18; // ecx@13 int v19; // [sp+4h] [bp-1ECh]@1 __int16 rgbValue; // [sp+8h] [bp-1E8h]@2 char v21; // [sp+Ah] [bp-1E6h]@2 char v22; // [sp+10Ah] [bp-E6h]@2 int v23; // [sp+10Bh] [bp-E5h]@2 char v24[4]; // [sp+10Fh] [bp-E1h]@2 int v25; // [sp+113h] [bp-DDh]@2 int v26; // [sp+117h] [bp-D9h]@2 int v27; // [sp+11Bh] [bp-D5h]@2 int v28; // [sp+11Fh] [bp-D1h]@2 char v29; // [sp+123h] [bp-CDh]@2 __int16 v30; // [sp+124h] [bp-CCh]@2 int v31; // [sp+126h] [bp-CAh]@2 int v32; // [sp+12Ah] [bp-C6h]@2 int v33; // [sp+12Eh] [bp-C2h]@2 int v34; // [sp+132h] [bp-BEh]@2 char v35; // [sp+136h] [bp-BAh]@2 char v36; // [sp+178h] [bp-78h]@13 __int16 v37; // [sp+179h] [bp-77h]@13 __int16 v38; // [sp+17Bh] [bp-75h]@9 __int16 v39; // [sp+17Dh] [bp-73h]@13 int v40; // [sp+17Fh] [bp-71h]@13 char v41[4]; // [sp+183h] [bp-6Dh]@2 int v42; // [sp+187h] [bp-69h]@2 int v43; // [sp+18Bh] [bp-65h]@2 int v44; // [sp+18Fh] [bp-61h]@2 int v45; // [sp+193h] [bp-5Dh]@2 __int16 v46; // [sp+197h] [bp-59h]@13 int v47; // [sp+199h] [bp-57h]@13 int v48; // [sp+19Dh] [bp-53h]@13 int v49; // [sp+1A1h] [bp-4Fh]@13 int v50; // [sp+1A5h] [bp-4Bh]@13 char v51; // [sp+1A9h] [bp-47h]@13 unsigned int v52; // [sp+1ECh] [bp-4h]@1 int v53; // [sp+1F0h] [bp+0h]@1 v52 = (unsigned int)&v53 ^ __security_cookie; v19 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_DWORD *)(a2 + 260); v5 = *(_WORD *)(a2 + 284); v45 = 0; v44 = 0; v43 = 0; v42 = 0; *(_DWORD *)v41 = 0; v6 = *(_WORD *)(a2 + 2); v23 = v4; v7 = *(_DWORD *)(a2 + 290); rgbValue = v6; v8 = *(_DWORD *)(a2 + 286); v32 = v7; v30 = v5; v9 = *(_DWORD *)(a2 + 294); v31 = v8; v10 = *(_DWORD *)(a2 + 298); v33 = v9; v34 = v10; memcpy(&v35, (const void *)(a2 + 302), 0x40u); sub_402A10((int)&v21, a2 + 4); v11 = *(_DWORD *)(a2 + 272); v12 = *(_DWORD *)(a2 + 264); v25 = *(_DWORD *)(a2 + 268); v13 = *(_DWORD *)(a2 + 280); v26 = v11; v28 = v13; v14 = *(_DWORD *)v19; *(_DWORD *)v24 = v12; v15 = v14 + 4684; v27 = *(_DWORD *)(a2 + 276); v22 = 0; v29 = 0; if ( v23 ) LOBYTE(v16) = sub_4645A0(v15, &rgbValue); else LOBYTE(v16) = sub_4646B0(v15, &rgbValue); if ( v16 ) { if ( rgbValue == 1 ) { v38 = 3489; } else { if ( rgbValue != 2 ) { v17 = 3488; LABEL_12: v38 = v17; goto LABEL_13; } v38 = 3490; } LABEL_13: v39 = *(_WORD *)(a2 + 2); v40 = v23; v45 = 0; v44 = 0; v43 = 0; v42 = 0; *(_DWORD *)v41 = 0; strncpy(v41, v24, 0x14u); v46 = v30; v47 = v31; v49 = v33; v48 = v32; v50 = v34; memcpy(&v51, &v35, 0x40u); v18 = *(_DWORD *)(v19 + 4); v36 = 112; v37 = 31761; return sub_43BFE0(v18, (int)&v36, 0x71u); } v17 = 3495; goto LABEL_12; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00435C50) -------------------------------------------------------- signed int __thiscall sub_435C50(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // ecx@2 int v7; // eax@2 int v8; // edx@2 int v9; // ecx@2 int v10; // eax@2 int v11; // eax@2 int v12; // ecx@5 int rgbValue; // [sp+8h] [bp-30h]@2 char v14; // [sp+10h] [bp-28h]@5 __int16 v15; // [sp+11h] [bp-27h]@5 int v16; // [sp+13h] [bp-25h]@2 int v17; // [sp+17h] [bp-21h]@2 int v18; // [sp+1Bh] [bp-1Dh]@2 int v19; // [sp+1Fh] [bp-19h]@2 int v20; // [sp+23h] [bp-15h]@2 int v21; // [sp+27h] [bp-11h]@2 int v22; // [sp+2Bh] [bp-Dh]@2 __int16 v23; // [sp+2Fh] [bp-9h]@3 unsigned int v24; // [sp+34h] [bp-4h]@1 int v25; // [sp+38h] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 14); v6 = *(_DWORD *)(a2 + 10); v16 = *(_DWORD *)(a2 + 2); v7 = *(_DWORD *)(a2 + 6); v19 = v5; v8 = *(_DWORD *)(a2 + 22); v18 = v6; v9 = *(_DWORD *)(a2 + 18); v17 = v7; rgbValue = v7; v10 = *(_DWORD *)v3; v21 = v8; v20 = v9; v22 = *(_DWORD *)(a2 + 26); LOBYTE(v11) = sub_456080(v10 + 4684, &rgbValue); if ( v11 ) v23 = 5952; else v23 = 5956; v12 = *(_DWORD *)(v3 + 4); v14 = 32; v15 = -27613; result = sub_43BFE0(v12, (int)&v14, 0x21u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00435D10) -------------------------------------------------------- signed int __thiscall sub_435D10(int this, int a2, int a3) { int v3; // ebx@1 int v4; // eax@2 int v5; // esi@2 int v6; // eax@2 int v7; // edi@4 int v8; // ecx@4 int v9; // eax@5 char v10; // cl@6 int v11; // esi@7 int v12; // ecx@7 size_t v13; // eax@7 bool v14; // al@11 signed int v15; // esi@13 signed int result; // eax@13 size_t v17; // [sp-18h] [bp-228Ch]@3 const void *v18; // [sp-14h] [bp-2288h]@3 unsigned int v19; // [sp-10h] [bp-2284h]@1 int rgbValue; // [sp+0h] [bp-2274h]@2 int v21; // [sp+8h] [bp-226Ch]@4 char v22; // [sp+Ch] [bp-2268h]@2 int v23; // [sp+11h] [bp-2263h]@2 __int16 v24; // [sp+15h] [bp-225Fh]@2 char v25; // [sp+17h] [bp-225Dh]@4 __int16 v26; // [sp+18h] [bp-225Ch]@9 char v27[8186]; // [sp+1Ah] [bp-225Ah]@7 int TargetValue; // [sp+2014h] [bp-260h]@5 char v29; // [sp+2018h] [bp-25Ch]@5 int v30; // [sp+201Ch] [bp-258h]@5 char v31; // [sp+2020h] [bp-254h]@5 int v32; // [sp+2022h] [bp-252h]@5 char v33; // [sp+202Ch] [bp-248h]@5 char v34[67]; // [sp+202Dh] [bp-247h]@5 int v35; // [sp+2070h] [bp-204h]@5 char v36; // [sp+2074h] [bp-200h]@5 char v37; // [sp+209Ch] [bp-1D8h]@5 unsigned __int8 v38; // [sp+209Eh] [bp-1D6h]@5 char v39; // [sp+20A0h] [bp-1D4h]@5 int v40; // [sp+20B0h] [bp-1C4h]@5 char v41; // [sp+20B4h] [bp-1C0h]@7 int v42; // [sp+20B6h] [bp-1BEh]@7 char v43[4]; // [sp+20C4h] [bp-1B0h]@4 int v44; // [sp+20C8h] [bp-1ACh]@4 int v45; // [sp+20CCh] [bp-1A8h]@4 int v46; // [sp+20D0h] [bp-1A4h]@4 int v47; // [sp+20D4h] [bp-1A0h]@4 char v48; // [sp+20D8h] [bp-19Ch]@5 char v49[64]; // [sp+20D9h] [bp-19Bh]@6 int v50; // [sp+2119h] [bp-15Bh]@7 char v51; // [sp+211Dh] [bp-157h]@7 __int16 v52; // [sp+211Eh] [bp-156h]@7 char v53[4]; // [sp+2120h] [bp-154h]@4 int v54; // [sp+2124h] [bp-150h]@4 int v55; // [sp+2128h] [bp-14Ch]@4 int v56; // [sp+212Ch] [bp-148h]@5 char v57; // [sp+2130h] [bp-144h]@5 int v58; // [sp+2131h] [bp-143h]@5 int v59; // [sp+2135h] [bp-13Fh]@5 int v60; // [sp+215Dh] [bp-117h]@7 char v61; // [sp+2164h] [bp-110h]@3 unsigned int v62; // [sp+2264h] [bp-10h]@1 int v63; // [sp+2270h] [bp-4h]@2 int v64; // [sp+2274h] [bp+0h]@1 v62 = (unsigned int)&v64 ^ __security_cookie; v19 = (unsigned int)&v64 ^ __security_cookie; v3 = this; if ( sub_43B000(this, a2) ) { sub_44E180((int)&v22); v23 = *(_DWORD *)(a2 + 2); rgbValue = v23; v4 = *(_DWORD *)v3 + 4684; v24 = 6016; v5 = 0; v63 = 0; LOBYTE(v6) = sub_4541C0(v4, &rgbValue); if ( v6 ) { v7 = 0; v8 = *(_DWORD *)v3 + 4684; v47 = 0; v46 = 0; v45 = 0; v44 = 0; *(_DWORD *)v43 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; v21 = 0; v25 = 1; if ( sub_44E4A0(v8) ) { do { sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E540(*(_DWORD *)v3 + 4684, &v29); sub_44E6B0(*(_DWORD *)v3 + 4684, &v30); sub_44E510(*(_DWORD *)v3 + 4684, &v33); sub_44E600(*(_DWORD *)v3 + 4684, v34); sub_44E570(*(_DWORD *)v3 + 4684, &v35); sub_44E600(*(_DWORD *)v3 + 4684, &v36); sub_44E540(*(_DWORD *)v3 + 4684, &v38); sub_44E600(*(_DWORD *)v3 + 4684, &v39); sub_44E6B0(*(_DWORD *)v3 + 4684, &v40); sub_44E510(*(_DWORD *)v3 + 4684, &v37); v58 = TargetValue; v57 = v29; v56 = v56 & 0xFC000000 | 2 * (v30 & 0x7FF | ((BYTE2(v30) & 0xF | 16 * (v31 & 0x1F | 32 * (v32 & 0x1F))) << 11)); v59 = v5; v48 = v33; v9 = 0; do { v10 = v34[v9]; v49[v9++] = v10; } while ( v10 ); v60 = v35; v47 = v5; v46 = v5; v45 = v5; v44 = v5; *(_DWORD *)v43 = v5; strncpy(v43, &v36, 0x14u); v52 = v38; v55 = v5; v54 = v5; *(_DWORD *)v53 = v5; strncpy(v53, &v39, 0xCu); v50 = v50 & 0xFC000000 | 2 * (v40 & 0x7FF | ((BYTE2(v40) & 0xF | 16 * (v41 & 0x1F | 32 * (v42 & 0x1F))) << 11)); v51 = v37; v11 = (int)&v27[157 * v7]; sub_41BAC0(v11, (int)v43); memcpy((void *)(v11 + 109), &v58, 0x30u); v12 = v21 + 1; v13 = 157 * (v21++ + 1) + 9; if ( (signed int)v13 >= 2046 && v12 > 1 ) { v26 = v12; sub_44E310((int)&v22, 0x9810u, v13, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v22) ) { sub_44E4D0(*(_DWORD *)v3 + 4684); v63 = -1; nullsub_1(&v22); goto LABEL_16; } v21 = 0; v25 = 0; } v14 = sub_44E4A0(*(_DWORD *)v3 + 4684); v7 = v21; v5 = 0; } while ( v14 ); } sub_44E4D0(*(_DWORD *)v3 + 4684); v25 |= 2u; v18 = (const void *)v5; v26 = v7; v17 = 157 * v7 + 9; } else { sprintf(&v61, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_MEMBER_REQ, GuildNo=%d", *(_DWORD *)(a2 + 2), v19); sub_446350(1, "Msg", "%s", &v61); v18 = 0; v24 = 6034; v17 = 9; } sub_44E310((int)&v22, 0x9810u, v17, v18); v15 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v22); v63 = -1; nullsub_1(&v22); result = v15; } else { LABEL_16: result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; // 435D10: using guessed type char var_247[67]; // 435D10: using guessed type char var_19B[64]; // 435D10: using guessed type char var_225A[8186]; //----- (004361D0) -------------------------------------------------------- signed int __thiscall sub_4361D0(int this, int a2, int a3) { int v3; // edi@1 int v4; // edi@4 int v6; // ecx@7 int v7; // eax@7 int v8; // edx@7 int v9; // ecx@7 int v10; // ecx@7 int v11; // ecx@7 int v12; // eax@7 int v13; // edx@7 int v14; // ST20_4@8 int v15; // edi@8 int v16; // ecx@9 int v17; // eax@9 int v18; // ecx@9 int v19; // edx@9 int v20; // eax@9 int v21; // eax@9 int v22; // edx@11 int v23; // ecx@11 int v24; // eax@11 int v25; // edx@11 int v26; // ecx@11 int v27; // eax@11 int v28; // eax@11 int v29; // ecx@13 int v30; // [sp+8h] [bp-184h]@1 int rgbValue; // [sp+Ch] [bp-180h]@7 int v32; // [sp+10h] [bp-17Ch]@7 char v33; // [sp+14h] [bp-178h]@7 int v34; // [sp+18h] [bp-174h]@7 char v35; // [sp+1Ch] [bp-170h]@11 int v36; // [sp+20h] [bp-16Ch]@11 int v37; // [sp+24h] [bp-168h]@11 int v38; // [sp+28h] [bp-164h]@11 int v39; // [sp+2Ch] [bp-160h]@11 int v40; // [sp+30h] [bp-15Ch]@11 int v41; // [sp+34h] [bp-158h]@11 int v42; // [sp+38h] [bp-154h]@11 int v43; // [sp+3Ch] [bp-150h]@11 char v44; // [sp+40h] [bp-14Ch]@9 int v45; // [sp+44h] [bp-148h]@9 int v46; // [sp+48h] [bp-144h]@9 int v47; // [sp+4Ch] [bp-140h]@9 int v48; // [sp+50h] [bp-13Ch]@9 int v49; // [sp+54h] [bp-138h]@9 int v50; // [sp+58h] [bp-134h]@9 int v51; // [sp+5Ch] [bp-130h]@9 int v52; // [sp+60h] [bp-12Ch]@9 char v53; // [sp+64h] [bp-128h]@13 __int16 v54; // [sp+65h] [bp-127h]@13 __int16 v55; // [sp+67h] [bp-125h]@7 int v56; // [sp+69h] [bp-123h]@7 int v57; // [sp+6Dh] [bp-11Fh]@7 int v58; // [sp+71h] [bp-11Bh]@7 int v59; // [sp+75h] [bp-117h]@7 int v60; // [sp+79h] [bp-113h]@7 int v61; // [sp+7Dh] [bp-10Fh]@7 int v62; // [sp+81h] [bp-10Bh]@7 char v63; // [sp+85h] [bp-107h]@7 __int16 v64; // [sp+86h] [bp-106h]@7 char v65; // [sp+88h] [bp-104h]@5 unsigned int v66; // [sp+188h] [bp-4h]@1 int v67; // [sp+18Ch] [bp+0h]@1 v66 = (unsigned int)&v67 ^ __security_cookie; v3 = this; v30 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; v4 = *(_DWORD *)v3; if ( !v4 ) { sprintf(&v65, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_MEMBER_GUILD_JOIN_REQ, Error=%d", 12736); sub_446350(1, "Msg", "%s", &v65); return 0; } v6 = *(_DWORD *)(a2 + 8); v7 = *(_DWORD *)(a2 + 4); v55 = *(_WORD *)(a2 + 2); v58 = *(_DWORD *)(a2 + 12); v8 = *(_DWORD *)(a2 + 20); v57 = v6; v9 = *(_DWORD *)(a2 + 16); v60 = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 52); v59 = v9; v10 = *(_DWORD *)(a2 + 24); v63 = v8; v33 = v8; v61 = v10; v11 = *(_DWORD *)(a2 + 28); v56 = v7; rgbValue = v7; v62 = v11; v64 = 6016; v32 = v11; v34 = 0; LOBYTE(v12) = sub_454610(v4 + 4684, &rgbValue); v13 = *(_DWORD *)(a2 + 4); if ( v12 ) { v16 = *(_DWORD *)(a2 + 32); v15 = v30; v46 = *(_DWORD *)(a2 + 28); v17 = *(_DWORD *)(a2 + 40); v47 = v16; v18 = *(_DWORD *)(a2 + 44); v45 = v13; v19 = *(_DWORD *)(a2 + 36); v49 = v17; v20 = *(_DWORD *)v30; v50 = v18; v48 = v19; v51 = *(_DWORD *)(a2 + 48); v52 = 1; LOBYTE(v21) = sub_4559D0(v20 + 4684, &v44); if ( !v21 ) { sprintf( &v65, "ERROR - fc_NC_GUILD_ACADEMY_DB_MEMBER_GUILD_JOIN_REQ - SetGuildHistory, (nGuildNo=%d), (nCharNo=%d), (nMsgType=%d)", v45, v46, v52); sub_446350(1, "Msg", "%s", &v65); } v22 = *(_DWORD *)(a2 + 28); v23 = *(_DWORD *)(a2 + 4); v38 = *(_DWORD *)(a2 + 32); v24 = *(_DWORD *)(a2 + 44); v37 = v22; v25 = *(_DWORD *)(a2 + 40); v36 = v23; v26 = *(_DWORD *)(a2 + 36); v41 = v24; v27 = *(_DWORD *)v30; v40 = v25; v39 = v26; v42 = *(_DWORD *)(a2 + 48); v43 = 102; LOBYTE(v28) = sub_455C50(v27 + 4684, &v35); if ( !v28 ) { sprintf( &v65, "ERROR - fc_NC_GUILD_ACADEMY_DB_MEMBER_GUILD_JOIN_REQ - SetGuildAcademyHistory, (nGuildAcademyNo=%d), (nCharNo=%d), (nMsgType=%d)", v36, v37, v43); sub_446350(1, "Msg", "%s", &v65); } } else { v14 = *(_DWORD *)(a2 + 28); v64 = 6031; sprintf( &v65, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_MEMBER_GUILD_JOIN_REQ, GuildNo=%d, CharNo=%d", v13, v14); sub_446350(1, "Msg", "%s", &v65); v15 = v30; } v29 = *(_DWORD *)(v15 + 4); v53 = 35; v54 = -26576; return sub_43BFE0(v29, (int)&v53, 0x24u); } // 4DE38C: using guessed type int __security_cookie; //----- (004364C0) -------------------------------------------------------- signed int __thiscall sub_4364C0(int this, int a2, int a3) { int v3; // edi@1 int v4; // edx@4 int v6; // ecx@7 int v7; // eax@7 int v8; // ecx@7 int v9; // eax@7 int v10; // ecx@7 int v11; // eax@7 int v12; // edx@7 int v13; // ST20_4@8 int v14; // ecx@9 int v15; // eax@9 int v16; // ecx@9 int v17; // edx@9 int v18; // eax@9 int v19; // eax@9 int v20; // ecx@11 int rgbValue; // [sp+8h] [bp-158h]@7 int v22; // [sp+Ch] [bp-154h]@7 char v23; // [sp+14h] [bp-14Ch]@9 int v24; // [sp+18h] [bp-148h]@9 int v25; // [sp+1Ch] [bp-144h]@9 int v26; // [sp+20h] [bp-140h]@9 int v27; // [sp+24h] [bp-13Ch]@9 int v28; // [sp+28h] [bp-138h]@9 int v29; // [sp+2Ch] [bp-134h]@9 int v30; // [sp+30h] [bp-130h]@9 int v31; // [sp+34h] [bp-12Ch]@9 char v32; // [sp+38h] [bp-128h]@11 __int16 v33; // [sp+39h] [bp-127h]@11 __int16 v34; // [sp+3Bh] [bp-125h]@7 int v35; // [sp+3Dh] [bp-123h]@7 int v36; // [sp+41h] [bp-11Fh]@7 int v37; // [sp+45h] [bp-11Bh]@7 int v38; // [sp+49h] [bp-117h]@7 int v39; // [sp+4Dh] [bp-113h]@7 int v40; // [sp+51h] [bp-10Fh]@7 int v41; // [sp+55h] [bp-10Bh]@7 __int16 v42; // [sp+59h] [bp-107h]@7 char v43; // [sp+5Ch] [bp-104h]@5 unsigned int v44; // [sp+15Ch] [bp-4h]@1 int v45; // [sp+160h] [bp+0h]@1 v44 = (unsigned int)&v45 ^ __security_cookie; v3 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; v4 = *(_DWORD *)v3; if ( !*(_DWORD *)v3 ) { sprintf(&v43, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_MEMBER_VANISH_REQ, Error=%d", 12736); sub_446350(1, "Msg", "%s", &v43); return 0; } v6 = *(_DWORD *)(a2 + 4); v34 = *(_WORD *)(a2 + 2); v36 = *(_DWORD *)(a2 + 8); v7 = *(_DWORD *)(a2 + 16); v35 = v6; v8 = *(_DWORD *)(a2 + 12); v38 = v7; v9 = *(_DWORD *)(a2 + 24); v37 = v8; v10 = *(_DWORD *)(a2 + 20); v40 = v9; rgbValue = v9; v39 = v10; v41 = *(_DWORD *)(a2 + 28); v42 = 6016; v22 = v41; LOBYTE(v11) = sub_454500(v4 + 4684, &rgbValue); v12 = *(_DWORD *)(a2 + 24); if ( v11 ) { v14 = *(_DWORD *)(a2 + 4); v25 = *(_DWORD *)(a2 + 28); v15 = *(_DWORD *)(a2 + 12); v26 = v14; v16 = *(_DWORD *)(a2 + 16); v24 = v12; v17 = *(_DWORD *)(a2 + 8); v28 = v15; v18 = *(_DWORD *)v3; v29 = v16; v27 = v17; v30 = *(_DWORD *)(a2 + 20); v31 = 103; LOBYTE(v19) = sub_455C50(v18 + 4684, &v23); if ( !v19 ) { sprintf( &v43, "ERROR - fc_NC_GUILD_ACADEMY_DB_MEMBER_VANISH_REQ - SetGuildAcademyHistory, (nGuildAcademyNo=%d), (nCharNo=%d), (nMsgType=%d)", v24, v25, v31); sub_446350(1, "Msg", "%s", &v43); } } else { v13 = *(_DWORD *)(a2 + 28); v42 = 6046; sprintf(&v43, "ERROR - CPFsCharacter::fc_NC_GUILD_ACADEMY_DB_MEMBER_VANISH_REQ, GuildNo=%d, CharNo=%d", v12, v13); sub_446350(1, "Msg", "%s", &v43); } v33 = -26598; v20 = *(_DWORD *)(v3 + 4); v32 = 34; return sub_43BFE0(v20, (int)&v32, 0x23u); } // 4DE38C: using guessed type int __security_cookie; //----- (004366E0) -------------------------------------------------------- signed int __thiscall sub_4366E0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // esi@2 int v6; // eax@2 int v7; // ecx@5 int rgbValue; // [sp+8h] [bp-B4h]@2 int v9; // [sp+Ch] [bp-B0h]@2 char v10; // [sp+14h] [bp-A8h]@3 char v11; // [sp+15h] [bp-A7h]@3 char v12; // [sp+3Dh] [bp-7Fh]@3 char v13; // [sp+3Eh] [bp-7Eh]@3 char v14; // [sp+40h] [bp-7Ch]@3 int v15; // [sp+50h] [bp-6Ch]@3 char v16; // [sp+54h] [bp-68h]@3 int v17; // [sp+56h] [bp-66h]@3 char v18; // [sp+60h] [bp-5Ch]@5 __int16 v19; // [sp+61h] [bp-5Bh]@5 __int16 v20; // [sp+63h] [bp-59h]@2 int v21; // [sp+65h] [bp-57h]@2 int v22; // [sp+69h] [bp-53h]@2 __int16 v23; // [sp+6Dh] [bp-4Fh]@3 int v24; // [sp+6Fh] [bp-4Dh]@3 char v25[4]; // [sp+73h] [bp-49h]@2 int v26; // [sp+77h] [bp-45h]@2 int v27; // [sp+7Bh] [bp-41h]@2 int v28; // [sp+7Fh] [bp-3Dh]@2 int v29; // [sp+83h] [bp-39h]@2 char v30; // [sp+87h] [bp-35h]@3 char v31; // [sp+88h] [bp-34h]@3 char v32; // [sp+89h] [bp-33h]@3 char v33; // [sp+8Ah] [bp-32h]@3 char v34[4]; // [sp+8Bh] [bp-31h]@2 int v35; // [sp+8Fh] [bp-2Dh]@2 int v36; // [sp+93h] [bp-29h]@2 int v37; // [sp+97h] [bp-25h]@3 char v38; // [sp+9Bh] [bp-21h]@3 unsigned int v39; // [sp+B8h] [bp-4h]@1 int v40; // [sp+BCh] [bp+0h]@1 v39 = (unsigned int)&v40 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v20 = *(_WORD *)(a2 + 2); v5 = *(_DWORD *)(a2 + 8); v21 = *(_DWORD *)(a2 + 4); rgbValue = v21; v6 = *(_DWORD *)v3; v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; v36 = 0; v35 = 0; *(_DWORD *)v34 = 0; v22 = v5; v9 = v5; if ( sub_451D90(v6 + 4684, &rgbValue) ) { v23 = 2385; v24 = v24 & 0xFC000000 | 2 * (v15 & 0x7FF | ((BYTE2(v15) & 0xF | 16 * (v16 & 0x1F | 32 * (v17 & 0x1F))) << 11)); v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; strncpy(v25, &v11, 0x14u); v30 = v12; v31 = v13; v32 = 0; v33 = v10; v36 = 0; v35 = 0; *(_DWORD *)v34 = 0; strncpy(v34, &v14, 0xCu); v37 = dword_4B727C; v38 = byte_4B7280; } else { v23 = 2386; } v19 = 21525; v7 = *(_DWORD *)(v3 + 4); v18 = 86; result = sub_43BFE0(v7, (int)&v18, 0x57u); } return result; } // 4B727C: using guessed type int dword_4B727C; // 4B7280: using guessed type char byte_4B7280; // 4DE38C: using guessed type int __security_cookie; //----- (00436860) -------------------------------------------------------- signed int __thiscall sub_436860(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // eax@2 int v6; // eax@3 char v7; // cl@4 int v8; // eax@5 char v9; // cl@6 int v10; // ST1C_4@8 int v11; // ecx@9 char v12; // [sp+8h] [bp-8D0h]@2 int v13; // [sp+9h] [bp-8CFh]@9 __int16 v14; // [sp+Dh] [bp-8CBh]@2 __int16 v15; // [sp+Fh] [bp-8C9h]@2 char v16[4]; // [sp+15h] [bp-8C3h]@3 int v17; // [sp+19h] [bp-8BFh]@3 int v18; // [sp+1Dh] [bp-8BBh]@3 int v19; // [sp+21h] [bp-8B7h]@3 int v20; // [sp+25h] [bp-8B3h]@3 int v21; // [sp+29h] [bp-8AFh]@3 char v22; // [sp+2Dh] [bp-8ABh]@3 char v23; // [sp+2Eh] [bp-8AAh]@3 int v24; // [sp+2Fh] [bp-8A9h]@3 __int16 v25; // [sp+33h] [bp-8A5h]@3 int v26; // [sp+35h] [bp-8A3h]@3 int v27; // [sp+39h] [bp-89Fh]@3 int v28; // [sp+3Dh] [bp-89Bh]@3 __int16 v29; // [sp+67h] [bp-871h]@3 int v30; // [sp+6Ah] [bp-86Eh]@3 int v31; // [sp+6Eh] [bp-86Ah]@3 int v32; // [sp+72h] [bp-866h]@3 int v33; // [sp+14Bh] [bp-78Dh]@3 int v34; // [sp+14Fh] [bp-789h]@3 int v35; // [sp+153h] [bp-785h]@3 char v36; // [sp+157h] [bp-781h]@3 int v37; // [sp+158h] [bp-780h]@3 char v38[188]; // [sp+180h] [bp-758h]@4 char v39[512]; // [sp+23Ch] [bp-69Ch]@6 int v40; // [sp+43Ch] [bp-49Ch]@2 char v41[4]; // [sp+440h] [bp-498h]@7 int v42; // [sp+444h] [bp-494h]@7 int v43; // [sp+448h] [bp-490h]@7 int v44; // [sp+44Ch] [bp-48Ch]@7 int rgbValue; // [sp+450h] [bp-488h]@2 char v46; // [sp+454h] [bp-484h]@3 char v47; // [sp+467h] [bp-471h]@7 __int16 v48; // [sp+472h] [bp-466h]@3 int v49; // [sp+478h] [bp-460h]@3 int v50; // [sp+47Ch] [bp-45Ch]@3 char v51; // [sp+480h] [bp-458h]@3 char v52; // [sp+481h] [bp-457h]@3 int v53; // [sp+484h] [bp-454h]@3 __int16 v54; // [sp+488h] [bp-450h]@3 int v55; // [sp+490h] [bp-448h]@3 int v56; // [sp+494h] [bp-444h]@3 __int16 v57; // [sp+498h] [bp-440h]@3 unsigned __int16 v58; // [sp+49Ah] [bp-43Eh]@3 unsigned __int16 v59; // [sp+49Ch] [bp-43Ch]@3 unsigned __int16 v60; // [sp+49Eh] [bp-43Ah]@3 unsigned __int16 v61; // [sp+4A0h] [bp-438h]@3 unsigned __int16 v62; // [sp+4A2h] [bp-436h]@3 __int16 v63; // [sp+4A8h] [bp-430h]@3 unsigned __int16 v64; // [sp+4AAh] [bp-42Eh]@3 unsigned __int16 v65; // [sp+4ACh] [bp-42Ch]@3 unsigned __int16 v66; // [sp+4AEh] [bp-42Ah]@3 unsigned __int16 v67; // [sp+4B0h] [bp-428h]@3 unsigned __int16 v68; // [sp+4B2h] [bp-426h]@3 __int16 v69; // [sp+4B8h] [bp-420h]@3 unsigned __int16 v70; // [sp+4BAh] [bp-41Eh]@3 unsigned __int16 v71; // [sp+4BCh] [bp-41Ch]@3 unsigned __int16 v72; // [sp+4BEh] [bp-41Ah]@3 unsigned __int16 v73; // [sp+4C0h] [bp-418h]@3 unsigned __int16 v74; // [sp+4C2h] [bp-416h]@3 __int16 v75; // [sp+4C8h] [bp-410h]@3 unsigned __int16 v76; // [sp+4CAh] [bp-40Eh]@3 unsigned __int16 v77; // [sp+4CCh] [bp-40Ch]@3 unsigned __int16 v78; // [sp+4CEh] [bp-40Ah]@3 unsigned __int16 v79; // [sp+4D0h] [bp-408h]@3 unsigned __int16 v80; // [sp+4D2h] [bp-406h]@3 int v81; // [sp+4DCh] [bp-3FCh]@3 int v82; // [sp+4E0h] [bp-3F8h]@3 int v83; // [sp+4E4h] [bp-3F4h]@3 char v84; // [sp+4E8h] [bp-3F0h]@3 __int16 v85; // [sp+4ECh] [bp-3ECh]@3 unsigned __int16 v86; // [sp+4EEh] [bp-3EAh]@3 unsigned __int16 v87; // [sp+4F0h] [bp-3E8h]@3 unsigned __int16 v88; // [sp+4F2h] [bp-3E6h]@3 unsigned __int16 v89; // [sp+4F4h] [bp-3E4h]@3 unsigned __int16 v90; // [sp+4F6h] [bp-3E2h]@3 char v91[169]; // [sp+4FCh] [bp-3DCh]@4 char v92[523]; // [sp+5A5h] [bp-333h]@6 int v93; // [sp+7B0h] [bp-128h]@3 int v94; // [sp+7B4h] [bp-124h]@3 int v95; // [sp+7B8h] [bp-120h]@3 int v96; // [sp+7BCh] [bp-11Ch]@3 int v97; // [sp+7C0h] [bp-118h]@3 int v98; // [sp+7C4h] [bp-114h]@3 int v99; // [sp+7C8h] [bp-110h]@3 int v100; // [sp+7CCh] [bp-10Ch]@3 int v101; // [sp+7D0h] [bp-108h]@3 char v102; // [sp+7D4h] [bp-104h]@8 unsigned int v103; // [sp+8D4h] [bp-4h]@1 int v104; // [sp+8D8h] [bp+0h]@1 v103 = (unsigned int)&v104 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_4351D0((int)&v12); v14 = *(_WORD *)(a2 + 2); v40 = *(_DWORD *)(a2 + 4); rgbValue = v40; v5 = *(_DWORD *)v3 + 4684; v15 = 3137; if ( sub_451F50(v5, &rgbValue) ) { v19 = 0; v18 = 0; v17 = 0; *(_DWORD *)v16 = 0; strncpy(v16, &v46, 0x10u); v21 = v50; v22 = v51; v20 = v49; v24 = v53; v23 = v52; v25 = v54; v27 = v56; v26 = v55; v29 = v48; v99 = 0; v100 = 0; v101 = 0; v93 = v62; v94 = v61; v95 = v60; v96 = v59; v97 = v58 - 1; v98 = v57 - 1900; v28 = _LN52(&v93); v99 = 0; v100 = 0; v101 = 0; v94 = v67; v95 = v66; v93 = v68; v96 = v65; v97 = v64 - 1; v98 = v63 - 1900; v30 = _LN52(&v93); v99 = 0; v100 = 0; v101 = 0; v93 = v74; v94 = v73; v95 = v72; v96 = v71; v97 = v70 - 1; v98 = v69 - 1900; v31 = _LN52(&v93); v99 = 0; v100 = 0; v101 = 0; v93 = v80; v94 = v79; v95 = v78; v96 = v77; v97 = v76 - 1; v98 = v75 - 1900; v32 = _LN52(&v93); v33 = v81; v34 = v82; v35 = v83; v36 = v84; v99 = 0; v100 = 0; v101 = 0; v93 = v90; v94 = v89; v95 = v88; v96 = v87; v97 = v86 - 1; v98 = v85 - 1900; v37 = _LN52(&v93); v6 = 0; do { v7 = v91[v6]; v38[v6++] = v7; } while ( v7 ); v8 = 0; do { v9 = v92[v8]; v39[v8++] = v9; } while ( v9 ); v43 = 0; v42 = 0; *(_DWORD *)v41 = 0; strncpy(v41, &v47, 0xCu); v99 = 0; v100 = 0; v101 = 0; v93 = v62; v94 = v61; v95 = v60; v96 = v59; v97 = v58 - 1; v98 = v57 - 1900; v44 = _LN52(&v93); } else { v10 = *(_DWORD *)(a2 + 4); v15 = 3138; sprintf(&v102, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_REQ, GuildNo=%d", v10); sub_446350(1, "Msg", "%s", &v102); } v11 = *(_DWORD *)(v3 + 4); v12 = 0; v13 = 1951597637; result = sub_43BFE0(v11, (int)&v12, 0x448u); } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 436860: using guessed type char var_3DC[169]; // 436860: using guessed type char var_758[188]; // 436860: using guessed type char var_333[523]; // 436860: using guessed type char var_69C[512]; //----- (00436E50) -------------------------------------------------------- signed int __thiscall sub_436E50(int this, int a2, int a3) { int v3; // edi@1 __int16 v5; // dx@7 int v6; // eax@7 int v7; // eax@7 int v8; // edx@7 int v9; // ecx@7 int v10; // eax@7 int v11; // ecx@7 int v12; // edx@7 int v13; // ecx@7 int v14; // edx@7 int v15; // eax@7 int v16; // eax@7 signed __int16 v17; // ax@8 int v18; // eax@17 int v19; // ecx@22 int v20; // edx@22 int v21; // eax@22 int v22; // ecx@22 int v23; // eax@22 int v24; // eax@22 int v25; // edx@24 int v26; // eax@24 int v27; // edx@24 int v28; // ecx@24 int v29; // eax@24 int v30; // eax@24 int v31; // ecx@27 unsigned int v32; // [sp-10h] [bp-2664h]@1 int v33; // [sp+0h] [bp-2654h]@1 char v34; // [sp+4h] [bp-2650h]@20 int v35; // [sp+9h] [bp-264Bh]@20 int v36; // [sp+Dh] [bp-2647h]@20 int v37; // [sp+11h] [bp-2643h]@20 int v38; // [sp+15h] [bp-263Fh]@20 int v39; // [sp+19h] [bp-263Bh]@20 int v40; // [sp+1Dh] [bp-2637h]@20 char v41; // [sp+21h] [bp-2633h]@20 int rgbValue; // [sp+2008h] [bp-64Ch]@17 __int16 v43; // [sp+2050h] [bp-604h]@19 unsigned __int16 v44; // [sp+2052h] [bp-602h]@19 unsigned __int16 v45; // [sp+2054h] [bp-600h]@19 unsigned __int16 v46; // [sp+2056h] [bp-5FEh]@19 unsigned __int16 v47; // [sp+2058h] [bp-5FCh]@19 unsigned __int16 v48; // [sp+205Ah] [bp-5FAh]@19 char v49; // [sp+2368h] [bp-2ECh]@22 int v50; // [sp+236Ch] [bp-2E8h]@22 int v51; // [sp+2370h] [bp-2E4h]@22 int v52; // [sp+2374h] [bp-2E0h]@22 int v53; // [sp+2378h] [bp-2DCh]@22 int v54; // [sp+237Ch] [bp-2D8h]@22 int v55; // [sp+2380h] [bp-2D4h]@22 int v56; // [sp+2384h] [bp-2D0h]@22 int v57; // [sp+2388h] [bp-2CCh]@22 char v58; // [sp+238Ch] [bp-2C8h]@24 int v59; // [sp+2390h] [bp-2C4h]@24 int v60; // [sp+2394h] [bp-2C0h]@24 int v61; // [sp+2398h] [bp-2BCh]@24 int v62; // [sp+239Ch] [bp-2B8h]@24 int v63; // [sp+23A0h] [bp-2B4h]@24 int v64; // [sp+23A4h] [bp-2B0h]@24 int v65; // [sp+23A8h] [bp-2ACh]@24 int v66; // [sp+23ACh] [bp-2A8h]@24 char v67[4]; // [sp+23B0h] [bp-2A4h]@7 int v68; // [sp+23B4h] [bp-2A0h]@7 int v69; // [sp+23B8h] [bp-29Ch]@7 int v70; // [sp+23BCh] [bp-298h]@7 char v71; // [sp+23C0h] [bp-294h]@7 int v72; // [sp+23C3h] [bp-291h]@7 int v73; // [sp+23C7h] [bp-28Dh]@7 int v74; // [sp+23CBh] [bp-289h]@7 char v75; // [sp+23D0h] [bp-284h]@7 int v76; // [sp+23D4h] [bp-280h]@7 int v77; // [sp+23D8h] [bp-27Ch]@7 int v78; // [sp+23DCh] [bp-278h]@7 int v79; // [sp+23E0h] [bp-274h]@7 int v80; // [sp+23E4h] [bp-270h]@8 int v81; // [sp+23E8h] [bp-26Ch]@20 int v82; // [sp+23ECh] [bp-268h]@20 int v83; // [sp+23F0h] [bp-264h]@19 int v84; // [sp+23F4h] [bp-260h]@19 int v85; // [sp+23F8h] [bp-25Ch]@19 int v86; // [sp+23FCh] [bp-258h]@19 int v87; // [sp+2400h] [bp-254h]@19 int v88; // [sp+2404h] [bp-250h]@19 int v89; // [sp+2408h] [bp-24Ch]@19 int v90; // [sp+240Ch] [bp-248h]@19 int v91; // [sp+2410h] [bp-244h]@19 char v92; // [sp+2414h] [bp-240h]@27 __int16 v93; // [sp+2415h] [bp-23Fh]@27 __int16 v94; // [sp+2417h] [bp-23Dh]@7 int v95; // [sp+2419h] [bp-23Bh]@7 int v96; // [sp+241Dh] [bp-237h]@7 int v97; // [sp+2421h] [bp-233h]@7 int v98; // [sp+2425h] [bp-22Fh]@7 int v99; // [sp+2429h] [bp-22Bh]@7 int v100; // [sp+242Dh] [bp-227h]@7 int v101; // [sp+2431h] [bp-223h]@7 int v102; // [sp+2435h] [bp-21Fh]@7 int v103; // [sp+243Ah] [bp-21Ah]@17 int v104; // [sp+243Eh] [bp-216h]@17 __int16 v105; // [sp+2442h] [bp-212h]@7 char v106; // [sp+2444h] [bp-210h]@25 char v107; // [sp+2544h] [bp-110h]@5 unsigned int v108; // [sp+2644h] [bp-10h]@1 int v109; // [sp+2650h] [bp-4h]@20 int v110; // [sp+2654h] [bp+0h]@1 v108 = (unsigned int)&v110 ^ __security_cookie; v32 = (unsigned int)&v110 ^ __security_cookie; v3 = this; v33 = this; if ( !a2 || !sub_43B000(this, a2) || a2 == -2 ) return 0; if ( !*(_DWORD *)v3 ) { sprintf(&v107, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MAKE_REQ, Error=%d", 12736, v32); sub_446350(1, "Msg", "%s", &v107); return 0; } v5 = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 4); v99 = 0; v98 = 0; v97 = 0; v96 = 0; v102 = 0; v101 = 0; v100 = 0; v94 = v5; v95 = v6; sub_414600((int)&v96, a2 + 28); v7 = *(_DWORD *)(a2 + 32); v8 = *(_DWORD *)(a2 + 28); v105 = 3137; v9 = *(_DWORD *)(a2 + 36); v68 = v7; v10 = *(_DWORD *)(a2 + 44); v69 = v9; v11 = *(_DWORD *)(a2 + 48); *(_DWORD *)v67 = v8; v12 = *(_DWORD *)(a2 + 40); v72 = v10; LOBYTE(v10) = *(_BYTE *)(a2 + 56); v73 = v11; v13 = *(_DWORD *)(a2 + 4); v70 = v12; v14 = *(_DWORD *)(a2 + 52); v75 = v10; v15 = *(_DWORD *)v33; v74 = v14; v76 = v13; v71 = 0; *(_WORD *)((char *)&v74 + 3) = 100; v77 = 1000000; v78 = 0; v79 = 65535; LOBYTE(v16) = sub_452170(v15 + 4684, v67); if ( v16 ) { v104 = v80; rgbValue = v80; v18 = *(_DWORD *)v33 + 4684; v103 = 0; if ( sub_451F50(v18, &rgbValue) ) { v83 = v48; v84 = v47; v85 = v46; v86 = v45; v89 = 0; v90 = 0; v91 = 0; v87 = v44 - 1; v88 = v43 - 1900; v103 = _LN52(&v83); } else { sprintf( &v107, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MAKE_REQ - Failed for loading dCreateDate - nGuildNo(%d)", v80, v32); sub_446350(1, "Msg", "%s", &v107); } sub_44E180((int)&v34); v109 = 0; sub_44E310((int)&v34, 0x48Cu, 0x28u, 0); v35 = v76; v38 = v78; v36 = v80; v37 = v77; v39 = v81; v40 = v82; sub_4029E0(&v41, v67); if ( dword_6E9EC0 ) sub_44B7E0((void *)dword_6E9EC0, (int)&v34); v19 = *(_DWORD *)(a2 + 4); v20 = *(_DWORD *)(a2 + 8); v50 = v80; v53 = *(_DWORD *)(a2 + 12); v21 = *(_DWORD *)(a2 + 24); v51 = v19; v22 = *(_DWORD *)(a2 + 16); v56 = v21; v23 = *(_DWORD *)v33; v54 = v22; v52 = v20; v55 = *(_DWORD *)(a2 + 20); v57 = 0; LOBYTE(v24) = sub_4559D0(v23 + 4684, &v49); if ( !v24 ) { sprintf( &v107, "ERROR - fc_NC_GUILD_DB_MAKE_REQ - SetGuildHistory, (nGuildNo=%d), (nCharNo=%d), (nMsgType=%d)", v50, v51, v57, v32); sub_446350(1, "Msg", "%s", &v107); } v25 = *(_DWORD *)(a2 + 4); v61 = *(_DWORD *)(a2 + 8); v26 = *(_DWORD *)(a2 + 20); v60 = v25; v27 = *(_DWORD *)(a2 + 16); v59 = v80; v28 = *(_DWORD *)(a2 + 12); v64 = v26; v29 = *(_DWORD *)v33; v63 = v27; v62 = v28; v65 = *(_DWORD *)(a2 + 24); v66 = 100; LOBYTE(v30) = sub_455C50(v29 + 4684, &v58); if ( !v30 ) { sprintf( &v106, "ERROR - fc_NC_GUILD_DB_MAKE_REQ - SetGuildAcademyHistory, (nGuildAcademyNo=%d), (nCharNo=%d), (nMsgType=%d)", v59, v60, v66, v32); sub_446350(1, "Msg", "%s", &v106); } v109 = -1; nullsub_1(&v34); } else { v17 = 3224; v105 = 3224; switch ( v80 + 6 ) { case 5: v17 = 3225; goto LABEL_15; case 4: v17 = 3226; goto LABEL_15; case 3: v17 = 3227; goto LABEL_15; case 2: v17 = 3228; goto LABEL_15; case 1: v17 = 3229; goto LABEL_15; case 0: v17 = 3230; LABEL_15: v105 = v17; break; default: break; } sprintf(&v107, "ERROR - CPFsCharacter::fc_NC_GUILD_DB_MAKE_REQ, Error=%d nRet=%d", (unsigned __int16)v17, v80, v32); sub_446350(1, "Msg", "%s", &v107); } v31 = *(_DWORD *)(v33 + 4); v92 = 47; v93 = 29785; return sub_43BFE0(v31, (int)&v92, 0x30u); } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (004373C0) -------------------------------------------------------- signed int __thiscall sub_4373C0(void *this, int a2) { void *v2; // edi@1 int v3; // ecx@5 int Time; // [sp+8h] [bp-B4h]@1 int v6; // [sp+Ch] [bp-B0h]@2 char v7; // [sp+10h] [bp-ACh]@3 __int16 v8; // [sp+14h] [bp-A8h]@2 int v9; // [sp+16h] [bp-A6h]@2 int v10; // [sp+1Ah] [bp-A2h]@2 int v11; // [sp+24h] [bp-98h]@2 int v12; // [sp+28h] [bp-94h]@2 int v13; // [sp+34h] [bp-88h]@2 int v14; // [sp+38h] [bp-84h]@2 char v15; // [sp+44h] [bp-78h]@3 char v16; // [sp+6Ch] [bp-50h]@3 __int16 v17; // [sp+70h] [bp-4Ch]@3 int v18; // [sp+72h] [bp-4Ah]@3 int v19; // [sp+76h] [bp-46h]@3 char v20; // [sp+84h] [bp-38h]@1 __int16 v21; // [sp+85h] [bp-37h]@5 int v22; // [sp+87h] [bp-35h]@1 __int16 v23; // [sp+8Bh] [bp-31h]@2 char v24[4]; // [sp+8Dh] [bp-2Fh]@3 int v25; // [sp+91h] [bp-2Bh]@3 int v26; // [sp+95h] [bp-27h]@3 int v27; // [sp+99h] [bp-23h]@3 int v28; // [sp+9Dh] [bp-1Fh]@3 int v29; // [sp+A1h] [bp-1Bh]@3 char v30; // [sp+A5h] [bp-17h]@3 char v31; // [sp+A6h] [bp-16h]@3 int v32; // [sp+A7h] [bp-15h]@2 int v33; // [sp+ABh] [bp-11h]@2 int v34; // [sp+AFh] [bp-Dh]@2 int v35; // [sp+B3h] [bp-9h]@2 unsigned int v36; // [sp+B8h] [bp-4h]@1 int v37; // [sp+BCh] [bp+0h]@1 v36 = (unsigned int)&v37 ^ __security_cookie; v2 = this; memset(&v20, 0, 0x33u); v22 = a2; Time = a2; if ( sub_456160(*(_DWORD *)v2 + 4684, (__time32_t)&Time) ) { v23 = 5952; v33 = v33 & 0xFC000000 | 2 * (v8 & 0x7FF | ((v9 & 0xF | 16 * (BYTE2(v9) & 0x1F | 32 * (v10 & 0x1F))) << 11)); v34 = v34 & 0xFC000000 | 2 * (v11 & 0x7FF | ((BYTE2(v11) & 0xF | 16 * (v12 & 0x1F | 32 * (BYTE2(v12) & 0x1F))) << 11)); v32 = v6; v35 = v35 & 0xFC000000 | 2 * (v13 & 0x7FF | ((BYTE2(v13) & 0xF | 16 * (v14 & 0x1F | 32 * (BYTE2(v14) & 0x1F))) << 11)); if ( v6 != -1 ) { v29 = v29 & 0xFC000000 | 2 * (v17 & 0x7FF | ((v18 & 0xF | 16 * (BYTE2(v18) & 0x1F | 32 * (v19 & 0x1F))) << 11)); v28 = 0; v27 = 0; v26 = 0; v25 = 0; *(_DWORD *)v24 = 0; strncpy(v24, &v15, 0x14u); v30 = v16; v31 = v7; } } else { v23 = 5958; } v3 = *((_DWORD *)v2 + 1); v20 = 50; v21 = -27609; return sub_43BFE0(v3, (int)&v20, 0x33u); } // 4DE38C: using guessed type int __security_cookie; //----- (004375A0) -------------------------------------------------------- signed int __thiscall sub_4375A0(int this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@1 v3 = (void *)this; result = sub_43B000(this, a2); if ( result ) result = sub_4373C0(v3, *(_DWORD *)(a2 + 2)); return result; } //----- (004375D0) -------------------------------------------------------- signed int __thiscall sub_4375D0(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int v5; // edx@2 int v6; // eax@2 int v7; // ecx@2 int v8; // edx@2 int v9; // eax@2 int v10; // ecx@2 int v11; // esi@2 signed __int16 v12; // cx@15 int v13; // ecx@27 int rgbValue; // [sp+8h] [bp-80h]@2 int v15; // [sp+Ch] [bp-7Ch]@2 int v16; // [sp+10h] [bp-78h]@2 int v17; // [sp+14h] [bp-74h]@2 int v18; // [sp+18h] [bp-70h]@2 int v19; // [sp+1Ch] [bp-6Ch]@2 char v20; // [sp+20h] [bp-68h]@2 int v21; // [sp+34h] [bp-54h]@2 char v22; // [sp+38h] [bp-50h]@27 __int16 v23; // [sp+39h] [bp-4Fh]@27 __int16 v24; // [sp+3Bh] [bp-4Dh]@2 __int16 v25; // [sp+3Dh] [bp-4Bh]@2 char v26[4]; // [sp+3Fh] [bp-49h]@2 int v27; // [sp+43h] [bp-45h]@2 int v28; // [sp+47h] [bp-41h]@2 int v29; // [sp+4Bh] [bp-3Dh]@2 int v30; // [sp+4Fh] [bp-39h]@2 unsigned __int8 TargetValue; // [sp+53h] [bp-35h]@3 char v32; // [sp+54h] [bp-34h]@3 char v33; // [sp+55h] [bp-33h]@3 char v34; // [sp+5Ch] [bp-2Ch]@3 unsigned int v35; // [sp+84h] [bp-4h]@1 int v36; // [sp+88h] [bp+0h]@1 v35 = (unsigned int)&v36 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { v5 = *(_DWORD *)(a2 + 4); v25 = *(_WORD *)(a2 + 2); v15 = *(_DWORD *)(a2 + 8); v6 = *(_DWORD *)(a2 + 20); v24 = 7168; v7 = *(_DWORD *)(a2 + 12); rgbValue = v5; v8 = *(_DWORD *)(a2 + 16); v18 = v6; v9 = *(_DWORD *)v3; v16 = v7; v10 = *(_DWORD *)(a2 + 24); v17 = v8; v19 = v10; v30 = 0; v29 = 0; v28 = 0; v27 = 0; *(_DWORD *)v26 = 0; v20 = 0; v21 = 0; v11 = sub_45A410(v9 + 4684, &rgbValue); if ( v11 ) { sub_44E4A0(*(_DWORD *)v3 + 4684); sub_44E570(*(_DWORD *)v3 + 4684, &v33); sub_44E600(*(_DWORD *)v3 + 4684, &v34); sub_44E510(*(_DWORD *)v3 + 4684, &TargetValue); sub_44E510(*(_DWORD *)v3 + 4684, &v32); if ( v32 == 1 ) sub_441490((unsigned __int8 *)&v34, (const unsigned __int8 *)&v34); v30 = 0; v29 = 0; v28 = 0; v27 = 0; *(_DWORD *)v26 = 0; strncpy(v26, &v34, 0x14u); if ( TargetValue > 0u ) TargetValue = 1; sub_44E4D0(*(_DWORD *)v3 + 4684); } if ( v21 > -2321 ) { if ( v21 == -2312 ) { v12 = 7174; } else { if ( v21 == -2311 ) { v24 = 7173; goto LABEL_27; } if ( v21 ) goto LABEL_20; if ( !v11 ) { v24 = 7178; goto LABEL_27; } v12 = 7168; } } else { if ( v21 == -2321 ) { v24 = 7175; goto LABEL_27; } if ( v21 != -2392 ) { if ( v21 == -2323 ) { v24 = 7177; goto LABEL_27; } if ( v21 == -2322 ) { v24 = 7176; LABEL_27: v13 = *(_DWORD *)(v3 + 4); v22 = 32; v23 = -22523; return sub_43BFE0(v13, (int)&v22, 0x21u); } LABEL_20: v24 = 7178; goto LABEL_27; } v12 = 7178; } v24 = v12; goto LABEL_27; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004377D0) -------------------------------------------------------- signed int __thiscall sub_4377D0(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@2 int v5; // ebx@2 int v6; // ST20_4@2 int v7; // ecx@2 signed __int16 v8; // ax@3 void *v9; // ecx@7 int v11; // eax@10 int v12; // eax@10 int v13; // eax@10 int v14; // eax@14 int v15; // eax@18 int v16; // edx@18 signed __int16 v17; // dx@19 int v18; // eax@23 int v19; // eax@23 int v20; // edx@23 int v21; // eax@23 int v22; // ecx@23 int v23; // eax@23 int v24; // ecx@23 int v25; // eax@25 signed __int16 v26; // cx@26 int v27; // ecx@31 int v28; // eax@38 int v29; // eax@38 int v30; // eax@42 char v31; // ST18_1@46 int v32; // ecx@46 int v33; // eax@46 signed int v34; // eax@52 int v35; // eax@59 int v36; // eax@59 int v37; // eax@60 __int16 *v38; // edx@62 int v39; // eax@67 int v40; // eax@67 void *v41; // ecx@68 __int16 v42; // dx@68 int v43; // eax@68 int v44; // edx@71 __int16 v45; // ax@71 int *v46; // ebx@72 int v47; // eax@73 int *v48; // eax@73 char v49; // cl@75 int v50; // ST24_4@88 int v51; // ecx@88 char v52; // ST24_1@98 int v53; // ecx@98 int v54; // ecx@102 int v55; // eax@102 int v56; // eax@102 signed int v57; // eax@104 unsigned __int16 v58; // dx@105 int v59; // eax@105 int v60; // eax@105 int v61; // ecx@108 char v62; // al@111 int v63; // ecx@111 int v64; // ebx@111 signed int v65; // eax@111 int v66; // ecx@111 int v67; // ebx@111 signed int v68; // eax@111 int v69; // ecx@111 signed int v70; // eax@111 int v71; // ecx@112 int v72; // eax@113 int v73; // ebx@114 signed int v74; // eax@115 int v75; // ebx@117 int v76; // eax@119 signed int v77; // eax@119 signed int v78; // eax@121 signed int v79; // eax@123 signed int v80; // eax@125 int v81; // ecx@127 signed int v82; // eax@127 unsigned int v83; // ST24_4@128 int v84; // ecx@128 char v85; // ST24_1@132 int v86; // ecx@132 int v87; // eax@136 int v88; // ecx@140 int v89; // ST24_4@144 int v90; // eax@152 int v91; // edx@152 int v92; // ST24_4@152 unsigned __int16 v93; // cx@157 int v94; // eax@157 int v95; // eax@162 int v96; // eax@162 int v97; // eax@166 int v98; // ecx@170 unsigned __int16 v99; // cx@173 unsigned __int16 v100; // cx@175 int v101; // eax@175 int v102; // ecx@176 char *v103; // ebx@177 int v104; // ecx@178 int v105; // eax@178 int v106; // ecx@178 unsigned __int16 v107; // dx@181 int v108; // ST24_4@181 __int16 v109; // bx@182 int v110; // ecx@182 void *v111; // ebx@183 int v112; // ecx@184 unsigned __int16 v113; // cx@188 int v114; // eax@188 int v115; // ebx@189 int v116; // ecx@191 signed int v117; // eax@194 int v118; // ecx@200 signed int v119; // esi@208 const char *v120; // [sp-18h] [bp-19C5Ch]@32 const char *v121; // [sp-18h] [bp-19C5Ch]@145 _UNKNOWN *v122; // [sp-14h] [bp-19C58h]@5 const void *v123; // [sp-14h] [bp-19C58h]@20 int v124; // [sp-14h] [bp-19C58h]@22 const void *v125; // [sp-14h] [bp-19C58h]@27 int v126; // [sp-14h] [bp-19C58h]@32 int v127; // [sp-14h] [bp-19C58h]@145 int v128; // [sp-14h] [bp-19C58h]@194 const void *v129; // [sp-14h] [bp-19C58h]@197 unsigned int v130; // [sp-10h] [bp-19C54h]@1 int v131; // [sp+0h] [bp-19C44h]@111 char v132; // [sp+4h] [bp-19C40h]@200 __int16 v133; // [sp+5h] [bp-19C3Fh]@200 unsigned __int16 v134; // [sp+7h] [bp-19C3Dh]@200 char v135; // [sp+Fh] [bp-19C35h]@31 int TargetValue; // [sp+10h] [bp-19C34h]@49 int v137; // [sp+14h] [bp-19C30h]@46 void *v138; // [sp+18h] [bp-19C2Ch]@46 int v139; // [sp+1Ch] [bp-19C28h]@10 int v140; // [sp+20h] [bp-19C24h]@10 void *v141; // [sp+24h] [bp-19C20h]@49 char v142; // [sp+28h] [bp-19C1Ch]@2 unsigned __int16 v143; // [sp+2Dh] [bp-19C17h]@2 int v144; // [sp+2Fh] [bp-19C15h]@2 char v145[4]; // [sp+33h] [bp-19C11h]@10 int v146; // [sp+37h] [bp-19C0Dh]@23 int v147; // [sp+3Bh] [bp-19C09h]@23 int v148; // [sp+3Fh] [bp-19C05h]@23 int v149; // [sp+43h] [bp-19C01h]@23 int v150; // [sp+47h] [bp-19BFDh]@23 unsigned __int16 v151; // [sp+434h] [bp-19810h]@130 int v152; // [sp+202Ch] [bp-17C18h]@18 int v153; // [sp+2030h] [bp-17C14h]@23 char v154; // [sp+2034h] [bp-17C10h]@23 int v155; // [sp+203Ch] [bp-17C08h]@178 int rgbValue; // [sp+2040h] [bp-17C04h]@59 int v157; // [sp+2044h] [bp-17C00h]@23 int v158; // [sp+2048h] [bp-17BFCh]@23 int v159; // [sp+204Ch] [bp-17BF8h]@178 int v160; // [sp+2050h] [bp-17BF4h]@23 int v161; // [sp+2054h] [bp-17BF0h]@23 int v162; // [sp+2058h] [bp-17BECh]@23 int v163; // [sp+205Ch] [bp-17BE8h]@59 int v164; // [sp+2060h] [bp-17BE4h]@170 int v165; // [sp+2068h] [bp-17BDCh]@170 int v166; // [sp+206Ch] [bp-17BD8h]@170 int v167; // [sp+2070h] [bp-17BD4h]@10 int v168; // [sp+2074h] [bp-17BD0h]@10 int v169; // [sp+2078h] [bp-17BCCh]@46 __int16 v170; // [sp+207Ch] [bp-17BC8h]@62 int v171; // [sp+207Eh] [bp-17BC6h]@68 char v172; // [sp+2082h] [bp-17BC2h]@68 char v173; // [sp+2083h] [bp-17BC1h]@68 int v174[11997]; // [sp+2084h] [bp-17BC0h]@68 int v175; // [sp+DBF8h] [bp-C04Ch]@111 char v176; // [sp+11C1Ch] [bp-8028h]@112 char v177; // [sp+11C1Dh] [bp-8027h]@112 char v178; // [sp+11C1Eh] [bp-8026h]@112 char v179[16417]; // [sp+11C1Fh] [bp-8025h]@112 unsigned __int16 v180; // [sp+15C40h] [bp-4004h]@136 int v181; // [sp+15C42h] [bp-4002h]@136 int v182; // [sp+15DD8h] [bp-3E6Ch]@111 int v183; // [sp+16D74h] [bp-2ED0h]@111 _WORD v184[1002]; // [sp+17300h] [bp-2944h]@46 unsigned __int16 v185; // [sp+17AD4h] [bp-2170h]@71 int v186; // [sp+17AD6h] [bp-216Eh]@71 unsigned __int16 v187; // [sp+17ADAh] [bp-216Ah]@71 char v188; // [sp+17ADCh] [bp-2168h]@85 __int16 v189; // [sp+17ADDh] [bp-2167h]@71 int v190[754]; // [sp+17ADFh] [bp-2165h]@73 unsigned __int16 v191; // [sp+186A8h] [bp-159Ch]@98 int v192; // [sp+186AAh] [bp-159Ah]@98 int v193; // [sp+1877Ch] [bp-14C8h]@111 char v194; // [sp+19A34h] [bp-210h]@199 char v195; // [sp+19B34h] [bp-110h]@3 unsigned int v196; // [sp+19C34h] [bp-10h]@1 int v197; // [sp+19C40h] [bp-4h]@2 int v198; // [sp+19C44h] [bp+0h]@1 v196 = (unsigned int)&v198 ^ __security_cookie; v130 = (unsigned int)&v198 ^ __security_cookie; v3 = this; if ( !sub_43B000(this, a2) ) return 0; v4 = a2 + 2; sub_44E180((int)&v142); v5 = 0; v197 = 0; sub_44E310((int)&v142, 0x1007u, 0x6Bu, 0); v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)v3 + 4684; v143 = *(_WORD *)(a2 + 2); if ( !sub_46C910(v7, v6, (int)&v144, 0) ) { sprintf(&v195, "ERROR - ij¸¯ÀÇ ±âº»µ¥ÀÌÅÍ DB¿¡¼­ ¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v8 = 1410; LABEL_204: v129 = (const void *)v5; HIWORD(v144) = v8; LABEL_205: sub_44E310((int)&v142, 0x1006u, 6u, v129); LABEL_206: v124 = (int)&v142; goto LABEL_207; } if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B8238; LABEL_6: sub_446350(1, "Msg", "%s", v122); goto LABEL_7; } v11 = *(_DWORD *)(a2 + 4); *(_DWORD *)v145 = 0; v144 = v11; v139 = v11; v167 = v11; v12 = *(_DWORD *)v3; v143 = 1; v140 = 0; v168 = 0; LOBYTE(v13) = sub_45F120(v12 + 4684, &v139); if ( v13 ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) == 1 ) { sub_44E540(*(_DWORD *)v3 + 4684, &v145[2]); sub_44E4D0(*(_DWORD *)v3 + 4684); } } else { sprintf(&v195, "ERROR - ij¸¯ÀÇ DiffFriendPoint ¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); } LOBYTE(v14) = sub_45EEE0(*(_DWORD *)v3 + 4684, &v167); if ( v14 ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) == 1 ) { sub_44E540(*(_DWORD *)v3 + 4684, v145); sub_44E4D0(*(_DWORD *)v3 + 4684); } } else { sprintf(&v195, "ERROR - ij¸¯ÀÇ FriendPoint ¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); } sub_44E310((int)&v142, 0x541Cu, 8 * v143 + 2, 0); sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142); sub_44E310((int)&v142, 0x101Au, 0x1Eu, 0); v15 = *(_DWORD *)v3; v16 = *(_DWORD *)(a2 + 4); v143 = *(_WORD *)v4; v152 = v16; if ( !sub_458A10(v15 + 4684, &v152) ) { sprintf(&v195, "ERROR - ij¸¯ÀÇ KQMap DB¿¡¼­ ¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v17 = 1428; LABEL_20: v123 = (const void *)v5; LABEL_21: HIWORD(v144) = v17; LABEL_22: sub_44E310((int)&v142, 0x1006u, 6u, v123); v124 = (int)&v142; goto LABEL_207; } v144 = v153; v147 = 0; v146 = 0; *(_DWORD *)v145 = 0; strncpy(v145, &v154, 0xCu); v148 = v157; v149 = v158; v18 = (unsigned __int8)(((v150 ^ (unsigned __int8)v160) & 0xF ^ (unsigned __int8)v150 ^ (unsigned __int8)(16 * BYTE2(v160))) & 0xF0) ^ ((unsigned __int8)v150 ^ (unsigned __int8)v160) & 0xF ^ v150; v19 = ((unsigned __int16)v18 ^ (unsigned __int16)((_WORD)v161 << 8)) & 0x1F00 ^ v18; v20 = v19 ^ (HIWORD(v161) << 13); v21 = v20 & 0x3E000 ^ v19; v22 = v21 ^ ((unsigned __int16)v162 << 18); v23 = v22 & 0xFC0000 ^ v21; v24 = *(_DWORD *)(v3 + 4); v150 = (v23 ^ (HIWORD(v162) << 24)) & 0x3F000000 ^ v23; if ( !sub_43BFB0(v24, (int)&v142) ) { sub_446350(1, "Msg", "%s", &unk_4B8100); v197 = -1; nullsub_1(&v142); return 0; } sub_44E310((int)&v142, 0x1008u, 6u, 0); v25 = *(_DWORD *)(a2 + 4); v143 = *(_WORD *)v4; if ( !sub_46AC00(*(_DWORD *)v3 + 4684, v25, (int)&v144) ) { sprintf(&v195, "ERROR - ij¸¯ÀÇ ¿Ü¸", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v26 = 1411; LABEL_27: v125 = (const void *)v5; LABEL_28: HIWORD(v144) = v26; sub_44E310((int)&v142, 0x1006u, 6u, v125); v124 = (int)&v142; goto LABEL_207; } if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { sub_446350(1, "Msg", "%s", &unk_4B8060); v197 = -1; nullsub_1(&v142); return 0; } v143 = *(_WORD *)v4; v27 = *(_DWORD *)v3; v135 = ((unsigned __int8)v144 >> 2) & 0x1F; if ( !sub_46B130(v27 + 4684, *(_DWORD *)(a2 + 4), (int)&v144) ) { v126 = *(_DWORD *)(a2 + 4); v120 = "ERROR - ij¸¯ÀÇ Á"; LABEL_33: sprintf(&v195, v120, v126, v130); sub_446350(1, "Msg", "%s", &v195); v26 = 1415; goto LABEL_27; } sub_44E310((int)&v142, 0x100Au, 32 * (unsigned __int8)v145[1] + 8, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { sub_446350(1, "Msg", "%s", &unk_4B7FC0); v197 = -1; nullsub_1(&v142); return 0; } if ( !sub_4287B0((void *)v3, *(_WORD *)(a2 + 2), *(_DWORD *)(a2 + 4)) ) { sub_446350(1, "Msg", "%s", &unk_4B7F78, v130); sub_446350(1, "Msg", "%s", &v195); goto LABEL_7; } v28 = *(_DWORD *)(a2 + 4); v143 = *(_WORD *)v4; LOBYTE(v29) = sub_46B480(*(_DWORD *)v3 + 4684, v28, (int)&v144); if ( !v29 ) { v126 = *(_DWORD *)(a2 + 4); v120 = "ERROR - ij¸¯ÀÇ ¿Ï·á Ä"; goto LABEL_33; } sub_44E310((int)&v142, 0x10CCu, 2 * *(unsigned __int16 *)v145 + 8, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B7F78; goto LABEL_6; } v30 = *(_DWORD *)(a2 + 4); v143 = *(_WORD *)v4; if ( !sub_46B500(*(_DWORD *)v3 + 4684, v30, (int)&v144) ) { v126 = *(_DWORD *)(a2 + 4); v120 = (const char *)&unk_4B7F20; goto LABEL_33; } sub_44E310((int)&v142, 0x10D5u, 32 * *(unsigned __int16 *)v145 + 8, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B7ED8; goto LABEL_6; } v31 = *(_DWORD *)(a2 + 4); v32 = *(_DWORD *)v3 + 4684; v138 = 0; v137 = 0; LOBYTE(v33) = sub_46AF30(v32, v31, (int)&v138, (int)&v169, (int)&v137, (int)v184); if ( !v33 ) { sprintf(&v195, "ERROR - ij¸¯ÀÇ ½ºÅ³ DB¿¡¼­ ¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); LABEL_48: sub_44E310((int)&v142, 0x1006u, 6u, (const void *)v5); v143 = *(_WORD *)v4; HIWORD(v144) = 1414; v124 = (int)&v142; LABEL_207: v82 = sub_43BFB0(*(_DWORD *)(v3 + 4), v124); goto LABEL_208; } TargetValue = sub_43D750(&unk_6E92D8); v141 = 0; if ( TargetValue > 0 ) { while ( 1 ) { if ( sub_43D640((int)&unk_6E92D8, (int)&v139, (int)v141) && v139 == v135 ) { v34 = 0; if ( v140 < 30000 ) { if ( (signed int)(unsigned __int16)v138 > 0 ) { v38 = &v170; do { if ( *v38 == v140 ) break; ++v34; v38 += 8; } while ( v34 < (unsigned __int16)v138 ); } v5 = 0; if ( v34 >= (unsigned __int16)v138 ) { if ( (unsigned __int16)v138 >= 0xBB8u ) { sub_446350(1, "Msg", "%s", &unk_4B7DC0, v130); sprintf(&v195, "ERROR - ij¸¯ÀÇ ½ºÅ³ DB¿¡¼­ ¾", *(_DWORD *)(a2 + 4)); sub_446350(1, "Msg", "%s", &v195); goto LABEL_78; } rgbValue = *(_DWORD *)(a2 + 4); v39 = *(_DWORD *)v3 + 4684; LOWORD(v157) = v140; BYTE2(v157) = 1; v158 = 0; v160 = 0; v161 = 0; v162 = 0; v163 = 0; LOBYTE(v40) = sub_451580(v39, &rgbValue); if ( !v40 ) { sprintf(&v195, "ERROR - ½ºÅ³ »", v139, v140, *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); sub_44E310((int)&v142, 0x1006u, 6u, 0); v143 = *(_WORD *)v4; HIWORD(v144) = 1414; v124 = (int)&v142; goto LABEL_207; } v41 = v138; v42 = v140; v43 = 2 * (unsigned __int16)v138; *(&v169 + 4 * (unsigned __int16)v138) = 0; *(&v170 + 4 * v43) = v42; v174[2 * v43] = 0; *(&v171 + 2 * v43) = 0; *(&v172 + 8 * v43) = 0; *(&v173 + 8 * v43) = 0; v138 = (char *)v41 + 1; } } else { v5 = 0; if ( (signed int)(unsigned __int16)v137 > 0 ) { do { if ( v184[v34] == v140 - 30000 ) break; ++v34; } while ( v34 < (unsigned __int16)v137 ); v5 = 0; } if ( v34 >= (unsigned __int16)v137 ) { if ( (unsigned __int16)v137 >= 0x3E8u ) { sub_446350(1, "Msg", "%s", &unk_4B7E40, v130); sprintf(&v195, "ERROR - ij¸¯ÀÇ ½ºÅ³ DB¿¡¼­ ¾", *(_DWORD *)(a2 + 4)); sub_446350(1, "Msg", "%s", &v195); goto LABEL_48; } v35 = *(_DWORD *)v3; rgbValue = *(_DWORD *)(a2 + 4); LOWORD(v157) = v140; BYTE2(v157) = 1; v158 = v5; v160 = v5; v161 = v5; v162 = v5; v163 = 0; LOBYTE(v36) = sub_451580(v35 + 4684, &rgbValue); if ( !v36 ) { sprintf(&v195, "ERROR - ½ºÅ³ »", v139, v140, *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); LABEL_78: sub_44E310((int)&v142, 0x1006u, 6u, (const void *)v5); v143 = *(_WORD *)v4; HIWORD(v144) = 1414; goto LABEL_206; } v37 = v137 + 1; v184[(unsigned __int16)v137] = v140 - 30000; v137 = v37; } } } v141 = (char *)v141 + 1; if ( (signed int)v141 >= TargetValue ) { v5 = 0; break; } } } v44 = *(_DWORD *)(a2 + 4); v185 = *(_WORD *)v4; v186 = v44; LOBYTE(v187) = (v187 | 1) & 1; v45 = 0; *(unsigned __int16 *)((char *)&v187 + 1) = (unsigned __int16)v138; v189 = 0; v141 = (void *)v5; if ( (unsigned __int16)v138 > 0u ) { v46 = &v169; do { v47 = 2 * (unsigned __int16)v45; v190[2 * v47] = *v46; v48 = &v190[2 * v47]; v48[1] = v46[1]; v48[2] = v46[2]; v48[3] = v46[3]; v45 = v189 + 1; v189 = v45; if ( (unsigned __int16)v45 < 0x1F4u ) { v49 = v187; } else { sub_44E310((int)&v142, 0x100Du, 16 * (unsigned __int16)v45 + 11, &v185); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) goto LABEL_87; v49 = (v187 & 0xFC) + 4; v45 = 0; LOBYTE(v187) = (v187 & 0xFC) + 4; v189 = 0; } v141 = (char *)v141 + 1; v46 += 4; } while ( (signed int)v141 < (unsigned __int16)v138 ); if ( v45 ) { LOBYTE(v187) = v49 | 2; sub_44E310((int)&v142, 0x100Du, 16 * (unsigned __int16)v45 + 11, &v185); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { LABEL_87: v122 = &unk_4B7D30; goto LABEL_6; } } } HIWORD(v186) = *(_WORD *)v4; v187 = v137; memmove(&v188, v184, 2 * (unsigned __int16)v137); sub_44E310((int)&v142, 0x100Eu, 2 * v187 + 4, (char *)&v186 + 2); v5 = 0; if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B7D78; goto LABEL_6; } sub_44E310((int)&v142, 0x100Cu, 8u, 0); v50 = *(_DWORD *)(a2 + 4); v51 = *(_DWORD *)v3 + 4684; v143 = *(_WORD *)v4; if ( !sub_46AD10(v51, v50, (int)&v144) ) { sprintf(&v195, "ERROR - ij¸¯ÀÇ »", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v8 = 1413; goto LABEL_204; } sub_44E310((int)&v142, 0x100Cu, 36 * *(unsigned __int16 *)v145 + 8, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B7CA4; goto LABEL_6; } if ( !sub_4373C0((void *)v3, *(_DWORD *)(a2 + 4)) ) { sprintf(&v195, "FAILED - GetHolyPromiseUp, nCharNo=%d", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); } if ( !sub_41A4F0((void *)v3, *(_DWORD *)(a2 + 4)) ) { sprintf(&v195, "FAILED - GetHolyPromiseMember, nCharNo=%d", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); } if ( !sub_41B2C0((void *)v3, *(_DWORD *)(a2 + 4)) ) { sprintf(&v195, "FAILED - GetHolyPromiseRemainMoney, nCharNo=%d", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); } v52 = *(_DWORD *)(a2 + 4); v53 = *(_DWORD *)v3 + 4684; v191 = *(_WORD *)v4; if ( sub_46B640(v53, v52, (int)&v192) ) { if ( (unsigned __int16)v192 > 0u ) { sub_44E310((int)&v142, 0x1010u, 25 * (unsigned __int16)v192 + 4, &v191); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B7BE8; goto LABEL_6; } } } sub_44E310((int)&v142, 0x1012u, 6u, 0); v54 = *(_DWORD *)(a2 + 4); v143 = *(_WORD *)v4; v55 = *(_DWORD *)v3 + 4684; v144 = 0; v139 = v54; LOBYTE(v56) = sub_453050(v55, &v139); if ( v56 ) v144 = v140; v57 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142); v9 = &v142; if ( !v57 ) goto LABEL_8; sub_44E310((int)&v142, 0x1097u, 7u, 0); v58 = *(_WORD *)v4; v139 = *(_DWORD *)(a2 + 4); v59 = *(_DWORD *)v3 + 4684; v143 = v58; v144 = 0; LOBYTE(v60) = sub_4542B0(v59, &v139); if ( v60 ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { do { sub_44E4E0(*(_DWORD *)v3 + 4684, &TargetValue); v61 = *(_DWORD *)v3 + 4684; v144 = TargetValue; } while ( sub_44E4A0(v61) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); } else { sprintf(&v195, "ERROR - CPFsCharacter::fc_NC_CHAR_CHARDATA_REQ, CharNo=%d", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); } if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { LABEL_7: v9 = &v142; LABEL_8: v197 = -1; nullsub_1(v9); return 0; } v62 = sub_402F80((void *)v3, *(_DWORD *)(a2 + 4), (int)&v175, (int)&v140); v63 = *(_DWORD *)(a2 + 4); LOBYTE(v175) = v175 & 0x80 | 0x80; v64 = v62 & 1; BYTE1(v175) = 5; v65 = sub_403000((void *)v3, v63, (int)&v183, (int)&v131); v66 = *(_DWORD *)(a2 + 4); v67 = v65 & v64; LOBYTE(v183) = v183 & 0x80 | 0x80; BYTE1(v183) = 8; v68 = sub_403480((void *)v3, v66, (int)&v182, (int)&v168); v69 = *(_DWORD *)(a2 + 4); TargetValue = v68; LOBYTE(v182) = v182 & 0x80 | 0x80; BYTE1(v182) = 16; v70 = sub_403700((void *)v3, v69, (int)&v193, (int)&v140); BYTE1(v193) = 34; LOBYTE(v193) = v193 & 0x80 | 0x80; if ( !(TargetValue & v70 & v67) ) goto LABEL_127; v5 = 0; v177 = BYTE1(v175); v176 = 0; v178 = 0; v71 = 3; v137 = 3; v138 = (char *)&v175 + 3; v141 = v179; TargetValue = 0; if ( BYTE2(v175) ) { do { v72 = *(_BYTE *)v138; if ( v72 + v71 >= 7187 ) { v74 = sub_405640((void *)v3, a2 + 2, &v176, v71, *(_DWORD *)(a2 + 4)); if ( v74 == v5 ) goto LABEL_7; if ( v74 == 2 ) goto LABEL_127; v178 = 0; v176 ^= (v176 ^ (v176 + 1)) & 0x7F; v75 = *(_BYTE *)v138 + 1; memmove(v179, v138, *(_BYTE *)v138 + 1); v138 = (char *)v138 + v75; v137 = v75 + 3; v141 = &v179[v75]; v178 = 1; } else { v73 = v72 + 1; memmove(v141, v138, v72 + 1); v137 += v73; v141 = (char *)v141 + v73; v138 = (char *)v138 + v73; ++v178; } v71 = v137; v5 = 0; ++TargetValue; } while ( TargetValue < BYTE2(v175) ); } v76 = *(_DWORD *)(a2 + 4); v176 |= 0x80u; v77 = sub_405640((void *)v3, v4, &v176, v71, v76); if ( v77 == v5 ) goto LABEL_7; if ( v77 == 2 ) goto LABEL_127; v78 = sub_405640((void *)v3, a2 + 2, &v183, v131, *(_DWORD *)(a2 + 4)); if ( v78 == v5 ) goto LABEL_7; if ( v78 == 2 ) goto LABEL_127; v79 = sub_405640((void *)v3, a2 + 2, &v182, v168, *(_DWORD *)(a2 + 4)); if ( v79 == v5 ) goto LABEL_7; if ( v79 == 2 ) goto LABEL_127; v80 = sub_405640((void *)v3, a2 + 2, &v193, v140, *(_DWORD *)(a2 + 4)); if ( v80 == v5 ) goto LABEL_7; if ( v80 == 2 ) { LABEL_127: *(_WORD *)((char *)&v139 + 3) = *(_WORD *)v4; *(_WORD *)((char *)&v139 + 1) = 4102; v81 = *(_DWORD *)(v3 + 4); *(_WORD *)((char *)&v140 + 1) = 1425; LOBYTE(v139) = 6; v82 = sub_43BFE0(v81, (int)&v139, 7u); goto LABEL_208; } v83 = *(_DWORD *)(a2 + 4); v84 = *(_DWORD *)v3 + 4684; v143 = *(_WORD *)v4; if ( !sub_46B8F0(v84, v83, (int)&v144) ) { sprintf(&v195, "ERROR - DB¿¡¼­ ij¸¯Å¸ÀÌÆ² Á¤º¸¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v8 = 1427; goto LABEL_204; } sub_44E310((int)&v142, 0x1019u, 2 * v151 + 1033, (const void *)v5); if ( sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) == v5 ) { v122 = &unk_4B7B20; goto LABEL_6; } v85 = *(_DWORD *)(a2 + 4); v86 = *(_DWORD *)v3 + 4684; v143 = *(_WORD *)v4; if ( !sub_46BCB0(v86, v85, (int)&v144) ) { sprintf(&v195, "ERROR - DB¿¡¼­ À¯·á¹", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v8 = 1429; goto LABEL_204; } sub_44E310((int)&v142, 0x101Bu, 14 * (unsigned __int16)v144 + 4, (const void *)v5); if ( sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) == v5 ) { v122 = &unk_4B7A94; goto LABEL_6; } v87 = *(_DWORD *)(a2 + 8); v180 = *(_WORD *)v4; if ( sub_46C120(*(_DWORD *)v3 + 4684, v87, (int)&v181) ) { if ( (unsigned __int16)v181 > (unsigned __int16)v5 ) { sub_44E310((int)&v142, 0xA801u, 26 * (unsigned __int16)v181 + 4, &v180); if ( sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) == v5 ) { v122 = &unk_4B7A50; goto LABEL_6; } } } v88 = *(_DWORD *)v3; v143 = *(_WORD *)v4; v144 = *(_DWORD *)(a2 + 4); if ( !sub_46C230(v88 + 4684, v144, (int)&v144) ) { sprintf( &v195, "ERROR - DB¿¡¼­ ij¸¯ÅÍ½Ì±Û¿É¼Ç ½ÇÆÐ - fc_NC_CHAR_CHARDATA_REQ, nCharNo=%d", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v17 = 1431; goto LABEL_20; } sub_44E310((int)&v142, 0x10D2u, 0x11u, (const void *)v5); if ( sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) == v5 ) { v122 = &unk_4B79CC; goto LABEL_6; } v89 = *(_DWORD *)(a2 + 4); TargetValue = v5; if ( !sub_422180((void *)v3, v89, (int)&TargetValue) ) { v127 = *(_DWORD *)(a2 + 4); v121 = "FAILED - GetCharOptionImprove_Data, nCharNo=%d"; LABEL_146: sprintf(&v195, v121, v127, v130); sub_446350(1, "Msg", "%s", &v195); v26 = 1435; goto LABEL_27; } if ( TargetValue == 1 ) { if ( !sub_433EF0((void *)v3, *(_DWORD *)(a2 + 4)) ) { v127 = *(_DWORD *)(a2 + 4); v121 = "FAILED - SendCharOption_Improve_Data, nCharNo=%d"; goto LABEL_146; } } else { if ( !sub_421F60((void *)v3, *(_DWORD *)(a2 + 4), *(_WORD *)(a2 + 2)) ) { sprintf(&v195, "FAILED - SendCharOption_Binary_Data, nCharNo=%d", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v17 = 1435; goto LABEL_20; } } sub_44E310((int)&v142, 0x844u, 0xDu, (const void *)v5); v90 = *(_DWORD *)(a2 + 8); v91 = *(_DWORD *)(a2 + 4); v143 = *(_WORD *)v4; v144 = v90; v139 = v90; v92 = *(_DWORD *)v3 + 4684; *(_DWORD *)v145 = v91; v140 = v5; if ( sub_45C9E0(v92, &v139) ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { sub_44E570(*(_DWORD *)v3 + 4684, &v144); sub_44E510(*(_DWORD *)v3 + 4684, &v146); sub_44E510(*(_DWORD *)v3 + 4684, (char *)&v146 + 1); sub_44E510(*(_DWORD *)v3 + 4684, (char *)&v146 + 2); sub_44E4D0(*(_DWORD *)v3 + 4684); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B78E8; goto LABEL_6; } } } else { sprintf(&v195, "ERROR - ij¸¯ÅÍ ½ºÆÔ ÇÊÅ͸µ µ¥ÀÌÅÍ ¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); } sub_44E310((int)&v142, 0x10CAu, 0xEu, (const void *)v5); v93 = *(_WORD *)v4; v144 = *(_DWORD *)(a2 + 4); v139 = v144; v94 = *(_DWORD *)v3 + 4684; v143 = v93; v140 = v5; if ( sub_45CC60(v94, &v139) ) { if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { sub_44E570(*(_DWORD *)v3 + 4684, &v144); sub_44E570(*(_DWORD *)v3 + 4684, v145); sub_44E570(*(_DWORD *)v3 + 4684, &v146); sub_44E4D0(*(_DWORD *)v3 + 4684); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B7848; goto LABEL_6; } } } else { sprintf(&v195, "ERROR - ij¸¯ÅÍ ½ºÆÐ¸Ó µ¥ÀÌÅÍ ¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); } v95 = *(_DWORD *)(a2 + 4); v143 = *(_WORD *)v4; v96 = sub_46C370(*(_DWORD *)v3 + 4684, v95, (int)&v144); v125 = (const void *)v5; if ( !v96 ) { v26 = 1434; goto LABEL_28; } sub_44E310((int)&v142, 0x10CFu, 10 * (unsigned __int16)v144 + 4, (const void *)v5); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { sprintf(&v195, "ERROR - ij¸¯ÀÇ Ä", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); goto LABEL_7; } v97 = *(_DWORD *)(a2 + 4); v143 = *(_WORD *)v4; if ( !sub_46C4F0(*(_DWORD *)v3 + 4684, v97, (int)&v144) ) { v26 = 1436; goto LABEL_27; } sub_44E310((int)&v142, 0x10D8u, (unsigned __int8)v144 + 3, &v143); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B7758; goto LABEL_6; } v98 = *(_DWORD *)v3 + 4684; v164 = *(_DWORD *)(a2 + 4); v165 = v5; v166 = v5; v167 = v5; if ( !sub_46C5F0(v98, &v164) || (v157 = *(_DWORD *)(a2 + 4), v162 = v5, v163 = v5, sub_417FC0((__time32_t *)(a2 + 12), (int)&v158), !sub_46C650(*(_DWORD *)v3 + 4684, &v157)) ) { v17 = 1437; goto LABEL_20; } v99 = *(_WORD *)v4; v146 = v162; v143 = v99; *(_DWORD *)v145 = v166; v147 = v5; v144 = v165; sub_44E310((int)&v142, 0x10DCu, 0x12u, &v143); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = &unk_4B7718; goto LABEL_6; } v100 = *(_WORD *)v4; v144 = *(_DWORD *)(a2 + 4); v139 = v144; v101 = *(_DWORD *)v3 + 4684; v143 = v100; v140 = v5; if ( !sub_465210(v101, &v139) ) { sprintf(&v195, "ERROR - ij¸¯ÅÍ Ä«µåÄÝ·º¼Ç µ¥ÀÌÅÍ ¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v8 = 1438; goto LABEL_204; } v102 = *(_DWORD *)v3 + 4684; v141 = (void *)v5; if ( sub_44E4A0(v102) ) { v103 = (char *)&v146 + 2; do { v104 = *(_DWORD *)v3; v165 = 0; v166 = 0; v167 = 0; v168 = 0; sub_44E540(v104 + 4684, v103 + 4); sub_44E570(*(_DWORD *)v3 + 4684, v103); sub_44E510(*(_DWORD *)v3 + 4684, v103 + 6); sub_44E6B0(*(_DWORD *)v3 + 4684, &v165); v155 = HIWORD(v167); rgbValue = (unsigned __int16)v167; v157 = HIWORD(v166); v158 = (unsigned __int16)v166; v159 = HIWORD(v165) - 1; v160 = (signed __int16)v165 - 1900; v105 = _LN52(&v155); v106 = *(_DWORD *)v3; v141 = (char *)v141 + 1; *((_DWORD *)v103 - 1) = v105; v103 += 11; } while ( sub_44E4A0(v106 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); *(_WORD *)v145 = (_WORD)v141; sub_44E310((int)&v142, 0x10E2u, 11 * (unsigned __int16)v141 + 8, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = (_UNKNOWN *)"ERROR - fc_NC_CHAR_CHARDATA_REQ, CardCollect Data Send Fail"; goto LABEL_6; } v107 = *(_WORD *)v4; v144 = *(_DWORD *)(a2 + 4); v139 = v144; v108 = *(_DWORD *)v3 + 4684; v143 = v107; v140 = 0; if ( !sub_465310(v108, &v139) ) { sprintf(&v195, "ERROR - ij¸¯ÅÍ Ä«µåÄÝ·º¼Ç Á", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v26 = 1439; v125 = 0; goto LABEL_28; } v109 = 0; v110 = *(_DWORD *)v3 + 4684; v141 = 0; if ( sub_44E4A0(v110) ) { v111 = &v146; do { sub_44E540(*(_DWORD *)v3 + 4684, (char *)v111 - 2); sub_44E540(*(_DWORD *)v3 + 4684, v111); v112 = *(_DWORD *)v3; v141 = (char *)v141 + 1; v111 = (char *)v111 + 4; } while ( sub_44E4A0(v112 + 4684) ); v109 = (signed __int16)v141; } sub_44E4D0(*(_DWORD *)v3 + 4684); *(_WORD *)v145 = v109; sub_44E310((int)&v142, 0x10E5u, 4 * (unsigned __int16)v109 + 8, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = (_UNKNOWN *)"ERROR - fc_NC_CHAR_CHARDATA_REQ, CardCollect BookMark Data Send Fail"; goto LABEL_6; } v113 = *(_WORD *)v4; v144 = *(_DWORD *)(a2 + 4); v139 = v144; v114 = *(_DWORD *)v3 + 4684; v143 = v113; v140 = 0; if ( !sub_4657F0(v114, &v139) ) { sprintf(&v195, "ERROR - ij¸¯ÅÍ Ä«µåÄÝ·º¼Ç º¸»", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v17 = 1440; v123 = 0; goto LABEL_21; } v115 = 0; if ( sub_44E4A0(*(_DWORD *)v3 + 4684) ) { v141 = &v145[2]; do { sub_44E540(*(_DWORD *)v3 + 4684, v141); v116 = *(_DWORD *)v3; v141 = (char *)v141 + 2; ++v115; } while ( sub_44E4A0(v116 + 4684) ); } sub_44E4D0(*(_DWORD *)v3 + 4684); *(_WORD *)v145 = v115; sub_44E310((int)&v142, 0x10E8u, 2 * (unsigned __int16)v115 + 8, 0); if ( !sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v142) ) { v122 = (_UNKNOWN *)"ERROR - fc_NC_CHAR_CHARDATA_REQ, CardCollect Reward Data Send Fail"; goto LABEL_6; } v117 = sub_4297F0((void *)v3, *(_DWORD *)(a2 + 4)); v128 = *(_DWORD *)(a2 + 4); if ( !v117 ) { sprintf(&v195, "ERROR - ij¸¯ÅÍ Æ©Å丮¾", v128, v130); sub_446350(1, "Msg", "%s", &v195); v143 = *(_WORD *)v4; LOWORD(v144) = 12778; v123 = 0; goto LABEL_22; } if ( !sub_42C610((void *)v3, v128) ) { sprintf(&v195, "ERROR - ij¸¯ÅÍ Ã¤ÆÃ Ä÷¯ Á¤º¸ ¾", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v195); v143 = *(_WORD *)v4; LOWORD(v144) = 1442; v129 = 0; goto LABEL_205; } if ( !sub_42D280((void *)v3, v4) ) { sprintf(&v194, "ERROR - ij¸¯ÅÍ ¾ÆÀÌÅÛ ÀÚµ¿ »ç¿ë ¹Ì´Ï¸", *(_DWORD *)(a2 + 4), v130); sub_446350(1, "Msg", "%s", &v194); v143 = *(_WORD *)v4; LOWORD(v144) = 1443; v129 = 0; goto LABEL_205; } v118 = *(_DWORD *)(v3 + 4); v134 = *(_WORD *)v4; v132 = 4; v133 = 4101; v82 = sub_43BFE0(v118, (int)&v132, 5u); LABEL_208: v119 = v82; v197 = -1; nullsub_1(&v142); return v119; } // 43D750: using guessed type int __thiscall sub_43D750(_DWORD); // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; // 4377D0: using guessed type int var_17BC0[11997]; // 4377D0: using guessed type int var_2165[754]; // 4377D0: using guessed type char var_8025[16417]; //----- (004397D0) -------------------------------------------------------- signed int __thiscall sub_4397D0(int this, int a2, int a3) { signed int result; // eax@1 int v4; // ecx@2 int v5; // edx@2 int v6; // eax@2 int v7; // ecx@2 int v8; // edx@2 int v9; // edx@2 int v10; // eax@2 int v11; // ecx@2 int v12; // edx@2 int v13; // eax@2 int v14; // ecx@2 int v15; // edx@2 int v16; // eax@2 int v17; // ecx@2 int v18; // edx@2 int v19; // edx@2 int v20; // eax@2 int v21; // ecx@2 int v22; // edx@2 struct tm *v23; // eax@2 int v24; // edx@2 const void *v25; // esi@2 int v26; // ecx@2 int v27; // esi@2 int v28; // eax@2 int v29; // eax@2 int v30; // ecx@9 char v31; // [sp+4h] [bp-A0h]@2 int v32; // [sp+Ch] [bp-98h]@3 int v33; // [sp+10h] [bp-94h]@3 int v34; // [sp+14h] [bp-90h]@3 int v35; // [sp+18h] [bp-8Ch]@3 __time32_t Time; // [sp+28h] [bp-7Ch]@2 int v37; // [sp+2Ch] [bp-78h]@1 int rgbValue; // [sp+30h] [bp-74h]@2 int v39; // [sp+34h] [bp-70h]@2 char v40; // [sp+38h] [bp-6Ch]@2 unsigned __int16 v41; // [sp+40h] [bp-64h]@2 char v42; // [sp+44h] [bp-60h]@9 __int16 v43; // [sp+45h] [bp-5Fh]@9 int v44; // [sp+47h] [bp-5Dh]@2 int v45; // [sp+4Bh] [bp-59h]@2 int v46; // [sp+4Fh] [bp-55h]@2 int v47; // [sp+53h] [bp-51h]@2 int v48; // [sp+57h] [bp-4Dh]@2 int v49; // [sp+5Bh] [bp-49h]@2 char v50; // [sp+5Fh] [bp-45h]@2 char v51; // [sp+60h] [bp-44h]@2 int v52; // [sp+61h] [bp-43h]@2 int v53; // [sp+65h] [bp-3Fh]@2 int v54; // [sp+69h] [bp-3Bh]@2 int v55; // [sp+6Dh] [bp-37h]@2 int v56; // [sp+71h] [bp-33h]@2 int v57; // [sp+75h] [bp-2Fh]@2 int v58; // [sp+79h] [bp-2Bh]@2 int v59; // [sp+7Dh] [bp-27h]@2 int v60; // [sp+81h] [bp-23h]@2 int v61; // [sp+85h] [bp-1Fh]@2 char v62; // [sp+89h] [bp-1Bh]@2 char v63; // [sp+8Ah] [bp-1Ah]@2 int v64; // [sp+8Bh] [bp-19h]@2 int v65; // [sp+8Fh] [bp-15h]@2 int v66; // [sp+93h] [bp-11h]@2 int v67; // [sp+97h] [bp-Dh]@2 __int16 v68; // [sp+9Bh] [bp-9h]@3 unsigned int v69; // [sp+A0h] [bp-4h]@1 int v70; // [sp+A4h] [bp+0h]@1 v69 = (unsigned int)&v70 ^ __security_cookie; v37 = this; result = sub_43B000(this, a2); if ( result ) { v4 = *(_DWORD *)(a2 + 6); v5 = *(_DWORD *)(a2 + 10); v44 = *(_DWORD *)(a2 + 2); v6 = *(_DWORD *)(a2 + 14); v45 = v4; v7 = *(_DWORD *)(a2 + 18); v46 = v5; v8 = *(_DWORD *)(a2 + 22); v47 = v6; LOBYTE(v6) = *(_BYTE *)(a2 + 26); v48 = v7; LOBYTE(v7) = *(_BYTE *)(a2 + 27); v49 = v8; v9 = *(_DWORD *)(a2 + 28); v50 = v6; v10 = *(_DWORD *)(a2 + 32); v51 = v7; v11 = *(_DWORD *)(a2 + 36); v52 = v9; v12 = *(_DWORD *)(a2 + 40); v53 = v10; v13 = *(_DWORD *)(a2 + 44); v54 = v11; v14 = *(_DWORD *)(a2 + 48); v55 = v12; v15 = *(_DWORD *)(a2 + 52); v56 = v13; v16 = *(_DWORD *)(a2 + 56); v57 = v14; v17 = *(_DWORD *)(a2 + 60); v58 = v15; v18 = *(_DWORD *)(a2 + 64); v59 = v16; LOBYTE(v16) = *(_BYTE *)(a2 + 68); v60 = v17; LOBYTE(v17) = *(_BYTE *)(a2 + 69); v61 = v18; v19 = *(_DWORD *)(a2 + 70); v62 = v16; v20 = *(_DWORD *)(a2 + 74); v63 = v17; v21 = *(_DWORD *)(a2 + 78); v64 = v19; v22 = *(_DWORD *)(a2 + 82); v65 = v20; v66 = v21; v67 = v22; Time = _time32(0); v23 = _localtime32(&Time); v24 = *(_DWORD *)(a2 + 70); v25 = v23; LOBYTE(v23) = *(_BYTE *)(a2 + 69); memcpy(&v31, v25, 0x24u); v26 = *(_DWORD *)(a2 + 28); v27 = v37; v40 = (char)v23; v28 = *(_DWORD *)v37; v39 = v24; rgbValue = v26; v41 = 20; v29 = sub_455FC0(v28 + 4684, &rgbValue); switch ( v29 ) { case 0: v68 = 5952; v65 = v65 & 0xFC000001 | (unsigned __int16)((((_WORD)v34 + 1) << 12) & 0xF000) | (2 * v35 - 295) & 0xFFE | ((v33 & 0x1F | 32 * (v32 & 0x1F)) << 16); break; case 1: v68 = 5953; break; case 2: v68 = 5954; break; case 3: v68 = 5969; v65 = v65 & 0xFC000001 | (unsigned __int16)((((_WORD)v34 + 1) << 12) & 0xF000) | (2 * v35 - 295) & 0xFFE | ((v33 & 0x1F | 32 * (v32 & 0x1F)) << 16); break; case 4: v68 = 5961; break; default: v68 = 5955; sub_446310( "FAILED - fc_NC_HOLY_PROMISE_DB_SET_UP_REQ, ReqCharNo=%d, UpCharNo=%d, Max=%d, nRet=%d", rgbValue, v39, v41, v29); break; } v30 = *(_DWORD *)(v27 + 4); v42 = 88; v43 = -27617; result = sub_43BFE0(v30, (int)&v42, 0x59u); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00439A50) -------------------------------------------------------- int __thiscall sub_439A50(int this) { int v1; // edi@1 v1 = this; sub_43BCB0(this); *(_DWORD *)v1 = &off_4B8334; sub_42FBA0((void *)(v1 + 12), 5, 2, (int)sub_404AD0); sub_42FBA0((void *)(v1 + 12), 5, 8, (int)sub_404C70); sub_42FBA0((void *)(v1 + 12), 5, 17, (int)sub_434A40); sub_42FBA0((void *)(v1 + 12), 5, 19, (int)sub_405490); sub_42FBA0((void *)(v1 + 12), 5, 21, (int)sub_434B60); sub_42FBA0((void *)(v1 + 12), 3, 18, (int)sub_405050); sub_42FBA0((void *)(v1 + 12), 4, 4, (int)sub_4377D0); sub_42FBA0((void *)(v1 + 12), 4, 54, (int)sub_4057B0); sub_42FBA0((void *)(v1 + 12), 4, 55, (int)sub_405AD0); sub_42FBA0((void *)(v1 + 12), 16, 1, (int)sub_406460); sub_42FBA0((void *)(v1 + 12), 16, 3, (int)sub_4065B0); sub_42FBA0((void *)(v1 + 12), 16, 4, (int)sub_4065E0); sub_42FBA0((void *)(v1 + 12), 16, 13, (int)sub_4068E0); sub_42FBA0((void *)(v1 + 12), 16, 5, (int)sub_406610); sub_42FBA0((void *)(v1 + 12), 16, 9, (int)sub_406700); sub_42FBA0((void *)(v1 + 12), 16, 7, (int)sub_4067F0); sub_42FBA0((void *)(v1 + 12), 16, 11, (int)sub_406910); sub_42FBA0((void *)(v1 + 12), 16, 24, (int)sub_406940); sub_42FBA0((void *)(v1 + 12), 16, 26, (int)sub_4069E0); sub_42FBA0((void *)(v1 + 12), 16, 28, (int)sub_406A80); sub_42FBA0((void *)(v1 + 12), 16, 35, (int)sub_424080); sub_42FBA0((void *)(v1 + 12), 16, 39, (int)sub_424240); sub_42FBA0((void *)(v1 + 12), 17, 3, (int)sub_406CA0); sub_42FBA0((void *)(v1 + 12), 17, 5, (int)sub_406E50); sub_42FBA0((void *)(v1 + 12), 17, 9, (int)sub_406FF0); sub_42FBA0((void *)(v1 + 12), 17, 24, (int)sub_4071D0); sub_42FBA0((void *)(v1 + 12), 17, 26, (int)sub_42FF90); sub_42FBA0((void *)(v1 + 12), 13, 1, (int)sub_4073C0); sub_42FBA0((void *)(v1 + 12), 13, 103, (int)sub_408B40); sub_42FBA0((void *)(v1 + 12), 13, 4, (int)sub_408DC0); sub_42FBA0((void *)(v1 + 12), 13, 7, (int)sub_409020); sub_42FBA0((void *)(v1 + 12), 13, 10, (int)sub_4092A0); sub_42FBA0((void *)(v1 + 12), 13, 13, (int)sub_409660); sub_42FBA0((void *)(v1 + 12), 13, 34, (int)sub_4099B0); sub_42FBA0((void *)(v1 + 12), 13, 37, (int)sub_409E50); sub_42FBA0((void *)(v1 + 12), 13, 16, (int)sub_40A880); sub_42FBA0((void *)(v1 + 12), 13, 19, (int)sub_40AF40); sub_42FBA0((void *)(v1 + 12), 13, 22, (int)sub_40B0C0); sub_42FBA0((void *)(v1 + 12), 13, 25, (int)sub_40B450); sub_42FBA0((void *)(v1 + 12), 13, 28, (int)sub_40B6E0); sub_42FBA0((void *)(v1 + 12), 13, 31, (int)sub_40B900); sub_42FBA0((void *)(v1 + 12), 13, 40, (int)sub_40A170); sub_42FBA0((void *)(v1 + 12), 13, 43, (int)sub_40A440); sub_42FBA0((void *)(v1 + 12), 13, 46, (int)sub_40BB30); sub_42FBA0((void *)(v1 + 12), 13, 49, (int)sub_40BF80); sub_42FBA0((void *)(v1 + 12), 13, 55, (int)sub_40C430); sub_42FBA0((void *)(v1 + 12), 13, 56, (int)sub_40C480); sub_42FBA0((void *)(v1 + 12), 13, 122, (int)sub_40C680); sub_42FBA0((void *)(v1 + 12), 13, 59, (int)sub_40CA00); sub_42FBA0((void *)(v1 + 12), 13, 62, (int)sub_40D560); sub_42FBA0((void *)(v1 + 12), 13, 63, (int)sub_40D780); sub_42FBA0((void *)(v1 + 12), 13, 65, (int)sub_40D8C0); sub_42FBA0((void *)(v1 + 12), 13, 68, (int)sub_40D9E0); sub_42FBA0((void *)(v1 + 12), 13, 113, (int)sub_40DCB0); sub_42FBA0((void *)(v1 + 12), 13, 71, (int)sub_40E050); sub_42FBA0((void *)(v1 + 12), 13, 73, (int)sub_40E5B0); sub_42FBA0((void *)(v1 + 12), 13, 93, (int)sub_40E660); sub_42FBA0((void *)(v1 + 12), 13, 75, (int)sub_4308E0); sub_42FBA0((void *)(v1 + 12), 13, 77, (int)sub_430AD0); sub_42FBA0((void *)(v1 + 12), 13, 80, (int)sub_40EAD0); sub_42FBA0((void *)(v1 + 12), 13, 83, (int)sub_40F490); sub_42FBA0((void *)(v1 + 12), 13, 84, (int)sub_40F8D0); sub_42FBA0((void *)(v1 + 12), 13, 85, (int)sub_40FE30); sub_42FBA0((void *)(v1 + 12), 13, 52, (int)sub_410430); sub_42FBA0((void *)(v1 + 12), 13, 87, (int)sub_430F30); sub_42FBA0((void *)(v1 + 12), 13, 89, (int)sub_431020); sub_42FBA0((void *)(v1 + 12), 13, 91, (int)sub_4311B0); sub_42FBA0((void *)(v1 + 12), 13, 158, (int)sub_410A00); sub_42FBA0((void *)(v1 + 12), 13, 95, (int)sub_410F30); sub_42FBA0((void *)(v1 + 12), 13, 97, (int)sub_411190); sub_42FBA0((void *)(v1 + 12), 13, 99, (int)sub_411670); sub_42FBA0((void *)(v1 + 12), 13, 101, (int)sub_411830); sub_42FBA0((void *)(v1 + 12), 13, 106, (int)sub_411C20); sub_42FBA0((void *)(v1 + 12), 13, 109, (int)sub_40EFB0); sub_42FBA0((void *)(v1 + 12), 13, 116, (int)sub_4113F0); sub_42FBA0((void *)(v1 + 12), 13, 118, (int)sub_419B80); sub_42FBA0((void *)(v1 + 12), 13, 125, (int)sub_41A1B0); sub_42FBA0((void *)(v1 + 12), 13, 130, (int)sub_41C500); sub_42FBA0((void *)(v1 + 12), 13, 133, (int)sub_41C800); sub_42FBA0((void *)(v1 + 12), 13, 135, (int)sub_41CA20); sub_42FBA0((void *)(v1 + 12), 13, 127, (int)sub_41F5A0); sub_42FBA0((void *)(v1 + 12), 13, 139, (int)sub_41FA10); sub_42FBA0((void *)(v1 + 12), 13, 141, (int)sub_41FC30); sub_42FBA0((void *)(v1 + 12), 13, 143, (int)sub_41FE50); sub_42FBA0((void *)(v1 + 12), 13, 198, (int)sub_41FEE0); sub_42FBA0((void *)(v1 + 12), 13, 200, (int)sub_420100); sub_42FBA0((void *)(v1 + 12), 13, 144, (int)sub_420190); sub_42FBA0((void *)(v1 + 12), 13, 147, (int)sub_420650); sub_42FBA0((void *)(v1 + 12), 13, 150, (int)sub_423440); sub_42FBA0((void *)(v1 + 12), 13, 152, (int)sub_423620); sub_42FBA0((void *)(v1 + 12), 13, 154, (int)sub_423870); sub_42FBA0((void *)(v1 + 12), 13, 156, (int)sub_423AD0); sub_42FBA0((void *)(v1 + 12), 13, 166, (int)sub_426360); sub_42FBA0((void *)(v1 + 12), 18, 1, (int)sub_411EA0); sub_42FBA0((void *)(v1 + 12), 18, 11, (int)sub_412300); sub_42FBA0((void *)(v1 + 12), 18, 18, (int)sub_412450); sub_42FBA0((void *)(v1 + 12), 21, 16, (int)sub_412630); sub_42FBA0((void *)(v1 + 12), 21, 18, (int)sub_4350A0); sub_42FBA0((void *)(v1 + 12), 21, 20, (int)sub_4366E0); sub_42FBA0((void *)(v1 + 12), 23, 5, (int)sub_412720); sub_42FBA0((void *)(v1 + 12), 23, 7, (int)sub_4128D0); sub_42FBA0((void *)(v1 + 12), 23, 9, (int)sub_412B40); sub_42FBA0((void *)(v1 + 12), 23, 11, (int)sub_412C00); sub_42FBA0((void *)(v1 + 12), 4, 86, (int)sub_412CD0); sub_42FBA0((void *)(v1 + 12), 24, 5, (int)sub_412EC0); sub_42FBA0((void *)(v1 + 12), 24, 8, (int)sub_412FC0); sub_42FBA0((void *)(v1 + 12), 4, 93, (int)sub_413110); sub_42FBA0((void *)(v1 + 12), 4, 99, (int)sub_413240); sub_42FBA0((void *)(v1 + 12), 4, 112, (int)sub_4140A0); sub_42FBA0((void *)(v1 + 12), 4, 209, (int)sub_413550); sub_42FBA0((void *)(v1 + 12), 4, 179, (int)sub_4140E0); sub_42FBA0((void *)(v1 + 12), 22, 21, (int)sub_430C10); sub_42FBA0((void *)(v1 + 12), 28, 23, (int)sub_413B00); sub_42FBA0((void *)(v1 + 12), 28, 25, (int)sub_413BA0); sub_42FBA0((void *)(v1 + 12), 28, 27, (int)sub_413C20); sub_42FBA0((void *)(v1 + 12), 28, 29, (int)sub_413CA0); sub_42FBA0((void *)(v1 + 12), 28, 31, (int)sub_413D20); sub_42FBA0((void *)(v1 + 12), 28, 33, (int)sub_413DA0); sub_42FBA0((void *)(v1 + 12), 28, 35, (int)sub_413E40); sub_42FBA0((void *)(v1 + 12), 28, 37, (int)sub_413EE0); sub_42FBA0((void *)(v1 + 12), 28, 38, (int)sub_413F20); sub_42FBA0((void *)(v1 + 12), 28, 39, (int)sub_413F60); sub_42FBA0((void *)(v1 + 12), 28, 40, (int)sub_413FA0); sub_42FBA0((void *)(v1 + 12), 28, 41, (int)sub_413FE0); sub_42FBA0((void *)(v1 + 12), 28, 42, (int)sub_414020); sub_42FBA0((void *)(v1 + 12), 28, 43, (int)sub_414060); sub_42FBA0((void *)(v1 + 12), 28, 75, (int)sub_422410); sub_42FBA0((void *)(v1 + 12), 28, 87, (int)sub_4227D0); sub_42FBA0((void *)(v1 + 12), 28, 77, (int)sub_422AC0); sub_42FBA0((void *)(v1 + 12), 28, 89, (int)sub_422E50); sub_42FBA0((void *)(v1 + 12), 28, 79, (int)sub_4230E0); sub_42FBA0((void *)(v1 + 12), 29, 82, (int)sub_436860); sub_42FBA0((void *)(v1 + 12), 29, 84, (int)sub_4317D0); sub_42FBA0((void *)(v1 + 12), 29, 86, (int)sub_431D20); sub_42FBA0((void *)(v1 + 12), 29, 188, (int)sub_4143E0); sub_42FBA0((void *)(v1 + 12), 29, 88, (int)sub_436E50); sub_42FBA0((void *)(v1 + 12), 29, 90, (int)sub_414640); sub_42FBA0((void *)(v1 + 12), 29, 92, (int)sub_414800); sub_42FBA0((void *)(v1 + 12), 29, 94, (int)sub_414920); sub_42FBA0((void *)(v1 + 12), 29, 96, (int)sub_414A80); sub_42FBA0((void *)(v1 + 12), 29, 98, (int)sub_414BE0); sub_42FBA0((void *)(v1 + 12), 29, 100, (int)sub_414DE0); sub_42FBA0((void *)(v1 + 12), 29, 102, (int)sub_414F00); sub_42FBA0((void *)(v1 + 12), 29, 238, (int)sub_415060); sub_42FBA0((void *)(v1 + 12), 29, 105, (int)sub_415180); sub_42FBA0((void *)(v1 + 12), 29, 107, (int)sub_415390); sub_42FBA0((void *)(v1 + 12), 29, 109, (int)sub_415580); sub_42FBA0((void *)(v1 + 12), 29, 111, (int)sub_435450); sub_42FBA0((void *)(v1 + 12), 29, 113, (int)sub_435230); sub_42FBA0((void *)(v1 + 12), 29, 104, (int)sub_415690); sub_42FBA0((void *)(v1 + 12), 29, 133, (int)sub_4158E0); sub_42FBA0((void *)(v1 + 12), 29, 135, (int)sub_415EF0); sub_42FBA0((void *)(v1 + 12), 29, 137, (int)sub_4162C0); sub_42FBA0((void *)(v1 + 12), 29, 139, (int)sub_416400); sub_42FBA0((void *)(v1 + 12), 29, 151, (int)sub_415C00); sub_42FBA0((void *)(v1 + 12), 29, 153, (int)sub_415D80); sub_42FBA0((void *)(v1 + 12), 29, 142, (int)sub_4160D0); sub_42FBA0((void *)(v1 + 12), 29, 170, (int)sub_407640); sub_42FBA0((void *)(v1 + 12), 29, 229, (int)sub_408120); sub_42FBA0((void *)(v1 + 12), 29, 235, (int)sub_408370); sub_42FBA0((void *)(v1 + 12), 29, 231, (int)sub_4085D0); sub_42FBA0((void *)(v1 + 12), 29, 246, (int)sub_408830); sub_42FBA0((void *)(v1 + 12), 29, 249, (int)sub_408A80); sub_42FBA0((void *)(v1 + 12), 29, 178, (int)sub_41F720); sub_42FBA0((void *)(v1 + 12), 29, 186, (int)sub_41F8C0); sub_42FBA0((void *)(v1 + 12), 38, 1, (int)sub_432A70); sub_42FBA0((void *)(v1 + 12), 38, 3, (int)sub_41B530); sub_42FBA0((void *)(v1 + 12), 38, 5, (int)sub_41B960); sub_42FBA0((void *)(v1 + 12), 38, 15, (int)sub_435D10); sub_42FBA0((void *)(v1 + 12), 38, 20, (int)sub_41BB50); sub_42FBA0((void *)(v1 + 12), 38, 47, (int)sub_4361D0); sub_42FBA0((void *)(v1 + 12), 38, 25, (int)sub_4364C0); sub_42FBA0((void *)(v1 + 12), 38, 29, (int)sub_41BD90); sub_42FBA0((void *)(v1 + 12), 38, 39, (int)sub_41BF80); sub_42FBA0((void *)(v1 + 12), 38, 92, (int)sub_41C160); sub_42FBA0((void *)(v1 + 12), 38, 127, (int)sub_41C350); sub_42FBA0((void *)(v1 + 12), 38, 51, (int)sub_41CC40); sub_42FBA0((void *)(v1 + 12), 38, 55, (int)sub_41CE70); sub_42FBA0((void *)(v1 + 12), 38, 59, (int)sub_41D210); sub_42FBA0((void *)(v1 + 12), 38, 63, (int)sub_41D440); sub_42FBA0((void *)(v1 + 12), 38, 67, (int)sub_41D6F0); sub_42FBA0((void *)(v1 + 12), 38, 71, (int)sub_41D830); sub_42FBA0((void *)(v1 + 12), 38, 81, (int)sub_41D970); sub_42FBA0((void *)(v1 + 12), 38, 75, (int)sub_433030); sub_42FBA0((void *)(v1 + 12), 38, 79, (int)sub_433610); sub_42FBA0((void *)(v1 + 12), 38, 87, (int)sub_41DB00); sub_42FBA0((void *)(v1 + 12), 38, 84, (int)sub_41DC30); sub_42FBA0((void *)(v1 + 12), 38, 107, (int)sub_41DD90); sub_42FBA0((void *)(v1 + 12), 38, 135, (int)sub_41EC30); sub_42FBA0((void *)(v1 + 12), 38, 137, (int)sub_41EDC0); sub_42FBA0((void *)(v1 + 12), 31, 11, (int)sub_435800); sub_42FBA0((void *)(v1 + 12), 31, 13, (int)sub_416560); sub_42FBA0((void *)(v1 + 12), 31, 14, (int)sub_4165E0); sub_42FBA0((void *)(v1 + 12), 31, 16, (int)sub_435A20); sub_42FBA0((void *)(v1 + 12), 2, 18, (int)sub_4166F0); sub_42FBA0((void *)(v1 + 12), 2, 19, (int)sub_4167B0); sub_42FBA0((void *)(v1 + 12), 2, 20, (int)sub_416870); sub_42FBA0((void *)(v1 + 12), 2, 21, (int)sub_416930); sub_42FBA0((void *)(v1 + 12), 36, 1, (int)sub_4169F0); sub_42FBA0((void *)(v1 + 12), 36, 2, (int)sub_416C40); sub_42FBA0((void *)(v1 + 12), 36, 5, (int)sub_416D70); sub_42FBA0((void *)(v1 + 12), 36, 6, (int)sub_417070); sub_42FBA0((void *)(v1 + 12), 4, 118, (int)sub_417370); sub_42FBA0((void *)(v1 + 12), 4, 153, (int)sub_417770); sub_42FBA0((void *)(v1 + 12), 35, 57, (int)sub_4179D0); sub_42FBA0((void *)(v1 + 12), 35, 59, (int)sub_417B90); sub_42FBA0((void *)(v1 + 12), 35, 89, (int)sub_4325F0); sub_42FBA0((void *)(v1 + 12), 35, 93, (int)sub_4328C0); sub_42FBA0((void *)(v1 + 12), 35, 95, (int)sub_417D00); sub_42FBA0((void *)(v1 + 12), 35, 91, (int)sub_417E60); sub_42FBA0((void *)(v1 + 12), 4, 122, (int)sub_418230); sub_42FBA0((void *)(v1 + 12), 4, 126, (int)sub_4187C0); sub_42FBA0((void *)(v1 + 12), 4, 130, (int)sub_418C00); sub_42FBA0((void *)(v1 + 12), 4, 128, (int)sub_4189C0); sub_42FBA0((void *)(v1 + 12), 4, 131, (int)sub_418DC0); sub_42FBA0((void *)(v1 + 12), 4, 133, (int)sub_418F40); sub_42FBA0((void *)(v1 + 12), 4, 137, (int)sub_4191D0); sub_42FBA0((void *)(v1 + 12), 4, 139, (int)sub_419350); sub_42FBA0((void *)(v1 + 12), 4, 141, (int)sub_4194D0); sub_42FBA0((void *)(v1 + 12), 4, 143, (int)sub_4196B0); sub_42FBA0((void *)(v1 + 12), 4, 145, (int)sub_4198A0); sub_42FBA0((void *)(v1 + 12), 4, 135, (int)sub_4190C0); sub_42FBA0((void *)(v1 + 12), 4, 147, (int)sub_419A70); sub_42FBA0((void *)(v1 + 12), 18, 37, (int)sub_412140); sub_42FBA0((void *)(v1 + 12), 37, 30, (int)sub_4397D0); sub_42FBA0((void *)(v1 + 12), 37, 32, (int)sub_41A3C0); sub_42FBA0((void *)(v1 + 12), 37, 34, (int)sub_435C50); sub_42FBA0((void *)(v1 + 12), 37, 36, (int)sub_41A470); sub_42FBA0((void *)(v1 + 12), 37, 38, (int)sub_4375A0); sub_42FBA0((void *)(v1 + 12), 37, 40, (int)sub_41A850); sub_42FBA0((void *)(v1 + 12), 37, 42, (int)sub_41A880); sub_42FBA0((void *)(v1 + 12), 37, 44, (int)sub_41AD80); sub_42FBA0((void *)(v1 + 12), 37, 62, (int)sub_41AF70); sub_42FBA0((void *)(v1 + 12), 37, 66, (int)sub_41B110); sub_42FBA0((void *)(v1 + 12), 40, 1, (int)sub_41EE90); sub_42FBA0((void *)(v1 + 12), 40, 4, (int)sub_41EF30); sub_42FBA0((void *)(v1 + 12), 42, 4, (int)sub_4375D0); sub_42FBA0((void *)(v1 + 12), 42, 8, (int)sub_4208D0); sub_42FBA0((void *)(v1 + 12), 42, 12, (int)sub_4209E0); sub_42FBA0((void *)(v1 + 12), 2, 65, (int)sub_420AC0); sub_42FBA0((void *)(v1 + 12), 43, 35, (int)sub_420C90); sub_42FBA0((void *)(v1 + 12), 43, 37, (int)sub_421000); sub_42FBA0((void *)(v1 + 12), 43, 12, (int)sub_4210D0); sub_42FBA0((void *)(v1 + 12), 43, 16, (int)sub_433B60); sub_42FBA0((void *)(v1 + 12), 43, 23, (int)sub_421360); sub_42FBA0((void *)(v1 + 12), 43, 44, (int)sub_4215A0); sub_42FBA0((void *)(v1 + 12), 47, 120, (int)sub_421970); sub_42FBA0((void *)(v1 + 12), 47, 122, (int)sub_421CA0); sub_42FBA0((void *)(v1 + 12), 47, 108, (int)sub_421D70); sub_42FBA0((void *)(v1 + 12), 2, 71, (int)sub_423260); sub_42FBA0((void *)(v1 + 12), 16, 34, (int)sub_423360); sub_42FBA0((void *)(v1 + 12), 45, 17, (int)sub_423E70); sub_42FBA0((void *)(v1 + 12), 45, 10, (int)sub_423BF0); sub_42FBA0((void *)(v1 + 12), 2, 99, (int)sub_424390); sub_42FBA0((void *)(v1 + 12), 2, 104, (int)sub_424530); sub_42FBA0((void *)(v1 + 12), 4, 219, (int)sub_4246E0); sub_42FBA0((void *)(v1 + 12), 47, 6, (int)sub_4247F0); sub_42FBA0((void *)(v1 + 12), 47, 10, (int)sub_424980); sub_42FBA0((void *)(v1 + 12), 47, 17, (int)sub_424AF0); sub_42FBA0((void *)(v1 + 12), 47, 21, (int)sub_424D10); sub_42FBA0((void *)(v1 + 12), 47, 25, (int)sub_424F00); sub_42FBA0((void *)(v1 + 12), 47, 211, (int)sub_4250E0); sub_42FBA0((void *)(v1 + 12), 47, 213, (int)sub_4253D0); sub_42FBA0((void *)(v1 + 12), 13, 160, (int)sub_425800); sub_42FBA0((void *)(v1 + 12), 13, 162, (int)sub_425CD0); sub_42FBA0((void *)(v1 + 12), 13, 164, (int)sub_425F50); sub_42FBA0((void *)(v1 + 12), 13, 168, (int)sub_426890); sub_42FBA0((void *)(v1 + 12), 13, 170, (int)sub_426B00); sub_42FBA0((void *)(v1 + 12), 49, 2, (int)sub_426F20); sub_42FBA0((void *)(v1 + 12), 49, 9, (int)sub_4274A0); sub_42FBA0((void *)(v1 + 12), 49, 13, (int)sub_427680); sub_42FBA0((void *)(v1 + 12), 49, 17, (int)sub_427850); sub_42FBA0((void *)(v1 + 12), 49, 20, (int)sub_427BD0); sub_42FBA0((void *)(v1 + 12), 4, 235, (int)sub_427C70); sub_42FBA0((void *)(v1 + 12), 4, 238, (int)sub_428010); sub_42FBA0((void *)(v1 + 12), 4, 243, (int)sub_428170); sub_42FBA0((void *)(v1 + 12), 2, 112, (int)sub_428A90); sub_42FBA0((void *)(v1 + 12), 29, 255, (int)sub_434070); sub_42FBA0((void *)(v1 + 12), 38, 145, (int)sub_428CB0); sub_42FBA0((void *)(v1 + 12), 38, 141, (int)sub_428AD0); sub_42FBA0((void *)(v1 + 12), 4, 274, (int)sub_429040); sub_42FBA0((void *)(v1 + 12), 4, 280, (int)sub_429990); sub_42FBA0((void *)(v1 + 12), 4, 282, (int)sub_429B70); sub_42FBA0((void *)(v1 + 12), 13, 172, (int)sub_429D50); sub_42FBA0((void *)(v1 + 12), 13, 174, (int)sub_42A110); sub_42FBA0((void *)(v1 + 12), 13, 176, (int)sub_42A5B0); sub_42FBA0((void *)(v1 + 12), 13, 177, (int)sub_42AD90); sub_42FBA0((void *)(v1 + 12), 53, 13, (int)sub_42B590); sub_42FBA0((void *)(v1 + 12), 53, 1, (int)sub_42B800); sub_42FBA0((void *)(v1 + 12), 53, 3, (int)sub_42B950); sub_42FBA0((void *)(v1 + 12), 53, 11, (int)sub_42BBA0); sub_42FBA0((void *)(v1 + 12), 53, 15, (int)sub_42BE10); sub_42FBA0((void *)(v1 + 12), 13, 193, (int)sub_42C000); sub_42FBA0((void *)(v1 + 12), 13, 179, (int)sub_434400); sub_42FBA0((void *)(v1 + 12), 16, 49, (int)sub_42C780); sub_42FBA0((void *)(v1 + 12), 13, 181, (int)sub_42C7B0); sub_42FBA0((void *)(v1 + 12), 13, 183, (int)sub_42CCF0); sub_42FBA0((void *)(v1 + 12), 16, 53, (int)sub_42D620); sub_42FBA0((void *)(v1 + 12), 13, 185, (int)sub_42D850); sub_42FBA0((void *)(v1 + 12), 13, 187, (int)sub_42DB70); sub_42FBA0((void *)(v1 + 12), 13, 189, (int)sub_42DEA0); sub_42FBA0((void *)(v1 + 12), 13, 191, (int)sub_42E710); sub_42FBA0((void *)(v1 + 12), 29, 259, (int)sub_42EB90); sub_42FBA0((void *)(v1 + 12), 29, 263, (int)sub_42EF20); sub_42FBA0((void *)(v1 + 12), 29, 269, (int)sub_42F160); sub_42FBA0((void *)(v1 + 12), 13, 201, (int)sub_42F500); sub_42FBA0((void *)(v1 + 12), 13, 207, (int)sub_42FA80); return v1; } // 40E660: using guessed type int __stdcall sub_40E660(int, int); // 427BD0: using guessed type int __stdcall sub_427BD0(int, int); // 4B8334: using guessed type int (__stdcall *off_4B8334)(int); //----- (0043B000) -------------------------------------------------------- signed int __thiscall sub_43B000(int this, int a2) { signed int result; // eax@2 char v3; // [sp+0h] [bp-104h]@2 unsigned int v4; // [sp+100h] [bp-4h]@1 int v5; // [sp+104h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; if ( *(_BYTE *)(*(_DWORD *)(this + 4) + 220) ) { result = 1; } else { sprintf(&v3, "ERROR - Á¢¼Ó ¹ÌÀÎÁ", (unsigned int)*(_WORD *)a2 >> 10, *(_WORD *)a2 & 0x3FF); sub_446350(1, "Msg", "%s", &v3); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0043B090) -------------------------------------------------------- signed int __thiscall sub_43B090(int this, unsigned int *a2, int a3) { int v3; // edi@1 int v4; // esi@1 char *v5; // ST4C_4@1 u_short v6; // ax@1 unsigned int v7; // esi@1 int v8; // ecx@1 int v9; // eax@1 int v10; // ST3C_4@1 int v11; // ST34_4@1 int v12; // ST30_4@1 int v13; // ST2C_4@1 char *v14; // eax@1 char v16; // [sp+10h] [bp-104h]@1 unsigned int v17; // [sp+110h] [bp-4h]@1 int v18; // [sp+114h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)(this + 4); v5 = inet_ntoa(*(struct in_addr *)(v4 + 16)); v6 = ntohs(*(_WORD *)(v4 + 14)); v7 = *(_WORD *)a2; v8 = v6; v9 = *(_DWORD *)(v3 + 4); v10 = v8; v11 = *(_DWORD *)(v9 + 8); v12 = *(_DWORD *)(v9 + 232); v13 = *(_DWORD *)(v9 + 228); v14 = sub_440CF0(*(_DWORD *)(v9 + 224)); sprintf( &v16, "fc_dummyfunction, Protocol = 0x%04x, dep=%d, cmd=%d, length=%d From (%-25s world=%3d zone=%3d, %- 5d=%15s:%- 5d)", v7, v7 >> 10, v7 & 0x3FF, a3, v14, v13, v12, v11, v5, v10); sub_446350(1, "Msg", "%s", &v16); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0043B160) -------------------------------------------------------- signed int __thiscall sub_43B160(void *this, int a2, int a3) { void *v3; // esi@1 signed int v4; // esi@1 char v6; // [sp+0h] [bp-201Ch]@1 char v7; // [sp+1h] [bp-201Bh]@1 char v8; // [sp+2h] [bp-201Ah]@1 char v9; // [sp+3h] [bp-2019h]@1 char v10; // [sp+4h] [bp-2018h]@1 __int16 v11; // [sp+5h] [bp-2017h]@1 char v12; // [sp+8h] [bp-2014h]@1 unsigned int v13; // [sp+200Ch] [bp-10h]@1 int v14; // [sp+2018h] [bp-4h]@1 int v15; // [sp+201Ch] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v3 = this; v9 = dword_4DFF4C; v8 = dword_4DFF48; v10 = 0; v7 = 3; v11 = (unsigned __int8)dword_4DFF48 + 3; sub_44E180((int)&v12); v14 = 0; sub_44E310((int)&v12, 0x802u, 7u, &v6); v4 = sub_43BFB0(*((_DWORD *)v3 + 1), (int)&v12); v14 = -1; nullsub_1(&v12); return v4; } // 4DE38C: using guessed type int __security_cookie; // 4DFF48: using guessed type int dword_4DFF48; // 4DFF4C: using guessed type int dword_4DFF4C; //----- (0043B240) -------------------------------------------------------- signed int __thiscall sub_43B240(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // cl@1 int v5; // eax@1 char v6; // cl@1 signed int v7; // ebx@1 u_short v8; // ax@4 char *v9; // eax@7 u_short v10; // ST4C_2@7 u_short v11; // ax@7 char *v12; // eax@10 int v13; // edx@10 u_short v14; // ax@10 signed int result; // eax@13 char *v16; // edi@15 u_short v17; // ax@15 int v18; // edi@18 u_short v19; // ax@18 int v20; // ST4C_4@18 int v21; // ST48_4@18 int v22; // ecx@18 int v23; // eax@18 int v24; // ST44_4@18 char *v25; // ST40_4@18 int v26; // ST3C_4@18 int v27; // ST38_4@18 int v28; // ST34_4@18 char *v29; // eax@18 unsigned int v30; // [sp-10h] [bp-232Ch]@1 char v31; // [sp+0h] [bp-231Ch]@1 __int16 v32; // [sp+1h] [bp-231Bh]@1 char *v33; // [sp+4h] [bp-2318h]@4 char v34; // [sp+8h] [bp-2314h]@14 char v35; // [sp+200Ch] [bp-310h]@18 char v36; // [sp+210Ch] [bp-210h]@4 char v37; // [sp+220Ch] [bp-110h]@4 unsigned int v38; // [sp+230Ch] [bp-10h]@1 int v39; // [sp+2318h] [bp-4h]@14 int v40; // [sp+231Ch] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v30 = (unsigned int)&v40 ^ __security_cookie; v3 = this; v4 = *(_BYTE *)(a2 + 2); v32 = 0; v5 = *((_DWORD *)v3 + 1); v31 = v4; v6 = *(_BYTE *)(v5 + 220); v7 = 1; if ( v6 && v6 != 2 && *(_DWORD *)(v5 + 224) != 3 ) { v7 = 0; v33 = inet_ntoa(*(struct in_addr *)(v5 + 16)); v8 = ntohs(*(_WORD *)(*((_DWORD *)v3 + 1) + 14)); sprintf(&v37, "IP=%s:%d, SOCKET=%d", v33, v8, *(_DWORD *)(*((_DWORD *)v3 + 1) + 8), v30); sprintf(&v36, "Á¢¼ÓµÇ¾î ÀÖ´Â ¼¼¼ÇÀε¥, ¶Ç Á¢¼Ó¿äûÀÌ ¿Â °æ¿ì, ¹Ù·Î Á¢¼ÓÀ» ²", &v37); sub_446350(1, "Msg", "%s", &v36); } if ( *(_BYTE *)(a2 + 3) != dword_4DFF48 && v7 == 1 ) { v7 = 0; v9 = inet_ntoa(*(struct in_addr *)(*((_DWORD *)v3 + 1) + 16)); v10 = *(_WORD *)(*((_DWORD *)v3 + 1) + 14); v33 = v9; v11 = ntohs(v10); sprintf(&v36, "IP=%s:%d, SOCKET=%d", v33, v11, *(_DWORD *)(*((_DWORD *)v3 + 1) + 8), v30); sprintf(&v37, "Á¢¼Ó¿äûÇÑ ¼­¹", &v36); sub_446350(1, "Msg", "%s", &v37); sprintf( &v37, "NC_MISC_S2SCONNECTION_REQ ", *(_BYTE *)(a2 + 4), *(_BYTE *)(a2 + 5), *(_BYTE *)(a2 + 6), *(_BYTE *)(a2 + 3), *(_WORD *)(a2 + 7), dword_4DFF48); sub_446350(1, "Msg", "%s", &v37); } if ( *(_BYTE *)(a2 + 3) + *(_BYTE *)(a2 + 4) != *(_WORD *)(a2 + 7) && v7 == 1 ) { v7 = 0; v12 = inet_ntoa(*(struct in_addr *)(*((_DWORD *)v3 + 1) + 16)); v13 = *((_DWORD *)v3 + 1); v33 = v12; v14 = ntohs(*(_WORD *)(v13 + 14)); sprintf(&v36, "IP=%s:%d, SOCKET=%d", v33, v14, *(_DWORD *)(*((_DWORD *)v3 + 1) + 8), v30); sprintf(&v37, "Á¢¼Ó¿äûÇÑ °", &v36); sub_446350(1, "Msg", "%s", &v37); sprintf( &v37, "NC_MISC_S2SCONNECTION_REQ ", *(_BYTE *)(a2 + 4), *(_BYTE *)(a2 + 3), *(_WORD *)(a2 + 7), dword_4DFF48); sub_446350(1, "Msg", "%s", &v37); } if ( dword_6E9EC0 && v7 ) { *(_DWORD *)(*((_DWORD *)v3 + 1) + 224) = *(_BYTE *)(a2 + 4); *(_DWORD *)(*((_DWORD *)v3 + 1) + 228) = *(_BYTE *)(a2 + 5); *(_DWORD *)(*((_DWORD *)v3 + 1) + 232) = *(_BYTE *)(a2 + 6); sub_44E180((int)&v34); v39 = 0; sub_44E310((int)&v34, 0x803u, 3u, &v31); if ( sub_43BFB0(*((_DWORD *)v3 + 1), (int)&v34) ) { *(_BYTE *)(*((_DWORD *)v3 + 1) + 220) = 1; *(_DWORD *)(*((_DWORD *)v3 + 1) + 224) = *(_BYTE *)(a2 + 4); *(_DWORD *)(*((_DWORD *)v3 + 1) + 228) = *(_BYTE *)(a2 + 5); *(_DWORD *)(*((_DWORD *)v3 + 1) + 232) = *(_BYTE *)(a2 + 6); GetLocalTime((LPSYSTEMTIME)(*((_DWORD *)v3 + 1) + 236)); v18 = *((_DWORD *)v3 + 1); v33 = inet_ntoa(*(struct in_addr *)(v18 + 16)); v19 = ntohs(*(_WORD *)(v18 + 14)); v20 = dword_4E922C; v21 = dword_4E9230; v22 = v19; v23 = *((_DWORD *)v3 + 1); v24 = v22; v25 = v33; v26 = *(_DWORD *)(v23 + 8); v27 = *(_DWORD *)(v23 + 232); v28 = *(_DWORD *)(v23 + 228); v29 = sub_440CF0(*(_DWORD *)(v23 + 224)); sprintf( &v35, "Connected from %p (%-25s world=%3d zone=%3d, %- 5d=%15s:%- 5d) (% 3d/% 3d°³)", *((_DWORD *)v3 + 1), v29, v28, v27, v26, v25, v24, v21, v20, v30); sub_446350(1, "Msg", "%s", &v35); } else { v7 = 0; v16 = inet_ntoa(*(struct in_addr *)(*((_DWORD *)v3 + 1) + 16)); v17 = ntohs(*(_WORD *)(*((_DWORD *)v3 + 1) + 14)); sprintf(&v36, "IP=%s:%d, SOCKET=%d", v16, v17, *(_DWORD *)(*((_DWORD *)v3 + 1) + 8), v30); sprintf(&v37, "CProtocol_Functions::fc_NC_MISC_S2SCONNECTION_REQ - ÀÀ´äÆÐŶ º¸³»±â ¿¡·¯, ¹Ù·Î Á¢¼ÓÀ» ²", &v36); sub_446350(1, "Msg", "%s", &v37); sub_44B7C0(*((_DWORD *)v3 + 1)); } v39 = -1; nullsub_1(&v34); result = v7; } else { sub_44B7C0(*((_DWORD *)v3 + 1)); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4DFF48: using guessed type int dword_4DFF48; // 4E922C: using guessed type int dword_4E922C; // 4E9230: using guessed type int dword_4E9230; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0043B6E0) -------------------------------------------------------- signed int __thiscall sub_43B6E0(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@2 char *v5; // ebx@2 u_short v6; // ax@2 int v7; // ST38_4@2 int v8; // ST34_4@2 int v9; // ecx@2 int v10; // eax@2 int v11; // ST30_4@2 int v12; // ST28_4@2 int v13; // ST24_4@2 int v14; // ST20_4@2 char *v15; // eax@2 char v17; // [sp+4h] [bp-104h]@2 unsigned int v18; // [sp+104h] [bp-4h]@1 int v19; // [sp+108h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; v3 = this; if ( !*(_WORD *)(a2 + 3) ) { *(_BYTE *)(*(_DWORD *)(this + 4) + 220) = 1; v4 = *(_DWORD *)(this + 4); v5 = inet_ntoa(*(struct in_addr *)(v4 + 16)); v6 = ntohs(*(_WORD *)(v4 + 14)); v7 = dword_4E922C; v8 = dword_4E9230; v9 = v6; v10 = *(_DWORD *)(v3 + 4); v11 = v9; v12 = *(_DWORD *)(v10 + 8); v13 = *(_DWORD *)(v10 + 232); v14 = *(_DWORD *)(v10 + 228); v15 = sub_440CF0(*(_DWORD *)(v10 + 224)); sprintf( &v17, "Connected to %p (%-25s world=%3d zone=%3d, %- 5d=%15s:%- 5d) (% 3d/% 3d°³)", *(_DWORD *)(v3 + 4), v15, v14, v13, v12, v5, v11, v8, v7); sub_446350(1, "Msg", "%s", &v17); } return 1; } // 4DE38C: using guessed type int __security_cookie; // 4E922C: using guessed type int dword_4E922C; // 4E9230: using guessed type int dword_4E9230; //----- (0043B7D0) -------------------------------------------------------- signed int __thiscall sub_43B7D0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@1 char v5; // al@2 int v6; // edi@2 int v7; // ecx@2 char *v8; // eax@3 int v9; // edx@4 int v10; // edx@5 int v11; // esi@5 int v12; // edx@5 int v13; // edx@5 int v14; // esi@5 int v15; // esi@5 signed int v16; // esi@8 int v17; // [sp+0h] [bp-2018h]@1 char v18; // [sp+4h] [bp-2014h]@2 char v19; // [sp+9h] [bp-200Fh]@2 char v20; // [sp+Ah] [bp-200Eh]@2 __int16 v21; // [sp+Bh] [bp-200Dh]@8 char v22; // [sp+10h] [bp-2008h]@3 unsigned int v23; // [sp+2008h] [bp-10h]@1 int v24; // [sp+2014h] [bp-4h]@2 int v25; // [sp+2018h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v3 = this; v17 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v18); v5 = *(_BYTE *)(a2 + 2); v20 = dword_4DFF48; v6 = 0; v24 = 0; v19 = v5; sub_449330((int)&unk_4DFF94); v7 = dword_4E9234; if ( dword_4E9234 ) { v8 = &v22; do { v9 = *(_DWORD *)(v7 + 12); if ( *(_BYTE *)(v9 + 220) == 1 ) { *(v8 - 1) = *(_BYTE *)(v9 + 224); *(v8 - 3) = *(_BYTE *)(*(_DWORD *)(v7 + 12) + 228); *(v8 - 2) = *(_BYTE *)(*(_DWORD *)(v7 + 12) + 232); ++v6; *(_DWORD *)v8 ^= (*(_DWORD *)v8 ^ *(_WORD *)(*(_DWORD *)(v7 + 12) + 236)) & 0xF; v10 = *(_DWORD *)v8 ^ (unsigned __int8)((*(_DWORD *)v8 ^ (unsigned __int8)(16 * *(_WORD *)(*(_DWORD *)(v7 + 12) + 238))) & 0xF0); *(_DWORD *)v8 = v10; v11 = v10 ^ ((unsigned __int16)v10 ^ (unsigned __int16)(*(_WORD *)(*(_DWORD *)(v7 + 12) + 242) << 8)) & 0x1F00; *(_DWORD *)v8 = v11; v12 = v11 ^ (*(_WORD *)(*(_DWORD *)(v7 + 12) + 244) << 13); v13 = v11 ^ v12 & 0x3E000; *(_DWORD *)v8 = v13; v14 = v13 ^ (*(_WORD *)(*(_DWORD *)(v7 + 12) + 246) << 18); v15 = v13 ^ v14 & 0xFC0000; *(_DWORD *)v8 = v15; *(_DWORD *)v8 = v15 ^ (v15 ^ (*(_WORD *)(*(_DWORD *)(v7 + 12) + 248) << 24)) & 0x3F000000; v8 += 7; } v7 = *(_DWORD *)(v7 + 8); } while ( v7 ); v3 = v17; } sub_449350((int)&unk_4DFF94); v21 = v6; sub_44E310((int)&v18, 0x2802u, 7 * v6 + 4, 0); v16 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v18); v24 = -1; nullsub_1(&v18); result = v16; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4DFF48: using guessed type int dword_4DFF48; // 4E9234: using guessed type int dword_4E9234; //----- (0043B9C0) -------------------------------------------------------- signed int __thiscall sub_43B9C0(void *this, int a2, int a3) { void *v3; // esi@1 signed int v4; // esi@1 char v6; // [sp+0h] [bp-2014h]@1 __int16 v7; // [sp+5h] [bp-200Fh]@1 unsigned int v8; // [sp+2004h] [bp-10h]@1 int v9; // [sp+2010h] [bp-4h]@1 int v10; // [sp+2014h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v3 = this; sub_44E180((int)&v6); v9 = 0; v7 = 1536; sub_44E310((int)&v6, 0x2804u, 2u, 0); v4 = sub_43BFB0(*((_DWORD *)v3 + 1), (int)&v6); dword_6E9EB0 = 1; v9 = -1; nullsub_1(&v6); return v4; } // 4DE38C: using guessed type int __security_cookie; // 6E9EB0: using guessed type int dword_6E9EB0; //----- (0043BA70) -------------------------------------------------------- signed int __thiscall sub_43BA70(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@1 int v5; // ecx@2 signed int v6; // esi@2 char v7; // [sp+0h] [bp-2014h]@2 char v8; // [sp+5h] [bp-200Fh]@2 char v9; // [sp+6h] [bp-200Eh]@2 __int16 v10; // [sp+7h] [bp-200Dh]@2 unsigned int v11; // [sp+2004h] [bp-10h]@1 int v12; // [sp+2010h] [bp-4h]@2 int v13; // [sp+2014h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v7); v12 = 0; sub_44E310((int)&v7, 0x2806u, 4u, 0); v8 = *(_BYTE *)(a2 + 2); v9 = dword_4DFF48; v5 = *(_DWORD *)(v3 + 4); v10 = 0; v6 = sub_43BFB0(v5, (int)&v7); v12 = -1; nullsub_1(&v7); result = v6; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4DFF48: using guessed type int dword_4DFF48; //----- (0043BB40) -------------------------------------------------------- signed int __thiscall sub_43BB40(int this, int a2, int a3) { int v3; // edi@1 signed int result; // eax@1 int i; // esi@2 int v6; // eax@3 signed int v7; // ecx@4 signed int v8; // edx@4 signed int v9; // eax@4 signed int v10; // esi@12 char v11; // [sp+0h] [bp-2014h]@2 char v12; // [sp+5h] [bp-200Fh]@2 char v13; // [sp+6h] [bp-200Eh]@2 __int16 v14[4094]; // [sp+7h] [bp-200Dh]@10 unsigned int v15; // [sp+2004h] [bp-10h]@1 int v16; // [sp+2010h] [bp-4h]@2 int v17; // [sp+2014h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v3 = this; result = sub_43B000(this, a2); if ( result ) { sub_44E180((int)&v11); v16 = 0; sub_44E310((int)&v11, 0x2808u, 0xAAu, 0); memset(&v12, 0, 0xAAu); v12 = *(_BYTE *)(a2 + 2); v13 = dword_4DFF48; sub_449330((int)&unk_4DFF94); for ( i = dword_4E9234; i; i = *(_DWORD *)(i + 8) ) { v6 = *(_DWORD *)(i + 12); if ( *(_BYTE *)(v6 + 220) == 1 ) { v7 = *(_DWORD *)(v6 + 224); v8 = *(_DWORD *)(v6 + 228); v9 = *(_DWORD *)(v6 + 232); if ( v7 >= 21 ) v7 = 10; if ( v8 >= 2 ) v8 = 0; if ( v9 >= 2 ) v9 = 0; ++v14[v9 + 2 * (v8 + 2 * v7)]; } } sub_449350((int)&unk_4DFF94); v10 = sub_43BFB0(*(_DWORD *)(v3 + 4), (int)&v11); v16 = -1; nullsub_1(&v11); result = v10; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4DFF48: using guessed type int dword_4DFF48; // 4E9234: using guessed type int dword_4E9234; // 43BB40: using guessed type __int16 var_200D[4094]; //----- (0043BC90) -------------------------------------------------------- bool __thiscall sub_43BC90(int this, int a2, int a3) { return sub_43B000(this, a2) != 0; } //----- (0043BCB0) -------------------------------------------------------- int __thiscall sub_43BCB0(int this) { int v1; // ebx@1 int v2; // eax@1 int v3; // ecx@1 signed int v4; // edx@1 v1 = this; *(_DWORD *)this = &off_4B86CC; v2 = this + 4112; *(_DWORD *)(this + 12) = &off_4B634C; *(_DWORD *)(this + 4368) = sub_43B090; v3 = this + 4112; v4 = 64; do { *(_DWORD *)v3 = *(_DWORD *)(v1 + 4368); v3 += 4; --v4; } while ( v4 ); memset32((void *)(v1 + 16), v2, 0x400u); sub_42FBA0((void *)(v1 + 12), 2, 1, (int)sub_43B160); sub_42FBA0((void *)(v1 + 12), 2, 2, (int)sub_43B240); sub_42FBA0((void *)(v1 + 12), 2, 3, (int)sub_43B6E0); sub_42FBA0((void *)(v1 + 12), 2, 4, (int)sub_43B7B0); sub_42FBA0((void *)(v1 + 12), 2, 5, (int)sub_44E8C0); sub_42FBA0((void *)(v1 + 12), 10, 1, (int)sub_43B7D0); sub_42FBA0((void *)(v1 + 12), 10, 3, (int)sub_43B9C0); sub_42FBA0((void *)(v1 + 12), 10, 5, (int)sub_43BA70); sub_42FBA0((void *)(v1 + 12), 10, 7, (int)sub_43BB40); sub_42FBA0((void *)(v1 + 12), 2, 35, (int)sub_43BC90); return v1; } // 43B7B0: using guessed type int __stdcall sub_43B7B0(int, int); // 4B634C: using guessed type int (__thiscall *off_4B634C)(void *, char); // 4B86CC: using guessed type int (__stdcall *off_4B86CC)(int); //----- (0043BDE0) -------------------------------------------------------- signed int __thiscall sub_43BDE0(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 int v4; // ebx@2 int (__thiscall *v5)(_DWORD, _DWORD, _DWORD); // ST4C_4@2 unsigned __int16 v6; // ax@2 int v7; // esi@5 char *v8; // ebx@5 u_short v9; // ax@5 int v10; // edi@5 int v11; // ST3C_4@5 int v12; // ST38_4@5 int v13; // ST34_4@5 unsigned int v14; // ST30_4@5 int v15; // ST2C_4@5 int v16; // ST24_4@5 int v17; // ST20_4@5 int v18; // ST1C_4@5 char *v19; // eax@5 signed int result; // eax@5 char v21; // [sp+10h] [bp-104h]@5 unsigned int v22; // [sp+110h] [bp-4h]@1 int v23; // [sp+114h] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; v2 = this; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 12))(a2); if ( v3 == 1 ) { while ( 1 ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 24))(a2); *(_WORD *)(*((_DWORD *)v2 + 2) + 260) = *(_WORD *)v4; *(_DWORD *)(*((_DWORD *)v2 + 2) + 264) = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 20))(a2); *(_DWORD *)(*((_DWORD *)v2 + 2) + 268) = 1; v5 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*((_DWORD *)v2 + (*(_WORD *)v4 & 0x3FF) + 4) + 4 * ((unsigned int)*(_WORD *)v4 >> 10)); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 20))(a2); if ( !v5((char *)v2 + 4, v4, v6) ) break; *(_DWORD *)(*((_DWORD *)v2 + 2) + 268) = 2; (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 36))(a2); v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 12))(a2); if ( v3 != 1 ) goto LABEL_4; } *(_DWORD *)(*((_DWORD *)v2 + 2) + 268) = 3; result = 0; } else { LABEL_4: if ( v3 == 2 ) { v7 = *((_DWORD *)v2 + 2); v8 = inet_ntoa(*(struct in_addr *)(v7 + 16)); v9 = ntohs(*(_WORD *)(v7 + 14)); v10 = *((_DWORD *)v2 + 2); v11 = *(_DWORD *)(v10 + 268); v12 = *(_DWORD *)(v10 + 264); v13 = *(_WORD *)(v10 + 260) & 0x3FF; v14 = (unsigned int)*(_WORD *)(v10 + 260) >> 10; v15 = v9; v16 = *(_DWORD *)(v10 + 8); v17 = *(_DWORD *)(v10 + 232); v18 = *(_DWORD *)(v10 + 228); v19 = sub_440CF0(*(_DWORD *)(v10 + 224)); sprintf(&v21, "ÆÐŶ ¿À·", v19, v18, v17, v16, v8, v15, v14, v13, v12, v11); sub_446350(1, "Msg", "%s", &v21); result = 0; } else { (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 40))(a2); result = 1; } } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0043BFB0) -------------------------------------------------------- signed int __thiscall sub_43BFB0(int this, int a2) { void *v2; // esi@1 struct _RTL_CRITICAL_SECTION *v3; // edi@1 signed int v4; // esi@1 v2 = (void *)this; v3 = (struct _RTL_CRITICAL_SECTION *)(this + 276); EnterCriticalSection((LPCRITICAL_SECTION)(this + 276)); v4 = sub_44B7E0(v2, a2); LeaveCriticalSection(v3); return v4; } //----- (0043BFE0) -------------------------------------------------------- signed int __thiscall sub_43BFE0(int this, int a2, unsigned int a3) { int v3; // esi@1 struct _RTL_CRITICAL_SECTION *v4; // edi@1 signed int v5; // esi@1 v3 = this; v4 = (struct _RTL_CRITICAL_SECTION *)(this + 276); EnterCriticalSection((LPCRITICAL_SECTION)(this + 276)); v5 = sub_44B830(v3, a2, a3); LeaveCriticalSection(v4); return v5; } //----- (0043C020) -------------------------------------------------------- BOOL __thiscall sub_43C020(int this, HANDLE *a2) { return PostQueuedCompletionStatus(*a2, 0, *(_DWORD *)(this + 8), (LPOVERLAPPED)(this + 308)); } //----- (0043C040) -------------------------------------------------------- signed int __thiscall sub_43C040(void *this, int a2) { int v2; // esi@1 int i; // eax@1 const void *v4; // ebx@2 char *v5; // edi@6 u_short v6; // ax@6 int v7; // ST3C_4@6 int v8; // ST38_4@6 int v9; // ST34_4@6 unsigned int v10; // ST30_4@6 int v11; // ST2C_4@6 int v12; // ST24_4@6 int v13; // ST20_4@6 int v14; // ST1C_4@6 char *v15; // eax@6 signed int result; // eax@6 char v17; // [sp+8h] [bp-10Ch]@2 size_t v18; // [sp+Ch] [bp-108h]@2 char v19; // [sp+10h] [bp-104h]@6 unsigned int v20; // [sp+110h] [bp-4h]@1 int v21; // [sp+114h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v2 = (int)this; for ( i = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 12))(a2); i == 1; i = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 12))(a2) ) { v4 = *(const void **)(a2 + 12); v18 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)a2 + 16))(a2, &v17); while ( !sub_43D190((int)&unk_4E9280, v2, v4, v18) ) Sleep(2u); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 36))(a2); } if ( i == 2 ) { v5 = inet_ntoa(*(struct in_addr *)(v2 + 16)); v6 = ntohs(*(_WORD *)(v2 + 14)); v7 = *(_DWORD *)(v2 + 268); v8 = *(_DWORD *)(v2 + 264); v9 = *(_WORD *)(v2 + 260) & 0x3FF; v10 = (unsigned int)*(_WORD *)(v2 + 260) >> 10; v11 = v6; v12 = *(_DWORD *)(v2 + 8); v13 = *(_DWORD *)(v2 + 232); v14 = *(_DWORD *)(v2 + 228); v15 = sub_440CF0(*(_DWORD *)(v2 + 224)); sprintf(&v19, "ÆÐŶ ¿À·", v15, v14, v13, v12, v5, v11, v10, v9, v8, v7); sub_446350(1, "Msg", "%s", &v19); result = 0; } else { (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 40))(a2); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0043C1A0) -------------------------------------------------------- signed int __thiscall sub_43C1A0(int this, int a2, int a3) { int v3; // eax@1 int v4; // esi@1 int v5; // eax@2 int v7; // ecx@6 int v8; // eax@8 v3 = *(_DWORD *)(a2 + 20); v4 = this; if ( v3 ) { v5 = v3 - 1; if ( !v5 ) { *(_DWORD *)(this + 256) = timeGetTime(); sub_449E70(v4 + 8, a3); return 1; } if ( v5 == 1 ) { sub_44B7C0(this); return 0; } return 1; } *(_DWORD *)(this + 252) = timeGetTime(); v7 = v4; if ( !a3 ) { LABEL_11: sub_44B7C0(v7); return 0; } *(_DWORD *)(v4 + 208) += a3; if ( !sub_43C040((void *)v4, v4 + 188) ) { LABEL_10: v7 = v4; goto LABEL_11; } v8 = sub_44EBD0(v4 + 188); if ( v8 < 1 ) { sub_446350(1, "Msg", "%s", "ERROR - Socket buffer full, some protocol too large then socket buffer size."); goto LABEL_10; } sub_449B60((void *)(v4 + 8), (LPVOID)(*(_DWORD *)(v4 + 208) + *(_DWORD *)(v4 + 192)), v8, 0); return 1; } //----- (0043C270) -------------------------------------------------------- int __thiscall sub_43C270(int this) { int v1; // esi@1 v1 = this; sub_44BAF0(this); *(_DWORD *)v1 = &off_4B8794; sub_44E8D0((void *)(v1 + 300)); *(_DWORD *)(v1 + 224) = -1; *(_BYTE *)(v1 + 220) = 0; *(_DWORD *)(v1 + 228) = 0; *(_DWORD *)(v1 + 232) = 0; GetLocalTime((LPSYSTEMTIME)(v1 + 236)); *(_DWORD *)(v1 + 252) = timeGetTime(); *(_DWORD *)(v1 + 256) = timeGetTime(); *(_DWORD *)(v1 + 272) = 0; *(_DWORD *)(v1 + 264) = 0; *(_DWORD *)(v1 + 268) = 0; *(_WORD *)(v1 + 260) = 0; *(_DWORD *)(v1 + 308) = 0; *(_DWORD *)(v1 + 312) = 0; *(_DWORD *)(v1 + 316) = 0; *(_DWORD *)(v1 + 320) = 0; *(_DWORD *)(v1 + 324) = 0; *(_DWORD *)(v1 + 336) = 0; *(_DWORD *)(v1 + 328) = 2; *(_DWORD *)(v1 + 332) = v1 + 300; *(_DWORD *)(v1 + 300) = v1 + 4; InitializeCriticalSection((LPCRITICAL_SECTION)(v1 + 276)); return v1; } // 4B8794: using guessed type int (__thiscall *off_4B8794)(void *, char); //----- (0043C3B0) -------------------------------------------------------- signed int __thiscall sub_43C3B0(void *this) { void *v1; // esi@1 DWORD v2; // eax@1 signed int result; // eax@3 int v4; // ecx@4 char *v5; // eax@6 signed int v6; // eax@7 struct _RTL_CRITICAL_SECTION *v7; // ST1C_4@7 signed int v8; // esi@7 char v9; // [sp+0h] [bp-2114h]@7 char v10; // [sp+2004h] [bp-110h]@6 unsigned int v11; // [sp+2104h] [bp-10h]@1 int v12; // [sp+2110h] [bp-4h]@7 int v13; // [sp+2114h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = this; v2 = timeGetTime(); if ( v2 - *((_DWORD *)v1 + 63) < 0x7530 ) { *((_DWORD *)v1 + 68) = 0; return 1; } v4 = *((_DWORD *)v1 + 68); if ( v4 ) { if ( v2 - v4 < 0x2BF20 ) return 1; v5 = sub_440D10(*((_DWORD *)v1 + 56)); sprintf(&v10, "ERROR - HEARTBEAT OVERTIME, NOW DISSCONNECT WITH %s", v5); sub_446350(1, "Msg", "%s", &v10); result = 0; } else { *((_DWORD *)v1 + 68) = v2; sub_44E180((int)&v9); v12 = 0; sub_44E310((int)&v9, 0x804u, 0, 0); EnterCriticalSection((LPCRITICAL_SECTION)((char *)v1 + 276)); v6 = sub_44B7E0(v1, (int)&v9); v7 = (struct _RTL_CRITICAL_SECTION *)((char *)v1 + 276); v8 = v6; LeaveCriticalSection(v7); v12 = -1; nullsub_1(&v9); result = v8; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0043C4E0) -------------------------------------------------------- signed int __thiscall sub_43C4E0(int this) { int v1; // esi@1 struct _RTL_CRITICAL_SECTION *v2; // edi@1 signed int v3; // esi@1 char v5; // [sp+8h] [bp-4h]@1 __int16 v6; // [sp+9h] [bp-3h]@1 v1 = this; v2 = (struct _RTL_CRITICAL_SECTION *)(this + 276); v5 = 2; v6 = 2049; EnterCriticalSection((LPCRITICAL_SECTION)(this + 276)); v3 = sub_44B830(v1, (int)&v5, 3u); LeaveCriticalSection(v2); return v3; } //----- (0043C520) -------------------------------------------------------- int __thiscall sub_43C520(int this, char a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B8794; DeleteCriticalSection((LPCRITICAL_SECTION)(this + 276)); *(_DWORD *)(v2 + 304) = &off_4B8734; sub_44BA70(v2); if ( a2 & 1 ) operator delete((void *)v2); return v2; } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); // 4B8794: using guessed type int (__thiscall *off_4B8794)(void *, char); //----- (0043C560) -------------------------------------------------------- void __thiscall sub_43C560(int this) { *(_DWORD *)this = &off_4B87E8; *(_DWORD *)(this + 37596) = &off_4B8734; sub_449AB0(this); } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); // 4B87E8: using guessed type int (*off_4B87E8)(); //----- (0043C580) -------------------------------------------------------- void __thiscall sub_43C580(int this) { int v1; // ebx@1 int v2; // esi@1 int v3; // ecx@2 int v4; // edi@2 v1 = this; sub_449330(this); v2 = *(_DWORD *)(v1 + 37536); if ( v2 ) { do { v3 = *(_DWORD *)(v2 + 12); v4 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 220) == 1 && !sub_43C3B0((void *)v3) ) sub_43C020(*(_DWORD *)(v2 + 12), *(HANDLE **)(v1 + 8)); v2 = v4; } while ( v4 ); } sub_449350(v1); } //----- (0043C5E0) -------------------------------------------------------- int __thiscall sub_43C5E0(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@1 int v5; // eax@3 int v6; // ecx@3 int result; // eax@6 v3 = this; sub_449330(this); v4 = a3; if ( a3 || (v4 = *(_DWORD *)(v3 + 37536)) != 0 ) { while ( 1 ) { v5 = *(_DWORD *)(v4 + 12); v6 = *(_DWORD *)(v4 + 8); if ( *(_BYTE *)(v5 + 220) == 1 ) { if ( *(_DWORD *)(v5 + 224) == a2 ) break; } v4 = *(_DWORD *)(v4 + 8); if ( !v6 ) goto LABEL_6; } sub_449350(v3); result = v4; } else { LABEL_6: sub_449350(v3); result = 0; } return result; } //----- (0043C640) -------------------------------------------------------- int __thiscall sub_43C640(void *this) { void *v1; // edi@1 int v2; // eax@1 int v3; // esi@2 int result; // eax@4 int v5; // edx@4 int v6; // edx@4 v1 = this; v2 = operator new(0x154u); if ( v2 ) v3 = sub_43C270(v2); else v3 = 0; result = operator new(0x10u); *(_DWORD *)result = 0; *(_DWORD *)(result + 4) = 0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 12) = v3; **(_DWORD **)(v3 + 112) = (char *)v1 + 37596; v5 = *(_DWORD *)(v3 + 80); *(_DWORD *)(v3 + 116) = result; *(_DWORD *)v5 = (char *)v1 + 37596; v6 = *(_DWORD *)(v3 + 332); *(_DWORD *)(v3 + 84) = result; *(_DWORD *)v6 = (char *)v1 + 37596; *(_DWORD *)(v3 + 336) = result; return result; } //----- (0043C6F0) -------------------------------------------------------- void __stdcall sub_43C6F0(void *a1) { int v1; // ecx@1 v1 = *((_DWORD *)a1 + 3); if ( v1 ) (**(void (__stdcall ***)(_DWORD))v1)(1); operator delete(a1); } //----- (0043C720) -------------------------------------------------------- int __thiscall sub_43C720(int this, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 int v5; // ebx@1 int result; // eax@2 int v7; // edi@3 v3 = this; sub_449330(this); v4 = sub_449950(v3, a2, a3); v5 = v4; if ( v4 ) { v7 = *(_DWORD *)(v4 + 12); *(_BYTE *)(v7 + 220) = 0; *(_DWORD *)(v7 + 252) = timeGetTime(); *(_DWORD *)(v7 + 272) = 0; if ( sub_44B860(v7, *(void **)(v3 + 8)) ) { if ( sub_43C4E0(v7) ) { sub_449350(v3); result = v5; } else { sub_4495B0(v3, v5); sub_449350(v3); sub_446350(1, "Msg", "%s", "* NC_MISC_S2SCONNECTION_RDY - SEND ERROR *"); result = 0; } } else { sub_4495B0(v3, v5); sub_449350(v3); sub_446350(1, "Msg", "%s", "* ACCEPT SOCKET IOCP REGISTER - ERROR *"); result = 0; } } else { sub_449350(v3); result = 0; } return result; } //----- (0043C800) -------------------------------------------------------- signed int __thiscall sub_43C800(int this, int a2) { int v2; // ebx@1 int v3; // esi@1 char *v4; // edi@2 u_short v5; // ax@2 int v6; // ST48_4@2 int v7; // ST44_4@2 int v8; // ST40_4@2 unsigned int v9; // ST3C_4@2 int v10; // ST38_4@2 int v11; // ST34_4@2 int v12; // ST30_4@2 int v13; // ST28_4@2 int v14; // ST24_4@2 int v15; // ST20_4@2 char *v16; // eax@2 signed int v17; // esi@4 char v19; // [sp+Ch] [bp-104h]@2 unsigned int v20; // [sp+10Ch] [bp-4h]@1 int v21; // [sp+110h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v2 = this; sub_449330(this); v3 = *(_DWORD *)(a2 + 12); if ( *(_BYTE *)(v3 + 220) ) { v4 = inet_ntoa(*(struct in_addr *)(v3 + 16)); v5 = ntohs(*(_WORD *)(v3 + 14)); v6 = *(_DWORD *)(v3 + 268); v7 = *(_DWORD *)(v3 + 264); v8 = *(_WORD *)(v3 + 260) & 0x3FF; v9 = (unsigned int)*(_WORD *)(v3 + 260) >> 10; v10 = dword_4E922C; v11 = dword_4E9230 - 1; v12 = v5; v13 = *(_DWORD *)(v3 + 8); v14 = *(_DWORD *)(v3 + 232); v15 = *(_DWORD *)(v3 + 228); v16 = sub_440CF0(*(_DWORD *)(v3 + 224)); sprintf( &v19, "Closed from %p (%-25s world=%3d zone=%3d, %- 5d=%15s:%- 5d) (% 3d/% 3d°³) (DEP=%d,CMD=%d,LEN=%d,WORK=%d)", v3, v16, v15, v14, v13, v4, v12, v11, v10, v9, v8, v7, v6); sub_446350(1, "Msg", "%s", &v19); if ( *(_DWORD *)(v3 + 224) == 3 ) { dword_6E9EC0 = 0; sub_446350(1, "Msg", "%s", "GAMELOG SERVER DISSCONNECT, WILL RECONNECT TO GAMELOG"); } } v17 = sub_4496F0(v2, a2); sub_449350(v2); return v17; } // 4DE38C: using guessed type int __security_cookie; // 4E922C: using guessed type int dword_4E922C; // 4E9230: using guessed type int dword_4E9230; // 6E9EC0: using guessed type int dword_6E9EC0; //----- (0043C930) -------------------------------------------------------- signed int __thiscall sub_43C930(void *this, int a2, int a3) { int v3; // esi@1 void *v4; // edi@1 v3 = *(_DWORD *)(a2 + 28); v4 = this; if ( !sub_43C1A0(*(_DWORD *)(v3 + 12), a2, a3) ) (*(void (__stdcall **)(int))(**((_DWORD **)v4 + 1) + 12))(v3); return 1; } //----- (0043C970) -------------------------------------------------------- int __thiscall sub_43C970(int this) { return (**(int (__thiscall ***)(_DWORD))(*(_DWORD *)(this + 4) + 37544))(*(_DWORD *)(this + 4) + 37544); } //----- (0043C990) -------------------------------------------------------- int __thiscall sub_43C990(int this, int a2) { return (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(this + 4) + 12))(*(_DWORD *)(a2 + 28)); } //----- (0043C9B0) -------------------------------------------------------- void *__thiscall sub_43C9B0(void *this) { void *v1; // esi@1 v1 = this; sub_449740(this); *(_DWORD *)v1 = &off_4B87E8; *((_DWORD *)v1 + 9399) = &off_4B88F8; *((_DWORD *)v1 + 9401) = &off_4B8908; *((_DWORD *)v1 + 9374) = (char *)v1 + 37604; *((_DWORD *)v1 + 9400) = v1; *((_DWORD *)v1 + 9402) = v1; return v1; } // 4B87E8: using guessed type int (*off_4B87E8)(); // 4B88F8: using guessed type int (__stdcall *off_4B88F8)(int, int); // 4B8908: using guessed type int (*off_4B8908)(); //----- (0043CA00) -------------------------------------------------------- int __thiscall sub_43CA00(void *this) { void *v1; // esi@1 int result; // eax@2 char v3; // [sp+4h] [bp-14h]@1 int v4; // [sp+10h] [bp-8h]@3 char *v5; // [sp+14h] [bp-4h]@3 v1 = this; if ( sub_448010((int)&unk_4DFA48, (int)&v3, 10, dword_4DFF4C) ) { result = sub_46D300((char *)v1 + 4684, v4, v5) == 0; if ( !result ) { sub_446350(1, "Msg", "%s%s", "DB_Init FAILED = ", v4); result = 0; } } else { sub_446350(1, "Msg", "%s", "DB_Init FAILED, Scriptor BASE ODBC info. not found."); result = 0; } return result; } // 4DFF4C: using guessed type int dword_4DFF4C; //----- (0043CA90) -------------------------------------------------------- void __thiscall sub_43CA90(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 300) ) { while ( 2 ) { Sleep(2u); switch ( *(_DWORD *)(v1 + 276) ) { case 1: case 3: continue; case 2: *(_DWORD *)(v1 + 276) = 3; continue; case 4: *(_DWORD *)(v1 + 276) = 0; break; default: return; } break; } } } //----- (0043CAF0) -------------------------------------------------------- int __userpurge StartAddress(int a1, int a2) { int v2; // ST48_4@2 int result; // eax@2 int v4; // esi@7 u_short v5; // ax@8 int v6; // ST40_4@8 int v7; // ST3C_4@8 int v8; // ST38_4@8 int v9; // ST34_4@8 unsigned int v10; // ST30_4@8 int v11; // ST2C_4@8 int v12; // ST24_4@8 int v13; // ST20_4@8 int v14; // ST1C_4@8 char *v15; // eax@8 char v16; // [sp+4h] [bp-184h]@8 char v17; // [sp+104h] [bp-84h]@2 unsigned int v18; // [sp+184h] [bp-4h]@1 int v19; // [sp+188h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; *(_DWORD *)(a2 + 300) = 1; if ( sub_43CA00((void *)a2) ) { *(_DWORD *)(a2 + 276) = 2; do { if ( sub_43D270(*(_DWORD *)(a2 + 296), a1, a2, a2) ) { if ( (**(int (__thiscall ***)(_DWORD, _DWORD))(a2 + 312))(a2 + 312, a2 + 188) ) { *(_DWORD *)(a2 + 280) = 0; } else { v4 = *(_DWORD *)(a2 + 320); if ( *(_BYTE *)(v4 + 220) ) { a1 = (int)inet_ntoa(*(struct in_addr *)(v4 + 16)); v5 = ntohs(*(_WORD *)(v4 + 14)); v6 = *(_DWORD *)(a2 + 272); v7 = *(_DWORD *)(v4 + 268); v8 = *(_DWORD *)(v4 + 264); v9 = *(_WORD *)(v4 + 260) & 0x3FF; v10 = (unsigned int)*(_WORD *)(v4 + 260) >> 10; v11 = v5; v12 = *(_DWORD *)(v4 + 8); v13 = *(_DWORD *)(v4 + 232); v14 = *(_DWORD *)(v4 + 228); v15 = sub_440CF0(*(_DWORD *)(v4 + 224)); sprintf( &v16, "*Work failed (%-25s world=%3d zone=%3d, %- 5d=%15s:%- 5d) (DEP=%d,CMD=%d,LEN=%d,WORK=%d, WorkerID=%d)", v15, v14, v13, v12, a1, v11, v10, v9, v8, v7, v6); sub_446350(1, "Msg", "%s", &v16); } *(_DWORD *)(a2 + 280) = 0; } } else { Sleep(2u); } } while ( *(_DWORD *)(a2 + 276) == 2 ); sub_46D360(a2 + 4684); sprintf(&v17, "", *(_DWORD *)(a2 + 272)); sub_446350(1, "Msg", "%s", &v17); *(_DWORD *)(a2 + 276) = 4; *(_DWORD *)(a2 + 300) = 0; result = 0; } else { v2 = *(_DWORD *)(a2 + 272); *(_DWORD *)(a2 + 276) = 4; sprintf(&v17, "", v2); sub_446350(1, "Msg", "%s", &v17); result = 0; } return result; } // 46D360: using guessed type int __thiscall sub_46D360(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (0043CCF0) -------------------------------------------------------- HANDLE __thiscall sub_43CCF0(LPVOID lpParameter, int a2, int a3, int a4) { LPVOID v4; // esi@1 HANDLE result; // eax@1 v4 = lpParameter; *((_DWORD *)lpParameter + 68) = a3; *((_QWORD *)lpParameter + 36) = a3; *((_DWORD *)lpParameter + 70) = 0; *((_DWORD *)lpParameter + 74) = a2; *((_DWORD *)lpParameter + 69) = 1; result = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)StartAddress, lpParameter, 0, (LPDWORD)lpParameter + 77); *((_DWORD *)v4 + 76) = result; if ( result ) { if ( a4 ) { while ( *((_DWORD *)v4 + 69) == 1 ) Sleep(5u); result = (HANDLE)(*((_DWORD *)v4 + 69) == 2); } else { result = HANDLE_FLAG_INHERIT; } } return result; } //----- (0043CDA0) -------------------------------------------------------- void __thiscall sub_43CDA0(int this) { int v1; // ebx@1 void **v2; // esi@1 signed int v3; // edi@1 *(_DWORD *)(this + 12) = &off_4B634C; v1 = this + 4112; v2 = (void **)(this + 16); v3 = 1024; do { if ( *v2 != (void *)v1 ) sub_48DB99(*v2); ++v2; --v3; } while ( v3 ); } // 4B634C: using guessed type int (__thiscall *off_4B634C)(void *, char); //----- (0043CDE0) -------------------------------------------------------- int (__stdcall **__thiscall sub_43CDE0(void *this))(int, int) { int v1; // esi@1 void **v2; // edi@1 signed int v3; // ebx@1 v1 = (int)this; *(_DWORD *)this = &off_4B8A10; sub_43CA90((int)this); sub_464270((void *)(v1 + 4712)); sub_44E6F0(v1 + 4684); *(_DWORD *)(v1 + 324) = &off_4B634C; v2 = (void **)(v1 + 328); v3 = 1024; do { if ( *v2 != (void *)(v1 + 4424) ) sub_48DB99(*v2); ++v2; --v3; } while ( v3 ); return sub_44BA70(v1); } // 4B634C: using guessed type int (__thiscall *off_4B634C)(void *, char); // 4B8A10: using guessed type int (__thiscall *off_4B8A10)(void *, char); //----- (0043CE90) -------------------------------------------------------- int __thiscall sub_43CE90(int this) { int v1; // esi@1 v1 = this; sub_44BAF0(this); *(_DWORD *)v1 = &off_4B8A10; sub_439A50(v1 + 312); sub_46C700(v1 + 4684); *(_DWORD *)(v1 + 276) = 0; *(_DWORD *)(v1 + 300) = 0; return v1; } // 4B8A10: using guessed type int (__thiscall *off_4B8A10)(void *, char); //----- (0043CF10) -------------------------------------------------------- void *__thiscall sub_43CF10(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_43CDE0(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0043CF40) -------------------------------------------------------- void __thiscall sub_43CF40(int this) { int v1; // esi@1 int v2; // edi@2 int v3; // ecx@3 void *v4; // ST00_4@6 v1 = this; if ( *(_DWORD *)(this + 2097216) ) { v2 = 0; if ( *(_DWORD *)(this + 2097212) > 0 ) { do { v3 = *(_DWORD *)(*(_DWORD *)(v1 + 2097216) + 4 * v2); if ( v3 ) { (**(void (__stdcall ***)(_DWORD))v3)(1); *(_DWORD *)(*(_DWORD *)(v1 + 2097216) + 4 * v2) = 0; } ++v2; } while ( v2 < *(_DWORD *)(v1 + 2097212) ); } v4 = *(void **)(v1 + 2097216); *(_DWORD *)(v1 + 2097212) = 0; operator delete(v4); *(_DWORD *)(v1 + 2097216) = 0; } } //----- (0043CFC0) -------------------------------------------------------- void __thiscall sub_43CFC0(int this, int a2) { int v2; // edi@1 int v3; // ebx@3 int v4; // edx@3 signed int v5; // esi@6 int v6; // eax@7 signed int v7; // edx@13 int v8; // eax@14 int v9; // ecx@14 int v10; // [sp+4h] [bp-4h]@3 v2 = this; if ( *(_DWORD *)(this + 2097220) ) { if ( a2 == -1 ) { v3 = *(_DWORD *)(this + 2097212); v4 = 0; v10 = 0; } else { v10 = a2; v4 = a2; v3 = a2 + 1; } while ( 1 ) { v5 = 0; if ( v4 >= v3 ) goto LABEL_24; do { v6 = *(_DWORD *)(*(_DWORD *)(v2 + 2097216) + 4 * v4); switch ( *(_DWORD *)(v6 + 276) ) { case 4: *(_DWORD *)(v6 + 276) = 0; break; case 2: *(_DWORD *)(v6 + 276) = 3; goto LABEL_10; case 1: case 3: LABEL_10: v5 = 1; break; default: break; } ++v4; } while ( v4 < v3 ); if ( !v5 ) { LABEL_24: v7 = 1; if ( *(_DWORD *)(v2 + 2097212) <= 0 ) goto LABEL_25; v8 = *(_DWORD *)(v2 + 2097216); v9 = *(_DWORD *)(v2 + 2097212); do { if ( *(_DWORD *)(*(_DWORD *)v8 + 276) ) v7 = 0; v8 += 4; --v9; } while ( v9 ); if ( v7 ) { LABEL_25: sub_43CF40(v2); *(_DWORD *)(v2 + 2097220) = 0; return; } if ( a2 != -1 ) return; Sleep(2u); } v4 = v10; } } } //----- (0043D0D0) -------------------------------------------------------- void *__thiscall sub_43D0D0(void *this) { void *v1; // esi@1 v1 = this; sub_44EBE0((int)((char *)this + 2097160)); *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 524303) = 0; *((_DWORD *)v1 + 524304) = 0; *(_DWORD *)v1 = 0; *((_DWORD *)v1 + 524296) = *((_DWORD *)v1 + 524291); InitializeCriticalSection((LPCRITICAL_SECTION)((char *)v1 + 2097188)); return v1; } //----- (0043D110) -------------------------------------------------------- void __thiscall sub_43D110(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; sub_43CFC0(this, -1); sub_43CF40(v1); v2 = *(_DWORD *)(v1 + 2097184); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 2097164) = v2; DeleteCriticalSection((LPCRITICAL_SECTION)(v1 + 2097188)); sub_44E8E0(v1 + 2097160); } //----- (0043D190) -------------------------------------------------------- int __thiscall sub_43D190(int this, int a2, const void *a3, size_t a4) { int v4; // esi@1 int v5; // eax@1 int v6; // edi@1 struct _RTL_CRITICAL_SECTION *lpCriticalSection; // [sp+Ch] [bp-4h]@1 v4 = this; lpCriticalSection = (struct _RTL_CRITICAL_SECTION *)(this + 2097188); EnterCriticalSection((LPCRITICAL_SECTION)(this + 2097188)); v5 = *(_DWORD *)(v4 + 4); v6 = 0; if ( v5 + a4 + 4 <= 0x200000 ) { *(_DWORD *)(v5 + v4 + 8) = a2; memmove_0((void *)(*(_DWORD *)(v4 + 4) + v4 + 12), a3, a4); *(_DWORD *)(v4 + 4) += a4 + 4; v6 = 2097152 - *(_DWORD *)(v4 + 4); } LeaveCriticalSection(lpCriticalSection); return v6; } //----- (0043D200) -------------------------------------------------------- signed int __thiscall sub_43D200(int this, unsigned int a2) { int v2; // esi@1 signed int result; // eax@2 int v4; // eax@3 v2 = this; if ( a2 <= *(_DWORD *)(this + 4) ) { EnterCriticalSection((LPCRITICAL_SECTION)(this + 2097188)); v4 = *(_DWORD *)(v2 + 4); if ( a2 == v4 ) { *(_DWORD *)(v2 + 4) = 0; LeaveCriticalSection((LPCRITICAL_SECTION)(v2 + 2097188)); result = 1; } else { memmove_0((void *)(v2 + 8), (const void *)(a2 + v2 + 8), v4 - a2); *(_DWORD *)(v2 + 4) -= a2; LeaveCriticalSection((LPCRITICAL_SECTION)(v2 + 2097188)); result = 1; } } else { result = 0; } return result; } //----- (0043D270) -------------------------------------------------------- int __userpurge sub_43D270(int a1, int a2, int a3, int a4) { int v4; // esi@1 unsigned int v5; // ecx@1 int v7; // ST08_4@3 int v8; // ebx@3 int (__thiscall *v9)(_DWORD, _DWORD, _DWORD); // edx@3 int v10; // eax@3 int v11; // eax@4 int v12; // edi@9 size_t v13; // ebx@9 int v14; // edx@9 int v15; // eax@9 unsigned __int8 v16; // cf@9 __int64 v17; // qax@9 char v18; // [sp+4h] [bp-10h]@9 LPCRITICAL_SECTION lpCriticalSection; // [sp+8h] [bp-Ch]@1 int v20; // [sp+Ch] [bp-8h]@3 int v21; // [sp+10h] [bp-4h]@1 v4 = a1; lpCriticalSection = (LPCRITICAL_SECTION)(a1 + 2097188); EnterCriticalSection((LPCRITICAL_SECTION)(a1 + 2097188)); v5 = *(_DWORD *)(v4 + 4); v21 = 1; if ( v5 <= 5 ) { LeaveCriticalSection(lpCriticalSection); return 0; } v7 = a2; v8 = *(_DWORD *)(v4 + 8); *(_DWORD *)(v4 + 2097164) = v4 + 12; *(_DWORD *)(v4 + 2097172) = v4 + 12; v9 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)(v4 + 2097160) + 12); *(_DWORD *)(v4 + 2097180) = v5; v20 = v8; v10 = v9(v4 + 2097160, a3, v7); if ( !v10 ) goto LABEL_7; v11 = v10 - 1; if ( !v11 ) { v12 = a4; v13 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)(v4 + 2097160) + 16))(v4 + 2097160, &v18); memmove(*(void **)(a4 + 192), *(const void **)(v4 + 2097164), v13); v14 = *(_DWORD *)(a4 + 192); v15 = v20; *(_DWORD *)(a4 + 208) = v13; *(_DWORD *)(a4 + 200) = v14; *(_DWORD *)(a4 + 320) = v15; *(_DWORD *)(a4 + 280) = 1; sub_43D200(v4, v13 + 4); v16 = __CFADD__((*(_DWORD *)(v4 + 2097224))++, 1); v17 = *(_DWORD *)(v4 + 2097212); *(_DWORD *)(v4 + 2097228) += v16; v16 = __CFADD__((_DWORD)v17, *(_DWORD *)(a4 + 288)); *(_DWORD *)(v12 + 288) += v17; *(_DWORD *)(v12 + 292) += HIDWORD(v17) + v16; goto LABEL_8; } if ( v11 == 1 ) { sub_449D40(v8 + 8, (HANDLE *)&unk_4DFF64); LABEL_7: v21 = 0; } LABEL_8: LeaveCriticalSection(lpCriticalSection); return v21; } // 43D270: could not find valid save-restore pair for ebx //----- (0043D3A0) -------------------------------------------------------- DWORD __thiscall sub_43D3A0(int this, DWORD a2, int a3) { int v3; // esi@1 DWORD v4; // ebx@1 int v5; // edi@5 int v6; // eax@6 int v7; // ecx@6 int v8; // ebx@8 DWORD result; // eax@11 struct _SYSTEM_INFO SystemInfo; // [sp+10h] [bp-34h]@2 int v11; // [sp+34h] [bp-10h]@6 int v12; // [sp+40h] [bp-4h]@6 v3 = this; sub_43CFC0(this, -1); v4 = a2; *(_DWORD *)(v3 + 2097224) = 0; *(_DWORD *)(v3 + 2097228) = 0; *(_DWORD *)(v3 + 2097232) = 0; *(_DWORD *)(v3 + 2097236) = 0; if ( a2 == -1 ) { GetSystemInfo(&SystemInfo); a2 = 10 * SystemInfo.dwNumberOfProcessors + 1; if ( (signed int)a2 <= 81 ) { v4 = 10 * SystemInfo.dwNumberOfProcessors + 1; } else { a2 = 81; v4 = 81; } } v5 = 0; *(_DWORD *)(v3 + 2097216) = unknown_libname_17(4 * v4 | -((unsigned __int64)v4 >> 30 != 0)); *(_DWORD *)(v3 + 2097220) = 1; if ( (signed int)v4 <= 0 ) { LABEL_11: *(_DWORD *)(v3 + 2097212) = v4; sub_446310("", v4); result = v4; } else { while ( 1 ) { v6 = operator new(0x12A8u); v11 = v6; v7 = 0; v12 = 0; if ( v6 ) v7 = sub_43CE90(v6); *(_QWORD *)(v7 + 288) = v5; *(_DWORD *)(*(_DWORD *)(v3 + 2097216) + 4 * v5) = v7; *(_DWORD *)(v7 + 316) = v7; v8 = v5 + 1; v12 = -1; *(_DWORD *)(v3 + 2097212) = v5 + 1; if ( !sub_43CCF0((LPVOID)v7, v3, v5, a3) ) break; ++v5; if ( v8 >= (signed int)a2 ) { v4 = a2; goto LABEL_11; } } sub_43CFC0(v3, -1); result = 0; } return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (0043D500) -------------------------------------------------------- int __thiscall sub_43D500(int this) { int v1; // esi@1 v1 = this; sub_445090(this); return v1; } //----- (0043D510) -------------------------------------------------------- int __thiscall sub_43D510(int this, LPCSTR lpFileName) { int v2; // esi@1 v2 = this; sub_444F50(this); return sub_445940(v2, lpFileName, 0, 1025, 0); } //----- (0043D540) -------------------------------------------------------- signed int __thiscall sub_43D540(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@1 int v5; // eax@3 signed int result; // eax@5 int v7; // [sp+Ch] [bp-4h]@1 v3 = this; v4 = 0; v7 = sub_443D90(this); if ( v7 <= 0 ) { LABEL_5: result = 0; } else { while ( 1 ) { if ( !*(_DWORD *)sub_443DA0(v3, v4) ) { v5 = *(_DWORD *)sub_443DF0(v3, v4, 0); *(_DWORD *)a2 = v5; if ( v5 == a3 ) break; } ++v4; if ( v4 >= v7 ) goto LABEL_5; } *(_DWORD *)(a2 + 4) = sub_443DF0(v3, v4, 1); *(_DWORD *)(a2 + 8) = *(_DWORD *)sub_443DF0(v3, v4, 2); *(_DWORD *)(a2 + 12) = *(_DWORD *)sub_443DF0(v3, v4, 3); *(_DWORD *)(a2 + 16) = *(_DWORD *)sub_443DF0(v3, v4, 4); *(_DWORD *)(a2 + 20) = *(_DWORD *)sub_443DF0(v3, v4, 5); *(_DWORD *)(a2 + 24) = *(_DWORD *)sub_443DF0(v3, v4, 6); *(_DWORD *)(a2 + 28) = *(_DWORD *)sub_443DF0(v3, v4, 7); *(_DWORD *)(a2 + 32) = *(_DWORD *)sub_443DF0(v3, v4, 8); *(_DWORD *)(a2 + 36) = *(_DWORD *)sub_443DF0(v3, v4, 9); *(_DWORD *)(a2 + 40) = sub_443DF0(v3, v4, 10); result = 1; } return result; } //----- (0043D640) -------------------------------------------------------- signed int __thiscall sub_43D640(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 v3 = this; if ( *(_DWORD *)sub_443DA0(this, a3) == 2 ) { *(_DWORD *)a2 = *(_DWORD *)sub_443DF0(v3, a3, 0); *(_DWORD *)(a2 + 4) = *(_DWORD *)sub_443DF0(v3, a3, 1); result = 1; } else { result = 0; } return result; } //----- (0043D690) -------------------------------------------------------- signed int __thiscall sub_43D690(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 v3 = this; if ( *(_DWORD *)sub_443DA0(this, a3) == 3 ) { *(_DWORD *)a2 = *(_DWORD *)sub_443DF0(v3, a3, 0); *(_DWORD *)(a2 + 4) = *(_DWORD *)sub_443DF0(v3, a3, 1); result = 1; } else { result = 0; } return result; } //----- (0043D6E0) -------------------------------------------------------- signed int __thiscall sub_43D6E0(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 v3 = this; if ( *(_DWORD *)sub_443DA0(this, a3) == 5 ) { *(_DWORD *)a2 = *(_DWORD *)sub_443DF0(v3, a3, 0); *(_DWORD *)(a2 + 4) = *(_DWORD *)sub_443DF0(v3, a3, 1); *(_DWORD *)(a2 + 8) = *(_DWORD *)sub_443DF0(v3, a3, 2); *(_DWORD *)(a2 + 12) = *(_DWORD *)sub_443DF0(v3, a3, 3); result = 1; } else { result = 0; } return result; } //----- (0043D760) -------------------------------------------------------- signed int __thiscall sub_43D760(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@1 int v5; // eax@3 signed int result; // eax@5 int v7; // [sp+Ch] [bp-4h]@1 v3 = this; v4 = 0; v7 = sub_443D90(this); if ( v7 <= 0 ) { LABEL_5: result = 0; } else { while ( 1 ) { if ( !*(_DWORD *)sub_443DA0(v3, v4) ) { v5 = *(_DWORD *)sub_443DF0(v3, v4, 0); *(_DWORD *)a2 = v5; if ( v5 == a3 ) break; } ++v4; if ( v4 >= v7 ) goto LABEL_5; } *(_DWORD *)(a2 + 4) = sub_443DF0(v3, v4, 1); *(_DWORD *)(a2 + 8) = *(_DWORD *)sub_443DF0(v3, v4, 2); *(_DWORD *)(a2 + 12) = *(_DWORD *)sub_443DF0(v3, v4, 3); *(_DWORD *)(a2 + 16) = *(_DWORD *)sub_443DF0(v3, v4, 4); *(_DWORD *)(a2 + 20) = *(_DWORD *)sub_443DF0(v3, v4, 5); *(_DWORD *)(a2 + 24) = *(_DWORD *)sub_443DF0(v3, v4, 6); *(_DWORD *)(a2 + 28) = *(_DWORD *)sub_443DF0(v3, v4, 7); *(_DWORD *)(a2 + 32) = *(_DWORD *)sub_443DF0(v3, v4, 8); result = 1; } return result; } //----- (0043D840) -------------------------------------------------------- signed int __thiscall sub_43D840(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 v3 = this; if ( *(_DWORD *)sub_443DA0(this, a3) == 1 ) { *(_DWORD *)a2 = *(_DWORD *)sub_443DF0(v3, a3, 0); *(_DWORD *)(a2 + 4) = *(_DWORD *)sub_443DF0(v3, a3, 1); *(_DWORD *)(a2 + 8) = *(_DWORD *)sub_443DF0(v3, a3, 2); result = 1; } else { result = 0; } return result; } //----- (0043D8A0) -------------------------------------------------------- int __thiscall sub_43D8A0(void *this) { *(_DWORD *)this = &off_4B8A50; return sub_48E063(this); } // 4B8A50: using guessed type int (__thiscall *off_4B8A50)(void *, char); //----- (0043D8B0) -------------------------------------------------------- void *__thiscall sub_43D8B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B8A50; sub_48E063(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B8A50: using guessed type int (__thiscall *off_4B8A50)(void *, char); //----- (0043D8E0) -------------------------------------------------------- void *__thiscall sub_43D8E0(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_4B8A50; return v2; } // 48E06E: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 4B8A50: using guessed type int (__thiscall *off_4B8A50)(void *, char); //----- (0043D900) -------------------------------------------------------- int __stdcall sub_43D900(size_t a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0xFFFFFFFF || (result = operator new(a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_4B8A50; _CxxThrowException(&v2, &unk_4D145C); } } return result; } // 48DFE9: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 4B8A50: using guessed type int (__thiscall *off_4B8A50)(void *, char); //----- (0043D950) -------------------------------------------------------- int __thiscall sub_43D950(int this, unsigned int a2, unsigned int a3) { int v3; // esi@1 unsigned int v4; // eax@1 int v5; // edi@3 int v6; // eax@3 unsigned int v7; // edx@6 int v8; // ebx@7 int v9; // edx@10 int v10; // eax@12 bool v11; // cf@12 v3 = this; v4 = *(_DWORD *)(this + 16); if ( v4 < a2 ) sub_48B4EB((int)"invalid string position"); v5 = a3; v6 = v4 - a2; if ( v6 < a3 ) v5 = v6; if ( v5 ) { v7 = *(_DWORD *)(this + 20); if ( v7 < 0x10 ) v8 = this; else v8 = *(_DWORD *)this; if ( v7 < 0x10 ) v9 = this; else v9 = *(_DWORD *)this; memmove_0((void *)(a2 + v9), (const void *)(v5 + a2 + v8), v6 - v5); v10 = *(_DWORD *)(v3 + 16) - v5; v11 = *(_DWORD *)(v3 + 20) < 0x10u; *(_DWORD *)(v3 + 16) = v10; if ( !v11 ) { *(_BYTE *)(*(_DWORD *)v3 + v10) = 0; return v3; } *(_BYTE *)(v3 + v10) = 0; } return v3; } //----- (0043D9E0) -------------------------------------------------------- void *__usercall sub_43D9E0(int a1, int a2, unsigned int a3, size_t a4) { void *v4; // edi@1 unsigned int v5; // esi@1 unsigned int v6; // ebx@3 unsigned int v7; // ecx@3 int v8; // eax@6 const void *v9; // eax@14 void *result; // eax@19 int v11; // [sp-10h] [bp-38h]@1 int (__thiscall **v12)(void *, char); // [sp+0h] [bp-28h]@11 int v13; // [sp+10h] [bp-18h]@10 int v14; // [sp+14h] [bp-14h]@1 int *v15; // [sp+18h] [bp-10h]@1 int v16; // [sp+1Ch] [bp-Ch]@1 int (__cdecl *v17)(EXCEPTION_RECORD *, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // [sp+20h] [bp-8h]@1 int v18; // [sp+24h] [bp-4h]@1 void *v19; // [sp+30h] [bp+8h]@9 v18 = -1; v17 = sub_4A9670; v16 = a1; v11 = a1; v15 = &v11; v4 = (void *)a2; v14 = a2; v5 = a3 | 0xF; if ( (a3 | 0xF) <= 0xFFFFFFFE ) { v6 = *(_DWORD *)(a2 + 20); v7 = *(_DWORD *)(a2 + 20) >> 1; if ( v7 > v5 / 3 ) { v5 = v7 + v6; if ( v6 > -2 - v7 ) v5 = -2; } } else { v5 = a3; } v8 = 0; v18 = 0; if ( v5 != -1 ) { if ( v5 + 1 > 0xFFFFFFFF || (v8 = operator new(v5 + 1)) == 0 ) { v13 = 0; std::exception::exception(&v13); v12 = &off_4B8A50; _CxxThrowException(&v12, &unk_4D145C); } } v19 = (void *)v8; if ( a4 ) { if ( *((_DWORD *)v4 + 5) < 0x10u ) v9 = v4; else v9 = *(const void **)v4; memmove(v19, v9, a4); } if ( *((_DWORD *)v4 + 5) >= 0x10u ) operator delete(*(void **)v4); result = v19; *(_BYTE *)v4 = 0; *(_DWORD *)v4 = v19; *((_DWORD *)v4 + 5) = v5; *((_DWORD *)v4 + 4) = a4; if ( v5 >= 0x10 ) v4 = v19; *((_BYTE *)v4 + a4) = 0; return result; } // 48DFE9: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 4B8A50: using guessed type int (__thiscall *off_4B8A50)(void *, char); //----- (0043DB1B) -------------------------------------------------------- void __usercall sub_43DB1B(int a1) { int v1; // esi@1 v1 = *(_DWORD *)(a1 - 20); if ( *(_DWORD *)(v1 + 20) >= 0x10u ) operator delete(*(void **)v1); *(_DWORD *)(v1 + 20) = 15; *(_DWORD *)(v1 + 16) = 0; *(_BYTE *)v1 = 0; _CxxThrowException(0, 0); } // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0043DBA0) -------------------------------------------------------- unsigned int __thiscall sub_43DBA0(int this, unsigned int a2) { unsigned int result; // eax@1 int v3; // esi@1 int v4; // ebx@4 int v5; // edi@4 result = a2; v3 = this; if ( a2 > 0x3FFFFFFF ) sub_48B49E((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 2 < a2 ) { v4 = sub_46E560(a2); memmove_0((void *)v4, *(const void **)v3, 4 * ((*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 2)); v5 = (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 2; if ( *(_DWORD *)v3 ) operator delete(*(void **)v3); result = a2; *(_DWORD *)v3 = v4; *(_DWORD *)(v3 + 8) = v4 + 4 * a2; *(_DWORD *)(v3 + 4) = v4 + 4 * v5; } return result; } //----- (0043DC20) -------------------------------------------------------- int __thiscall sub_43DC20(void *this, int a2, unsigned int a3, unsigned int a4) { int v4; // esi@1 int v5; // ecx@1 unsigned int v6; // edi@1 unsigned int v7; // edi@3 int result; // eax@6 unsigned int v9; // eax@9 void *v10; // eax@14 bool v11; // cf@20 v4 = (int)this; v5 = a2; v6 = *(_DWORD *)(a2 + 16); if ( v6 < a3 ) sub_48B4EB((int)"invalid string position"); v7 = v6 - a3; if ( a4 < v7 ) v7 = a4; if ( v4 == a2 ) { sub_43D950(v4, a3 + v7, 0xFFFFFFFFu); sub_43D950(v4, 0, a3); return v4; } if ( v7 > 0xFFFFFFFE ) sub_48B49E((int)"string too long"); v9 = *(_DWORD *)(v4 + 20); if ( v9 < v7 ) { sub_43D9E0(*(_DWORD *)(v4 + 16), v4, v7, *(_DWORD *)(v4 + 16)); v5 = a2; if ( !v7 ) return v4; LABEL_11: if ( *(_DWORD *)(v5 + 20) >= 0x10u ) v5 = *(_DWORD *)v5; if ( *(_DWORD *)(v4 + 20) < 0x10u ) v10 = (void *)v4; else v10 = *(void **)v4; memmove(v10, (const void *)(a3 + v5), v7); v11 = *(_DWORD *)(v4 + 20) < 0x10u; *(_DWORD *)(v4 + 16) = v7; if ( !v11 ) { *(_BYTE *)(*(_DWORD *)v4 + v7) = 0; return v4; } *(_BYTE *)(v4 + v7) = 0; return v4; } if ( v7 ) goto LABEL_11; *(_DWORD *)(v4 + 16) = 0; if ( v9 < 0x10 ) { result = v4; *(_BYTE *)v4 = 0; } else { **(_BYTE **)v4 = 0; result = v4; } return result; } //----- (0043DD10) -------------------------------------------------------- int __thiscall sub_43DD10(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4B8A98; *(_DWORD *)(this + 24) = 15; *(_DWORD *)(this + 20) = 0; *(_BYTE *)(this + 4) = 0; sub_46FEC0(this, 0); return v1; } // 4B8A98: using guessed type int (*off_4B8A98)(); //----- (0043DD70) -------------------------------------------------------- signed int __cdecl sub_43DD70() { return 15; } //----- (0043DDB0) -------------------------------------------------------- int __thiscall sub_43DDB0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4B8ABC; *(_DWORD *)(this + 24) = 15; *(_DWORD *)(this + 20) = 0; *(_BYTE *)(this + 4) = 0; sub_46FEC0(this, 0); return v1; } // 4B8ABC: using guessed type int (*off_4B8ABC)(); //----- (0043DE40) -------------------------------------------------------- unsigned int __thiscall sub_43DE40(int this, int a2) { int v2; // eax@1 unsigned int result; // eax@3 int v4; // edx@3 unsigned int v5; // edx@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 2; if ( 1073741823 - a2 < (unsigned int)v2 ) sub_48B49E((int)"vector too long"); result = a2 + v2; v4 = (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 2; if ( result > v4 ) { if ( 1073741823 - ((unsigned int)v4 >> 1) >= v4 ) v5 = ((unsigned int)v4 >> 1) + v4; else v5 = 0; if ( v5 < result ) v5 = result; result = sub_43DBA0(this, v5); } return result; } //----- (0043DEA0) -------------------------------------------------------- int __thiscall sub_43DEA0(int this, char *a2, size_t a3) { int v3; // esi@1 unsigned int v4; // ecx@2 unsigned int v5; // eax@3 int v6; // eax@7 int result; // eax@11 int v8; // eax@15 void *v9; // eax@18 bool v10; // cf@24 v3 = this; if ( a2 ) { v4 = *(_DWORD *)(this + 20); v5 = v4 < 0x10 ? v3 : *(_DWORD *)v3; if ( (unsigned int)a2 >= v5 ) { v6 = v4 < 0x10 ? v3 : *(_DWORD *)v3; if ( v6 + *(_DWORD *)(v3 + 16) > (unsigned int)a2 ) { if ( v4 < 0x10 ) result = sub_43DC20((void *)v3, v3, (unsigned int)&a2[-v3], a3); else result = sub_43DC20((void *)v3, v3, (unsigned int)&a2[-*(_DWORD *)v3], a3); return result; } } } if ( a3 > 0xFFFFFFFE ) sub_48B49E((int)"string too long"); v8 = *(_DWORD *)(v3 + 20); if ( v8 < a3 ) { sub_43D9E0(v8, v3, a3, *(_DWORD *)(v3 + 16)); if ( !a3 ) return v3; LABEL_17: if ( *(_DWORD *)(v3 + 20) < 0x10u ) v9 = (void *)v3; else v9 = *(void **)v3; memmove(v9, a2, a3); v10 = *(_DWORD *)(v3 + 20) < 0x10u; *(_DWORD *)(v3 + 16) = a3; if ( !v10 ) { *(_BYTE *)(*(_DWORD *)v3 + a3) = 0; return v3; } *(_BYTE *)(v3 + a3) = 0; return v3; } if ( a3 ) goto LABEL_17; *(_DWORD *)(v3 + 16) = 0; if ( (unsigned int)v8 < 0x10 ) { result = v3; *(_BYTE *)v3 = 0; } else { **(_BYTE **)v3 = 0; result = v3; } return result; } //----- (0043DFA0) -------------------------------------------------------- int __thiscall sub_43DFA0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; return result; } //----- (0043DFB0) -------------------------------------------------------- void __thiscall sub_43DFB0(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 36) ) operator delete(*(void **)(this + 36)); *(_DWORD *)(v1 + 36) = 0; *(_DWORD *)(v1 + 40) = 0; *(_DWORD *)(v1 + 44) = 0; } //----- (0043DFE0) -------------------------------------------------------- int __thiscall sub_43DFE0(int this, unsigned int a2) { int v2; // esi@1 unsigned int v3; // eax@1 int v4; // edi@3 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)this > a2 ) { if ( v3 == *(_DWORD *)(this + 8) ) sub_43DE40(this, 1); result = *(_DWORD *)(v2 + 4); if ( result ) *(_DWORD *)result = *(_DWORD *)a2; } else { v4 = (signed int)(a2 - *(_DWORD *)this) >> 2; if ( v3 == *(_DWORD *)(this + 8) ) sub_43DE40(this, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)(*(_DWORD *)v2 + 4 * v4); *(_DWORD *)(v2 + 4) += 4; return result; } } *(_DWORD *)(v2 + 4) += 4; return result; } //----- (0043E050) -------------------------------------------------------- int __thiscall sub_43E050(int this, char *a2) { return sub_43DEA0(this, a2, strlen(a2)); } //----- (0043E080) -------------------------------------------------------- signed int __thiscall sub_43E080(void *lpCriticalSection, LONG a2) { void *v2; // esi@1 bool v3; // zf@2 HANDLE v4; // eax@5 int v5; // eax@6 unsigned int v6; // edi@7 int v7; // eax@8 int v8; // eax@9 int v9; // edx@11 unsigned int v11; // ebx@14 int v12; // ecx@15 struct _SYSTEM_INFO SystemInfo; // [sp+10h] [bp-30h]@2 int v14; // [sp+3Ch] [bp-4h]@8 v2 = lpCriticalSection; if ( a2 ) { *((_DWORD *)lpCriticalSection + 7) = a2; } else { GetSystemInfo(&SystemInfo); v3 = 10 * SystemInfo.dwNumberOfProcessors >> 1 == 0; *((_DWORD *)v2 + 7) = 10 * SystemInfo.dwNumberOfProcessors >> 1; if ( v3 ) *((_DWORD *)v2 + 7) = 1; } InitializeCriticalSection((LPCRITICAL_SECTION)v2); v4 = CreateSemaphoreA(0, *((_DWORD *)v2 + 7), *((_DWORD *)v2 + 7), 0); *((_DWORD *)v2 + 6) = v4; if ( v4 ) { v5 = unknown_libname_17(4 * *((_DWORD *)v2 + 7) | -((unsigned __int64)*((_DWORD *)v2 + 7) >> 30 != 0)); *((_DWORD *)v2 + 8) = v5; if ( v5 ) { v6 = 0; if ( !*((_DWORD *)v2 + 7) ) return 1; while ( 1 ) { v7 = operator new(0x1D6C0u); v14 = 0; v8 = v7 ? sub_47BB10(v7, (int)"http://bip.srv.gsc.gas.gamigo.com:8080/gameserverconnector-webapp-fiesta-us/sso") : 0; *(_DWORD *)(*((_DWORD *)v2 + 8) + 4 * v6) = v8; v9 = *((_DWORD *)v2 + 8); v3 = *(_DWORD *)(v9 + 4 * v6) == 0; v14 = -1; if ( v3 ) break; sub_43DFE0((int)((char *)v2 + 36), v9 + 4 * v6++); if ( v6 >= *((_DWORD *)v2 + 7) ) return 1; } v11 = 0; if ( v6 ) { do { v12 = *(_DWORD *)(*((_DWORD *)v2 + 8) + 4 * v11); if ( v12 ) (**(void (__stdcall ***)(_DWORD))v12)(1); ++v11; } while ( v11 < v6 ); } sub_48DB99(*((void **)v2 + 8)); } } return 0; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (0043E1E0) -------------------------------------------------------- signed int __thiscall sub_43E1E0(int this, int a2, int a3) { int v3; // esi@1 bool v4; // zf@1 DWORD v5; // eax@3 int v6; // eax@6 int v7; // edi@6 int v8; // ST1C_4@8 char *v9; // eax@8 char v10; // dl@9 int v11; // ebx@10 unsigned int v12; // edi@11 const char *v13; // eax@12 unsigned int v15; // [sp-10h] [bp-38B8h]@1 int v16; // [sp+0h] [bp-38A8h]@6 int v17; // [sp+4h] [bp-38A4h]@1 int v18; // [sp+8h] [bp-38A0h]@1 char v19; // [sp+Ch] [bp-389Ch]@5 int v20; // [sp+11h] [bp-3897h]@5 int v21; // [sp+15h] [bp-3893h]@5 char v22; // [sp+19h] [bp-388Fh]@14 int (**v23)(); // [sp+2010h] [bp-1898h]@8 void *v24; // [sp+2014h] [bp-1894h]@8 int v25; // [sp+2024h] [bp-1884h]@8 unsigned int v26; // [sp+2028h] [bp-1880h]@8 int (**v27)(); // [sp+2034h] [bp-1874h]@8 char *v28; // [sp+2038h] [bp-1870h]@8 int v29; // [sp+2048h] [bp-1860h]@8 unsigned int v30; // [sp+204Ch] [bp-185Ch]@8 char v31; // [sp+2058h] [bp-1850h]@11 char v32; // [sp+2858h] [bp-1050h]@11 char v33; // [sp+3858h] [bp-50h]@8 _BYTE v34[3]; // [sp+3859h] [bp-4Fh]@10 unsigned int v35; // [sp+3898h] [bp-10h]@1 int v36; // [sp+38A4h] [bp-4h]@5 int v37; // [sp+38A8h] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v15 = (unsigned int)&v37 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)(this + 32) == 0; v17 = a2; v18 = a3; if ( v4 ) { sub_446350(1, "Msg", "%s", "cUKItemShop::Recv_NC_MISC_ITEMSHOP_URL_DB_REQ : Not Init Soap"); } else { v5 = WaitForSingleObject(*(HANDLE *)(this + 24), 0); if ( v5 ) { if ( v5 == 258 ) { sub_44E180((int)&v19); v20 = *(_DWORD *)a2; v36 = 6; v21 = 12354; sub_44E310((int)&v19, 0x871u, 8u, 0); sub_43BFB0(a3, (int)&v19); v36 = -1; nullsub_1(&v19); } } else { EnterCriticalSection((LPCRITICAL_SECTION)v3); v6 = *(_DWORD *)(v3 + 40); v7 = *(_DWORD *)(v6 - 4); v16 = *(_DWORD *)(v6 - 4); if ( *(_DWORD *)(v3 + 36) != v6 ) *(_DWORD *)(v3 + 40) = v6 - 4; LeaveCriticalSection((LPCRITICAL_SECTION)v3); v23 = &off_4B8A98; v26 = 15; v25 = 0; LOBYTE(v24) = 0; v36 = 0; sub_46FEC0((int)&v23, 0); v36 = 1; v27 = &off_4B8ABC; v30 = 15; v29 = 0; LOBYTE(v28) = 0; LOBYTE(v36) = 2; sub_46FEC0((int)&v27, 0); v8 = *(_DWORD *)(a2 + 4); LOBYTE(v36) = 3; sprintf(&v33, "%d", v8, v15); v9 = &v33; do v10 = *v9++; while ( v10 ); sub_43DEA0((int)&v24, &v33, v9 - v34); v11 = (*(int (__thiscall **)(int, int (***)(), int (***)()))(*(_DWORD *)v7 + 68))(v7, &v23, &v27); sub_44E180((int)&v19); if ( v11 ) { v20 = *(_DWORD *)v17; LOBYTE(v36) = 4; v21 = 12355; sub_44E310((int)&v19, 0x871u, 8u, 0); sub_43BFB0(v18, (int)&v19); (*(void (__thiscall **)(int, char *, signed int))(*(_DWORD *)v7 + 52))(v7, &v31, 2048); sprintf(&v32, "ERROR - cUKItemShop::Recv_NC_MISC_ITEMSHOP_URL_DB_REQ : soap fail ErrCode : %d\n%s", v11, &v31); sub_446350(1, "Msg", "%s", &v32); LOBYTE(v36) = 3; nullsub_1(&v19); v12 = 16; } else { v13 = v28; v20 = *(_DWORD *)v17; v12 = 16; LOBYTE(v36) = 5; LOWORD(v21) = 12352; HIWORD(v21) = v29; if ( v30 < 0x10 ) v13 = (const char *)&v28; strncpy(&v22, v13, (unsigned __int16)v29); sub_44E310((int)&v19, 0x871u, HIWORD(v21) + 8, 0); sub_43BFB0(v18, (int)&v19); LOBYTE(v36) = 3; nullsub_1(&v19); } EnterCriticalSection((LPCRITICAL_SECTION)v3); sub_43DFE0(v3 + 36, (unsigned int)&v16); LeaveCriticalSection((LPCRITICAL_SECTION)v3); if ( !ReleaseSemaphore(*(HANDLE *)(v3 + 24), 1, 0) ) sub_446350(1, "Msg", "%s", "ERROR - cUKItemShop::Recv_NC_MISC_ITEMSHOP_URL_DB_REQ Semaphore Release Error"); v27 = &off_4B8ABC; if ( v30 >= v12 ) operator delete(v28); v30 = 15; v29 = 0; LOBYTE(v28) = 0; v23 = &off_4B8A98; if ( v26 >= v12 ) operator delete(v24); } } return 1; } // 4B8A98: using guessed type int (*off_4B8A98)(); // 4B8ABC: using guessed type int (*off_4B8ABC)(); // 4DE38C: using guessed type int __security_cookie; //----- (0043E600) -------------------------------------------------------- int __fastcall sub_43E600(int a1) { int v1; // edi@1 unsigned int v2; // eax@1 int v3; // esi@4 char v5; // [sp+8h] [bp-4h]@4 v1 = a1; std::_Lockit::_Lockit(0); v2 = *(_DWORD *)(v1 + 4); if ( v2 && v2 < 0xFFFFFFFF ) *(_DWORD *)(v1 + 4) = v2 - 1; v3 = *(_DWORD *)(v1 + 4) == 0 ? v1 : 0; std::_Lockit::__Lockit(&v5); return v3; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (0043E650) -------------------------------------------------------- void __thiscall sub_43E650(void *this) { int v1; // edi@1 unsigned int v2; // eax@2 int v3; // esi@5 int v4; // esi@5 char v5; // [sp+4h] [bp-4h]@5 v1 = *(_DWORD *)this; if ( *(_DWORD *)this ) { std::_Lockit::_Lockit(0); v2 = *(_DWORD *)(v1 + 4); if ( v2 && v2 < 0xFFFFFFFF ) *(_DWORD *)(v1 + 4) = v2 - 1; v3 = -(*(_DWORD *)(v1 + 4) == 0); std::_Lockit::__Lockit(&v5); v4 = v1 & v3; if ( v4 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v4)(v4, 1); } } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (0043E6A0) -------------------------------------------------------- void *__thiscall sub_43E6A0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B8C28; if ( a2 & 1 ) operator delete(this); return v2; } // 4B8C28: using guessed type int (__thiscall *off_4B8C28)(void *, char); //----- (0043E6D0) -------------------------------------------------------- int __thiscall sub_43E6D0(int this, int a2) { int v2; // esi@1 int v3; // edi@1 unsigned int v4; // eax@1 v2 = **(_DWORD **)(this + 48); v3 = a2; *(_DWORD *)a2 = v2; std::_Lockit::_Lockit(0); v4 = *(_DWORD *)(v2 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(v2 + 4) = v4 + 1; std::_Lockit::__Lockit(&a2); return v3; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (0043E710) -------------------------------------------------------- void *__thiscall sub_43E710(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B8C30; std::ios_base::_Ios_base_dtor(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 48BC34: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 4B8C30: using guessed type int (__thiscall *off_4B8C30)(void *, char); //----- (0043E740) -------------------------------------------------------- int __thiscall sub_43E740(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_4B8C38; *(_DWORD *)(this + 48) = 0; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 52) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; return result; } // 4B8C38: using guessed type int (__thiscall *off_4B8C38)(void *, char); //----- (0043E770) -------------------------------------------------------- char __cdecl sub_43E770(int a1, int a2) { char result; // al@1 int v3; // ecx@1 char i; // [sp+Fh] [bp+Fh]@1 result = a2; v3 = a2 - 1; for ( i = a2; v3 >= 0; i = result ) { *(_BYTE *)(v3 + a1) ^= result; result = i ^ ((v3 & 0xF) + 85) ^ (unsigned __int8)(11 * v3) ^ 0xAA; --v3; } return result; } //----- (0043E7B0) -------------------------------------------------------- int __thiscall sub_43E7B0(int this, unsigned int a2) { int v2; // eax@1 int result; // eax@2 v2 = *(_DWORD *)(this + 52); if ( v2 && a2 < *(_DWORD *)(v2 + 40) ) result = *(_DWORD *)(*(_DWORD *)(this + 60) + 4 * a2); else result = 0; return result; } //----- (0043E850) -------------------------------------------------------- __int64 __thiscall sub_43E850(int this) { __int64 result; // qax@2 if ( **(_DWORD **)(this + 32) ) result = **(_DWORD **)(this + 48); else result = 0i64; return result; } //----- (0043E870) -------------------------------------------------------- __int64 __thiscall sub_43E870(int this) { __int64 result; // qax@2 if ( **(_DWORD **)(this + 36) ) result = **(_DWORD **)(this + 52); else result = 0i64; return result; } //----- (0043E890) -------------------------------------------------------- int __thiscall sub_43E890(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; if ( *(_BYTE *)(this + 64) & 1 ) operator delete(**(void ***)(this + 16)); **(_DWORD **)(v1 + 16) = 0; **(_DWORD **)(v1 + 32) = 0; **(_DWORD **)(v1 + 48) = 0; **(_DWORD **)(v1 + 20) = 0; result = *(_DWORD *)(v1 + 36); *(_DWORD *)result = 0; **(_DWORD **)(v1 + 52) = 0; *(_DWORD *)(v1 + 64) &= 0xFFFFFFFEu; *(_DWORD *)(v1 + 60) = 0; return result; } //----- (0043E8F0) -------------------------------------------------------- void *__thiscall sub_43E8F0(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_48E063(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0043E920) -------------------------------------------------------- int __thiscall sub_43E920(int this, unsigned __int8 a2) { return _Tolower(a2, (const _Ctypevec *)(this + 8)); } //----- (0043E940) -------------------------------------------------------- int *__thiscall sub_43E940(void *this, int *a2, int *a3) { int *v3; // esi@1 const _Ctypevec *v4; // edi@2 v3 = a2; if ( a2 != a3 ) { v4 = (const _Ctypevec *)((char *)this + 8); do { *(_BYTE *)v3 = _Tolower(*(_BYTE *)v3, v4); v3 = (int *)((char *)v3 + 1); } while ( v3 != a3 ); } return v3; } //----- (0043E970) -------------------------------------------------------- int __thiscall sub_43E970(int this, unsigned __int8 a2) { return _Toupper(a2, (const _Ctypevec *)(this + 8)); } //----- (0043E990) -------------------------------------------------------- int *__thiscall sub_43E990(void *this, int *a2, int *a3) { int *v3; // esi@1 const _Ctypevec *v4; // edi@2 v3 = a2; if ( a2 != a3 ) { v4 = (const _Ctypevec *)((char *)this + 8); do { *(_BYTE *)v3 = _Toupper(*(_BYTE *)v3, v4); v3 = (int *)((char *)v3 + 1); } while ( v3 != a3 ); } return v3; } //----- (0043E9C0) -------------------------------------------------------- char __stdcall sub_43E9C0(char a1) { return a1; } //----- (0043E9D0) -------------------------------------------------------- int __stdcall sub_43E9D0(const void *a1, int a2, void *a3) { memmove(a3, a1, a2 - (_DWORD)a1); return a2; } //----- (0043EA00) -------------------------------------------------------- char __stdcall sub_43EA00(char a1, int a2) { return a1; } //----- (0043EA10) -------------------------------------------------------- int __stdcall sub_43EA10(const void *a1, int a2, int a3, void *a4) { memmove(a4, a1, a2 - (_DWORD)a1); return a2; } //----- (0043EA40) -------------------------------------------------------- void *__thiscall sub_43EA40(void *this, char a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; v3 = *((_DWORD *)this + 5); *(_DWORD *)this = &off_4B8C6C; if ( v3 <= 0 ) { if ( v3 < 0 ) sub_48DB99(*((void **)this + 4)); } else { free(*((void **)this + 4)); } *(_DWORD *)v2 = &off_4B8C28; if ( a2 & 1 ) operator delete(v2); return v2; } // 4B8C28: using guessed type int (__thiscall *off_4B8C28)(void *, char); // 4B8C6C: using guessed type int (__thiscall *off_4B8C6C)(void *, char); //----- (0043EAA0) -------------------------------------------------------- int __thiscall sub_43EAA0(int this, char a2, int a3) { int result; // eax@1 int v4; // ecx@1 int (__thiscall **v5)(void *, char); // edi@5 int (__thiscall **v6)(void *, char); // edi@8 int (__thiscall **v7)(void *, char); // edi@10 int (__thiscall **v8)(void *, char); // [sp+0h] [bp-14h]@6 int v9; // [sp+Ch] [bp-8h]@6 int (__thiscall **v10)(void *, char); // [sp+10h] [bp-4h]@6 result = a2 & 0x17; *(_DWORD *)(this + 12) = result; v4 = result & *(_DWORD *)(this + 16); if ( v4 ) { if ( (_BYTE)a3 ) _CxxThrowException(0, 0); if ( v4 & 4 ) { v5 = sub_48BB70(); a3 = (int)"ios_base::badbit set"; std::exception::exception(&a3); v9 = 1; v10 = v5; v8 = &off_4B8CA0; _CxxThrowException(&v8, &unk_4D15C4); } if ( v4 & 2 ) { v6 = sub_48BB70(); a3 = (int)"ios_base::failbit set"; std::exception::exception(&a3); v9 = 1; v10 = v6; v8 = &off_4B8CA0; _CxxThrowException(&v8, &unk_4D15C4); } v7 = sub_48BB70(); a3 = (int)"ios_base::eofbit set"; std::exception::exception(&a3); v9 = 1; v10 = v7; v8 = &off_4B8CA0; _CxxThrowException(&v8, &unk_4D15C4); } return result; } // 48DFE9: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 4B8CA0: using guessed type int (__thiscall *off_4B8CA0)(void *, char); //----- (0043EB80) -------------------------------------------------------- void *__thiscall sub_43EB80(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_4B8C1C; return v2; } // 48E06E: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 4B8C1C: using guessed type int (__thiscall *off_4B8C1C)(void *, char); //----- (0043EBA0) -------------------------------------------------------- void *__thiscall sub_43EBA0(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_4B8C94; *((_DWORD *)v2 + 3) = *(_DWORD *)(a2 + 12); *((_DWORD *)v2 + 4) = *(_DWORD *)(a2 + 16); return v2; } // 48E06E: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 4B8C94: using guessed type int (__thiscall *off_4B8C94)(void *, char); //----- (0043EBD0) -------------------------------------------------------- int __thiscall sub_43EBD0(int this) { int v1; // esi@1 int result; // eax@1 int v3; // ebx@1 unsigned int v4; // eax@2 char v5; // [sp+Ch] [bp-8h]@4 int v6; // [sp+10h] [bp-4h]@2 v1 = this; *(_DWORD *)(this + 48) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 513; *(_DWORD *)(this + 24) = 6; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; sub_43EAA0(this, 0, 0); result = operator new(4u); v3 = result; if ( result ) { *(_DWORD *)result = std::locale::_Init(); v6 = sub_48B801(); std::_Lockit::_Lockit(0); v4 = *(_DWORD *)(v6 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(v6 + 4) = v4 + 1; result = std::_Lockit::__Lockit(&v5); *(_DWORD *)(v1 + 48) = v3; } else { *(_DWORD *)(v1 + 48) = 0; } return result; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 48BA42: using guessed type int std__locale___Init(void); //----- (0043EC60) -------------------------------------------------------- void *__thiscall sub_43EC60(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_4B8C94; *((_DWORD *)v2 + 3) = *(_DWORD *)(a2 + 12); *((_DWORD *)v2 + 4) = *(_DWORD *)(a2 + 16); *(_DWORD *)v2 = &off_4B8CA0; return v2; } // 48E06E: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 4B8C94: using guessed type int (__thiscall *off_4B8C94)(void *, char); // 4B8CA0: using guessed type int (__thiscall *off_4B8CA0)(void *, char); //----- (0043EC90) -------------------------------------------------------- void __thiscall sub_43EC90(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4B8C38; if ( *(_DWORD *)(this + 8) ) { operator delete(*(void **)(this + 52)); *(_DWORD *)(v1 + 52) = 0; *(_DWORD *)(v1 + 56) = 0; } *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 16) = 0; if ( *(_DWORD *)(v1 + 12) ) sub_48DB99(*(void **)(v1 + 60)); *(_DWORD *)(v1 + 12) = 0; } // 4B8C38: using guessed type int (__thiscall *off_4B8C38)(void *, char); //----- (0043ECF0) -------------------------------------------------------- int __thiscall sub_43ECF0(int this) { int v1; // esi@1 void *v2; // ebx@1 int v3; // edi@2 unsigned int v4; // eax@3 int v5; // esi@6 int v6; // esi@6 char v8; // [sp+8h] [bp-8h]@6 int v9; // [sp+Ch] [bp-4h]@1 v1 = this; v2 = *(void **)(this + 56); v9 = this; *(_DWORD *)this = &off_4B8CF4; if ( v2 ) { v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 ) { std::_Lockit::_Lockit(0); v4 = *(_DWORD *)(v3 + 4); if ( v4 && v4 < 0xFFFFFFFF ) *(_DWORD *)(v3 + 4) = v4 - 1; v5 = -(*(_DWORD *)(v3 + 4) == 0); std::_Lockit::__Lockit(&v8); v6 = v3 & v5; if ( v6 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v6)(v6, 1); v1 = v9; } operator delete(v2); } return std::_Mutex::__Mutex(v1 + 4); } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 48BD9E: using guessed type int __thiscall std___Mutex____Mutex(_DWORD); // 4B8CF4: using guessed type int (__thiscall *off_4B8CF4)(void *, char); //----- (0043ED70) -------------------------------------------------------- int __thiscall sub_43ED70(int this) { return unknown_libname_4(*(LPCRITICAL_SECTION *)(this + 4)); } //----- (0043ED80) -------------------------------------------------------- void __thiscall sub_43ED80(int this) { sub_48BE4F(*(LPCRITICAL_SECTION *)(this + 4)); } //----- (0043ED90) -------------------------------------------------------- __int64 __cdecl sub_43ED90() { return 0i64; } //----- (0043EDA0) -------------------------------------------------------- signed int __cdecl sub_43EDA0() { return -1; } //----- (0043EDB0) -------------------------------------------------------- void *__thiscall sub_43EDB0(void *this, int a2, int a3, int a4) { return this; } //----- (0043EDC0) -------------------------------------------------------- int __thiscall sub_43EDC0(void *this) { void *v1; // esi@1 int result; // eax@1 int v3; // eax@2 int *v4; // ecx@2 v1 = this; result = (*(int (**)(void))(*(_DWORD *)this + 24))(); if ( result != -1 ) { --**((_DWORD **)v1 + 12); v3 = *((_DWORD *)v1 + 8); v4 = (int *)(*(_DWORD *)v3)++; result = *(_BYTE *)v4; } return result; } //----- (0043EDF0) -------------------------------------------------------- __int64 __thiscall sub_43EDF0(void *this, char *a2, __int64 a3) { int v3; // ebx@1 __int64 v4; // qax@2 unsigned int v5; // edi@2 size_t v6; // esi@2 int v7; // eax@8 unsigned int v8; // kr04_4@9 __int64 v10; // [sp+4h] [bp-8h]@1 v3 = (int)this; v10 = 0i64; if ( a3 > 0 ) { do { v4 = sub_43E850(v3); v5 = HIDWORD(v4); v6 = v4; if ( SHIDWORD(v4) >= 0 && (SHIDWORD(v4) > 0 || (_DWORD)v4) ) { if ( a3 < v4 ) { v5 = HIDWORD(a3); v6 = a3; } memmove(a2, **(const void ***)(v3 + 32), v6); a2 += v6; v10 += __PAIR__(v5, v6); a3 -= __PAIR__(v5, v6); **(_DWORD **)(v3 + 48) -= v6; **(_DWORD **)(v3 + 32) += v6; } else { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 28))(v3); if ( v7 == -1 ) return v10; v8 = v10; LODWORD(v10) = v10 + 1; *a2++ = v7; HIDWORD(v10) = (__PAIR__(HIDWORD(v10), v8) + 1) >> 32; --a3; } } while ( SHIDWORD(a3) > 0 || SHIDWORD(a3) >= 0 && (_DWORD)a3 ); } return v10; } //----- (0043EEC0) -------------------------------------------------------- __int64 __thiscall sub_43EEC0(void *this, char *a2, __int64 a3) { int v3; // ebx@1 __int64 v4; // qax@2 unsigned int v5; // edi@2 size_t v6; // esi@2 __int64 v8; // [sp+4h] [bp-8h]@1 v3 = (int)this; v8 = 0i64; if ( a3 > 0 ) { do { v4 = sub_43E870(v3); v5 = HIDWORD(v4); v6 = v4; if ( SHIDWORD(v4) >= 0 && (SHIDWORD(v4) > 0 || (_DWORD)v4) ) { if ( a3 < v4 ) { v5 = HIDWORD(a3); v6 = a3; } memmove(**(void ***)(v3 + 36), a2, v6); a2 += v6; v8 += __PAIR__(v5, v6); a3 -= __PAIR__(v5, v6); **(_DWORD **)(v3 + 52) -= v6; **(_DWORD **)(v3 + 36) += v6; } else { if ( (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 12))(v3, (unsigned __int8)*a2) == -1 ) return v8; ++a2; ++v8; --a3; } } while ( SHIDWORD(a3) > 0 || SHIDWORD(a3) >= 0 && (_DWORD)a3 ); } return v8; } //----- (0043EF90) -------------------------------------------------------- int __stdcall sub_43EF90(int a1, int a2, int a3, int a4, int a5) { int result; // eax@1 int v6; // edx@1 result = a1; v6 = dword_4C905C; *(_DWORD *)a1 = dword_4C9058; *(_DWORD *)(a1 + 4) = v6; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; return result; } // 4C9058: using guessed type int dword_4C9058; // 4C905C: using guessed type int dword_4C905C; //----- (0043EFC0) -------------------------------------------------------- int __stdcall sub_43EFC0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int result; // eax@1 int v9; // edx@1 result = a1; v9 = dword_4C905C; *(_DWORD *)a1 = dword_4C9058; *(_DWORD *)(a1 + 4) = v9; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; return result; } // 4C9058: using guessed type int dword_4C9058; // 4C905C: using guessed type int dword_4C905C; //----- (0043EFF0) -------------------------------------------------------- signed int __thiscall sub_43EFF0(int this, signed int a2) { unsigned int v2; // eax@1 signed int result; // eax@7 v2 = **(_DWORD **)(this + 32); if ( !v2 || v2 <= **(_DWORD **)(this + 16) || a2 != -1 && (_BYTE)a2 != *(_BYTE *)(v2 - 1) && *(_BYTE *)(this + 64) & 2 ) { result = -1; } else { ++**(_DWORD **)(this + 48); --**(_DWORD **)(this + 32); if ( a2 == -1 ) { result = 0; } else { ***(_BYTE ***)(this + 32) = a2; result = a2; } } return result; } //----- (0043F040) -------------------------------------------------------- signed int __thiscall sub_43F040(int this) { unsigned int *v1; // edx@1 unsigned int v2; // esi@1 signed int result; // eax@2 int v4; // edi@3 unsigned int v5; // eax@6 v1 = *(unsigned int **)(this + 32); v2 = *v1; if ( *v1 ) { v4 = *(_DWORD *)(this + 48); if ( v2 >= v2 + *(_DWORD *)v4 ) { if ( *(_BYTE *)(this + 64) & 4 || (v5 = **(_DWORD **)(this + 36)) == 0 || v5 <= v2 && *(_DWORD *)(this + 60) <= v2 ) { result = -1; } else { if ( *(_DWORD *)(this + 60) < v5 ) *(_DWORD *)(this + 60) = v5; *(_DWORD *)v4 = *(_DWORD *)(this + 60) - *v1; result = ***(_BYTE ***)(this + 32); } } else { result = *(_BYTE *)v2; } } else { result = -1; } return result; } //----- (0043F0B0) -------------------------------------------------------- int __thiscall sub_43F0B0(int this, int a2, __int64 a3, int a4, char a5) { unsigned int *v5; // edx@1 unsigned int v6; // eax@1 int v7; // eax@5 int v8; // ebx@7 int v9; // esi@7 int v10; // edi@15 int v11; // edi@16 int v12; // eax@17 int v13; // edx@18 int v14; // eax@18 int v15; // edi@29 int v16; // edi@30 int result; // eax@33 v5 = *(unsigned int **)(this + 36); v6 = *v5; if ( *v5 && *(_DWORD *)(this + 60) < v6 ) *(_DWORD *)(this + 60) = v6; if ( !(a5 & 1) || (v7 = **(_DWORD **)(this + 32)) == 0 ) { if ( a5 & 2 && *v5 ) { if ( a4 == 2 ) { v8 = (unsigned __int64)(*(_DWORD *)(this + 60) - **(_DWORD **)(this + 16) + a3) >> 32; v9 = *(_DWORD *)(this + 60) - **(_DWORD **)(this + 16) + a3; } else { if ( a4 == 1 ) { v8 = (unsigned __int64)((signed int)(*v5 - **(_DWORD **)(this + 16)) + a3) >> 32; v9 = *v5 - **(_DWORD **)(this + 16) + a3; } else { if ( a4 ) { v9 = dword_4C9058; v8 = dword_4C905C; } else { v8 = HIDWORD(a3); v9 = a3; } } } if ( v8 >= 0 ) { v15 = **(_DWORD **)(this + 16); if ( (signed __int64)__PAIR__(v8, v9) <= *(_DWORD *)(this + 60) - v15 ) { v16 = v9 + v15 - *v5; **(_DWORD **)(this + 52) -= v16; **(_DWORD **)(this + 36) += v16; goto LABEL_33; } } } else { v8 = HIDWORD(a3); v9 = a3; if ( !a3 ) goto LABEL_33; } LABEL_32: v9 = dword_4C9058; v8 = dword_4C905C; goto LABEL_33; } if ( a4 != 2 ) { if ( a4 == 1 ) { if ( !(a5 & 2) ) { v8 = (unsigned __int64)(v7 - **(_DWORD **)(this + 16) + a3) >> 32; v9 = v7 - **(_DWORD **)(this + 16) + a3; goto LABEL_14; } } else { if ( !a4 ) { v8 = HIDWORD(a3); v9 = a3; goto LABEL_14; } } v9 = dword_4C9058; v8 = dword_4C905C; goto LABEL_14; } v8 = (unsigned __int64)(*(_DWORD *)(this + 60) - **(_DWORD **)(this + 16) + a3) >> 32; v9 = *(_DWORD *)(this + 60) - **(_DWORD **)(this + 16) + a3; LABEL_14: if ( v8 < 0 || (v10 = **(_DWORD **)(this + 16), (signed __int64)__PAIR__(v8, v9) > *(_DWORD *)(this + 60) - v10) ) goto LABEL_32; v11 = v9 + v10 - v7; **(_DWORD **)(this + 48) -= v11; **(_DWORD **)(this + 32) += v11; if ( a5 & 2 ) { v12 = *(_DWORD *)(this + 36); if ( *(_DWORD *)v12 ) { v13 = **(_DWORD **)(this + 32); v14 = *(_DWORD *)v12 + **(_DWORD **)(this + 52); **(_DWORD **)(this + 36) = v13; **(_DWORD **)(this + 52) = v14 - v13; } } LABEL_33: result = a2; *(_DWORD *)a2 = v9; *(_DWORD *)(a2 + 4) = v8; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(a2 + 16) = 0; return result; } // 4C9058: using guessed type int dword_4C9058; // 4C905C: using guessed type int dword_4C905C; //----- (0043F270) -------------------------------------------------------- int __thiscall sub_43F270(int this, int a2, __int64 a3, int a4, int a5, int a6, int a7, char a8) { int v8; // ebx@1 int v9; // esi@1 unsigned int *v10; // edi@1 unsigned int v11; // eax@1 int v12; // edx@4 int v13; // edi@9 int v14; // edi@10 int v15; // eax@11 int v16; // edx@12 int v17; // eax@12 int v18; // edi@16 int v19; // edi@17 int result; // eax@20 int v21; // [sp+Ch] [bp-4h]@7 unsigned int v22; // [sp+34h] [bp+24h]@14 v10 = *(unsigned int **)(this + 36); v11 = *v10; v8 = (unsigned __int64)(a3 + a4) >> 32; v9 = a3 + a4; if ( *v10 && *(_DWORD *)(this + 60) < v11 ) *(_DWORD *)(this + 60) = v11; v12 = dword_4C9058; if ( v9 != dword_4C9058 || v8 != dword_4C905C ) { if ( a8 & 1 && (v21 = **(_DWORD **)(this + 32)) != 0 ) { if ( v8 < 0 ) { LABEL_19: v8 = dword_4C905C; v9 = v12; goto LABEL_20; } v13 = **(_DWORD **)(this + 16); if ( (signed __int64)__PAIR__(v8, v9) <= *(_DWORD *)(this + 60) - v13 ) { v14 = v9 + v13 - v21; **(_DWORD **)(this + 48) -= v14; **(_DWORD **)(this + 32) += v14; if ( a8 & 2 ) { v15 = *(_DWORD *)(this + 36); if ( *(_DWORD *)v15 ) { v16 = **(_DWORD **)(this + 32); v17 = *(_DWORD *)v15 + **(_DWORD **)(this + 52); **(_DWORD **)(this + 36) = v16; **(_DWORD **)(this + 52) = v17 - v16; } } goto LABEL_20; } } else { if ( !(a8 & 2) || (v22 = *v10) == 0 || v8 < 0 ) goto LABEL_19; v18 = **(_DWORD **)(this + 16); if ( (signed __int64)__PAIR__(v8, v9) <= *(_DWORD *)(this + 60) - v18 ) { v19 = v9 + v18 - v22; **(_DWORD **)(this + 52) -= v19; **(_DWORD **)(this + 36) += v19; goto LABEL_20; } } v12 = dword_4C9058; goto LABEL_19; } LABEL_20: result = a2; *(_DWORD *)a2 = v9; *(_DWORD *)(a2 + 4) = v8; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(a2 + 16) = 0; return result; } // 4C9058: using guessed type int dword_4C9058; // 4C905C: using guessed type int dword_4C905C; //----- (0043F390) -------------------------------------------------------- void *__thiscall sub_43F390(void *this, char a2) { void *v2; // esi@1 v2 = (char *)this - 8; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 2) + 4) - 8) = &off_4B8C54; *(_DWORD *)this = &off_4B8C30; std::ios_base::_Ios_base_dtor(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 48BC34: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 4B8C30: using guessed type int (__thiscall *off_4B8C30)(void *, char); // 4B8C54: using guessed type int (__stdcall *off_4B8C54)(char); //----- (0043F3D0) -------------------------------------------------------- void *__thiscall sub_43F3D0(void *this, char a2) { void *v2; // esi@1 v2 = (char *)this - 16; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 4) + 4) - 16) = &off_4B8C5C; *(_DWORD *)this = &off_4B8C30; std::ios_base::_Ios_base_dtor(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 48BC34: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 4B8C30: using guessed type int (__thiscall *off_4B8C30)(void *, char); // 4B8C5C: using guessed type int (__stdcall *off_4B8C5C)(char); //----- (0043F410) -------------------------------------------------------- void *__thiscall sub_43F410(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_43ECF0((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0043F440) -------------------------------------------------------- void *__thiscall sub_43F440(void *this, char a2) { void *v2; // esi@1 v2 = (char *)this - 24; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 6) + 4) - 24) = &off_4B8C64; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 2) + 4) - 8) = &off_4B8C54; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 6) + 4) - 24) = &off_4B8C5C; *(_DWORD *)this = &off_4B8C30; std::ios_base::_Ios_base_dtor(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 48BC34: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 4B8C30: using guessed type int (__thiscall *off_4B8C30)(void *, char); // 4B8C54: using guessed type int (__stdcall *off_4B8C54)(char); // 4B8C5C: using guessed type int (__stdcall *off_4B8C5C)(char); // 4B8C64: using guessed type int (__stdcall *off_4B8C64)(char); //----- (0043F4A0) -------------------------------------------------------- void *__thiscall sub_43F4A0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B8D34; sub_43E890((int)this); sub_43ECF0((int)v2); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B8D34: using guessed type int (__thiscall *off_4B8D34)(void *, char); //----- (0043F4D0) -------------------------------------------------------- void *__thiscall sub_43F4D0(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // ebx@2 unsigned int v4; // eax@2 char v6; // [sp+14h] [bp-10h]@4 int v7; // [sp+20h] [bp-4h]@1 v1 = this; *(_DWORD *)this = &off_4B8CF4; std::_Mutex::_Mutex((char *)this + 4); v7 = 0; v2 = operator new(4u); if ( v2 ) { *(_DWORD *)v2 = std::locale::_Init(); v3 = sub_48B801(); std::_Lockit::_Lockit(0); v4 = *(_DWORD *)(v3 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(v3 + 4) = v4 + 1; std::_Lockit::__Lockit(&v6); } else { v2 = 0; } *((_DWORD *)v1 + 4) = (char *)v1 + 8; *((_DWORD *)v1 + 8) = (char *)v1 + 24; *((_DWORD *)v1 + 9) = (char *)v1 + 28; *((_DWORD *)v1 + 14) = v2; *((_DWORD *)v1 + 5) = (char *)v1 + 12; *((_DWORD *)v1 + 12) = (char *)v1 + 40; *((_DWORD *)v1 + 13) = (char *)v1 + 44; *((_DWORD *)v1 + 3) = 0; **((_DWORD **)v1 + 9) = 0; **((_DWORD **)v1 + 13) = 0; **((_DWORD **)v1 + 4) = 0; **((_DWORD **)v1 + 8) = 0; **((_DWORD **)v1 + 12) = 0; return v1; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 48BA42: using guessed type int std__locale___Init(void); // 48BD84: using guessed type int __thiscall std___Mutex___Mutex(_DWORD); // 4B8CF4: using guessed type int (__thiscall *off_4B8CF4)(void *, char); //----- (0043F5C0) -------------------------------------------------------- char __thiscall sub_43F5C0(int this, int a2, size_t a3, char a4) { char result; // al@4 if ( a3 == 1 ) { if ( *(_DWORD *)(this + 20) >= 0x10u ) this = *(_DWORD *)this; result = a4; *(_BYTE *)(this + a2) = a4; } else { if ( *(_DWORD *)(this + 20) >= 0x10u ) this = *(_DWORD *)this; result = (unsigned int)memset((void *)(a2 + this), a4, a3); } return result; } //----- (0043F600) -------------------------------------------------------- void __thiscall sub_43F600(int this) { int v1; // esi@1 v1 = this; sub_48DB99(*(void **)(this + 8)); sub_48DB99(*(void **)(v1 + 16)); sub_48DB99(*(void **)(v1 + 20)); } //----- (0043F630) -------------------------------------------------------- char __thiscall sub_43F630(void *this, int a2, char a3) { void *v3; // ebx@1 struct lconv *v4; // eax@1 const char *v5; // edi@1 unsigned int v6; // kr00_4@3 void *v7; // eax@3 void *v8; // eax@3 void *v9; // eax@3 int v10; // esi@3 int v11; // edx@3 char result; // al@3 int v13; // [sp+0h] [bp-28h]@1 void *v14; // [sp+10h] [bp-18h]@1 int v15; // [sp+14h] [bp-14h]@1 int *v16; // [sp+18h] [bp-10h]@1 int v17; // [sp+24h] [bp-4h]@1 v16 = &v13; v3 = this; v14 = this; v4 = localeconv(); v15 = (int)v4; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)v3 + 4) = 0; *((_DWORD *)v3 + 5) = 0; v17 = 0; v5 = &byte_4B4667; if ( !a3 ) v5 = v4->grouping; _Getcvt(); v6 = strlen(v5); v7 = (void *)unknown_libname_17(v6 + 1); memcpy(v7, v5, v6 + 1); *((_DWORD *)v3 + 2) = v7; _Getcvt(); v8 = (void *)unknown_libname_17(6); memcpy(v8, "false", 6u); *((_DWORD *)v3 + 4) = v8; _Getcvt(); v9 = (void *)unknown_libname_17(5); memcpy(v9, "true", 5u); *((_DWORD *)v3 + 5) = v9; _Getcvt(); v10 = v15; *((_BYTE *)v3 + 12) = **(_BYTE **)v15; _Getcvt(); v11 = *(_DWORD *)(v10 + 4); result = *(_BYTE *)v11; *((_BYTE *)v3 + 13) = *(_BYTE *)v11; if ( a3 ) { _Getcvt(); *((_BYTE *)v3 + 12) = 46; result = (unsigned __int64)_Getcvt(); *((_BYTE *)v3 + 13) = 44; } return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (0043F758) -------------------------------------------------------- void __usercall sub_43F758(int a1) { sub_43F600(*(_DWORD *)(a1 - 24)); _CxxThrowException(0, 0); } // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0043F770) -------------------------------------------------------- void *__thiscall sub_43F770(void *this, char *a2) { void *v2; // esi@1 int (__thiscall **v4)(void *, char); // [sp+Ch] [bp-1Ch]@3 void *v5; // [sp+18h] [bp-10h]@1 int v6; // [sp+24h] [bp-4h]@1 v2 = this; v5 = this; std::_Lockit::_Lockit(0); v6 = 0; *((_DWORD *)v2 + 1) = 0; *((_BYTE *)v2 + 8) = 0; *((_DWORD *)v2 + 3) = 0; *((_BYTE *)v2 + 16) = 0; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 24) = 0; *((_DWORD *)v2 + 7) = 0; *((_BYTE *)v2 + 32) = 0; LOBYTE(v6) = 4; if ( !a2 ) { a2 = "bad locale name"; std::exception::exception(&a2); v4 = &off_4B8C1C; _CxxThrowException(&v4, &unk_4D16C0); } std::_Locinfo::_Locinfo_ctor(v2, a2); return v2; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B952: using guessed type _DWORD __cdecl std___Locinfo___Locinfo_ctor(_DWORD, char *); // 48DFE9: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 4B8C1C: using guessed type int (__thiscall *off_4B8C1C)(void *, char); //----- (0043F820) -------------------------------------------------------- int __thiscall sub_43F820(void *this) { void *v1; // esi@1 v1 = this; std::_Locinfo::_Locinfo_dtor(this); if ( *((_DWORD *)v1 + 7) ) free(*((void **)v1 + 7)); *((_DWORD *)v1 + 7) = 0; if ( *((_DWORD *)v1 + 5) ) free(*((void **)v1 + 5)); *((_DWORD *)v1 + 5) = 0; if ( *((_DWORD *)v1 + 3) ) free(*((void **)v1 + 3)); *((_DWORD *)v1 + 3) = 0; if ( *((_DWORD *)v1 + 1) ) free(*((void **)v1 + 1)); *((_DWORD *)v1 + 1) = 0; return std::_Lockit::__Lockit(v1); } // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 48B8DF: using guessed type _DWORD __cdecl std___Locinfo___Locinfo_dtor(_DWORD); //----- (0043F8D0) -------------------------------------------------------- signed int __cdecl sub_43F8D0(int a1, int a2) { char v2; // bl@1 int v3; // esi@3 char *v4; // eax@5 _Ctypevec *v5; // eax@7 char v7; // [sp+Ch] [bp-44h]@7 char v8; // [sp+30h] [bp-20h]@7 int v9; // [sp+40h] [bp-10h]@1 int v10; // [sp+4Ch] [bp-4h]@3 v2 = 0; v9 = 0; if ( a1 && !*(_DWORD *)a1 ) { v3 = operator new(0x18u); v9 = v3; v10 = 0; if ( v3 ) { if ( *(_DWORD *)(*(_DWORD *)a2 + 24) ) v4 = *(char **)(*(_DWORD *)a2 + 24); else v4 = (char *)(*(_DWORD *)a2 + 28); sub_43F770(&v7, v4); v2 = 1; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)v3 = &off_4B8C6C; v5 = _Getctype((_Ctypevec *)&v8); *(_DWORD *)(v3 + 8) = v5->_Hand; *(_DWORD *)(v3 + 12) = v5->_Page; *(_DWORD *)(v3 + 16) = v5->_Table; *(_DWORD *)(v3 + 20) = v5->_Delfl; } else { v3 = 0; } v10 = -1; *(_DWORD *)a1 = v3; if ( v2 & 1 ) sub_43F820(&v7); } return 2; } // 4B8C6C: using guessed type int (__thiscall *off_4B8C6C)(void *, char); //----- (0043F9B0) -------------------------------------------------------- void *__thiscall sub_43F9B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B8C38; if ( *((_DWORD *)this + 2) ) { operator delete(*((void **)this + 13)); *((_DWORD *)v2 + 13) = 0; *((_DWORD *)v2 + 14) = 0; } *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 4) = 0; if ( *((_DWORD *)v2 + 3) ) sub_48DB99(*((void **)v2 + 15)); *((_DWORD *)v2 + 3) = 0; if ( a2 & 1 ) operator delete(v2); return v2; } // 4B8C38: using guessed type int (__thiscall *off_4B8C38)(void *, char); //----- (0043FA10) -------------------------------------------------------- int __thiscall sub_43FA10(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // esi@3 int v4; // eax@3 int result; // eax@3 int v6; // edx@5 int v7; // eax@6 int *v8; // ecx@6 int **v9; // eax@9 v1 = this; v2 = **((_DWORD **)this + 8); if ( !v2 ) goto LABEL_15; if ( **((_DWORD **)this + 12) > 1 ) { --**((_DWORD **)this + 12); v3 = *((_DWORD *)this + 8); v4 = *(_DWORD *)v3 + 1; *(_DWORD *)v3 = v4; return *(_BYTE *)v4; } if ( v2 && (v6 = *((_DWORD *)this + 12), *(_DWORD *)v6 > 0) ) { --*(_DWORD *)v6; v7 = *((_DWORD *)this + 8); v8 = (int *)(*(_DWORD *)v7)++; result = *(_BYTE *)v8; } else { LABEL_15: result = (*(int (__thiscall **)(void *))(*(_DWORD *)this + 28))(this); } if ( result != -1 ) { v9 = (int **)*((_DWORD *)v1 + 8); if ( *v9 && **((_DWORD **)v1 + 12) > 0 ) result = *(_BYTE *)*v9; else result = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 24))(v1); } return result; } //----- (0043FA90) -------------------------------------------------------- int __thiscall sub_43FA90(void *this) { int v1; // esi@1 int result; // eax@1 *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 24) + 4) - 96) = &off_4B8D94; v1 = (int)((char *)this - 72); *((_DWORD *)this - 18) = &off_4B8D34; sub_43E890((int)((char *)this - 72)); sub_43ECF0(v1); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 - 24) + 4) + v1 - 24) = &off_4B8C64; result = *(_DWORD *)(*(_DWORD *)(v1 - 8) + 4); *(_DWORD *)(result + v1 - 8) = &off_4B8C54; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 - 24) + 4) + v1 - 24) = &off_4B8C5C; return result; } // 4B8C54: using guessed type int (__stdcall *off_4B8C54)(char); // 4B8C5C: using guessed type int (__stdcall *off_4B8C5C)(char); // 4B8C64: using guessed type int (__stdcall *off_4B8C64)(char); // 4B8D34: using guessed type int (__thiscall *off_4B8D34)(void *, char); // 4B8D94: using guessed type int (__stdcall *off_4B8D94)(char); //----- (0043FB20) -------------------------------------------------------- signed int __thiscall sub_43FB20(int this, signed int a2) { int v2; // esi@1 unsigned int *v3; // edi@2 unsigned int v4; // edx@2 unsigned int v5; // ecx@3 int v6; // eax@4 signed int result; // eax@5 unsigned int v8; // edi@7 int v9; // ecx@8 unsigned int v10; // ebx@12 unsigned int v11; // eax@14 void *v12; // edi@21 void **v13; // eax@21 void *v14; // edx@21 int v15; // ecx@23 int v16; // eax@25 int v17; // eax@25 int v18; // eax@25 int v19; // ecx@27 int v20; // eax@27 int v21; // eax@30 int v22; // esi@31 int v23; // ecx@31 void *v24; // [sp+8h] [bp-8h]@21 int v25; // [sp+Ch] [bp-4h]@21 v2 = this; if ( *(_BYTE *)(this + 64) & 8 ) { v3 = *(unsigned int **)(this + 36); v4 = *v3; if ( *v3 ) { v5 = *(_DWORD *)(this + 60); if ( v4 < v5 ) { v6 = v4 + **(_DWORD **)(v2 + 52); *v3 = v5; **(_DWORD **)(v2 + 52) = v6 - v5; } } } result = a2; if ( a2 == -1 ) return 0; v8 = **(_DWORD **)(v2 + 36); if ( !v8 || (v9 = *(_DWORD *)(v2 + 52), v8 >= v8 + *(_DWORD *)v9) ) { if ( !(*(_BYTE *)(v2 + 64) & 2) ) { if ( v8 ) v10 = v8 + **(_DWORD **)(v2 + 52) - **(_DWORD **)(v2 + 16); else v10 = 0; v11 = v10 >> 1; if ( v10 >> 1 < 0x20 ) { v11 = 32; do { LABEL_17: if ( 2147483647 - v11 >= v10 ) break; v11 >>= 1; } while ( v11 ); if ( !v11 ) return -1; v25 = v10 + v11; v12 = (void *)sub_43D900(v10 + v11); v13 = *(void ***)(v2 + 16); v14 = *v13; v24 = *v13; if ( v10 && (memmove(v12, v14, v10), v14 = v24, v10) ) { v16 = *(_DWORD *)(v2 + 36); *(_DWORD *)(v2 + 60) += v12 - v24; v17 = *(_DWORD *)v16 - (_DWORD)v24; **(_DWORD **)(v2 + 20) += v12 - v24; v18 = (int)((char *)v12 + v17); **(_DWORD **)(v2 + 36) = v18; **(_DWORD **)(v2 + 52) = (char *)v12 + v25 - v18; if ( !(*(_BYTE *)(v2 + 64) & 4) ) { v19 = **(_DWORD **)(v2 + 36); v20 = (int)((char *)v12 + **(_DWORD **)(v2 + 32) - (_DWORD)v24); **(_DWORD **)(v2 + 16) = v12; **(_DWORD **)(v2 + 32) = v20; **(_DWORD **)(v2 + 48) = v19 - v20 + 1; goto LABEL_28; } } else { v15 = *(_DWORD *)(v2 + 20); *(_DWORD *)(v2 + 60) = v12; *(_DWORD *)v15 = v12; **(_DWORD **)(v2 + 36) = v12; **(_DWORD **)(v2 + 52) = v25; if ( !(*(_BYTE *)(v2 + 64) & 4) ) { **(_DWORD **)(v2 + 16) = v12; **(_DWORD **)(v2 + 32) = v12; **(_DWORD **)(v2 + 48) = 1; LABEL_28: if ( *(_BYTE *)(v2 + 64) & 1 ) operator delete(v14); v21 = *(_DWORD *)(v2 + 52); *(_DWORD *)(v2 + 64) |= 1u; --*(_DWORD *)v21; result = a2; goto LABEL_31; } } **(_DWORD **)(v2 + 16) = v12; **(_DWORD **)(v2 + 32) = 0; **(_DWORD **)(v2 + 48) = v12; goto LABEL_28; } if ( v11 ) goto LABEL_17; } return -1; } --*(_DWORD *)v9; LABEL_31: v22 = *(_DWORD *)(v2 + 36); v23 = (*(_DWORD *)v22)++; *(_BYTE *)v23 = result; return result; } //----- (0043FCD0) -------------------------------------------------------- int __cdecl sub_43FCD0(int a1) { int v1; // ebx@1 int v2; // edi@5 int v3; // esi@5 int v4; // eax@5 int v5; // ecx@6 int v6; // eax@8 int v7; // esi@9 unsigned int v8; // eax@18 char v10; // [sp+10h] [bp-24h]@16 char v11; // [sp+1Ch] [bp-18h]@21 char v12; // [sp+20h] [bp-14h]@4 int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 std::_Lockit::_Lockit(0); v1 = dword_6EAD38; v14 = 0; v13 = dword_6EAD38; if ( !dword_A429BC ) { std::_Lockit::_Lockit(0); if ( !dword_A429BC ) { ++dword_A429B8; dword_A429BC = dword_A429B8; } std::_Lockit::__Lockit(&v12); } v2 = a1; v3 = dword_A429BC; v4 = *(_DWORD *)a1; if ( (unsigned int)dword_A429BC >= *(_DWORD *)(*(_DWORD *)a1 + 12) ) { v5 = 0; } else { v5 = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4 * dword_A429BC); if ( v5 ) { LABEL_11: v7 = v5; LABEL_12: if ( v7 ) goto LABEL_21; goto LABEL_13; } } if ( !*(_BYTE *)(v4 + 20) ) goto LABEL_11; v6 = sub_48B801(); if ( (unsigned int)v3 < *(_DWORD *)(v6 + 12) ) { v7 = *(_DWORD *)(*(_DWORD *)(v6 + 8) + 4 * v3); goto LABEL_12; } LABEL_13: if ( v1 ) { v7 = v1; } else { if ( sub_43F8D0((int)&v13, v2) == -1 ) { sub_48E045(&v10, (unsigned int)"bad cast"); _CxxThrowException(&v10, &unk_4D17CC); } v7 = v13; dword_6EAD38 = v13; std::_Lockit::_Lockit(0); v8 = *(_DWORD *)(v7 + 4); if ( v8 < 0xFFFFFFFF ) *(_DWORD *)(v7 + 4) = v8 + 1; std::_Lockit::__Lockit(&a1); std::locale::facet::_Facet_Register(v7); } LABEL_21: v14 = -1; std::_Lockit::__Lockit(&v11); return v7; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 48B78A: using guessed type _DWORD __cdecl std__locale__facet___Facet_Register(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6EAD38: using guessed type int dword_6EAD38; // A429B8: using guessed type int dword_A429B8; // A429BC: using guessed type int dword_A429BC; //----- (0043FE10) -------------------------------------------------------- char __thiscall sub_43FE10(int this) { return *(_BYTE *)(this + 12); } //----- (0043FE20) -------------------------------------------------------- char __thiscall sub_43FE20(int this) { return *(_BYTE *)(this + 13); } //----- (0043FE30) -------------------------------------------------------- void *__thiscall sub_43FE30(void *this, char a2) { void *v2; // esi@1 void *v3; // ST08_4@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_4B8DA8; sub_48DB99(v3); sub_48DB99(*((void **)v2 + 4)); sub_48DB99(*((void **)v2 + 5)); *(_DWORD *)v2 = &off_4B8C28; if ( a2 & 1 ) operator delete(v2); return v2; } // 4B8C28: using guessed type int (__thiscall *off_4B8C28)(void *, char); // 4B8DA8: using guessed type int (__thiscall *off_4B8DA8)(void *, char); //----- (0043FEA0) -------------------------------------------------------- void *__thiscall sub_43FEA0(void *this) { void *v1; // esi@1 int v2; // eax@1 signed int v3; // edi@1 int v4; // ecx@4 int v5; // eax@5 v1 = this; v2 = *(_DWORD *)(*(_DWORD *)this + 4); v3 = 0; if ( !(*((_BYTE *)this + v2 + 12) & 6) && (*(int (__thiscall **)(_DWORD))(**(_DWORD **)((char *)this + v2 + 56) + 52))(*(_DWORD *)((char *)this + v2 + 56)) == -1 ) v3 = 4; v4 = (int)((char *)v1 + *(_DWORD *)(*(_DWORD *)v1 + 4)); if ( v3 ) { v5 = v3 | *(_DWORD *)(v4 + 12); if ( !*(_DWORD *)(v4 + 56) ) LOBYTE(v5) = v5 | 4; sub_43EAA0(v4, v5, 0); } return v1; } //----- (0043FEF0) -------------------------------------------------------- void *__thiscall sub_43FEF0(void *this, char a2) { void *v2; // edi@1 void *v3; // esi@1 v2 = (char *)this - 96; v3 = this; sub_43FA90(this); *(_DWORD *)v3 = &off_4B8C30; std::ios_base::_Ios_base_dtor(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 48BC34: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 4B8C30: using guessed type int (__thiscall *off_4B8C30)(void *, char); //----- (0043FF30) -------------------------------------------------------- #error "4400C4: positive sp value has been found (funcsize=118)" //----- (004400D0) -------------------------------------------------------- void *__thiscall sub_4400D0(void *this) { void *result; // eax@1 bool v2; // zf@1 int v3; // [sp+0h] [bp-20h]@1 int *v4; // [sp+10h] [bp-10h]@1 int v5; // [sp+1Ch] [bp-4h]@1 v4 = &v3; result = *(void **)this; v2 = (*((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this + 4) + 20) & 2) == 0; v5 = 0; if ( !v2 ) result = sub_43FEA0(this); return result; } //----- (00440123) -------------------------------------------------------- int (*__cdecl sub_440123())() { return loc_440111; } // 440111: using guessed type int loc_440111(); //----- (00440130) -------------------------------------------------------- int __thiscall sub_440130(void *this, int a2) { (*(void (__stdcall **)(int))(*(_DWORD *)this + 16))(a2); return a2; } //----- (00440150) -------------------------------------------------------- int __thiscall sub_440150(void *this, int a2) { (*(void (__stdcall **)(int))(*(_DWORD *)this + 20))(a2); return a2; } //----- (00440170) -------------------------------------------------------- int __thiscall sub_440170(void *this, int a2) { (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(a2); return a2; } //----- (00440190) -------------------------------------------------------- int __thiscall sub_440190(int this, int a2, unsigned int a3, int a4) { int v4; // edx@1 unsigned int v5; // eax@1 int v6; // esi@1 size_t v7; // ebx@3 int v8; // eax@3 unsigned int v9; // eax@5 int v10; // edi@8 unsigned int v11; // ecx@10 int v12; // ecx@13 int result; // eax@16 int v14; // eax@20 bool v15; // cf@22 v4 = a2; v5 = *(_DWORD *)(a2 + 16); v6 = this; if ( v5 < a3 ) sub_48B4EB((int)"invalid string position"); v7 = a4; v8 = v5 - a3; if ( v8 < (unsigned int)a4 ) v7 = v8; v9 = *(_DWORD *)(this + 16); if ( -1 - v9 <= v7 ) sub_48B49E((int)"string too long"); if ( !v7 ) return v6; v10 = v9 + v7; if ( v9 + v7 > 0xFFFFFFFE ) sub_48B49E((int)"string too long"); v11 = *(_DWORD *)(this + 20); if ( v11 < v10 ) { sub_43D9E0(v9, v6, v9 + v7, v9); v4 = a2; if ( v10 ) { LABEL_12: if ( *(_DWORD *)(v4 + 20) < 0x10u ) v12 = v4; else v12 = *(_DWORD *)v4; if ( *(_DWORD *)(v6 + 20) < 0x10u ) v14 = v6; else v14 = *(_DWORD *)v6; memmove((void *)(v14 + *(_DWORD *)(v6 + 16)), (const void *)(a3 + v12), v7); v15 = *(_DWORD *)(v6 + 20) < 0x10u; *(_DWORD *)(v6 + 16) = v10; if ( !v15 ) { *(_BYTE *)(*(_DWORD *)v6 + v10) = 0; return v6; } *(_BYTE *)(v6 + v10) = 0; } return v6; } if ( v10 ) goto LABEL_12; *(_DWORD *)(v6 + 16) = 0; if ( v11 < 0x10 ) { result = v6; *(_BYTE *)v6 = 0; } else { **(_BYTE **)v6 = 0; result = v6; } return result; } //----- (00440280) -------------------------------------------------------- int __thiscall sub_440280(int this, int a2) { int v2; // eax@1 int v3; // eax@1 int v4; // edi@1 int v5; // ebx@1 unsigned int v6; // eax@2 int v7; // esi@5 int v8; // esi@5 char v10; // [sp+10h] [bp-14h]@5 int v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@1 v2 = sub_43E6D0(this, (int)&v11); v12 = 0; v3 = sub_43FCD0(v2); v4 = v11; v5 = v3; v12 = -1; if ( v11 ) { std::_Lockit::_Lockit(0); v6 = *(_DWORD *)(v4 + 4); if ( v6 && v6 < 0xFFFFFFFF ) *(_DWORD *)(v4 + 4) = v6 - 1; v7 = -(*(_DWORD *)(v4 + 4) == 0); std::_Lockit::__Lockit(&v10); v8 = v4 & v7; if ( v8 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v8)(v8, 1); } return (*(int (__cdecl **)(int))(*(_DWORD *)v5 + 24))(a2); } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (00440330) -------------------------------------------------------- signed int __cdecl sub_440330(int a1, int a2) { char v2; // bl@1 int v3; // esi@3 char *v4; // eax@5 int v5; // eax@7 char v7; // [sp+Ch] [bp-38h]@7 int v8; // [sp+30h] [bp-14h]@3 int v9; // [sp+34h] [bp-10h]@1 int v10; // [sp+40h] [bp-4h]@3 v2 = 0; v9 = 0; if ( a1 && !*(_DWORD *)a1 ) { v3 = operator new(0x18u); v8 = v3; v10 = 0; if ( v3 ) { if ( *(_DWORD *)(*(_DWORD *)a2 + 24) ) v4 = *(char **)(*(_DWORD *)a2 + 24); else v4 = (char *)(*(_DWORD *)a2 + 28); v5 = (int)sub_43F770(&v7, v4); v2 = 1; v9 = 1; *(_DWORD *)(v3 + 4) = 0; v10 = 2; *(_DWORD *)v3 = &off_4B8DA8; sub_43F630((void *)v3, v5, 1); } else { v3 = 0; } *(_DWORD *)a1 = v3; v10 = -1; if ( v2 & 1 ) sub_43F820(&v7); } return 4; } // 4B8DA8: using guessed type int (__thiscall *off_4B8DA8)(void *, char); //----- (00440400) -------------------------------------------------------- signed int __thiscall sub_440400(void *this, const char *a2) { void *v2; // esi@1 FILE *v3; // eax@1 FILE *v4; // edi@1 int v5; // ebx@1 int v6; // eax@2 __int32 v7; // eax@2 unsigned int v8; // ecx@2 int v9; // eax@5 int v10; // ecx@5 signed int result; // eax@10 int v12; // eax@11 int v13; // eax@14 unsigned int v14; // edi@15 unsigned int v15; // eax@17 int v16; // eax@21 unsigned int v17; // ecx@21 unsigned int v18; // eax@24 int v19; // edx@25 int v20; // ecx@25 void *v21; // eax@27 int v22; // esi@29 int v23; // [sp-24h] [bp-64h]@29 int v24; // [sp-20h] [bp-60h]@29 int v25; // [sp-1Ch] [bp-5Ch]@29 int v26; // [sp-18h] [bp-58h]@29 int v27; // [sp-14h] [bp-54h]@29 int v28; // [sp-10h] [bp-50h]@29 int v29; // [sp-Ch] [bp-4Ch]@29 signed int v30; // [sp-8h] [bp-48h]@5 unsigned int v31; // [sp-4h] [bp-44h]@1 size_t v32; // [sp+Ch] [bp-34h]@6 char *v33; // [sp+10h] [bp-30h]@1 char *v34; // [sp+14h] [bp-2Ch]@27 unsigned int v35; // [sp+28h] [bp-18h]@27 unsigned int v36; // [sp+30h] [bp-10h]@1 int v37; // [sp+3Ch] [bp-4h]@27 int v38; // [sp+40h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v31 = (unsigned int)&v38 ^ __security_cookie; v2 = this; v33 = (char *)a2; v3 = fopen(a2, "rb"); v4 = v3; v5 = 0; if ( !v3 ) return 0; v6 = _fileno(v3); v7 = _filelength(v6); v8 = *((_DWORD *)v2 + 2); *((_DWORD *)v2 + 1) = v7; if ( v8 < v7 ) { if ( v8 ) { operator delete(*((void **)v2 + 13)); *((_DWORD *)v2 + 13) = 0; *((_DWORD *)v2 + 14) = 0; } v30 = *((_DWORD *)v2 + 1); *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 4) = 0; v9 = unknown_libname_17(v30); v10 = *((_DWORD *)v2 + 1); *((_DWORD *)v2 + 13) = v9; *((_DWORD *)v2 + 14) = 0; *((_DWORD *)v2 + 2) = v10; } v32 = fread(*((void **)v2 + 13), *((_DWORD *)v2 + 1), 1u, v4); fclose(v4); if ( v32 != 1 ) { if ( *((_DWORD *)v2 + 2) ) { operator delete(*((void **)v2 + 13)); *((_DWORD *)v2 + 13) = 0; *((_DWORD *)v2 + 14) = 0; } *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 4) = 0; return 0; } v12 = *((_DWORD *)v2 + 13); if ( v12 && *(_DWORD *)(v12 + 28) ) sub_43E770(v12 + 36, *((_DWORD *)v2 + 1) - 36); v13 = *((_DWORD *)v2 + 13); *((_DWORD *)v2 + 14) = v13 + 56 * *(_DWORD *)(v13 + 48) + 52; if ( v13 ) v14 = *(_DWORD *)(v13 + 40); else v14 = 0; v15 = *((_DWORD *)v2 + 3); if ( v15 < v14 ) { if ( v15 ) sub_48DB99(*((void **)v2 + 15)); *((_DWORD *)v2 + 3) = 0; *((_DWORD *)v2 + 15) = unknown_libname_17(4 * v14 | -((unsigned __int64)v14 >> 30 != 0)); *((_DWORD *)v2 + 3) = v14; } v16 = *((_DWORD *)v2 + 14); v17 = 0; if ( v14 > 0 ) { do { *(_DWORD *)(*((_DWORD *)v2 + 15) + 4 * v17++) = v16 + 2; v16 += *(_WORD *)v16; } while ( v17 < v14 ); v5 = 0; } v18 = 0; *((_DWORD *)v2 + 4) = v5; if ( *((_DWORD *)v2 + 2) > (unsigned int)v5 ) { v19 = *((_DWORD *)v2 + 13); v20 = 0; do { v20 += v18 * *(_BYTE *)(v19 + v18); ++v18; *((_DWORD *)v2 + 4) = v20; } while ( v18 < *((_DWORD *)v2 + 2) ); } sub_442AC0((int)&v34, *((const void **)v2 + 13), *((_DWORD *)v2 + 2)); v21 = v34; v37 = v5; if ( v35 < 0x10 ) v21 = &v34; v22 = (int)((char *)v2 + 20); v30 = 32; v29 = (int)v21; v28 = v22; *(_DWORD *)(v22 + 28) = v5; *(_DWORD *)(v22 + 24) = v5; *(_DWORD *)(v22 + 20) = v5; *(_DWORD *)(v22 + 16) = v5; *(_DWORD *)(v22 + 12) = v5; *(_DWORD *)(v22 + 8) = v5; *(_DWORD *)(v22 + 4) = v5; *(_DWORD *)v22 = v5; strncpy((char *)v28, (const char *)v29, v30); memcpy(&v23, (const void *)v22, 0x20u); if ( sub_441500(&unk_6EAD50, v33, v23, v24, v25, v26, v27, v28, v29, v30) ) { if ( v35 >= 0x10 ) operator delete(v34); result = 1; } else { if ( v35 >= 0x10 ) operator delete(v34); result = 0; } return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (00440660) -------------------------------------------------------- int __thiscall sub_440660(void *this, const char *a2, int a3, int a4) { void *v4; // esi@1 int result; // eax@2 int v6; // eax@3 v4 = this; if ( sub_440400(this, a2) && (v6 = *((_DWORD *)v4 + 13), *(_DWORD *)v6 == a3) ) result = *(_DWORD *)(v6 + 44) - 2 == a4; else result = 0; return result; } //----- (004406A0) -------------------------------------------------------- int __thiscall sub_4406A0(void *this) { void **v1; // esi@1 int result; // eax@3 int v3; // [sp+14h] [bp-4h]@1 v1 = (void **)this; v3 = 0; if ( !__uncaught_exception() ) sub_4400D0(*v1); result = *(_DWORD *)((char *)*v1 + *(_DWORD *)(*(_DWORD *)*v1 + 4) + 56); v3 = -1; if ( result ) result = (*(int (**)(void))(*(_DWORD *)result + 8))(); return result; } //----- (00440710) -------------------------------------------------------- int __thiscall sub_440710(int this, size_t a2, char a3) { int v3; // esi@1 unsigned int v4; // eax@1 unsigned int v5; // edi@4 unsigned int v6; // ecx@6 bool v7; // cf@8 int result; // eax@9 v3 = this; v4 = *(_DWORD *)(this + 16); if ( -1 - v4 <= a2 ) sub_48B49E((int)"string too long"); if ( !a2 ) return v3; v5 = v4 + a2; if ( v4 + a2 > 0xFFFFFFFE ) sub_48B49E((int)"string too long"); v6 = *(_DWORD *)(this + 20); if ( v6 < v5 ) { sub_43D9E0(v4, v3, v4 + a2, v4); if ( v5 ) { LABEL_8: sub_43F5C0(v3, *(_DWORD *)(v3 + 16), a2, a3); v7 = *(_DWORD *)(v3 + 20) < 0x10u; *(_DWORD *)(v3 + 16) = v5; if ( !v7 ) { *(_BYTE *)(*(_DWORD *)v3 + v5) = 0; return v3; } *(_BYTE *)(v3 + v5) = 0; } return v3; } if ( v5 ) goto LABEL_8; *(_DWORD *)(v3 + 16) = 0; if ( v6 < 0x10 ) { result = v3; *(_BYTE *)v3 = 0; } else { **(_BYTE **)v3 = 0; result = v3; } return result; } //----- (004407C0) -------------------------------------------------------- void *__cdecl sub_4407C0(void *a1, const char *a2) { int v2; // edx@1 unsigned int v3; // ecx@1 unsigned int v4; // eax@1 int v5; // ebx@7 unsigned __int64 v6; // kr08_8@7 int v7; // edx@9 int v8; // eax@11 bool v9; // zf@11 void *v10; // eax@12 int v11; // eax@14 signed int v12; // edx@15 int v13; // eax@16 int v14; // ecx@20 int v15; // eax@20 int v16; // ecx@20 int v17; // edx@21 int v18; // ecx@22 int v19; // edx@22 int v20; // eax@27 int v21; // edx@27 int v22; // eax@30 int v23; // ecx@31 int v24; // eax@32 bool v25; // al@35 void *v26; // edi@35 int v27; // ecx@37 unsigned __int8 v29; // cf@40 int v30; // ecx@44 int v31; // eax@44 int v32; // ecx@44 int v33; // edx@45 int v34; // ecx@46 int v35; // edx@46 int v36; // [sp+0h] [bp-38h]@1 void *v37; // [sp+10h] [bp-28h]@9 bool v38; // [sp+14h] [bp-24h]@14 int v39; // [sp+1Ch] [bp-1Ch]@7 unsigned int v40; // [sp+20h] [bp-18h]@1 int v41; // [sp+24h] [bp-14h]@1 int *v42; // [sp+28h] [bp-10h]@1 int v43; // [sp+34h] [bp-4h]@11 v42 = &v36; v41 = 0; v40 = strlen(a2); v2 = *(_DWORD *)(*(_DWORD *)a1 + 4); v3 = *(_DWORD *)((char *)a1 + v2 + 36); v4 = *(_DWORD *)((char *)a1 + v2 + 32); if ( (v3 & 0x80000000u) == 0 && ((signed int)v3 > 0 || v4) && (v3 & 0x80000000u) == 0 && ((signed int)v3 > 0 || v4 > v40) ) { v6 = __PAIR__(v3, v4) - v40; v39 = v6 >> 32; v5 = v6; } else { v5 = 0; v39 = 0; } v7 = *(_DWORD *)((char *)a1 + v2 + 56); v37 = a1; if ( v7 ) (*(void (__thiscall **)(int))(*(_DWORD *)v7 + 4))(v7); v8 = *(_DWORD *)(*(_DWORD *)a1 + 4); v9 = *(_DWORD *)((char *)a1 + v8 + 12) == 0; v43 = 0; if ( v9 ) { v10 = *(void **)((char *)a1 + v8 + 60); if ( v10 ) sub_43FEA0(v10); } v11 = *(_DWORD *)(*(_DWORD *)a1 + 4); v38 = *(_DWORD *)((char *)a1 + v11 + 12) == 0; v43 = 1; if ( v38 ) { v13 = *(_DWORD *)((char *)a1 + v11 + 20) & 0x1C0; LOBYTE(v43) = 2; if ( v13 == 64 ) goto LABEL_53; while ( v39 >= 0 && (v39 > 0 || v5) ) { v14 = *(_DWORD *)(*(_DWORD *)a1 + 4); LOBYTE(v15) = *((_BYTE *)a1 + v14 + 64); v16 = *(_DWORD *)((char *)a1 + v14 + 56); if ( **(_DWORD **)(v16 + 36) && (v17 = *(_DWORD *)(v16 + 52), *(_DWORD *)v17 > 0) ) { --*(_DWORD *)v17; v18 = *(_DWORD *)(v16 + 36); v19 = (*(_DWORD *)v18)++; *(_BYTE *)v19 = v15; v15 = (unsigned __int8)v15; } else { v15 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v16 + 12))((unsigned __int8)v15); } if ( v15 == -1 ) { v41 |= 4u; break; } v29 = __CFADD__(v5--, -1); v39 = v29 + v39 - 1; } if ( !v41 ) { LABEL_53: v20 = (*(int (__stdcall **)(const char *, unsigned int, _DWORD))(**(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 + 4) + 56) + 36))( a2, v40, 0); if ( v20 != v40 || v21 ) { v41 = 4; } else { while ( v39 >= 0 && (v39 > 0 || v5) ) { v30 = *(_DWORD *)(*(_DWORD *)a1 + 4); LOBYTE(v31) = *((_BYTE *)a1 + v30 + 64); v32 = *(_DWORD *)((char *)a1 + v30 + 56); if ( **(_DWORD **)(v32 + 36) && (v33 = *(_DWORD *)(v32 + 52), *(_DWORD *)v33 > 0) ) { --*(_DWORD *)v33; v34 = *(_DWORD *)(v32 + 36); v35 = (*(_DWORD *)v34)++; *(_BYTE *)v35 = v31; v31 = (unsigned __int8)v31; } else { v31 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v32 + 12))((unsigned __int8)v31); } if ( v31 == -1 ) { v41 |= 4u; break; } v29 = __CFADD__(v5--, -1); v39 = v29 + v39 - 1; } } } v22 = *(_DWORD *)(*(_DWORD *)a1 + 4); *(_DWORD *)((char *)a1 + v22 + 32) = 0; *(_DWORD *)((char *)a1 + v22 + 36) = 0; v43 = 1; v12 = v41; } else { v12 = 4; } v23 = (int)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 + 4)); if ( v12 ) { v24 = v12 | *(_DWORD *)(v23 + 12); if ( !*(_DWORD *)(v23 + 56) ) LOBYTE(v24) = v24 | 4; sub_43EAA0(v23, v24, 0); } v43 = 4; v25 = __uncaught_exception(); v26 = v37; if ( !v25 ) sub_4400D0(v37); v27 = *(_DWORD *)((char *)v26 + *(_DWORD *)(*(_DWORD *)v26 + 4) + 56); v43 = -1; if ( v27 ) (*(void (**)(void))(*(_DWORD *)v27 + 8))(); return a1; } //----- (00440A36) -------------------------------------------------------- int (*__usercall sub_440A36(int a1))() { int v1; // eax@1 int v2; // ecx@1 int v3; // ecx@3 v1 = *(_DWORD *)(a1 + 8) + *(_DWORD *)(**(_DWORD **)(a1 + 8) + 4); v2 = *(_DWORD *)(v1 + 12) | 4; if ( !*(_DWORD *)(v1 + 56) ) v2 = *(_DWORD *)(v1 + 12) | 4; v3 = v2 & 0x17; *(_DWORD *)(v1 + 12) = v3; if ( v3 & *(_DWORD *)(v1 + 16) ) _CxxThrowException(0, 0); *(_DWORD *)(a1 - 4) = 1; return loc_440A67; } // 440A67: using guessed type int loc_440A67(); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00440A80) -------------------------------------------------------- int __cdecl sub_440A80(int a1) { int v1; // ebx@1 int v2; // edi@5 int v3; // esi@5 int v4; // eax@5 int v5; // ecx@6 int v6; // eax@8 int v7; // esi@9 unsigned int v8; // eax@18 char v10; // [sp+10h] [bp-24h]@16 char v11; // [sp+1Ch] [bp-18h]@21 char v12; // [sp+20h] [bp-14h]@4 int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 std::_Lockit::_Lockit(0); v1 = dword_6EAD3C; v14 = 0; v13 = dword_6EAD3C; if ( !dword_6EAD40 ) { std::_Lockit::_Lockit(0); if ( !dword_6EAD40 ) { ++dword_A429B8; dword_6EAD40 = dword_A429B8; } std::_Lockit::__Lockit(&v12); } v2 = a1; v3 = dword_6EAD40; v4 = *(_DWORD *)a1; if ( (unsigned int)dword_6EAD40 >= *(_DWORD *)(*(_DWORD *)a1 + 12) ) { v5 = 0; } else { v5 = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4 * dword_6EAD40); if ( v5 ) { LABEL_11: v7 = v5; LABEL_12: if ( v7 ) goto LABEL_21; goto LABEL_13; } } if ( !*(_BYTE *)(v4 + 20) ) goto LABEL_11; v6 = sub_48B801(); if ( (unsigned int)v3 < *(_DWORD *)(v6 + 12) ) { v7 = *(_DWORD *)(*(_DWORD *)(v6 + 8) + 4 * v3); goto LABEL_12; } LABEL_13: if ( v1 ) { v7 = v1; } else { if ( sub_440330((int)&v13, v2) == -1 ) { sub_48E045(&v10, (unsigned int)"bad cast"); _CxxThrowException(&v10, &unk_4D17CC); } v7 = v13; dword_6EAD3C = v13; std::_Lockit::_Lockit(0); v8 = *(_DWORD *)(v7 + 4); if ( v8 < 0xFFFFFFFF ) *(_DWORD *)(v7 + 4) = v8 + 1; std::_Lockit::__Lockit(&a1); std::locale::facet::_Facet_Register(v7); } LABEL_21: v14 = -1; std::_Lockit::__Lockit(&v11); return v7; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 48B78A: using guessed type _DWORD __cdecl std__locale__facet___Facet_Register(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6EAD3C: using guessed type int dword_6EAD3C; // 6EAD40: using guessed type int dword_6EAD40; // A429B8: using guessed type int dword_A429B8; //----- (00440BC0) -------------------------------------------------------- int __thiscall sub_440BC0(int this, char *a2) { int v2; // esi@1 v2 = this; *(_DWORD *)(this + 20) = 15; *(_DWORD *)(this + 16) = 0; *(_BYTE *)this = 0; sub_43DEA0(this, a2, strlen(a2)); return v2; } //----- (00440C00) -------------------------------------------------------- int __thiscall sub_440C00(int this, int a2) { char *v2; // ecx@1 v2 = *(char **)(this + 8); *(_DWORD *)(a2 + 20) = 15; *(_DWORD *)(a2 + 16) = 0; *(_BYTE *)a2 = 0; sub_43DEA0(a2, v2, strlen(v2)); return a2; } //----- (00440C50) -------------------------------------------------------- int __thiscall sub_440C50(int this, int a2) { char *v2; // ecx@1 v2 = *(char **)(this + 16); *(_DWORD *)(a2 + 20) = 15; *(_DWORD *)(a2 + 16) = 0; *(_BYTE *)a2 = 0; sub_43DEA0(a2, v2, strlen(v2)); return a2; } //----- (00440CA0) -------------------------------------------------------- int __thiscall sub_440CA0(int this, int a2) { char *v2; // ecx@1 v2 = *(char **)(this + 20); *(_DWORD *)(a2 + 20) = 15; *(_DWORD *)(a2 + 16) = 0; *(_BYTE *)a2 = 0; sub_43DEA0(a2, v2, strlen(v2)); return a2; } //----- (00440CF0) -------------------------------------------------------- char *__cdecl sub_440CF0(signed int a1) { signed int v1; // eax@1 v1 = a1; if ( a1 >= 21 || a1 < 0 ) v1 = 10; return off_4DC600[v1]; } // 4DC600: using guessed type char *off_4DC600[21]; //----- (00440D10) -------------------------------------------------------- char *__cdecl sub_440D10(signed int a1) { signed int v1; // eax@1 v1 = a1; if ( a1 >= 21 || a1 < 0 ) v1 = 10; return off_4DC658[v1]; } // 4DC658: using guessed type char *off_4DC658[9]; //----- (00440D30) -------------------------------------------------------- int __thiscall sub_440D30(int this) { int v1; // esi@1 char v2; // dl@1 v1 = this; sub_4432A0(this); *(_DWORD *)(v1 + 348) = 0; *(_DWORD *)(v1 + 352) = 0; *(_DWORD *)(v1 + 360) = 0; *(_DWORD *)(v1 + 364) = 0; *(_DWORD *)(v1 + 368) = 0; *(_DWORD *)(v1 + 636) = 0; *(_DWORD *)(v1 + 640) = 1; *(_DWORD *)(v1 + 376) = dword_4B8FE4; v2 = byte_4B8FE8; *(_DWORD *)(v1 + 644) = 0; *(_DWORD *)(v1 + 652) = 0; *(_DWORD *)(v1 + 656) = 0; *(_BYTE *)(v1 + 380) = v2; return v1; } // 4B8FE4: using guessed type int dword_4B8FE4; // 4B8FE8: using guessed type char byte_4B8FE8; //----- (00440DA0) -------------------------------------------------------- signed int __thiscall sub_440DA0(int this) { int v1; // esi@1 signed int result; // eax@5 v1 = this; if ( *(_DWORD *)(this + 360) ) { free(*(void **)(this + 360)); *(_DWORD *)(v1 + 360) = 0; } if ( *(_DWORD *)(v1 + 348) ) { sub_442F80(v1, *(HANDLE *)(v1 + 352)); *(_DWORD *)(v1 + 348) = 0; } result = sub_4436F0(v1); *(_DWORD *)(v1 + 368) = 0; return result; } //----- (00440E00) -------------------------------------------------------- int __thiscall sub_440E00(void *this, int a2) { int result; // eax@1 int v3; // edx@1 char v4; // cl@2 result = a2; v3 = (int)((char *)this + -a2 + 376); do { v4 = *(_BYTE *)result; *(_BYTE *)(v3 + result) = *(_BYTE *)result; ++result; } while ( v4 ); return result; } //----- (00440E20) -------------------------------------------------------- const unsigned __int8 *__thiscall sub_440E20(int this, int a2, const unsigned __int8 *a3) { int v3; // esi@1 const unsigned __int8 *v4; // edi@3 const unsigned __int8 *result; // eax@4 unsigned __int8 *v6; // eax@5 unsigned __int8 *v7; // eax@6 int v8; // eax@7 v3 = this; if ( a2 ) *(_DWORD *)(this + 648) = a2; v4 = *(const unsigned __int8 **)(this + 648); if ( v4 ) { v6 = _mbspbrk(v4, a3); *(_DWORD *)(v3 + 648) = v6; if ( v6 == v4 ) { do { ++*(_DWORD *)(v3 + 648); v4 = *(const unsigned __int8 **)(v3 + 648); v7 = _mbspbrk(*(const unsigned __int8 **)(v3 + 648), a3); *(_DWORD *)(v3 + 648) = v7; } while ( v7 == v4 ); } v8 = *(_DWORD *)(v3 + 648); if ( v8 ) { *(_BYTE *)v8 = 0; ++*(_DWORD *)(v3 + 648); } result = v4; } else { result = 0; } return result; } //----- (00440EA0) -------------------------------------------------------- const unsigned __int8 *__thiscall sub_440EA0(int this) { int v1; // esi@1 const unsigned __int8 *result; // eax@1 int v3; // [sp-8h] [bp-Ch]@3 const unsigned __int8 *v4; // [sp-4h] [bp-8h]@3 v1 = this; result = *(const unsigned __int8 **)(this + 360); if ( result ) { if ( *(_DWORD *)(this + 640) ) { v4 = (const unsigned __int8 *)(this + 376); *(_DWORD *)(this + 640) = 0; *(_DWORD *)(this + 636) = 0; v3 = (int)result; } else { if ( *(_DWORD *)(this + 636) ) { result = sub_440E20(this, *(_DWORD *)(this + 632), (const unsigned __int8 *)(this + 376)); *(_DWORD *)(v1 + 636) = 0; *(_DWORD *)(v1 + 644) = result; return result; } v4 = (const unsigned __int8 *)(this + 376); v3 = 0; } result = sub_440E20(this, v3, v4); *(_DWORD *)(v1 + 644) = result; } return result; } //----- (00440F20) -------------------------------------------------------- signed int __thiscall sub_440F20(int this) { int v1; // esi@1 signed int result; // eax@2 DWORD NumberOfBytesRead; // [sp+4h] [bp-4h]@7 v1 = this; if ( *(_DWORD *)(this + 368) ) { *(_BYTE *)(*(_DWORD *)(this + 356) + *(_DWORD *)(this + 360)) = 0; memmove(*(void **)(this + 360), *(const void **)(this + 372), *(_DWORD *)(this + 356)); result = 1; *(_DWORD *)(v1 + 640) = 1; return result; } if ( !*(_DWORD *)(this + 348) ) return 0; if ( sub_443180(this, *(HANDLE *)(this + 352), 0, 0, 0) == -1 || !sub_442FC0(v1, *(HANDLE *)(v1 + 352), *(LPVOID *)(v1 + 360), *(_DWORD *)(v1 + 356), &NumberOfBytesRead, 0) ) { sub_440DA0(v1); return 0; } result = 1; *(_DWORD *)(v1 + 640) = 1; return result; } //----- (00440FE0) -------------------------------------------------------- signed int __thiscall sub_440FE0(int this) { int v1; // esi@1 signed int result; // eax@2 int v3; // edx@3 int v4; // eax@4 char v5; // cl@5 v1 = this; if ( *(_DWORD *)(this + 360) && (v3 = *(_DWORD *)(this + 644)) != 0 ) { v4 = *(_DWORD *)(this + 644); do v5 = *(_BYTE *)v4++; while ( v5 ); if ( *(_BYTE *)(v3 + v4 - (v3 + 1) + 1) != 10 ) *(_DWORD *)(v1 + 644) = sub_440E20(v1, 0, (const unsigned __int8 *)"\n"); result = 1; } else { result = 0; } return result; } //----- (00441030) -------------------------------------------------------- int __thiscall sub_441030(int this) { int result; // eax@2 int v2; // edi@3 int v3; // eax@3 int v4; // edx@3 char v5; // cl@4 int v6; // esi@5 signed int v7; // edx@5 int i; // eax@5 if ( *(_DWORD *)(this + 360) ) { v2 = *(_DWORD *)(this + 644); v3 = *(_DWORD *)(this + 644); v4 = v3 + 1; do v5 = *(_BYTE *)v3++; while ( v5 ); v6 = v3 - v4; v7 = 1; for ( i = v2 + v6 + 1; *(_BYTE *)i != 34; ++i ) ++v7; result = v6 + v2 + v7; } else { result = 0; } return result; } //----- (00441080) -------------------------------------------------------- int __thiscall sub_441080(int this) { int result; // eax@1 result = *(_DWORD *)(this + 644); *(_DWORD *)(this + 364) = result; return result; } //----- (00441090) -------------------------------------------------------- signed int __thiscall sub_441090(int this, int a2) { int v2; // esi@1 int v4; // [sp-8h] [bp-10h]@3 const unsigned __int8 *v5; // [sp-4h] [bp-Ch]@3 v2 = this; if ( a2 ) { if ( sub_440F20(this) ) { v5 = (const unsigned __int8 *)(v2 + 376); v4 = a2; LABEL_7: *(_DWORD *)(v2 + 640) = 0; *(_DWORD *)(v2 + 644) = sub_440E20(v2, v4, v5); return 1; } } else { if ( *(_DWORD *)(this + 364) && sub_440F20(this) ) { v5 = (const unsigned __int8 *)(v2 + 376); v4 = *(_DWORD *)(v2 + 364); goto LABEL_7; } } return 0; } //----- (00441100) -------------------------------------------------------- signed int __stdcall sub_441100(const unsigned __int8 *a1, int a2, unsigned int a3) { signed int v3; // esi@1 signed int result; // eax@4 v3 = 0; if ( a3 ) { while ( _mbsicmp(a1, *(const unsigned __int8 **)(a2 + 4 * v3)) ) { ++v3; if ( v3 >= a3 ) goto LABEL_4; } result = v3; } else { LABEL_4: result = -1; } return result; } //----- (00441140) -------------------------------------------------------- int __thiscall sub_441140(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 360); if ( v2 ) { free(v2); *(_DWORD *)(v1 + 360) = 0; } if ( *(_DWORD *)(v1 + 348) ) { sub_442F80(v1, *(HANDLE *)(v1 + 352)); *(_DWORD *)(v1 + 348) = 0; } sub_4436F0(v1); *(_DWORD *)(v1 + 368) = 0; return sub_443890(v1); } // 443890: using guessed type int __thiscall sub_443890(_DWORD); //----- (004411D0) -------------------------------------------------------- signed int __thiscall sub_4411D0(int this, LPCSTR lpFileName) { int v2; // esi@1 void *v3; // eax@5 signed int result; // eax@6 DWORD v5; // eax@7 DWORD v6; // edi@7 void *v7; // eax@8 DWORD NumberOfBytesRead; // [sp+8h] [bp-4h]@9 v2 = this; if ( *(_DWORD *)(this + 360) ) { free(*(void **)(this + 360)); *(_DWORD *)(v2 + 360) = 0; } if ( *(_DWORD *)(v2 + 348) ) { sub_442F80(v2, *(HANDLE *)(v2 + 352)); *(_DWORD *)(v2 + 348) = 0; } sub_4436F0(v2); *(_DWORD *)(v2 + 368) = 0; v3 = (void *)sub_4438E0(v2, lpFileName, 0x80000000u, 1u, 0, 3u, 0x80u, 0); *(_DWORD *)(v2 + 352) = v3; if ( v3 == (void *)-1 ) { result = 0; } else { *(_DWORD *)(v2 + 348) = 1; v5 = sub_443140(v2, v3, 0); v6 = v5; *(_DWORD *)(v2 + 356) = v5; if ( v5 != -1 && (v7 = malloc(v5 + 1), (*(_DWORD *)(v2 + 360) = v7) != 0) && (*((_BYTE *)v7 + v6) = 0, sub_442FC0(v2, *(HANDLE *)(v2 + 352), *(LPVOID *)(v2 + 360), *(_DWORD *)(v2 + 356), &NumberOfBytesRead, 0)) ) { result = 1; *(_DWORD *)(v2 + 368) = 0; *(_DWORD *)(v2 + 640) = 1; } else { sub_440DA0(v2); result = 0; } } return result; } //----- (004412E0) -------------------------------------------------------- signed int __thiscall sub_4412E0(int this, const char *a2) { int v2; // esi@1 unsigned int v3; // eax@5 unsigned int v4; // edi@5 signed int result; // eax@6 void *v6; // eax@7 v2 = this; if ( *(_DWORD *)(this + 360) ) { free(*(void **)(this + 360)); *(_DWORD *)(v2 + 360) = 0; } if ( *(_DWORD *)(v2 + 348) ) { sub_442F80(v2, *(HANDLE *)(v2 + 352)); *(_DWORD *)(v2 + 348) = 0; } sub_4436F0(v2); *(_DWORD *)(v2 + 368) = 0; v3 = strlen(a2); v4 = v3; *(_DWORD *)(v2 + 356) = v3; if ( v3 && (v6 = malloc(v3 + 1), (*(_DWORD *)(v2 + 360) = v6) != 0) ) { *((_BYTE *)v6 + v4) = 0; memmove(*(void **)(v2 + 360), a2, *(_DWORD *)(v2 + 356)); result = 1; *(_DWORD *)(v2 + 372) = a2; *(_DWORD *)(v2 + 640) = 1; *(_DWORD *)(v2 + 368) = 1; } else { result = 0; } return result; } //----- (004413A0) -------------------------------------------------------- int __thiscall sub_4413A0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v5; // eax@7 const unsigned __int8 *v6; // eax@11 int v7; // edi@12 char v8; // cl@13 v2 = this; v3 = *(_DWORD *)(this + 360); if ( !v3 ) return 0; if ( *(_DWORD *)(this + 640) ) { *(_DWORD *)(this + 640) = 0; *(_DWORD *)(this + 636) = 0; *(_DWORD *)(this + 644) = sub_440E20(this, v3, &word_4B8FF0); } if ( *(_DWORD *)(v2 + 636) ) { *(_DWORD *)(v2 + 644) = *(_DWORD *)(v2 + 632) - 1; *(_DWORD *)(v2 + 636) = 0; } v5 = sub_441030(v2); *(_DWORD *)(v2 + 644) = v5; if ( *(_BYTE *)v5 != 34 || *(_BYTE *)(v5 + 1) != 34 ) { v6 = sub_440E20(v2, v5, &word_4B8FF0); *(_DWORD *)(v2 + 644) = v6; if ( a2 ) { v7 = (int)(v6 + 1); do v8 = *v6++; while ( v8 ); *(_DWORD *)a2 = &v6[-v7]; } } else { *(_BYTE *)(v5 + 1) = 0; *(_DWORD *)(v2 + 632) = *(_DWORD *)(v2 + 644) + 2; *(_DWORD *)(v2 + 636) = 1; *(_DWORD *)(v2 + 644) = &unk_6EAD48; if ( a2 ) { *(_DWORD *)a2 = 0; return *(_DWORD *)(v2 + 644); } } return *(_DWORD *)(v2 + 644); } //----- (00441490) -------------------------------------------------------- char __cdecl sub_441490(unsigned __int8 *a1, const unsigned __int8 *a2) { unsigned __int8 *v2; // esi@1 signed int v3; // edi@5 char result; // al@9 v2 = a1; if ( a1 && a2 ) { if ( a1 != a2 ) _mbsnbcpy(a1, a2, 0x14u); v3 = 20; do { if ( !_mbsnbcmp(v2, &byte_4B8FF4, 1u) ) *v2 = 0; ++v2; --v3; } while ( v3 ); result = 1; } else { result = 0; } return result; } //----- (004414E0) -------------------------------------------------------- int __thiscall sub_4414E0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 29) = 0; *(_DWORD *)(this + 25) = 0; *(_DWORD *)(this + 21) = 0; *(_DWORD *)(this + 17) = 0; *(_DWORD *)(this + 13) = 0; *(_DWORD *)(this + 9) = 0; *(_DWORD *)(this + 5) = 0; *(_DWORD *)(this + 1) = 0; return result; } //----- (00441500) -------------------------------------------------------- char __thiscall sub_441500(void *this, char *a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { char *v10; // eax@1 char v11; // cl@2 char *v12; // eax@3 char v13; // cl@4 int v14; // ebx@5 int i; // esi@5 char *v16; // edi@7 signed int v17; // esi@8 const char *v18; // eax@8 bool v19; // cf@11 bool v20; // zf@11 int v22; // eax@17 unsigned int v23; // [sp+0h] [bp-8Ch]@1 char v24[2]; // [sp+4h] [bp-88h]@1 char v25; // [sp+7h] [bp-85h]@1 char v26[128]; // [sp+8h] [bp-84h]@2 _BYTE v27[3]; // [sp+9h] [bp-83h]@5 unsigned int v28; // [sp+88h] [bp-4h]@1 int v29; // [sp+8Ch] [bp+0h]@1 v28 = (unsigned int)&v29 ^ __security_cookie; v23 = (unsigned int)this; strcpy(v24, "/\\"); v10 = a2; v25 = 0; do { v11 = *v10; v10[v26 - a2] = *v10; ++v10; } while ( v11 ); v12 = v26; do v13 = *v12++; while ( v13 ); v14 = v12 - v27; for ( i = 0; i < v14; ++i ) v26[i] = tolower(v26[i]); v16 = strtok(v26, v24); if ( v16 ) { while ( 1 ) { v17 = 0; v18 = (const char *)(v23 + 37); do { if ( !strcmp(v18, v16) ) break; ++v17; v18 += 65; } while ( v17 < 49 ); v19 = (unsigned int)v17 < 0x31; v20 = v17 == 49; if ( v17 != 49 ) break; v16 = strtok(0, v24); if ( !v16 ) return 1; } } else { v17 = v23; v19 = v23 < 0x31; v20 = v23 == 49; if ( v23 == 49 ) return 1; } if ( v19 | v20 && *(_DWORD *)v23 <= 49 ) { v22 = v17 + v23 + (v17 << 6); *(_DWORD *)(v22 + 5) = a3; *(_DWORD *)(v22 + 9) = a4; *(_DWORD *)(v22 + 13) = a5; *(_DWORD *)(v22 + 17) = a6; *(_DWORD *)(v22 + 21) = a7; *(_DWORD *)(v22 + 25) = a8; *(_DWORD *)(v22 + 29) = a9; *(_DWORD *)(v22 + 33) = a10; *(_BYTE *)(v22 + 4) = 1; ++*(_DWORD *)v23; return 1; } return 0; } // 4DE38C: using guessed type int __security_cookie; // 441500: using guessed type char var_84[128]; //----- (004416C0) -------------------------------------------------------- int __thiscall sub_4416C0(int this) { int v1; // ebx@1 int v2; // esi@1 int v3; // eax@1 signed int v4; // ecx@1 int v5; // edi@3 int v6; // eax@4 int v7; // edx@4 char v8; // cl@5 int v9; // esi@6 int i; // [sp+Ch] [bp-8h]@6 signed int v12; // [sp+10h] [bp-4h]@3 v1 = this; v2 = this + 4; _eh_vector_constructor_iterator_((void *)(this + 4), 0x41u, 49, (int)sub_4414E0, nullsub_1); *(_DWORD *)v1 = 0; v3 = v2; v4 = 49; do { *(_BYTE *)v3 = 0; v3 += 65; --v4; } while ( v4 ); *(_DWORD *)(v1 + 37) = dword_4B9384; *(_DWORD *)(v1 + 41) = dword_4B9388; *(_DWORD *)(v1 + 45) = off_4B938C; *(_DWORD *)(v1 + 102) = dword_4B9374; *(_DWORD *)(v1 + 106) = dword_4B9378; *(_DWORD *)(v1 + 110) = dword_4B937C; *(_DWORD *)(v1 + 114) = off_4B9380; memcpy((void *)(v1 + 167), "CharacterTitleData.shn", 0x17u); *(_DWORD *)(v1 + 232) = dword_4B9348; *(_DWORD *)(v1 + 236) = dword_4B934C; *(_DWORD *)(v1 + 240) = dword_4B9350; *(_DWORD *)(v1 + 244) = dword_4B9354; *(_WORD *)(v1 + 248) = word_4B9358; *(_DWORD *)(v1 + 297) = dword_4B9338; *(_DWORD *)(v1 + 301) = dword_4B933C; *(_DWORD *)(v1 + 305) = dword_4B9340; *(_WORD *)(v1 + 309) = word_4B9344; *(_DWORD *)(v1 + 362) = dword_4B932C; *(_DWORD *)(v1 + 366) = dword_4B9330; *(_WORD *)(v1 + 370) = word_4B9334; *(_BYTE *)(v1 + 372) = byte_4B9336; *(_DWORD *)(v1 + 427) = dword_4B9318; *(_DWORD *)(v1 + 431) = dword_4B931C; *(_DWORD *)(v1 + 435) = dword_4B9320; *(_DWORD *)(v1 + 439) = dword_4B9324; *(_DWORD *)(v1 + 443) = off_4B9328; *(_DWORD *)(v1 + 492) = dword_4B9304; *(_DWORD *)(v1 + 496) = dword_4B9308; *(_DWORD *)(v1 + 500) = dword_4B930C; *(_DWORD *)(v1 + 504) = dword_4B9310; *(_WORD *)(v1 + 508) = word_4B9314; *(_DWORD *)(v1 + 557) = dword_4B92F4; *(_DWORD *)(v1 + 561) = dword_4B92F8; *(_DWORD *)(v1 + 565) = dword_4B92FC; *(_BYTE *)(v1 + 569) = byte_4B9300; *(_DWORD *)(v1 + 622) = dword_4B92E8; *(_DWORD *)(v1 + 626) = dword_4B92EC; *(_DWORD *)(v1 + 630) = off_4B92F0; *(_DWORD *)(v1 + 687) = dword_4B92D8; *(_DWORD *)(v1 + 691) = dword_4B92DC; *(_DWORD *)(v1 + 695) = dword_4B92E0; *(_WORD *)(v1 + 699) = word_4B92E4; memcpy((void *)(v1 + 752), "MiniHouseFurniture.shn", 0x17u); *(_DWORD *)(v1 + 817) = dword_4B92AC; *(_DWORD *)(v1 + 821) = dword_4B92B0; *(_DWORD *)(v1 + 825) = dword_4B92B4; *(_DWORD *)(v1 + 829) = dword_4B92B8; *(_DWORD *)(v1 + 833) = off_4B92BC; *(_DWORD *)(v1 + 882) = dword_4B92A0; *(_DWORD *)(v1 + 886) = dword_4B92A4; *(_DWORD *)(v1 + 890) = off_4B92A8; *(_DWORD *)(v1 + 947) = dword_4B928C; *(_DWORD *)(v1 + 951) = dword_4B9290; *(_DWORD *)(v1 + 955) = dword_4B9294; *(_DWORD *)(v1 + 959) = dword_4B9298; *(_BYTE *)(v1 + 963) = byte_4B929C; *(_DWORD *)(v1 + 1012) = dword_4B9280; *(_DWORD *)(v1 + 1016) = dword_4B9284; *(_WORD *)(v1 + 1020) = word_4B9288; *(_BYTE *)(v1 + 1022) = byte_4B928A; *(_DWORD *)(v1 + 1077) = dword_4B9270; *(_DWORD *)(v1 + 1081) = dword_4B9274; *(_DWORD *)(v1 + 1085) = dword_4B9278; *(_WORD *)(v1 + 1089) = word_4B927C; *(_BYTE *)(v1 + 1091) = byte_4B927E; *(_DWORD *)(v1 + 1142) = dword_4B9260; *(_DWORD *)(v1 + 1146) = dword_4B9264; *(_DWORD *)(v1 + 1150) = dword_4B9268; *(_DWORD *)(v1 + 1154) = off_4B926C; *(_DWORD *)(v1 + 1207) = dword_4B924C; *(_DWORD *)(v1 + 1211) = dword_4B9250; *(_DWORD *)(v1 + 1215) = dword_4B9254; *(_DWORD *)(v1 + 1219) = dword_4B9258; *(_BYTE *)(v1 + 1223) = byte_4B925C; *(_DWORD *)(v1 + 1272) = dword_4B9238; *(_DWORD *)(v1 + 1276) = dword_4B923C; *(_DWORD *)(v1 + 1280) = dword_4B9240; *(_DWORD *)(v1 + 1284) = dword_4B9244; *(_DWORD *)(v1 + 1288) = off_4B9248; memcpy((void *)(v1 + 1337), "MiniHouseFurnitureObjEffect.shn", 0x20u); *(_DWORD *)(v1 + 1402) = dword_4B9204; *(_DWORD *)(v1 + 1406) = dword_4B9208; *(_DWORD *)(v1 + 1410) = dword_4B920C; *(_DWORD *)(v1 + 1414) = dword_4B9210; *(_DWORD *)(v1 + 1418) = off_4B9214; *(_DWORD *)(v1 + 1467) = dword_4B91F0; *(_DWORD *)(v1 + 1471) = dword_4B91F4; *(_DWORD *)(v1 + 1475) = dword_4B91F8; *(_DWORD *)(v1 + 1479) = dword_4B91FC; *(_BYTE *)(v1 + 1483) = byte_4B9200; *(_DWORD *)(v1 + 1532) = dword_4B91DC; *(_DWORD *)(v1 + 1536) = dword_4B91E0; *(_DWORD *)(v1 + 1540) = dword_4B91E4; *(_DWORD *)(v1 + 1544) = dword_4B91E8; *(_WORD *)(v1 + 1548) = word_4B91EC; *(_BYTE *)(v1 + 1550) = byte_4B91EE; *(_DWORD *)(v1 + 1597) = dword_4B91C8; *(_DWORD *)(v1 + 1601) = dword_4B91CC; *(_DWORD *)(v1 + 1605) = dword_4B91D0; *(_DWORD *)(v1 + 1609) = dword_4B91D4; *(_BYTE *)(v1 + 1613) = byte_4B91D8; *(_DWORD *)(v1 + 1662) = dword_4B91B8; *(_DWORD *)(v1 + 1666) = dword_4B91BC; *(_DWORD *)(v1 + 1670) = dword_4B91C0; *(_DWORD *)(v1 + 1674) = off_4B91C4; *(_DWORD *)(v1 + 1727) = dword_4B91A8; *(_DWORD *)(v1 + 1731) = dword_4B91AC; *(_DWORD *)(v1 + 1735) = dword_4B91B0; *(_DWORD *)(v1 + 1739) = off_4B91B4; *(_DWORD *)(v1 + 1792) = dword_4B9194; *(_DWORD *)(v1 + 1796) = dword_4B9198; *(_DWORD *)(v1 + 1800) = dword_4B919C; *(_DWORD *)(v1 + 1804) = dword_4B91A0; *(_DWORD *)(v1 + 1808) = off_4B91A4; memcpy((void *)(v1 + 1857), "CharacterTitleStateView.shn", 0x1Cu); *(_DWORD *)(v1 + 1922) = dword_4B9164; *(_DWORD *)(v1 + 1926) = dword_4B9168; *(_DWORD *)(v1 + 1930) = dword_4B916C; *(_DWORD *)(v1 + 1934) = dword_4B9170; *(_WORD *)(v1 + 1938) = word_4B9174; *(_BYTE *)(v1 + 1940) = byte_4B9176; *(_DWORD *)(v1 + 1987) = dword_4B9150; *(_DWORD *)(v1 + 1991) = dword_4B9154; *(_DWORD *)(v1 + 1995) = dword_4B9158; *(_DWORD *)(v1 + 1999) = dword_4B915C; *(_BYTE *)(v1 + 2003) = byte_4B9160; *(_DWORD *)(v1 + 2052) = dword_4B913C; *(_DWORD *)(v1 + 2056) = dword_4B9140; *(_DWORD *)(v1 + 2060) = dword_4B9144; *(_DWORD *)(v1 + 2064) = dword_4B9148; *(_BYTE *)(v1 + 2068) = byte_4B914C; *(_DWORD *)(v1 + 2117) = dword_4B912C; *(_DWORD *)(v1 + 2121) = dword_4B9130; *(_DWORD *)(v1 + 2125) = dword_4B9134; *(_DWORD *)(v1 + 2129) = off_4B9138; *(_DWORD *)(v1 + 2182) = dword_4B911C; *(_DWORD *)(v1 + 2186) = dword_4B9120; *(_DWORD *)(v1 + 2190) = dword_4B9124; *(_DWORD *)(v1 + 2194) = off_4B9128; *(_DWORD *)(v1 + 2247) = dword_4B910C; *(_DWORD *)(v1 + 2251) = dword_4B9110; *(_DWORD *)(v1 + 2255) = dword_4B9114; *(_DWORD *)(v1 + 2259) = off_4B9118; *(_DWORD *)(v1 + 2312) = dword_4B90F4; *(_DWORD *)(v1 + 2316) = dword_4B90F8; *(_DWORD *)(v1 + 2320) = dword_4B90FC; *(_DWORD *)(v1 + 2324) = dword_4B9100; *(_DWORD *)(v1 + 2328) = dword_4B9104; *(_BYTE *)(v1 + 2332) = byte_4B9108; *(_DWORD *)(v1 + 2377) = dword_4B90E4; *(_DWORD *)(v1 + 2381) = dword_4B90E8; *(_DWORD *)(v1 + 2385) = dword_4B90EC; *(_DWORD *)(v1 + 2389) = off_4B90F0; *(_DWORD *)(v1 + 2442) = dword_4B90D0; *(_DWORD *)(v1 + 2446) = dword_4B90D4; *(_DWORD *)(v1 + 2450) = dword_4B90D8; *(_DWORD *)(v1 + 2454) = dword_4B90DC; *(_DWORD *)(v1 + 2458) = off_4B90E0; *(_DWORD *)(v1 + 2507) = dword_4B90C4; *(_DWORD *)(v1 + 2511) = dword_4B90C8; *(_DWORD *)(v1 + 2515) = off_4B90CC; memcpy((void *)(v1 + 2572), "ItemViewEquipTypeInfo.shn", 0x1Au); *(_DWORD *)(v1 + 2637) = dword_4B9098; *(_DWORD *)(v1 + 2641) = dword_4B909C; *(_DWORD *)(v1 + 2645) = dword_4B90A0; *(_WORD *)(v1 + 2649) = word_4B90A4; *(_BYTE *)(v1 + 2651) = byte_4B90A6; *(_DWORD *)(v1 + 2702) = dword_4B9080; *(_DWORD *)(v1 + 2706) = dword_4B9084; *(_DWORD *)(v1 + 2710) = dword_4B9088; *(_DWORD *)(v1 + 2714) = dword_4B908C; *(_DWORD *)(v1 + 2718) = dword_4B9090; *(_BYTE *)(v1 + 2722) = byte_4B9094; *(_DWORD *)(v1 + 2767) = dword_4B9070; *(_DWORD *)(v1 + 2771) = dword_4B9074; *(_DWORD *)(v1 + 2775) = dword_4B9078; *(_WORD *)(v1 + 2779) = word_4B907C; *(_DWORD *)(v1 + 2832) = dword_4B9064; *(_DWORD *)(v1 + 2836) = dword_4B9068; *(_DWORD *)(v1 + 2840) = off_4B906C; *(_DWORD *)(v1 + 2897) = dword_4B9054; *(_DWORD *)(v1 + 2901) = dword_4B9058; *(_DWORD *)(v1 + 2905) = dword_4B905C; *(_WORD *)(v1 + 2909) = word_4B9060; *(_DWORD *)(v1 + 2962) = dword_4B9040; *(_DWORD *)(v1 + 2966) = dword_4B9044; *(_DWORD *)(v1 + 2970) = dword_4B9048; *(_DWORD *)(v1 + 2974) = dword_4B904C; *(_DWORD *)(v1 + 2978) = off_4B9050; *(_DWORD *)(v1 + 3027) = dword_4B9030; *(_DWORD *)(v1 + 3031) = dword_4B9034; *(_DWORD *)(v1 + 3035) = dword_4B9038; *(_DWORD *)(v1 + 3039) = off_4B903C; memcpy((void *)(v1 + 3092), "MinimonAutoUseItem.shn", 0x17u); memcpy((void *)(v1 + 3157), "ChargedDeletableBuff.shn", 0x19u); v5 = v1 + 37; v12 = 49; do { v6 = v5; v7 = v5 + 1; do v8 = *(_BYTE *)v6++; while ( v8 ); v9 = 0; for ( i = v6 - v7; v9 < i; ++v9 ) *(_BYTE *)(v5 + v9) = tolower(*(_BYTE *)(v5 + v9)); v5 += 65; --v12; } while ( v12 ); return v1; } // 4B9030: using guessed type int dword_4B9030; // 4B9034: using guessed type int dword_4B9034; // 4B9038: using guessed type int dword_4B9038; // 4B903C: using guessed type void *off_4B903C; // 4B9040: using guessed type int dword_4B9040; // 4B9044: using guessed type int dword_4B9044; // 4B9048: using guessed type int dword_4B9048; // 4B904C: using guessed type int dword_4B904C; // 4B9050: using guessed type void *off_4B9050; // 4B9054: using guessed type int dword_4B9054; // 4B9058: using guessed type int dword_4B9058; // 4B905C: using guessed type int dword_4B905C; // 4B9060: using guessed type __int16 word_4B9060; // 4B9064: using guessed type int dword_4B9064; // 4B9068: using guessed type int dword_4B9068; // 4B906C: using guessed type void *off_4B906C; // 4B9070: using guessed type int dword_4B9070; // 4B9074: using guessed type int dword_4B9074; // 4B9078: using guessed type int dword_4B9078; // 4B907C: using guessed type __int16 word_4B907C; // 4B9080: using guessed type int dword_4B9080; // 4B9084: using guessed type int dword_4B9084; // 4B9088: using guessed type int dword_4B9088; // 4B908C: using guessed type int dword_4B908C; // 4B9090: using guessed type int dword_4B9090; // 4B9094: using guessed type char byte_4B9094; // 4B9098: using guessed type int dword_4B9098; // 4B909C: using guessed type int dword_4B909C; // 4B90A0: using guessed type int dword_4B90A0; // 4B90A4: using guessed type __int16 word_4B90A4; // 4B90A6: using guessed type char byte_4B90A6; // 4B90C4: using guessed type int dword_4B90C4; // 4B90C8: using guessed type int dword_4B90C8; // 4B90CC: using guessed type void *off_4B90CC; // 4B90D0: using guessed type int dword_4B90D0; // 4B90D4: using guessed type int dword_4B90D4; // 4B90D8: using guessed type int dword_4B90D8; // 4B90DC: using guessed type int dword_4B90DC; // 4B90E0: using guessed type void *off_4B90E0; // 4B90E4: using guessed type int dword_4B90E4; // 4B90E8: using guessed type int dword_4B90E8; // 4B90EC: using guessed type int dword_4B90EC; // 4B90F0: using guessed type void *off_4B90F0; // 4B90F4: using guessed type int dword_4B90F4; // 4B90F8: using guessed type int dword_4B90F8; // 4B90FC: using guessed type int dword_4B90FC; // 4B9100: using guessed type int dword_4B9100; // 4B9104: using guessed type int dword_4B9104; // 4B9108: using guessed type char byte_4B9108; // 4B910C: using guessed type int dword_4B910C; // 4B9110: using guessed type int dword_4B9110; // 4B9114: using guessed type int dword_4B9114; // 4B9118: using guessed type void *off_4B9118; // 4B911C: using guessed type int dword_4B911C; // 4B9120: using guessed type int dword_4B9120; // 4B9124: using guessed type int dword_4B9124; // 4B9128: using guessed type void *off_4B9128; // 4B912C: using guessed type int dword_4B912C; // 4B9130: using guessed type int dword_4B9130; // 4B9134: using guessed type int dword_4B9134; // 4B9138: using guessed type void *off_4B9138; // 4B913C: using guessed type int dword_4B913C; // 4B9140: using guessed type int dword_4B9140; // 4B9144: using guessed type int dword_4B9144; // 4B9148: using guessed type int dword_4B9148; // 4B914C: using guessed type char byte_4B914C; // 4B9150: using guessed type int dword_4B9150; // 4B9154: using guessed type int dword_4B9154; // 4B9158: using guessed type int dword_4B9158; // 4B915C: using guessed type int dword_4B915C; // 4B9160: using guessed type char byte_4B9160; // 4B9164: using guessed type int dword_4B9164; // 4B9168: using guessed type int dword_4B9168; // 4B916C: using guessed type int dword_4B916C; // 4B9170: using guessed type int dword_4B9170; // 4B9174: using guessed type __int16 word_4B9174; // 4B9176: using guessed type char byte_4B9176; // 4B9194: using guessed type int dword_4B9194; // 4B9198: using guessed type int dword_4B9198; // 4B919C: using guessed type int dword_4B919C; // 4B91A0: using guessed type int dword_4B91A0; // 4B91A4: using guessed type void *off_4B91A4; // 4B91A8: using guessed type int dword_4B91A8; // 4B91AC: using guessed type int dword_4B91AC; // 4B91B0: using guessed type int dword_4B91B0; // 4B91B4: using guessed type void *off_4B91B4; // 4B91B8: using guessed type int dword_4B91B8; // 4B91BC: using guessed type int dword_4B91BC; // 4B91C0: using guessed type int dword_4B91C0; // 4B91C4: using guessed type void *off_4B91C4; // 4B91C8: using guessed type int dword_4B91C8; // 4B91CC: using guessed type int dword_4B91CC; // 4B91D0: using guessed type int dword_4B91D0; // 4B91D4: using guessed type int dword_4B91D4; // 4B91D8: using guessed type char byte_4B91D8; // 4B91DC: using guessed type int dword_4B91DC; // 4B91E0: using guessed type int dword_4B91E0; // 4B91E4: using guessed type int dword_4B91E4; // 4B91E8: using guessed type int dword_4B91E8; // 4B91EC: using guessed type __int16 word_4B91EC; // 4B91EE: using guessed type char byte_4B91EE; // 4B91F0: using guessed type int dword_4B91F0; // 4B91F4: using guessed type int dword_4B91F4; // 4B91F8: using guessed type int dword_4B91F8; // 4B91FC: using guessed type int dword_4B91FC; // 4B9200: using guessed type char byte_4B9200; // 4B9204: using guessed type int dword_4B9204; // 4B9208: using guessed type int dword_4B9208; // 4B920C: using guessed type int dword_4B920C; // 4B9210: using guessed type int dword_4B9210; // 4B9214: using guessed type void *off_4B9214; // 4B9238: using guessed type int dword_4B9238; // 4B923C: using guessed type int dword_4B923C; // 4B9240: using guessed type int dword_4B9240; // 4B9244: using guessed type int dword_4B9244; // 4B9248: using guessed type void *off_4B9248; // 4B924C: using guessed type int dword_4B924C; // 4B9250: using guessed type int dword_4B9250; // 4B9254: using guessed type int dword_4B9254; // 4B9258: using guessed type int dword_4B9258; // 4B925C: using guessed type char byte_4B925C; // 4B9260: using guessed type int dword_4B9260; // 4B9264: using guessed type int dword_4B9264; // 4B9268: using guessed type int dword_4B9268; // 4B926C: using guessed type void *off_4B926C; // 4B9270: using guessed type int dword_4B9270; // 4B9274: using guessed type int dword_4B9274; // 4B9278: using guessed type int dword_4B9278; // 4B927C: using guessed type __int16 word_4B927C; // 4B927E: using guessed type char byte_4B927E; // 4B9280: using guessed type int dword_4B9280; // 4B9284: using guessed type int dword_4B9284; // 4B9288: using guessed type __int16 word_4B9288; // 4B928A: using guessed type char byte_4B928A; // 4B928C: using guessed type int dword_4B928C; // 4B9290: using guessed type int dword_4B9290; // 4B9294: using guessed type int dword_4B9294; // 4B9298: using guessed type int dword_4B9298; // 4B929C: using guessed type char byte_4B929C; // 4B92A0: using guessed type int dword_4B92A0; // 4B92A4: using guessed type int dword_4B92A4; // 4B92A8: using guessed type void *off_4B92A8; // 4B92AC: using guessed type int dword_4B92AC; // 4B92B0: using guessed type int dword_4B92B0; // 4B92B4: using guessed type int dword_4B92B4; // 4B92B8: using guessed type int dword_4B92B8; // 4B92BC: using guessed type void *off_4B92BC; // 4B92D8: using guessed type int dword_4B92D8; // 4B92DC: using guessed type int dword_4B92DC; // 4B92E0: using guessed type int dword_4B92E0; // 4B92E4: using guessed type __int16 word_4B92E4; // 4B92E8: using guessed type int dword_4B92E8; // 4B92EC: using guessed type int dword_4B92EC; // 4B92F0: using guessed type void *off_4B92F0; // 4B92F4: using guessed type int dword_4B92F4; // 4B92F8: using guessed type int dword_4B92F8; // 4B92FC: using guessed type int dword_4B92FC; // 4B9300: using guessed type char byte_4B9300; // 4B9304: using guessed type int dword_4B9304; // 4B9308: using guessed type int dword_4B9308; // 4B930C: using guessed type int dword_4B930C; // 4B9310: using guessed type int dword_4B9310; // 4B9314: using guessed type __int16 word_4B9314; // 4B9318: using guessed type int dword_4B9318; // 4B931C: using guessed type int dword_4B931C; // 4B9320: using guessed type int dword_4B9320; // 4B9324: using guessed type int dword_4B9324; // 4B9328: using guessed type void *off_4B9328; // 4B932C: using guessed type int dword_4B932C; // 4B9330: using guessed type int dword_4B9330; // 4B9334: using guessed type __int16 word_4B9334; // 4B9336: using guessed type char byte_4B9336; // 4B9338: using guessed type int dword_4B9338; // 4B933C: using guessed type int dword_4B933C; // 4B9340: using guessed type int dword_4B9340; // 4B9344: using guessed type __int16 word_4B9344; // 4B9348: using guessed type int dword_4B9348; // 4B934C: using guessed type int dword_4B934C; // 4B9350: using guessed type int dword_4B9350; // 4B9354: using guessed type int dword_4B9354; // 4B9358: using guessed type __int16 word_4B9358; // 4B9374: using guessed type int dword_4B9374; // 4B9378: using guessed type int dword_4B9378; // 4B937C: using guessed type int dword_4B937C; // 4B9380: using guessed type void *off_4B9380; // 4B9384: using guessed type int dword_4B9384; // 4B9388: using guessed type int dword_4B9388; // 4B938C: using guessed type void *off_4B938C; //----- (004420D0) -------------------------------------------------------- void *__thiscall sub_4420D0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B9394; if ( a2 & 1 ) operator delete(this); return v2; } // 4B9394: using guessed type int (__thiscall *off_4B9394)(void *, char); //----- (00442100) -------------------------------------------------------- int __thiscall sub_442100(void *this, int a2) { void *v2; // eax@1 int v3; // ecx@1 int *v4; // edx@1 signed int v5; // esi@1 int v6; // esi@3 int v7; // edx@3 int v8; // ecx@3 int v9; // eax@3 int v10; // eax@3 int v11; // ecx@3 int v12; // ecx@3 int v13; // edx@3 int v14; // edx@3 int v15; // esi@3 int v16; // esi@3 int v17; // eax@3 int v18; // eax@3 int v19; // ecx@3 int v20; // ecx@3 int v21; // edx@3 int v22; // edx@3 int v23; // esi@3 int v24; // esi@3 int v25; // eax@3 int v26; // eax@3 int v27; // ecx@3 int v28; // ecx@3 int v29; // edx@3 int v30; // edx@3 int v31; // esi@3 int v32; // esi@3 int v33; // eax@3 int v34; // eax@3 int v35; // ecx@3 int v36; // ecx@3 int v37; // edx@3 int v38; // edx@3 int v39; // esi@3 int v40; // esi@3 int v41; // eax@3 int v42; // eax@3 int v43; // ecx@3 int v44; // ecx@3 int v45; // edx@3 int v46; // edx@3 int v47; // esi@3 int v48; // esi@3 int v49; // eax@3 int v50; // ecx@3 int v51; // eax@3 int v52; // ecx@3 int v53; // edx@3 int v54; // edx@3 int v55; // esi@3 int v56; // esi@3 int v57; // eax@3 int v58; // ecx@3 int v59; // eax@3 int v60; // ecx@3 int v61; // edx@3 int v62; // edx@3 int v63; // esi@3 int v64; // esi@3 int v65; // eax@3 int v66; // ecx@3 int v67; // eax@3 int v68; // ecx@3 int v69; // edx@3 int v70; // edx@3 int v71; // esi@3 int v72; // esi@3 int v73; // eax@3 int v74; // eax@3 int v75; // ecx@3 int v76; // ecx@3 int v77; // edx@3 int v78; // edx@3 int v79; // esi@3 int v80; // esi@3 int v81; // eax@3 int v82; // eax@3 int v83; // edi@3 int v84; // edi@3 int v85; // edx@3 int v86; // edx@3 int v87; // ecx@3 int v88; // ecx@3 int v89; // eax@3 int v90; // eax@3 int v91; // esi@3 int v92; // esi@3 int v93; // edi@3 int v94; // edi@3 int v95; // ecx@3 int v96; // ecx@3 int v97; // eax@3 int v98; // eax@3 int v99; // edx@3 int v100; // edx@3 int v101; // esi@3 int v102; // esi@3 int v103; // ecx@3 int v104; // ecx@3 int v105; // eax@3 int v106; // eax@3 int v107; // edx@3 int v108; // edx@3 int v109; // esi@3 int v110; // esi@3 int v111; // ecx@3 int v112; // ecx@3 int v113; // eax@3 int v114; // eax@3 int v115; // edx@3 int v116; // edx@3 int v117; // esi@3 int v118; // esi@3 int v119; // ecx@3 int v120; // ecx@3 int v121; // eax@3 int v122; // eax@3 int v123; // edx@3 int v124; // edx@3 int v125; // esi@3 int v126; // esi@3 int v127; // edi@3 int v128; // edi@3 int v129; // eax@3 int v130; // eax@3 int v131; // edx@3 int v132; // edx@3 void *v133; // ecx@3 int v134; // esi@3 int v135; // esi@3 int v136; // eax@3 int result; // eax@3 void *v138; // [sp+Ch] [bp-50h]@1 int v139; // [sp+18h] [bp-44h]@1 int v140; // [sp+1Ch] [bp-40h]@3 int v141; // [sp+20h] [bp-3Ch]@3 int v142; // [sp+24h] [bp-38h]@3 int v143; // [sp+28h] [bp-34h]@3 int v144; // [sp+2Ch] [bp-30h]@3 int v145; // [sp+30h] [bp-2Ch]@3 int v146; // [sp+34h] [bp-28h]@3 int v147; // [sp+38h] [bp-24h]@3 int v148; // [sp+3Ch] [bp-20h]@3 int v149; // [sp+40h] [bp-1Ch]@3 int v150; // [sp+44h] [bp-18h]@3 int v151; // [sp+48h] [bp-14h]@3 int v152; // [sp+4Ch] [bp-10h]@3 int v153; // [sp+50h] [bp-Ch]@3 int v154; // [sp+54h] [bp-8h]@3 unsigned int v155; // [sp+58h] [bp-4h]@1 int v156; // [sp+5Ch] [bp+0h]@1 v155 = (unsigned int)&v156 ^ __security_cookie; v2 = this; v138 = this; v3 = a2 + 2; v4 = &v139; v5 = 16; do { *v4 = *(_BYTE *)(v3 - 2) | ((*(_BYTE *)(v3 - 1) | ((*(_BYTE *)v3 | (*(_BYTE *)(v3 + 1) << 8)) << 8)) << 8); ++v4; v3 += 4; --v5; } while ( v5 ); v6 = *((_DWORD *)v2 + 20); v7 = *((_DWORD *)v2 + 21); v8 = *((_DWORD *)v2 + 22); v9 = __ROL__(v139 + (v6 & v7 | v8 & ~v6) + *((_DWORD *)v2 + 19) - 680876936, 7); v10 = v6 + v9; v11 = __ROL__(v140 + (v10 & v6 | v7 & ~v10) + v8 - 389564586, 12); v12 = v10 + v11; v13 = __ROR__(v141 + (v10 & v12 | v6 & ~v12) + v7 + 606105819, 15); v14 = v12 + v13; v15 = __ROR__(v142 + (v14 & v12 | v10 & ~v14) + v6 - 1044525330, 10); v16 = v14 + v15; v17 = __ROL__(v143 + (v16 & v14 | v12 & ~v16) + v10 - 176418897, 7); v18 = v16 + v17; v19 = __ROL__(v144 + (v18 & v16 | v14 & ~v18) + v12 + 1200080426, 12); v20 = v18 + v19; v21 = __ROR__(v145 + (v18 & v20 | v16 & ~v20) + v14 - 1473231341, 15); v22 = v20 + v21; v23 = __ROR__(v146 + (v22 & v20 | v18 & ~v22) + v16 - 45705983, 10); v24 = v22 + v23; v25 = __ROL__(v147 + (v24 & v22 | v20 & ~v24) + v18 + 1770035416, 7); v26 = v24 + v25; v27 = __ROL__(v148 + (v26 & v24 | v22 & ~v26) + v20 - 1958414417, 12); v28 = v26 + v27; v29 = __ROR__(v149 + (v26 & v28 | v24 & ~v28) + v22 - 42063, 15); v30 = v28 + v29; v31 = __ROR__(v150 + (v30 & v28 | v26 & ~v30) + v24 - 1990404162, 10); v32 = v30 + v31; v33 = __ROL__(v151 + (v32 & v30 | v28 & ~v32) + v26 + 1804603682, 7); v34 = v32 + v33; v35 = __ROL__(v152 + (v34 & v32 | v30 & ~v34) + v28 - 40341101, 12); v36 = v34 + v35; v37 = __ROR__(v153 + (v34 & v36 | v32 & ~v36) + v30 - 1502002290, 15); v38 = v36 + v37; v39 = __ROR__(v154 + (v38 & v36 | v34 & ~v38) + v32 + 1236535329, 10); v40 = v38 + v39; v41 = __ROL__(v140 + (v40 & v36 | v38 & ~v36) + v34 - 165796510, 5); v42 = v40 + v41; v43 = __ROL__(v145 + (v42 & v38 | v40 & ~v38) + v36 - 1069501632, 9); v44 = v42 + v43; v45 = __ROL__(v150 + (v40 & v44 | v42 & ~v40) + v38 + 643717713, 14); v46 = v44 + v45; v47 = __ROR__(v139 + (v42 & v46 | v44 & ~v42) + v40 - 373897302, 12); v48 = v46 + v47; v49 = __ROL__(v144 + (v48 & v44 | v46 & ~v44) + v42 - 701558691, 5); v50 = v149 + ((v48 + v49) & v46 | v48 & ~v46) + v44 + 38016083; v51 = v48 + v49; v50 = __ROL__(v50, 9); v52 = v51 + v50; v53 = __ROL__(v154 + (v48 & v52 | v51 & ~v48) + v46 - 660478335, 14); v54 = v52 + v53; v55 = __ROR__(v143 + (v51 & v54 | v52 & ~v51) + v48 - 405537848, 12); v56 = v54 + v55; v57 = __ROL__(v148 + (v56 & v52 | v54 & ~v52) + v51 + 568446438, 5); v58 = v153 + ((v56 + v57) & v54 | v56 & ~v54) + v52 - 1019803690; v59 = v56 + v57; v58 = __ROL__(v58, 9); v60 = v59 + v58; v61 = __ROL__(v142 + (v56 & v60 | v59 & ~v56) + v54 - 187363961, 14); v62 = v60 + v61; v63 = __ROR__(v147 + (v59 & v62 | v60 & ~v59) + v56 + 1163531501, 12); v64 = v62 + v63; v65 = __ROL__(v152 + (v64 & v60 | v62 & ~v60) + v59 - 1444681467, 5); v66 = v141 + ((v64 + v65) & v62 | v64 & ~v62) + v60 - 51403784; v67 = v64 + v65; v66 = __ROL__(v66, 9); v68 = v67 + v66; v69 = __ROL__(v146 + (v64 & v68 | v67 & ~v64) + v62 + 1735328473, 14); v70 = v68 + v69; v71 = __ROR__(v151 + (v67 & v70 | v68 & ~v67) + v64 - 1926607734, 12); v72 = v70 + v71; v73 = __ROL__(v144 + (v72 ^ v70 ^ v68) + v67 - 378558, 4); v74 = v72 + v73; v75 = __ROL__(v147 + (v74 ^ v72 ^ v70) + v68 - 2022574463, 11); v76 = v74 + v75; v77 = __ROL__(v150 + (v74 ^ v72 ^ v76) + v70 + 1839030562, 16); v78 = v76 + v77; v79 = __ROR__(v153 + (v74 ^ v78 ^ v76) + v72 - 35309556, 9); v80 = v78 + v79; v81 = __ROL__(v140 + (v80 ^ v78 ^ v76) + v74 - 1530992060, 4); v82 = v80 + v81; v83 = __ROL__(v143 + (v82 ^ v80 ^ v78) + v76 + 1272893353, 11); v84 = v82 + v83; v85 = __ROL__(v146 + (v82 ^ v80 ^ v84) + v78 - 155497632, 16); v86 = v84 + v85; v87 = __ROR__(v149 + (v82 ^ v86 ^ v84) + v80 - 1094730640, 9); v88 = v86 + v87; v89 = __ROL__(v152 + (v88 ^ v86 ^ v84) + v82 + 681279174, 4); v90 = v88 + v89; v91 = __ROL__(v139 + (v90 ^ v88 ^ v86) + v84 - 358537222, 11); v92 = v90 + v91; v93 = __ROL__(v142 + (v90 ^ v88 ^ v92) + v86 - 722521979, 16); v94 = v92 + v93; v95 = __ROR__(v145 + (v90 ^ v94 ^ v92) + v88 + 76029189, 9); v96 = v94 + v95; v97 = __ROL__(v148 + (v96 ^ v94 ^ v92) + v90 - 640364487, 4); v98 = v96 + v97; v99 = __ROL__(v151 + (v98 ^ v96 ^ v94) + v92 - 421815835, 11); v100 = v98 + v99; v101 = __ROL__(v154 + (v98 ^ v96 ^ v100) + v94 + 530742520, 16); v102 = v100 + v101; v103 = __ROR__(v141 + (v98 ^ v102 ^ v100) + v96 - 995338651, 9); v104 = v102 + v103; v105 = __ROL__(v139 + (v102 ^ (v104 | ~v100)) + v98 - 198630844, 6); v106 = v104 + v105; v107 = __ROL__(v146 + (v104 ^ (v106 | ~v102)) + v100 + 1126891415, 10); v108 = v106 + v107; v109 = __ROL__(v153 + (v106 ^ (v108 | ~v104)) + v102 - 1416354905, 15); v110 = v108 + v109; v111 = __ROR__(v144 + (v108 ^ (v110 | ~v106)) + v104 - 57434055, 11); v112 = v110 + v111; v113 = __ROL__(v151 + (v110 ^ (v112 | ~v108)) + v106 + 1700485571, 6); v114 = v112 + v113; v115 = __ROL__(v142 + (v112 ^ (v114 | ~v110)) + v108 - 1894986606, 10); v116 = v114 + v115; v117 = __ROL__(v149 + (v114 ^ (v116 | ~v112)) + v110 - 1051523, 15); v118 = v116 + v117; v119 = __ROR__(v140 + (v116 ^ (v118 | ~v114)) + v112 - 2054922799, 11); v120 = v118 + v119; v121 = __ROL__(v147 + (v118 ^ (v120 | ~v116)) + v114 + 1873313359, 6); v122 = v120 + v121; v123 = __ROL__(v154 + (v120 ^ (v122 | ~v118)) + v116 - 30611744, 10); v124 = v122 + v123; v125 = __ROL__(v145 + (v122 ^ (v124 | ~v120)) + v118 - 1560198380, 15); v126 = v124 + v125; v127 = __ROR__(v152 + (v124 ^ (v126 | ~v122)) + v120 + 1309151649, 11); v128 = v126 + v127; v129 = __ROL__(v143 + (v126 ^ (v128 | ~v124)) + v122 - 145523070, 6); v130 = v128 + v129; v131 = __ROL__(v150 + (v128 ^ (v130 | ~v126)) + v124 - 1120210379, 10); v132 = v130 + v131; v133 = v138; v134 = __ROL__(v141 + (v130 ^ (v132 | ~v128)) + v126 + 718787259, 15); v135 = v132 + v134; *((_DWORD *)v138 + 19) += v130; v136 = __ROR__(v148 + (v132 ^ (v135 | ~v130)) + v128 - 343485551, 11); *((_DWORD *)v133 + 20) += v135 + v136; *((_DWORD *)v133 + 21) += v135; result = v132 + *((_DWORD *)v138 + 22); *((_DWORD *)v138 + 22) = result; return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004427E0) -------------------------------------------------------- void *__thiscall sub_4427E0(int this, const void *a2, unsigned int a3) { int v3; // esi@1 unsigned int v4; // ecx@1 unsigned int v5; // edi@1 unsigned int v6; // eax@1 int v7; // ecx@1 int v8; // eax@1 int v9; // ebx@3 int i; // ebx@4 int v12; // [sp+18h] [bp+Ch]@4 v3 = this; v4 = *(_DWORD *)(this + 68); v5 = a3; v6 = v4 >> 3; v7 = v4 + 8 * a3; v8 = v6 & 0x3F; *(_DWORD *)(v3 + 68) = v7; if ( v7 < 8 * a3 ) ++*(_DWORD *)(v3 + 72); *(_DWORD *)(v3 + 72) += a3 >> 29; v9 = 64 - v8; if ( a3 < 64 - v8 ) { v12 = 0; } else { memmove((void *)(v8 + v3 + 4), a2, 64 - v8); sub_442100((void *)v3, v3 + 4); v12 = v9; for ( i = v9 + 63; i < v5; i += 64 ) { sub_442100((void *)v3, (int)((char *)a2 + i - 63)); v12 += 64; } v8 = 0; } return memmove((void *)(v8 + v3 + 4), (char *)a2 + v12, v5 - v12); } //----- (00442890) -------------------------------------------------------- void **__thiscall sub_442890(void **this, void **a2) { void **v2; // esi@1 v2 = this; if ( this != a2 ) { if ( (unsigned int)this[5] >= 0x10 ) operator delete(*this); v2[5] = (void *)15; v2[4] = 0; *(_BYTE *)v2 = 0; if ( (unsigned int)a2[5] >= 0x10 ) { *v2 = *a2; *a2 = 0; } else { memmove_0(v2, a2, (size_t)((char *)a2[4] + 1)); } v2[4] = a2[4]; v2[5] = a2[5]; a2[4] = 0; a2[5] = 0; } return v2; } //----- (00442910) -------------------------------------------------------- int __thiscall sub_442910(void *this, int a2) { int v2; // esi@1 unsigned int v3; // ecx@1 int v4; // eax@1 int v5; // ecx@3 signed int v6; // eax@3 unsigned int v7; // ecx@5 int v8; // eax@5 signed int v9; // edi@7 unsigned __int8 v10; // al@8 char *v11; // eax@14 char v12; // cl@15 char *v14; // [sp-10h] [bp-84h]@11 const char *v15; // [sp-Ch] [bp-80h]@11 int v16; // [sp-8h] [bp-7Ch]@11 void *v17; // [sp+10h] [bp-64h]@14 int v18; // [sp+20h] [bp-54h]@14 unsigned int v19; // [sp+24h] [bp-50h]@14 char v20; // [sp+2Ch] [bp-48h]@9 _BYTE v21[3]; // [sp+2Dh] [bp-47h]@16 char v22; // [sp+4Ch] [bp-28h]@6 char v23; // [sp+4Dh] [bp-27h]@6 char v24; // [sp+4Eh] [bp-26h]@6 char v25[13]; // [sp+4Fh] [bp-25h]@6 char v26; // [sp+5Ch] [bp-18h]@2 char v27; // [sp+5Dh] [bp-17h]@2 char v28; // [sp+5Eh] [bp-16h]@2 char v29; // [sp+5Fh] [bp-15h]@2 int v30; // [sp+60h] [bp-14h]@1 unsigned int v31; // [sp+64h] [bp-10h]@1 int v32; // [sp+70h] [bp-4h]@7 int v33; // [sp+74h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v2 = (int)this; v30 = 0; v3 = 0; v4 = v2 + 68; do { *(&v26 + v3) = *(_BYTE *)v4; *(&v27 + v3) = *(_BYTE *)(v4 + 1); *(&v28 + v3) = *(_BYTE *)(v4 + 2); *(&v29 + v3) = *(_BYTE *)(v4 + 3); v3 += 4; v4 += 4; } while ( v3 < 8 ); v5 = (*(_DWORD *)(v2 + 68) >> 3) & 0x3F; v6 = 56; if ( (unsigned int)v5 >= 0x38 ) v6 = 120; sub_4427E0(v2, &unk_4DC6B0, v6 - v5); sub_4427E0(v2, &v26, 8u); v7 = 0; v8 = v2 + 78; do { *(&v22 + v7) = *(_BYTE *)(v8 - 2); *(&v23 + v7) = *(_BYTE *)(v8 - 1); *(&v24 + v7) = *(_BYTE *)v8; v25[v7] = *(_BYTE *)(v8 + 1); v7 += 4; v8 += 4; } while ( v7 < 0x10 ); *(_DWORD *)(a2 + 20) = 15; *(_DWORD *)(a2 + 16) = 0; *(_BYTE *)a2 = 0; v32 = 0; v30 = 1; v9 = 0; do { v10 = *(&v22 + v9); if ( v10 ) { if ( v10 > 0xFu ) { v16 = v10; v15 = "%x"; v14 = &v20; } else { v16 = v10; v15 = "0%x"; v14 = &v20; } sprintf(v14, v15, v16); } else { sprintf(&v20, "00"); } v11 = &v20; v19 = 15; v18 = 0; LOBYTE(v17) = 0; do v12 = *v11++; while ( v12 ); sub_43DEA0((int)&v17, &v20, v11 - v21); v32 = 1; sub_440190(a2, (int)&v17, 0, -1); LOBYTE(v32) = 0; if ( v19 >= 0x10 ) operator delete(v17); ++v9; } while ( v9 < 16 ); return a2; } // 4DE38C: using guessed type int __security_cookie; // 442910: using guessed type char var_25[13]; //----- (00442AC0) -------------------------------------------------------- int __cdecl sub_442AC0(int a1, const void *a2, unsigned int a3) { int (__thiscall **v4)(void *, char); // [sp+10h] [bp-6Ch]@1 char v5; // [sp+14h] [bp-68h]@1 int v6; // [sp+54h] [bp-28h]@1 int v7; // [sp+58h] [bp-24h]@1 int v8; // [sp+5Ch] [bp-20h]@1 int v9; // [sp+60h] [bp-1Ch]@1 int v10; // [sp+64h] [bp-18h]@1 int v11; // [sp+68h] [bp-14h]@1 unsigned int v12; // [sp+6Ch] [bp-10h]@1 int v13; // [sp+78h] [bp-4h]@1 int v14; // [sp+7Ch] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v4 = &off_4B9394; memset(&v5, 0, 0x40u); v7 = 0; v6 = 0; v8 = 1732584193; v9 = -271733879; v10 = -1732584194; v11 = 271733878; v13 = 0; sub_4427E0((int)&v4, a2, a3); sub_442910(&v4, a1); return a1; } // 4B9394: using guessed type int (__thiscall *off_4B9394)(void *, char); // 4DE38C: using guessed type int __security_cookie; //----- (00442B70) -------------------------------------------------------- void *__thiscall sub_442B70(int this) { int v1; // esi@1 void *result; // eax@1 v1 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; result = memset((void *)(this + 24), 0, 0x104u); *(_DWORD *)(v1 + 284) = 0; *(_DWORD *)(v1 + 288) = 0; *(_DWORD *)(v1 + 292) = 0; *(_DWORD *)(v1 + 296) = 0; *(_DWORD *)(v1 + 316) = 0; *(_DWORD *)(v1 + 320) = 0; *(_DWORD *)(v1 + 324) = 0; *(_DWORD *)(v1 + 332) = 0; *(_DWORD *)(v1 + 340) = 0; *(_DWORD *)(v1 + 344) = 0; *(_DWORD *)(v1 + 300) = 10; return result; } //----- (00442BF0) -------------------------------------------------------- DWORD __thiscall sub_442BF0(int this, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod) { int v4; // esi@1 int v5; // eax@1 DWORD result; // eax@5 v4 = this; v5 = *(_DWORD *)(this + 4); if ( v5 ) { if ( v5 != 1 ) return -1; if ( fseek(*(FILE **)(this + 12), lDistanceToMove, dwMoveMethod) ) { SetLastError(0x84u); return -1; } if ( lpDistanceToMoveHigh ) *lpDistanceToMoveHigh = 0; result = ftell(*(FILE **)(v4 + 12)); } else { result = SetFilePointer(*(HANDLE *)(this + 8), lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod); } return result; } //----- (00442C70) -------------------------------------------------------- unsigned int __thiscall sub_442C70(int this, int a2, unsigned int a3) { char v3; // dl@1 unsigned int result; // eax@1 v3 = *(_BYTE *)(this + 312) ^ *(_BYTE *)(this + 313) ^ *(_BYTE *)(this + 314) ^ *(_BYTE *)(this + 315); result = 0; if ( a3 ) { do *(_BYTE *)(result++ + a2) ^= v3; while ( result < a3 ); } return result; } //----- (00442CB0) -------------------------------------------------------- BOOL __thiscall sub_442CB0(int this, LPCVOID NumberOfBytesWritten) { int v2; // edx@1 char *v3; // ecx@2 LPCVOID v4; // esi@3 int v5; // eax@3 unsigned int v6; // ecx@3 int v7; // eax@6 BOOL result; // eax@9 char v9; // [sp+0h] [bp-13Ch]@3 int v10[77]; // [sp+8h] [bp-134h]@4 v2 = this; if ( *(_DWORD *)(this + 304) ) { v4 = NumberOfBytesWritten; *((_DWORD *)v4 + 1) |= 1u; v5 = *(_DWORD *)(this + 312); memcpy(&v9, v4, 0x13Cu); v6 = 0; do { v10[v6] ^= v5 ^ 0x36175A5A; ++v6; v5 = __ROL__(v5, 1); } while ( v6 < 0x4D ); v3 = &v9; } else { v3 = (char *)NumberOfBytesWritten; *((_DWORD *)v3 + 1) &= 0xFFFFFFFEu; } v7 = *(_DWORD *)(v2 + 4); if ( v7 ) result = v7 != 1 || fwrite(v3, 0x13Cu, 1u, *(FILE **)(v2 + 12)) == 1; else result = WriteFile(*(HANDLE *)(v2 + 8), v3, 0x13Cu, (LPDWORD)&NumberOfBytesWritten, 0); return result; } // 442CB0: using guessed type int var_134[77]; //----- (00442D70) -------------------------------------------------------- int __thiscall sub_442D70(int this, int a2) { int v2; // edi@1 int result; // eax@3 v2 = this; if ( sub_442BF0( this, *(_DWORD *)(*(_DWORD *)(this + 296) + 324 * a2), (PLONG)(*(_DWORD *)(this + 296) + 324 * a2 + 4), 0) == -1 && GetLastError() ) result = 0; else result = sub_442CB0(v2, (LPCVOID)(324 * a2 + *(_DWORD *)(v2 + 296) + 8)) != 0; return result; } //----- (00442DD0) -------------------------------------------------------- BOOL __thiscall sub_442DD0(int this, int a2, unsigned int a3) { int v3; // esi@1 int v4; // edi@1 __int64 v5; // kr00_8@1 struct _SYSTEMTIME SystemTime; // [sp+Ch] [bp-14h]@1 unsigned int v8; // [sp+1Ch] [bp-4h]@1 int v9; // [sp+20h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)(this + 344); v5 = *(_QWORD *)(v4 + 288) + a3; *(_DWORD *)(v4 + 288) = v5; *(_DWORD *)(*(_DWORD *)(this + 344) + 292) = HIDWORD(v5); *(_QWORD *)(*(_DWORD *)(this + 344) + 296) = v5; GetSystemTime(&SystemTime); return SystemTimeToFileTime(&SystemTime, (LPFILETIME)(*(_DWORD *)(v3 + 344) + 304)); } // 4DE38C: using guessed type int __security_cookie; //----- (00442E70) -------------------------------------------------------- signed int __thiscall sub_442E70(int this, const unsigned __int8 *a2) { int v2; // esi@1 signed int v3; // ebx@1 int v4; // edi@2 int v5; // eax@3 signed int result; // eax@6 v2 = this; v3 = 0; if ( *(_DWORD *)(this + 292) ) { v4 = 0; while ( 1 ) { v5 = v4 + *(_DWORD *)(v2 + 296); if ( *(_DWORD *)(v5 + 8) == 2 ) { if ( !_mbsicmp((const unsigned __int8 *)(v5 + 16), a2) ) break; } ++v3; v4 += 324; if ( (unsigned int)v3 >= *(_DWORD *)(v2 + 292) ) goto LABEL_6; } result = v3; } else { LABEL_6: result = -1; } return result; } //----- (00442ED0) -------------------------------------------------------- int __thiscall sub_442ED0(int this, int a2) { int v2; // edi@1 int v3; // esi@1 int v4; // eax@1 int result; // eax@2 v2 = 324 * a2; v3 = this; v4 = *(_DWORD *)(this + 296); if ( *(_DWORD *)(v4 + 324 * a2 + 8) != 2 || (*(_DWORD *)(v4 + v2 + 8) = 3, sub_442BF0(this, *(_DWORD *)(*(_DWORD *)(this + 296) + v2), (PLONG)(*(_DWORD *)(this + 296) + v2 + 4), 0) == -1) && GetLastError() ) result = 0; else result = sub_442CB0(v3, (LPCVOID)(*(_DWORD *)(v3 + 296) + v2 + 8)) != 0; return result; } //----- (00442F50) -------------------------------------------------------- int __thiscall sub_442F50(int this, const unsigned __int8 *a2) { int v2; // esi@1 int v3; // eax@1 int result; // eax@2 v2 = this; v3 = sub_442E70(this, a2); if ( v3 == -1 ) result = 0; else result = sub_442ED0(v2, v3); return result; } //----- (00442F80) -------------------------------------------------------- BOOL __thiscall sub_442F80(int this, HANDLE hObject) { int v2; // esi@1 BOOL result; // eax@2 v2 = this; if ( *(_DWORD *)this ) { if ( *(_DWORD *)(this + 316) ) { sub_442D70(this, *(_DWORD *)(this + 340)); *(_DWORD *)(v2 + 316) = 0; } result = 1; } else { result = CloseHandle(hObject); } return result; } //----- (00442FC0) -------------------------------------------------------- BOOL __thiscall sub_442FC0(int this, HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) { int v6; // esi@1 BOOL result; // eax@2 int v8; // eax@5 int v9; // eax@6 v6 = this; if ( !*(_DWORD *)this ) return ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); if ( hFile != *(HANDLE *)(this + 332) ) return 0; v8 = *(_DWORD *)(*(_DWORD *)(this + 344) + 276); if ( v8 ) { v9 = v8 - 1; if ( v9 ) { result = v9 - 1; if ( !result ) return result; goto LABEL_11; } return 0; } if ( !ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped) ) return 0; LABEL_11: if ( *(_BYTE *)(*(_DWORD *)(v6 + 344) + 12) & 2 ) sub_442C70(v6, (int)lpBuffer, *lpNumberOfBytesRead); return 1; } //----- (00443050) -------------------------------------------------------- void *__thiscall sub_443050(int this, HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped) { int v6; // esi@1 void *result; // eax@2 DWORD v8; // eax@6 char v9; // cl@6 int v10; // eax@8 int v11; // eax@9 DWORD v12; // eax@14 char v13; // cl@14 v6 = this; if ( *(_DWORD *)this ) { if ( hFile == *(HANDLE *)(this + 332) ) { if ( *(_BYTE *)(*(_DWORD *)(this + 344) + 12) & 2 ) { v8 = 0; v9 = *(_BYTE *)(this + 312) ^ *(_BYTE *)(this + 313) ^ *(_BYTE *)(this + 314) ^ *(_BYTE *)(this + 315); if ( nNumberOfBytesToWrite ) { do *((_BYTE *)lpBuffer + v8++) ^= v9; while ( v8 < nNumberOfBytesToWrite ); } } v10 = *(_DWORD *)(*(_DWORD *)(v6 + 344) + 276); if ( v10 ) { v11 = v10 - 1; if ( !v11 || v11 == 1 ) hFile = 0; } else { hFile = (HANDLE)WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped); } if ( *(_BYTE *)(*(_DWORD *)(v6 + 344) + 12) & 2 ) { v12 = 0; v13 = *(_BYTE *)(v6 + 312) ^ *(_BYTE *)(v6 + 313) ^ *(_BYTE *)(v6 + 314) ^ *(_BYTE *)(v6 + 315); if ( nNumberOfBytesToWrite ) { do *((_BYTE *)lpBuffer + v12++) ^= v13; while ( v12 < nNumberOfBytesToWrite ); } } if ( hFile ) { *(_DWORD *)(v6 + 328) = 1; sub_442DD0(v6, (int)lpBuffer, nNumberOfBytesToWrite); } result = hFile; } else { result = 0; } } else { result = (void *)WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped); } return result; } //----- (00443140) -------------------------------------------------------- DWORD __thiscall sub_443140(int this, HANDLE hFile, LPDWORD lpFileSizeHigh) { DWORD result; // eax@2 if ( *(_DWORD *)this ) { if ( lpFileSizeHigh ) *lpFileSizeHigh = *(_DWORD *)(*(_DWORD *)(this + 344) + 292); result = *(_DWORD *)(*(_DWORD *)(this + 344) + 288); } else { result = GetFileSize(hFile, lpFileSizeHigh); } return result; } //----- (00443180) -------------------------------------------------------- DWORD __thiscall sub_443180(int this, HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod) { int v5; // esi@1 DWORD result; // eax@2 int v7; // eax@9 PLONG v8; // edi@9 LONG v9; // edx@10 DWORD v10; // eax@15 int v11; // esi@15 void *v12; // [sp-14h] [bp-18h]@9 LONG v13; // [sp-10h] [bp-14h]@9 LONG *v14; // [sp-Ch] [bp-10h]@9 DWORD v15; // [sp-8h] [bp-Ch]@9 v5 = this; if ( !*(_DWORD *)this ) return SetFilePointer(hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod); if ( !dwMoveMethod ) { v8 = lpDistanceToMoveHigh; if ( lpDistanceToMoveHigh ) *lpDistanceToMoveHigh += *(_DWORD *)(*(_DWORD *)(this + 344) + 284); v9 = lDistanceToMove + *(_DWORD *)(*(_DWORD *)(this + 344) + 280); v15 = 0; goto LABEL_14; } if ( dwMoveMethod == 1 ) { v8 = lpDistanceToMoveHigh; v9 = lDistanceToMove; v15 = 1; LABEL_14: v14 = v8; v13 = v9; v12 = *(void **)(this + 332); goto LABEL_15; } if ( dwMoveMethod != 2 ) { if ( lpDistanceToMoveHigh ) *lpDistanceToMoveHigh = -1; SetLastError(0x57u); return -1; } v7 = *(_DWORD *)(this + 344); v8 = lpDistanceToMoveHigh; v15 = 2; v14 = &lpDistanceToMoveHigh[*(_DWORD *)(v7 + 284)]; v13 = lDistanceToMove + *(_DWORD *)(v7 + 280) + *(_DWORD *)(v7 + 288); v12 = *(void **)(this + 332); LABEL_15: v10 = SetFilePointer(v12, v13, v14, v15); v11 = *(_DWORD *)(v5 + 344); result = v10 - *(_DWORD *)(v11 + 280); if ( v8 ) *v8 -= *(_DWORD *)(v11 + 284); return result; } //----- (00443250) -------------------------------------------------------- int __thiscall sub_443250(int this, FILE *a2) { int v2; // esi@1 int result; // eax@2 v2 = this; if ( *(_DWORD *)this ) { if ( *(_DWORD *)(this + 316) ) { sub_442D70(this, *(_DWORD *)(this + 340)); *(_DWORD *)(v2 + 316) = 0; } result = 0; } else { result = fclose(a2); } return result; } //----- (004432A0) -------------------------------------------------------- int __thiscall sub_4432A0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)(this + 304) = 0; *(_DWORD *)(this + 308) = 0; *(_DWORD *)(this + 312) = 0; sub_442B70(this); return v1; } //----- (004432C0) -------------------------------------------------------- int __thiscall sub_4432C0(int this) { int v1; // eax@2 if ( *(_DWORD *)(this + 316) ) { v1 = *(_DWORD *)(this + 4); if ( !v1 ) return sub_442F80(this, *(HANDLE *)(this + 332)); if ( v1 == 1 ) return sub_443250(this, *(FILE **)(this + 336)); } return 1; } //----- (00443300) -------------------------------------------------------- int __thiscall sub_443300(int this, unsigned int a2) { int v2; // esi@1 int v3; // edi@1 int result; // eax@1 int v5; // ebx@1 unsigned int v6; // eax@2 int v7; // edi@2 int v8; // ebx@3 int v9; // eax@9 FILE *v10; // ST0C_4@14 int v11; // eax@14 signed int v12; // ebx@18 int v13; // edi@19 LONG *v14; // eax@20 int v15; // ecx@22 signed int v16; // eax@24 int v17; // edx@33 int v18; // edi@33 int v19; // ecx@35 signed int v20; // eax@37 int v21; // edi@44 int v22; // edx@44 int v23; // eax@44 int v24; // ecx@44 LONG *v25; // ebx@44 __int32 v26; // eax@44 DWORD v27; // eax@50 int v28; // edx@55 int NumberOfBytesWritten; // [sp+Ch] [bp-14Ch]@18 int v30; // [sp+148h] [bp-10h]@24 LONG DistanceToMoveHigh; // [sp+14Ch] [bp-Ch]@9 int v32; // [sp+150h] [bp-8h]@2 int v33; // [sp+154h] [bp-4h]@11 v2 = this; v3 = *(_DWORD *)(this + 292); result = (int)malloc(324 * (v3 + a2 + 1)); v5 = result; if ( result ) { memmove((void *)result, *(const void **)(v2 + 296), 324 * v3); free(*(void **)(v2 + 296)); v6 = *(_DWORD *)(v2 + 292); v7 = 0; *(_DWORD *)(v2 + 296) = v5; v32 = 0; if ( v6 ) { v8 = v5 + 8; do { if ( *(_DWORD *)v8 == 5 ) break; ++v7; v8 += 324; } while ( v7 < v6 ); v32 = v7; } if ( v7 >= v6 ) return -1; v9 = *(_DWORD *)(v2 + 4); DistanceToMoveHigh = 0; if ( v9 ) { if ( v9 != 1 ) { v33 = -1; goto LABEL_17; } if ( fseek(*(FILE **)(v2 + 12), 0, 2) ) { SetLastError(0x84u); v33 = -1; LABEL_17: if ( GetLastError() ) return -1; LABEL_18: memset(&NumberOfBytesWritten, 0, 0x13Cu); v12 = 1; NumberOfBytesWritten = 4; if ( a2 >= 1 ) { v13 = 324 * (v7 + 1); while ( 1 ) { v14 = (LONG *)(v13 + *(_DWORD *)(v2 + 296) + 4); if ( v13 + *(_DWORD *)(v2 + 296) != -4 ) *v14 = 0; v15 = *(_DWORD *)(v2 + 4); if ( v15 ) { if ( v15 == 1 ) { v16 = ftell(*(FILE **)(v2 + 12)); v30 = v16; if ( v16 ) { SetLastError(0x84u); v16 = -1; } } else { v16 = v30; } } else { v16 = SetFilePointer(*(HANDLE *)(v2 + 8), 0, v14, 1u); } *(_DWORD *)(v13 + *(_DWORD *)(v2 + 296)) = v16; if ( *(_DWORD *)(v13 + *(_DWORD *)(v2 + 296)) == -1 ) { if ( GetLastError() ) return -1; } if ( !sub_442CB0(v2, &NumberOfBytesWritten) ) return -1; *(_DWORD *)(v13 + *(_DWORD *)(v2 + 296) + 8) = 4; ++v12; v13 += 324; if ( v12 > a2 ) { v7 = v32; break; } } } v17 = *(_DWORD *)(v2 + 296); v18 = 324 * (v12 + v7); NumberOfBytesWritten = 5; if ( v18 + v17 != -4 ) *(_DWORD *)(v18 + v17 + 4) = 0; v19 = *(_DWORD *)(v2 + 4); if ( v19 ) { if ( v19 == 1 ) { v20 = ftell(*(FILE **)(v2 + 12)); if ( v20 ) { SetLastError(0x84u); v20 = -1; } } else { v20 = a2; } } else { v20 = SetFilePointer(*(HANDLE *)(v2 + 8), 0, (PLONG)(v18 + v17 + 4), 1u); } *(_DWORD *)(v18 + *(_DWORD *)(v2 + 296)) = v20; if ( *(_DWORD *)(v18 + *(_DWORD *)(v2 + 296)) == -1 && GetLastError() || !sub_442CB0(v2, &NumberOfBytesWritten) ) return -1; *(_DWORD *)(v18 + *(_DWORD *)(v2 + 296) + 8) = 5; v21 = 324 * v32; v22 = v33; *(_DWORD *)(324 * v32 + *(_DWORD *)(v2 + 296) + 8) = 1; *(_DWORD *)(v21 + *(_DWORD *)(v2 + 296) + 276) = v22; *(_DWORD *)(v21 + *(_DWORD *)(v2 + 296) + 280) = DistanceToMoveHigh; *(_DWORD *)(v21 + *(_DWORD *)(v2 + 296) + 284) = a2 + 1; v23 = v21 + *(_DWORD *)(v2 + 296); v24 = *(_DWORD *)(v2 + 4); v25 = (LONG *)(v23 + 4); v26 = *(_DWORD *)v23; if ( v24 ) { if ( v24 != 1 ) goto LABEL_53; if ( fseek(*(FILE **)(v2 + 12), v26, 0) ) { SetLastError(0x84u); goto LABEL_53; } if ( v25 ) *v25 = 0; v27 = ftell(*(FILE **)(v2 + 12)); } else { v27 = SetFilePointer(*(HANDLE *)(v2 + 8), v26, v25, 0); } if ( v27 != -1 ) { LABEL_54: if ( sub_442CB0(v2, (LPCVOID)(v21 + *(_DWORD *)(v2 + 296) + 8)) ) { v28 = *(_DWORD *)(v2 + 296); *(_DWORD *)(v2 + 292) += a2 + 1; *(_DWORD *)(v28 + 276) = *(_DWORD *)(v2 + 292); if ( sub_442BF0(v2, **(_DWORD **)(v2 + 296), (PLONG)(*(_DWORD *)(v2 + 296) + 4), 0) != -1 || !GetLastError() ) { if ( sub_442CB0(v2, (LPCVOID)(*(_DWORD *)(v2 + 296) + 8)) ) return v32 + 1; } } return -1; } LABEL_53: if ( GetLastError() ) return -1; goto LABEL_54; } v10 = *(FILE **)(v2 + 12); DistanceToMoveHigh = 0; v11 = ftell(v10); } else { v11 = SetFilePointer(*(HANDLE *)(v2 + 8), 0, &DistanceToMoveHigh, 2u); } v33 = v11; if ( v11 != -1 ) goto LABEL_18; goto LABEL_17; } return result; } //----- (004436F0) -------------------------------------------------------- signed int __thiscall sub_4436F0(int this) { int v1; // esi@1 int v2; // eax@2 int v4; // eax@9 v1 = this; if ( *(_DWORD *)(this + 316) ) { v2 = *(_DWORD *)(this + 4); if ( v2 ) { if ( v2 == 1 && sub_443250(this, *(FILE **)(this + 336)) ) return 0; } else { if ( !sub_442F80(this, *(HANDLE *)(this + 332)) ) return 0; } *(_DWORD *)(v1 + 316) = 0; } if ( *(_DWORD *)v1 ) { v4 = *(_DWORD *)(v1 + 4); *(_DWORD *)v1 = 0; if ( v4 ) { if ( v4 == 1 && !*(_DWORD *)(v1 + 20) ) fclose(*(FILE **)(v1 + 12)); } else { if ( !*(_DWORD *)(v1 + 16) ) CloseHandle(*(HANDLE *)(v1 + 8)); } } if ( *(_DWORD *)(v1 + 296) ) free(*(void **)(v1 + 296)); sub_442B70(v1); return 1; } //----- (004437A0) -------------------------------------------------------- signed int __thiscall sub_4437A0(int this, unsigned int a2) { int v2; // esi@1 signed int result; // eax@2 int v4; // eax@7 int v5; // eax@9 int v6; // edx@9 v2 = this; if ( *(_DWORD *)this ) { if ( *(_DWORD *)(this + 292) >= a2 ) { if ( *(_DWORD *)(324 * a2 + *(_DWORD *)(this + 296) + 8) == 2 && sub_4432C0(this) && (v4 = 324 * a2 + *(_DWORD *)(v2 + 296), *(_DWORD *)(v2 + 340) = a2, *(_DWORD *)(v2 + 344) = v4, *(_DWORD *)(*(_DWORD *)(v2 + 344) + 280) == sub_442BF0(v2, *(_DWORD *)(v4 + 280), (PLONG)(v4 + 284), 0)) ) { v5 = *(_DWORD *)(v2 + 12); v6 = *(_DWORD *)(v2 + 8); *(_DWORD *)(v2 + 328) = 0; *(_DWORD *)(v2 + 324) = 0; *(_DWORD *)(v2 + 336) = v5; result = 1; *(_DWORD *)(v2 + 332) = v6; *(_DWORD *)(v2 + 316) = 1; } else { result = 0; } } else { result = 0; } } else { result = 0; } return result; } //----- (00443860) -------------------------------------------------------- signed int __thiscall sub_443860(void *this, const unsigned __int8 *a2) { int v2; // esi@1 signed int result; // eax@2 signed int v4; // eax@3 v2 = (int)this; if ( *(_DWORD *)this && (v4 = sub_442E70((int)this, a2), v4 != -1) ) result = sub_4437A0(v2, v4); else result = 0; return result; } //----- (004438A0) -------------------------------------------------------- int __thiscall sub_4438A0(int this) { unsigned int v1; // esi@1 int result; // eax@1 int v3; // edx@2 v1 = *(_DWORD *)(this + 292); result = 0; if ( v1 ) { v3 = *(_DWORD *)(this + 296) + 8; while ( *(_DWORD *)v3 != 4 ) { ++result; v3 += 324; if ( result >= v1 ) goto LABEL_5; } } else { LABEL_5: result = sub_443300(this, *(_DWORD *)(this + 300)); } return result; } //----- (004438E0) -------------------------------------------------------- signed int __thiscall sub_4438E0(int this, LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD a6, DWORD a7, HANDLE hTemplateFile) { int v8; // esi@1 signed int result; // eax@2 int v10; // eax@4 int v11; // eax@20 int v12; // eax@21 DWORD v13; // [sp-4h] [bp-2Ch]@10 struct _SYSTEMTIME SystemTime; // [sp+14h] [bp-14h]@21 unsigned int v15; // [sp+24h] [bp-4h]@1 int v16; // [sp+28h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v8 = this; if ( !*(_DWORD *)this ) return (signed int)CreateFileA( lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, a6, a7, hTemplateFile); if ( *(_DWORD *)(this + 316) ) { v10 = *(_DWORD *)(this + 4); if ( v10 ) { if ( v10 == 1 ) sub_443250(this, *(FILE **)(this + 336)); } else { sub_442F80(this, *(HANDLE *)(this + 332)); } } switch ( a6 ) { case 1u: if ( sub_442E70(v8, (const unsigned __int8 *)lpFileName) == -1 ) goto LABEL_20; v13 = 183; goto LABEL_11; case 2u: sub_442F50(v8, (const unsigned __int8 *)lpFileName); goto LABEL_20; case 3u: if ( !sub_443860((void *)v8, (const unsigned __int8 *)lpFileName) ) goto LABEL_15; return *(_DWORD *)(v8 + 332); case 4u: if ( !sub_443860((void *)v8, (const unsigned __int8 *)lpFileName) ) goto LABEL_20; return *(_DWORD *)(v8 + 332); case 5u: if ( sub_442E70(v8, (const unsigned __int8 *)lpFileName) != -1 ) { LABEL_15: v13 = 1168; LABEL_11: SetLastError(v13); return -1; } if ( !sub_442ED0(v8, -1) ) return -1; LABEL_20: v11 = sub_4438A0(v8); *(_DWORD *)(v8 + 340) = v11; if ( v11 == -1 || (GetSystemTime(&SystemTime), v12 = *(_DWORD *)(v8 + 296) + 324 * *(_DWORD *)(v8 + 340), *(_DWORD *)(v8 + 344) = v12, *(_DWORD *)(v12 + 8) = 2, strncpy((char *)(*(_DWORD *)(v8 + 344) + 16), lpFileName, 0x103u), *(_DWORD *)(*(_DWORD *)(v8 + 344) + 288) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 292) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 296) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 300) = 0, SystemTimeToFileTime(&SystemTime, (LPFILETIME)(*(_DWORD *)(v8 + 344) + 304)), *(_DWORD *)(*(_DWORD *)(v8 + 344) + 312) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 284) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 280) = SetFilePointer( *(HANDLE *)(v8 + 8), 0, (PLONG)(*(_DWORD *)(v8 + 344) + 284), 2u), *(_DWORD *)(*(_DWORD *)(v8 + 344) + 280) == -1) && GetLastError() ) return -1; result = *(_DWORD *)(v8 + 8); *(_DWORD *)(v8 + 316) = 1; *(_DWORD *)(v8 + 324) = 1; *(_DWORD *)(v8 + 328) = 0; *(_DWORD *)(v8 + 336) = 0; *(_DWORD *)(v8 + 332) = result; return result; default: return -1; } } // 4DE38C: using guessed type int __security_cookie; //----- (00443B50) -------------------------------------------------------- int __thiscall sub_443B50(int this) { int result; // eax@1 result = 0; *(_DWORD *)(this + 936) = 0; *(_DWORD *)(this + 952) = 0; *(_DWORD *)(this + 940) = 0; *(_DWORD *)(this + 944) = 0; *(_DWORD *)(this + 1228) = 0; *(_DWORD *)(this + 1232) = 0; *(_DWORD *)(this + 1236) = 0; *(_DWORD *)(this + 1240) = 0; *(_DWORD *)(this + 1244) = 0; *(_DWORD *)(this + 1248) = 0; *(_DWORD *)(this + 1252) = 0; *(_DWORD *)(this + 1256) = 0; *(_DWORD *)(this + 1260) = 0; *(_DWORD *)(this + 1268) = 0; *(_DWORD *)(this + 1264) = 0; *(_DWORD *)(this + 660) = 0; *(_DWORD *)(this + 664) = 0; return result; } //----- (00443BC0) -------------------------------------------------------- signed int __thiscall sub_443BC0(int this) { int v1; // esi@1 unsigned int v2; // eax@3 int v3; // eax@4 int v4; // ecx@5 v1 = this; if ( *(_DWORD *)(this + 1240) ) { operator delete(*(void **)(this + 1240)); *(_DWORD *)(v1 + 1240) = 0; } v2 = *(_DWORD *)(v1 + 1228); if ( (signed int)v2 > 0 ) { *(_DWORD *)(v1 + 1240) = unknown_libname_17(4 * v2 | -((unsigned __int64)v2 >> 30 != 0)); v3 = *(_DWORD *)(v1 + 1232); if ( v3 ) { v4 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v1 + 1240)) = v3; v3 = *(_DWORD *)(v3 + 72); v4 += 4; } while ( v3 ); } } return 1; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00443C40) -------------------------------------------------------- signed int __thiscall sub_443C40(int this) { int v1; // esi@1 unsigned int v2; // eax@3 int v3; // eax@4 int v4; // ecx@5 v1 = this; if ( *(_DWORD *)(this + 1256) ) { sub_48DB99(*(void **)(this + 1256)); *(_DWORD *)(v1 + 1256) = 0; } v2 = *(_DWORD *)(v1 + 1244); if ( (signed int)v2 > 0 ) { *(_DWORD *)(v1 + 1256) = unknown_libname_17(4 * v2 | -((unsigned __int64)v2 >> 30 != 0)); v3 = *(_DWORD *)(v1 + 1248); if ( v3 ) { v4 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v1 + 1256)) = v3; v3 = *(_DWORD *)(v3 + 12); v4 += 4; } while ( v3 ); } } return 1; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00443CC0) -------------------------------------------------------- int __thiscall sub_443CC0(void *this, const char *a2) { void *v2; // ebx@1 int result; // eax@1 const char *v4; // ecx@2 const char v5; // dl@3 v2 = this; result = unknown_libname_17(strlen(a2) + 9); if ( result ) { *(_DWORD *)result = 0; v4 = a2; do { v5 = *v4; v4[result + 4 - (_DWORD)a2] = *v4; ++v4; } while ( v5 ); if ( *((_DWORD *)v2 + 316) ) **((_DWORD **)v2 + 317) = result; else *((_DWORD *)v2 + 316) = result; ++*((_DWORD *)v2 + 315); *((_DWORD *)v2 + 317) = result; result = 1; } return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00443D40) -------------------------------------------------------- int __thiscall sub_443D40(int this, int a2) { int v2; // edx@1 int result; // eax@2 int v4; // esi@3 int v5; // ecx@5 v2 = *(_DWORD *)(this + 1228); if ( v2 > a2 ) { v4 = *(_DWORD *)(this + 1240); if ( v4 || (result = *(_DWORD *)(this + 1232)) == 0 ) { result = *(_DWORD *)(v4 + 4 * a2); } else { v5 = 0; if ( v2 <= 0 ) { LABEL_8: result = 0; } else { while ( v5 != a2 ) { result = *(_DWORD *)(result + 72); ++v5; if ( v5 >= v2 ) goto LABEL_8; } } } } else { result = 0; } return result; } //----- (00443D90) -------------------------------------------------------- int __thiscall sub_443D90(int this) { return *(_DWORD *)(this + 1244); } //----- (00443DA0) -------------------------------------------------------- int __thiscall sub_443DA0(int this, int a2) { int v2; // edx@1 int result; // eax@2 int v4; // esi@3 int v5; // ecx@5 v2 = *(_DWORD *)(this + 1244); if ( v2 > a2 ) { v4 = *(_DWORD *)(this + 1256); if ( v4 || (result = *(_DWORD *)(this + 1248)) == 0 ) { result = *(_DWORD *)(v4 + 4 * a2); } else { v5 = 0; if ( v2 <= 0 ) { LABEL_8: result = 0; } else { while ( v5 != a2 ) { result = *(_DWORD *)(result + 12); ++v5; if ( v5 >= v2 ) goto LABEL_8; } } } } else { result = 0; } return result; } //----- (00443DF0) -------------------------------------------------------- int __thiscall sub_443DF0(int this, int a2, signed int a3) { int v3; // edi@1 int v4; // edx@1 int v5; // eax@2 int v6; // ecx@3 int v8; // esi@8 int v9; // eax@12 int v10; // ecx@13 int v11; // edx@14 int v12; // ebx@14 int v13; // edi@14 int v14; // esi@15 int v15; // edx@15 unsigned int v16; // ecx@15 int v17; // [sp+8h] [bp-Ch]@14 int v18; // [sp+10h] [bp-4h]@1 int v19; // [sp+1Ch] [bp+8h]@14 v3 = this; v4 = *(_DWORD *)(this + 1244); v18 = this; if ( v4 <= a2 ) return 0; v5 = *(_DWORD *)(this + 1256); if ( v5 || (v6 = *(_DWORD *)(this + 1248)) == 0 ) { v8 = *(_DWORD *)(v5 + 4 * a2); } else { if ( v4 <= 0 ) return 0; while ( v5 != a2 ) { v6 = *(_DWORD *)(v6 + 12); ++v5; if ( v5 >= v4 ) return 0; } v8 = v6; } if ( !v8 || (v9 = sub_443D40(v3, *(_DWORD *)v8)) == 0 || (v10 = a3, *(_DWORD *)(v9 + 64) <= a3) ) return 0; v11 = *(_DWORD *)(v8 + 8); v12 = 0; v13 = 0; v19 = 0; v17 = *(_DWORD *)(v8 + 8); if ( a3 >= 2 ) { v14 = *(_DWORD *)(v18 + 1224); v15 = *(_DWORD *)(v9 + 68); v16 = ((unsigned int)(a3 - 2) >> 1) + 1; v19 = 2 * v16; do { v13 += *(_DWORD *)(v14 + 4 * *(_DWORD *)v15); v12 += *(_DWORD *)(v14 + 4 * *(_DWORD *)(v15 + 4)); v15 += 8; --v16; } while ( v16 ); v10 = a3; v11 = v17; } if ( v19 < v10 ) v11 += *(_DWORD *)(*(_DWORD *)(v18 + 1224) + 4 * *(_DWORD *)(*(_DWORD *)(v9 + 68) + 4 * v19)); return v11 + v12 + v13; } //----- (00443EE0) -------------------------------------------------------- signed int __thiscall sub_443EE0(int this, const unsigned __int8 *a2) { int v2; // esi@1 signed int v3; // eax@1 signed int result; // eax@3 const unsigned __int8 *v5; // eax@7 int v6; // edx@8 const unsigned __int8 v7; // cl@9 const unsigned __int8 *v8; // eax@12 int v9; // edx@13 const unsigned __int8 v10; // cl@14 const unsigned __int8 *v11; // eax@17 int v12; // edx@18 const unsigned __int8 v13; // cl@19 const unsigned __int8 *v14; // eax@22 int v15; // edx@23 const unsigned __int8 v16; // cl@24 int v17; // eax@27 char v18; // cl@28 v2 = this; v3 = sub_441100(a2, *(_DWORD *)(this + 1020), 7u); if ( *(_DWORD *)(v2 + 952) && v3 != 2 ) { result = 1; } else { switch ( v3 ) { case 1: *(_DWORD *)(v2 + 952) = 1; result = 1; break; case 2: *(_DWORD *)(v2 + 952) = 0; result = 1; break; case 3: v5 = sub_440EA0(v2); if ( v5 ) { v6 = v2 + 956 - (_DWORD)v5; do { v7 = *v5; v5[v6] = *v5; ++v5; } while ( v7 ); sub_440E00((void *)v2, v2 + 956); result = 1; } else { *(_DWORD *)(v2 + 956) = dword_4B93B0; *(_WORD *)(v2 + 960) = word_4B93B4; result = 1; } break; case 4: v8 = sub_440EA0(v2); if ( v8 ) { v9 = v2 + 1024 - (_DWORD)v8; do { v10 = *v8; v8[v9] = *v8; ++v8; } while ( v10 ); result = 1; } else { *(_WORD *)(v2 + 1024) = 59; result = 1; } break; case 5: v11 = sub_440EA0(v2); if ( v11 ) { v12 = v2 + 1088 - (_DWORD)v11; do { v13 = *v11; v11[v12] = *v11; ++v11; } while ( v13 ); result = 1; } else { *(_WORD *)(v2 + 1088) = word_4B93AC; *(_BYTE *)(v2 + 1090) = byte_4B93AE; result = 1; } break; case 6: v14 = sub_440EA0(v2); if ( v14 ) { v15 = v2 + 1152 - (_DWORD)v14; do { v16 = *v14; v14[v15] = *v14; ++v14; } while ( v16 ); result = 1; } else { *(_WORD *)(v2 + 1152) = word_4B93A8; *(_BYTE *)(v2 + 1154) = byte_4B93AA; result = 1; } break; case 0: goto LABEL_30; default: v17 = v2 + 1024; do v18 = *(_BYTE *)v17++; while ( v18 ); if ( _mbsnbcmp(a2, (const unsigned __int8 *)(v2 + 1024), v17 - (v2 + 1025)) ) { result = 0; } else { LABEL_30: sub_440FE0(v2); result = 1; } break; } } return result; } // 4B93A8: using guessed type __int16 word_4B93A8; // 4B93AA: using guessed type char byte_4B93AA; // 4B93AC: using guessed type __int16 word_4B93AC; // 4B93AE: using guessed type char byte_4B93AE; // 4B93B0: using guessed type int dword_4B93B0; // 4B93B4: using guessed type __int16 word_4B93B4; //----- (004440F0) -------------------------------------------------------- int __thiscall sub_4440F0(void *this) { int v1; // ebx@1 const unsigned __int8 *v2; // eax@2 const char *v3; // esi@2 signed int v4; // eax@6 signed int v5; // edi@6 int v6; // edi@8 const unsigned __int8 *v7; // esi@9 int v8; // eax@13 int v9; // edi@16 int i; // esi@16 int v11; // eax@17 int v12; // eax@24 unsigned int v13; // ebx@24 int v14; // esi@24 char *v15; // eax@24 char v16; // cl@25 void *v17; // eax@27 int v19; // [sp+Ch] [bp-264h]@8 signed int v20; // [sp+10h] [bp-260h]@1 int v21; // [sp+14h] [bp-25Ch]@0 const unsigned __int8 *v22; // [sp+18h] [bp-258h]@2 int v23; // [sp+1Ch] [bp-254h]@16 unsigned int v24; // [sp+20h] [bp-250h]@1 int v25; // [sp+24h] [bp-24Ch]@1 char v26; // [sp+28h] [bp-248h]@23 char v27; // [sp+228h] [bp-48h]@1 unsigned int v28; // [sp+26Ch] [bp-4h]@1 int v29; // [sp+270h] [bp+0h]@1 v28 = (unsigned int)&v29 ^ __security_cookie; v1 = (int)this; memset(&v27, 0, 0x41u); v24 = 0; v25 = 0; v20 = 0; while ( 1 ) { while ( 1 ) { while ( 1 ) { do { v2 = sub_440EA0(v1); v3 = (const char *)v2; v22 = v2; if ( !v2 ) { ++*(_DWORD *)(v1 + 940); sprintf(&v26, "FORMAT DEFINNING, EOF Come."); sub_443CC0((void *)v1, &v26); return 0; } } while ( sub_443EE0(v1, v2) ); if ( v20 ) break; strncpy(&v27, v3, 0x40u); v20 = 1; } v4 = sub_441100((const unsigned __int8 *)v3, *(_DWORD *)(v1 + 1220), 0x13u); v5 = v4; if ( (unsigned int)v4 > 0x11 ) break; v8 = operator new(8u); *(_DWORD *)(v8 + 4) = 0; *(_DWORD *)v8 = v5; if ( v25 ) { ++v24; *(_DWORD *)(v21 + 4) = v8; v21 = v8; } else { ++v24; v25 = v8; v21 = v8; } } if ( v4 == 18 ) break; v6 = 0; v19 = *(_DWORD *)(v1 + 1232); if ( *(_DWORD *)(v1 + 1228) > 0 ) { v7 = *(const unsigned __int8 **)(v1 + 1232); while ( _mbsicmp(v22, v7) ) { ++v6; v7 += 76; if ( v6 >= *(_DWORD *)(v1 + 1228) ) goto LABEL_22; } v23 = v6; v9 = v19 + 76 * v6; for ( i = 0; i < *(_DWORD *)(v9 + 64); v21 = v11 ) { v11 = operator new(8u); *(_DWORD *)(v11 + 4) = 0; *(_DWORD *)v11 = *(_DWORD *)(*(_DWORD *)(v9 + 68) + 4 * i); if ( v25 ) *(_DWORD *)(v21 + 4) = v11; else v25 = v11; ++v24; ++i; } v6 = v23; LABEL_22: v3 = (const char *)v22; if ( v6 < *(_DWORD *)(v1 + 1228) ) continue; } ++*(_DWORD *)(v1 + 940); sprintf(&v26, "%s - FORMAT DEFINING, UNKNOWNED PARAMATER.", v3); sub_443CC0((void *)v1, &v26); } v12 = operator new(0x4Cu); v13 = 0; v14 = v12; *(_DWORD *)(v12 + 72) = 0; memset((void *)v12, 0, 0x40u); v15 = &v27; do { v16 = *v15; v15[v14 - (_DWORD)&v27] = *v15; ++v15; } while ( v16 ); *(_DWORD *)(v14 + 64) = v24; *(_DWORD *)(v14 + 68) = unknown_libname_17(4 * v24 | -((unsigned __int64)v24 >> 30 != 0)); if ( (signed int)v24 > 0 ) { do { v17 = (void *)v25; *(_DWORD *)(*(_DWORD *)(v14 + 68) + 4 * v13) = *(_DWORD *)v25; v25 = *(_DWORD *)(v25 + 4); operator delete(v17); ++v13; } while ( (signed int)v13 < (signed int)v24 ); } return v14; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (004443A0) -------------------------------------------------------- signed int __thiscall sub_4443A0(int this, int a2) { signed int result; // eax@4 if ( *(_DWORD *)(this + 1232) ) *(_DWORD *)(*(_DWORD *)(this + 1236) + 72) = a2; else *(_DWORD *)(this + 1232) = a2; *(_DWORD *)(this + 1236) = a2; result = 1; ++*(_DWORD *)(this + 1228); return result; } //----- (004443E0) -------------------------------------------------------- const unsigned __int8 *__thiscall sub_4443E0(void *this) { int v1; // esi@1 const unsigned __int8 *v2; // eax@2 const unsigned __int8 *v3; // edi@2 char v5; // [sp+8h] [bp-204h]@5 unsigned int v6; // [sp+208h] [bp-4h]@1 int v7; // [sp+20Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v1 = (int)this; while ( 1 ) { v2 = sub_440EA0(v1); v3 = v2; if ( !v2 ) break; if ( !sub_443EE0(v1, v2) ) return v3; } ++*(_DWORD *)(v1 + 940); sprintf(&v5, "DATA DEFINNING, EOF Come"); sub_443CC0((void *)v1, &v5); return *(const unsigned __int8 **)(v1 + 948); } // 4DE38C: using guessed type int __security_cookie; //----- (00444460) -------------------------------------------------------- signed int __thiscall sub_444460(int this, int a2) { int v2; // eax@1 int v3; // edx@1 char v4; // cl@2 int v6; // [sp+0h] [bp-4h]@1 v6 = this; v2 = sub_4413A0(this, (int)&v6); v3 = a2 - v2; do { v4 = *(_BYTE *)v2; *(_BYTE *)(v3 + v2) = *(_BYTE *)v2; ++v2; } while ( v4 ); return 1; } //----- (00444490) -------------------------------------------------------- int __thiscall sub_444490(void *this, int a2, int a3) { int v3; // edi@1 int v4; // ecx@1 signed int v5; // eax@1 int v6; // esi@1 int v7; // edx@1 int v8; // ebx@1 int v9; // esi@2 int v10; // ecx@2 unsigned int v11; // eax@2 size_t v12; // esi@7 int v13; // eax@7 int v14; // ebx@7 void *v15; // eax@7 int v16; // ecx@7 int v17; // esi@7 int v18; // eax@7 const unsigned __int8 *v19; // eax@9 const unsigned __int8 *v20; // eax@10 const unsigned __int8 *v21; // eax@11 int v22; // eax@12 int v23; // edx@12 char v24; // cl@13 int v25; // eax@15 int v26; // edx@15 char v27; // cl@16 int v28; // eax@18 int v29; // edx@18 char v30; // cl@19 int v31; // eax@21 int v32; // edx@21 char v33; // cl@22 char v35; // [sp+Ch] [bp-18h]@25 char v36; // [sp+10h] [bp-14h]@24 int v37; // [sp+14h] [bp-10h]@1 unsigned int v38; // [sp+18h] [bp-Ch]@1 int v39; // [sp+1Ch] [bp-8h]@3 int v40; // [sp+20h] [bp-4h]@1 int i; // [sp+2Ch] [bp+8h]@7 v3 = (int)this; v4 = a3; v5 = *(_DWORD *)(a3 + 64); v6 = 0; v7 = 0; v8 = 0; v40 = 0; v37 = 0; v38 = 0; if ( v5 >= 2 ) { v9 = *(_DWORD *)(v3 + 1224); v10 = *(_DWORD *)(a3 + 68); v11 = ((unsigned int)(v5 - 2) >> 1) + 1; v38 = 2 * v11; do { v39 = *(_DWORD *)(v9 + 4 * *(_DWORD *)v10) + v8; v7 = *(_DWORD *)(v9 + 4 * *(_DWORD *)(v10 + 4)) + v40; v8 = v39; v10 += 8; --v11; v40 = v7; } while ( v11 ); v6 = v37; v4 = a3; } if ( (signed int)v38 < *(_DWORD *)(v4 + 64) ) v6 = *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 4 * *(_DWORD *)(*(_DWORD *)(v4 + 68) + 4 * v38)); v12 = v8 + v7 + v6; v13 = operator new(0x10u); v14 = v13; *(_DWORD *)(v13 + 12) = 0; *(_DWORD *)v13 = a2; *(_DWORD *)(v13 + 4) = v12; v15 = (void *)unknown_libname_17(v12); *(_DWORD *)(v14 + 8) = v15; memset(v15, 0, v12); v16 = a3; v17 = *(_DWORD *)(v14 + 8); v18 = 0; for ( i = 0; v18 < *(_DWORD *)(a3 + 64); i = v18 ) { switch ( *(_DWORD *)(*(_DWORD *)(v16 + 68) + 4 * v18) ) { case 0: case 1: case 2: case 3: v19 = sub_4443E0((void *)v3); *(_DWORD *)v17 = atoi((const char *)v19); goto LABEL_26; case 4: case 5: v20 = sub_4443E0((void *)v3); sscanf((const char *)v20, "%x", v17); goto LABEL_26; case 6: case 7: v21 = sub_4443E0((void *)v3); *(float *)v17 = atof((const char *)v21); goto LABEL_26; case 8: v22 = sub_4413A0(v3, (int)&v37); v23 = v17 - v22; do { v24 = *(_BYTE *)v22; *(_BYTE *)(v23 + v22) = *(_BYTE *)v22; ++v22; } while ( v24 ); v17 += *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 32); break; case 9: v25 = sub_4413A0(v3, (int)&v38); v26 = v17 - v25; do { v27 = *(_BYTE *)v25; *(_BYTE *)(v26 + v25) = *(_BYTE *)v25; ++v25; } while ( v27 ); v17 += *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 36); break; case 0xA: v28 = sub_4413A0(v3, (int)&v39); v29 = v17 - v28; do { v30 = *(_BYTE *)v28; *(_BYTE *)(v29 + v28) = *(_BYTE *)v28; ++v28; } while ( v30 ); v17 += *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 40); break; case 0xB: v31 = sub_4413A0(v3, (int)&v40); v32 = v17 - v31; do { v33 = *(_BYTE *)v31; *(_BYTE *)(v32 + v31) = *(_BYTE *)v31; ++v31; } while ( v33 ); v17 += *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 44); break; case 0xC: *(_DWORD *)v17 = *(_BYTE *)sub_4413A0(v3, (int)&v36); goto LABEL_26; case 0xD: *(_DWORD *)v17 = *(_BYTE *)sub_4413A0(v3, (int)&v35); LABEL_26: v17 += 4; break; default: break; } v16 = a3; v18 = i + 1; } return v14; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (004446E0) -------------------------------------------------------- signed int __thiscall sub_4446E0(int this, const unsigned __int8 *a2, int a3) { int v3; // esi@1 int v4; // ebx@1 int v5; // edi@1 signed int result; // eax@5 int v7; // eax@6 v3 = this; v4 = 0; v5 = *(_DWORD *)(this + 1232); if ( *(_DWORD *)(this + 1228) <= 0 ) goto LABEL_14; do { if ( !_mbsicmp(a2, (const unsigned __int8 *)v5) ) break; v5 = *(_DWORD *)(v5 + 72); ++v4; } while ( v4 < *(_DWORD *)(v3 + 1228) ); if ( v4 < *(_DWORD *)(v3 + 1228) ) { v7 = sub_444490((void *)v3, v4, v5); if ( v7 ) { if ( *(_DWORD *)(v3 + 1248) ) *(_DWORD *)(*(_DWORD *)(v3 + 1252) + 12) = v7; else *(_DWORD *)(v3 + 1248) = v7; ++*(_DWORD *)(v3 + 1244); *(_DWORD *)(v3 + 1252) = v7; } result = 1; } else { LABEL_14: result = 0; } return result; } //----- (00444770) -------------------------------------------------------- signed int __thiscall sub_444770(int this) { int v1; // esi@1 signed int result; // eax@2 char v3; // [sp+4h] [bp-204h]@2 unsigned int v4; // [sp+204h] [bp-4h]@1 int v5; // [sp+208h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; v1 = this; if ( *(_DWORD *)(this + 664) ) { sprintf( &v3, "Include Format %d Defined, %d Errors", *(_DWORD *)(this + 1228) - *(_DWORD *)(*(_DWORD *)(this + 660) + 1228), *(_DWORD *)(this + 940)); sub_443CC0((void *)v1, &v3); sprintf( &v3, "Include Data %d Defined, %d Errors", *(_DWORD *)(v1 + 1244) - *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1244), *(_DWORD *)(v1 + 944)); sub_443CC0((void *)v1, &v3); sub_443CC0((void *)v1, " "); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 940) += *(_DWORD *)(v1 + 940); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 944) += *(_DWORD *)(v1 + 944); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1228) = *(_DWORD *)(v1 + 1228); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1232) = *(_DWORD *)(v1 + 1232); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1236) = *(_DWORD *)(v1 + 1236); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1244) = *(_DWORD *)(v1 + 1244); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1248) = *(_DWORD *)(v1 + 1248); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1252) = *(_DWORD *)(v1 + 1252); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1268) = *(_DWORD *)(v1 + 1268); result = *(_DWORD *)(v1 + 1260); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1260) = result; *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1264) = *(_DWORD *)(v1 + 1264); } else { sub_443CC0((void *)this, " "); sprintf(&v3, "TOTAL Format %d Defined, %d Errors", *(_DWORD *)(v1 + 1228), *(_DWORD *)(v1 + 940)); sub_443CC0((void *)v1, &v3); sprintf(&v3, "TOTAL Data %d Defined, %d Errors", *(_DWORD *)(v1 + 1244), *(_DWORD *)(v1 + 944)); sub_443CC0((void *)v1, &v3); sub_443CC0((void *)v1, " "); sub_443BC0(v1); result = sub_443C40(v1); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00444980) -------------------------------------------------------- signed int __thiscall sub_444980(int this, const CHAR *lpFileName) { int v2; // esi@1 void *v3; // eax@1 void *v4; // edi@1 DWORD v5; // eax@2 signed int result; // eax@4 DWORD v7; // ebx@5 int v8; // ebx@11 int v9; // edi@12 void *v10; // eax@12 int v11; // eax@16 int v12; // edi@16 int v13; // eax@16 char v14; // cl@17 void *v15; // eax@18 int Buffer; // [sp+8h] [bp-14h]@8 DWORD nNumberOfBytesToRead; // [sp+Ch] [bp-10h]@9 unsigned int v18; // [sp+10h] [bp-Ch]@2 DWORD v19; // [sp+14h] [bp-8h]@7 DWORD NumberOfBytesRead; // [sp+18h] [bp-4h]@8 void *lpFileNamea; // [sp+24h] [bp+8h]@1 v2 = this; v3 = (void *)sub_4438E0(this, lpFileName, 0x80000000u, 1u, 0, 3u, 0x80u, 0); v4 = v3; lpFileNamea = v3; if ( v3 == (void *)-1 ) return 0; v5 = sub_443140(v2, v3, 0); v18 = v5; if ( v5 == -1 ) { sub_442F80(v2, v4); return 0; } v7 = 0; if ( v5 ) { while ( sub_442FC0(v2, v4, &Buffer, 8u, &NumberOfBytesRead, 0) ) { v19 = v7 + nNumberOfBytesToRead + 8; if ( Buffer == 286331153 ) { v8 = unknown_libname_17(nNumberOfBytesToRead + 8); if ( !sub_442FC0(v2, v4, (LPVOID)(v8 + 8), nNumberOfBytesToRead, &NumberOfBytesRead, 0) ) break; v11 = operator new(0x4Cu); v12 = v11; *(_DWORD *)(v11 + 72) = 0; memset((void *)v11, 0, 0x40u); v13 = v8 + 8; do { v14 = *(_BYTE *)v13; *(_BYTE *)(v12 - (v8 + 8) + v13) = *(_BYTE *)v13; ++v13; } while ( v14 ); *(_DWORD *)(v12 + 64) = *(_DWORD *)(v8 + 72); v15 = (void *)unknown_libname_17(4 * *(_DWORD *)(v8 + 72) | -((unsigned __int64)*(_DWORD *)(v8 + 72) >> 30 != 0)); *(_DWORD *)(v12 + 68) = v15; memmove(v15, (const void *)(v8 + 76), 4 * *(_DWORD *)(v8 + 72)); if ( *(_DWORD *)(v2 + 1232) ) *(_DWORD *)(*(_DWORD *)(v2 + 1236) + 72) = v12; else *(_DWORD *)(v2 + 1232) = v12; ++*(_DWORD *)(v2 + 1228); *(_DWORD *)(v2 + 1236) = v12; } else { if ( Buffer != 572662306 || (v4 = lpFileNamea, v8 = unknown_libname_17(nNumberOfBytesToRead + 8), !sub_442FC0(v2, lpFileNamea, (LPVOID)(v8 + 8), nNumberOfBytesToRead, &NumberOfBytesRead, 0)) ) break; v9 = operator new(0x10u); *(_DWORD *)(v9 + 12) = 0; *(_DWORD *)v9 = *(_DWORD *)(v8 + 8); *(_DWORD *)(v9 + 4) = *(_DWORD *)(v8 + 12); v10 = (void *)unknown_libname_17(*(_DWORD *)(v8 + 12)); *(_DWORD *)(v9 + 8) = v10; memmove(v10, (const void *)(v8 + 16), *(_DWORD *)(v8 + 12)); if ( *(_DWORD *)(v2 + 1248) ) { *(_DWORD *)(*(_DWORD *)(v2 + 1252) + 12) = v9; ++*(_DWORD *)(v2 + 1244); *(_DWORD *)(v2 + 1252) = v9; } else { ++*(_DWORD *)(v2 + 1244); *(_DWORD *)(v2 + 1248) = v9; *(_DWORD *)(v2 + 1252) = v9; } } operator delete((void *)v8); if ( v18 <= v19 ) return 1; v7 = v19; v4 = lpFileNamea; } sub_442F80(v2, v4); result = 0; } else { result = 1; } return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00444BC0) -------------------------------------------------------- signed int __thiscall sub_444BC0(int this, LPCSTR lpFileName, HANDLE NumberOfBytesWritten) { HANDLE v3; // esi@1 int v4; // edi@1 signed int result; // eax@3 int v6; // ebx@4 int Buffer; // [sp+8h] [bp-Ch]@5 int v8; // [sp+Ch] [bp-8h]@5 int v9; // [sp+10h] [bp-4h]@1 v3 = NumberOfBytesWritten; v4 = this; v9 = 1; if ( NumberOfBytesWritten != (HANDLE)-1 || (v9 = 0, v3 = (HANDLE)sub_4438E0(this, lpFileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0), v3 != (HANDLE)-1) ) { v6 = *(_DWORD *)(v4 + 1232); if ( v6 ) { while ( 1 ) { Buffer = 286331153; v8 = 4 * *(_DWORD *)(v6 + 64) + 68; if ( !sub_443050(v4, v3, &Buffer, 8u, (LPDWORD)&NumberOfBytesWritten, 0) ) break; if ( !sub_443050(v4, v3, (LPCVOID)v6, 0x40u, (LPDWORD)&NumberOfBytesWritten, 0) || !sub_443050(v4, v3, (LPCVOID)(v6 + 64), 4u, (LPDWORD)&NumberOfBytesWritten, 0) || !sub_443050(v4, v3, *(LPCVOID *)(v6 + 68), 4 * *(_DWORD *)(v6 + 64), (LPDWORD)&NumberOfBytesWritten, 0) ) break; v6 = *(_DWORD *)(v6 + 72); if ( !v6 ) goto LABEL_10; } if ( !v9 ) sub_442F80(v4, v3); result = 0; } else { LABEL_10: if ( !v9 ) sub_442F80(v4, v3); result = 1; } } else { result = 0; } return result; } //----- (00444CE0) -------------------------------------------------------- signed int __thiscall sub_444CE0(int this, LPCSTR lpFileName, HANDLE NumberOfBytesWritten) { HANDLE v3; // esi@1 int v4; // edi@1 signed int result; // eax@3 int v6; // ebx@4 int Buffer; // [sp+8h] [bp-Ch]@5 int v8; // [sp+Ch] [bp-8h]@5 int v9; // [sp+10h] [bp-4h]@1 v3 = NumberOfBytesWritten; v4 = this; v9 = 1; if ( NumberOfBytesWritten != (HANDLE)-1 || (v9 = 0, v3 = (HANDLE)sub_4438E0(this, lpFileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0), v3 != (HANDLE)-1) ) { v6 = *(_DWORD *)(v4 + 1248); if ( v6 ) { while ( 1 ) { Buffer = 572662306; v8 = *(_DWORD *)(v6 + 4) + 8; if ( !sub_443050(v4, v3, &Buffer, 8u, (LPDWORD)&NumberOfBytesWritten, 0) ) break; if ( !sub_443050(v4, v3, (LPCVOID)v6, 4u, (LPDWORD)&NumberOfBytesWritten, 0) || !sub_443050(v4, v3, (LPCVOID)(v6 + 4), 4u, (LPDWORD)&NumberOfBytesWritten, 0) || !sub_443050(v4, v3, *(LPCVOID *)(v6 + 8), *(_DWORD *)(v6 + 4), (LPDWORD)&NumberOfBytesWritten, 0) ) break; v6 = *(_DWORD *)(v6 + 12); if ( !v6 ) goto LABEL_10; } if ( !v9 ) sub_442F80(v4, v3); result = 0; } else { LABEL_10: if ( !v9 ) sub_442F80(v4, v3); result = 1; } } else { result = 0; } return result; } //----- (00444DF0) -------------------------------------------------------- void __thiscall sub_444DF0(void *this) { void *v1; // esi@1 void *v2; // ST00_4@2 void *v3; // eax@3 v1 = this; while ( *((_DWORD *)v1 + 308) ) { operator delete(*(void **)(*((_DWORD *)v1 + 308) + 68)); v2 = (void *)*((_DWORD *)v1 + 308); *((_DWORD *)v1 + 308) = *(_DWORD *)(*((_DWORD *)v1 + 308) + 72); operator delete(v2); } v3 = (void *)*((_DWORD *)v1 + 310); *((_DWORD *)v1 + 307) = 0; if ( v3 ) { operator delete(v3); *((_DWORD *)v1 + 310) = 0; } } //----- (00444E60) -------------------------------------------------------- void __thiscall sub_444E60(void *this) { void *v1; // esi@1 void *v2; // ST00_4@2 void *v3; // eax@3 v1 = this; while ( *((_DWORD *)v1 + 312) ) { operator delete(*(void **)(*((_DWORD *)v1 + 312) + 8)); v2 = (void *)*((_DWORD *)v1 + 312); *((_DWORD *)v1 + 312) = *(_DWORD *)(*((_DWORD *)v1 + 312) + 12); operator delete(v2); } v3 = (void *)*((_DWORD *)v1 + 314); *((_DWORD *)v1 + 311) = 0; if ( v3 ) { sub_48DB99(v3); *((_DWORD *)v1 + 314) = 0; } } //----- (00444ED0) -------------------------------------------------------- void __thiscall sub_444ED0(int this) { int v1; // esi@1 void *v2; // ST00_4@3 v1 = this; sub_440DA0(this); if ( !*(_DWORD *)(v1 + 664) ) { while ( *(_DWORD *)(v1 + 1264) ) { v2 = *(void **)(v1 + 1264); *(_DWORD *)(v1 + 1264) = **(_DWORD **)(v1 + 1264); operator delete(v2); } *(_DWORD *)(v1 + 1260) = 0; sub_444DF0((void *)v1); sub_444E60((void *)v1); if ( *(_DWORD *)(v1 + 1020) ) operator delete(*(void **)(v1 + 1020)); *(_DWORD *)(v1 + 1020) = 0; } } //----- (00444F50) -------------------------------------------------------- int __thiscall sub_444F50(int this) { int v1; // ebx@1 void *v2; // eax@1 int v3; // ecx@1 int result; // eax@1 v1 = this; sub_444ED0(this); sub_443B50(v1); *(_DWORD *)(v1 + 948) = &byte_4B4667; v2 = (void *)unknown_libname_17(28); *(_DWORD *)(v1 + 1020) = v2; memcpy(v2, &unk_4DC7D4, 0x1Cu); *(_DWORD *)(v1 + 956) = dword_4B93B0; *(_WORD *)(v1 + 960) = word_4B93B4; *(_WORD *)(v1 + 1024) = 59; *(_WORD *)(v1 + 1088) = word_4B93AC; *(_BYTE *)(v1 + 1090) = byte_4B93AE; *(_WORD *)(v1 + 1152) = word_4B93A8; v3 = *(_DWORD *)(v1 + 1020); *(_BYTE *)(v1 + 1154) = byte_4B93AA; *(_DWORD *)v3 = v1 + 1024; *(_DWORD *)(*(_DWORD *)(v1 + 1020) + 4) = v1 + 1088; result = *(_DWORD *)(v1 + 1020); *(_DWORD *)(result + 8) = v1 + 1152; *(_DWORD *)(v1 + 1216) = off_4DC7AC; *(_DWORD *)(v1 + 1220) = off_4DC760; *(_DWORD *)(v1 + 1224) = &unk_4DC710; return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4B93A8: using guessed type __int16 word_4B93A8; // 4B93AA: using guessed type char byte_4B93AA; // 4B93AC: using guessed type __int16 word_4B93AC; // 4B93AE: using guessed type char byte_4B93AE; // 4B93B0: using guessed type int dword_4B93B0; // 4B93B4: using guessed type __int16 word_4B93B4; // 4DC760: using guessed type char *off_4DC760[29]; // 4DC7AC: using guessed type char *off_4DC7AC[10]; //----- (00445030) -------------------------------------------------------- int __thiscall sub_445030(int this) { int v1; // esi@1 v1 = this; sub_444ED0(this); return sub_441140(v1); } //----- (00445090) -------------------------------------------------------- int __thiscall sub_445090(int this) { int v1; // esi@1 int v2; // ecx@1 v1 = this; sub_440D30(this); *(_DWORD *)(v1 + 1020) = 0; sub_443B50(v1); sub_444F50(v2); return v1; } //----- (004450F0) -------------------------------------------------------- int __thiscall sub_4450F0(int this, int a2) { int v2; // esi@1 int v3; // ecx@2 char v4; // dl@3 int v5; // ecx@4 char v6; // dl@5 int v7; // ecx@6 char v8; // dl@7 int v9; // ecx@8 char v10; // dl@9 int v11; // ecx@11 char v13; // [sp+10h] [bp-508h]@11 int v14; // [sp+40Ch] [bp-10Ch]@11 unsigned int v15; // [sp+508h] [bp-10h]@1 int v16; // [sp+514h] [bp-4h]@1 int v17; // [sp+518h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v2 = this; sub_440D30(this); v16 = 0; if ( a2 ) { *(_DWORD *)(v2 + 936) = *(_DWORD *)(a2 + 936); v3 = a2 + 956; *(_DWORD *)(v2 + 952) = *(_DWORD *)(a2 + 952); *(_DWORD *)(v2 + 940) = 0; *(_DWORD *)(v2 + 944) = 0; do { v4 = *(_BYTE *)v3; *(_BYTE *)(v2 + 956 - (a2 + 956) + v3) = *(_BYTE *)v3; ++v3; } while ( v4 ); v5 = a2 + 1024; do { v6 = *(_BYTE *)v5; *(_BYTE *)(v2 + 1024 - (a2 + 1024) + v5) = *(_BYTE *)v5; ++v5; } while ( v6 ); v7 = a2 + 1088; do { v8 = *(_BYTE *)v7; *(_BYTE *)(v2 + 1088 - (a2 + 1088) + v7) = *(_BYTE *)v7; ++v7; } while ( v8 ); v9 = a2 + 1152; do { v10 = *(_BYTE *)v9; *(_BYTE *)(v2 + 1152 - (a2 + 1152) + v9) = *(_BYTE *)v9; ++v9; } while ( v10 ); *(_DWORD *)(v2 + 1020) = *(_DWORD *)(a2 + 1020); *(_DWORD *)(v2 + 1216) = *(_DWORD *)(a2 + 1216); *(_DWORD *)(v2 + 1220) = *(_DWORD *)(a2 + 1220); *(_DWORD *)(v2 + 1224) = *(_DWORD *)(a2 + 1224); *(_DWORD *)(v2 + 1228) = *(_DWORD *)(a2 + 1228); *(_DWORD *)(v2 + 1232) = *(_DWORD *)(a2 + 1232); *(_DWORD *)(v2 + 1236) = *(_DWORD *)(a2 + 1236); *(_DWORD *)(v2 + 1244) = *(_DWORD *)(a2 + 1244); *(_DWORD *)(v2 + 1248) = *(_DWORD *)(a2 + 1248); *(_DWORD *)(v2 + 1252) = *(_DWORD *)(a2 + 1252); *(_DWORD *)(v2 + 1260) = *(_DWORD *)(a2 + 1260); *(_DWORD *)(v2 + 1268) = *(_DWORD *)(a2 + 1268); *(_DWORD *)(v2 + 1264) = *(_DWORD *)(a2 + 1264); *(_DWORD *)(v2 + 660) = a2; *(_DWORD *)(v2 + 664) = 1; } else { sub_440D30((int)&v13); LOBYTE(v16) = 1; v14 = 0; sub_443B50((int)&v13); sub_444F50(v11); LOBYTE(v16) = 2; sub_444ED0((int)&v13); LOBYTE(v16) = 0; sub_441140((int)&v13); } return v2; } // 4DE38C: using guessed type int __security_cookie; //----- (004452E0) -------------------------------------------------------- int __thiscall sub_4452E0(int this) { int v1; // esi@1 int v2; // eax@1 char *v3; // edx@1 char v4; // cl@2 int v5; // ST28_4@3 int v6; // ST24_4@3 char v8; // [sp+8h] [bp-C20h]@1 char v9; // [sp+Ch] [bp-C1Ch]@3 char v10; // [sp+10h] [bp-C18h]@3 char v11; // [sp+508h] [bp-720h]@3 char v12; // [sp+608h] [bp-620h]@3 char FileName[260]; // [sp+708h] [bp-520h]@1 char v14; // [sp+80Ch] [bp-41Ch]@3 const CHAR PathName; // [sp+90Ch] [bp-31Ch]@3 CHAR Buffer; // [sp+A10h] [bp-218h]@3 char v17; // [sp+B14h] [bp-114h]@3 unsigned int v18; // [sp+C18h] [bp-10h]@1 int v19; // [sp+C24h] [bp-4h]@3 int v20; // [sp+C28h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v1 = this; v2 = sub_4413A0(this, (int)&v8); v3 = &FileName[-v2]; do { v4 = *(_BYTE *)v2; v3[v2] = *(_BYTE *)v2; ++v2; } while ( v4 ); GetCurrentDirectoryA(0x104u, &Buffer); _fullpath(&v17, (const char *)(v1 + 668), 0x104u); _splitpath(&v17, &v9, &v14, &v12, &v11); sprintf((char *)&PathName, "%s%s", &v9, &v14); SetCurrentDirectoryA(&PathName); sub_441080(v1); sub_4450F0((int)&v10, v1); v5 = *(_DWORD *)(v1 + 932); v6 = *(_DWORD *)(v1 + 928); v19 = 0; sub_445940((int)&v10, FileName, v6, v5, 0); sub_441090(v1, 0); SetCurrentDirectoryA(&Buffer); v19 = 1; sub_444ED0((int)&v10); v19 = -1; return sub_441140((int)&v10); } // 4DE38C: using guessed type int __security_cookie; // 4452E0: using guessed type const CHAR FileName[260]; //----- (00445440) -------------------------------------------------------- signed int __thiscall sub_445440(int this, const unsigned __int8 *a2, int a3) { int v3; // esi@1 signed int result; // eax@2 int v5; // eax@3 void *v6; // eax@14 void *v7; // edi@14 void *v8; // edi@21 int v9; // ebx@22 void *v10; // edi@33 int v11; // ebx@34 const char *v12; // [sp-8h] [bp-328h]@18 const char *v13; // [sp-8h] [bp-328h]@28 const CHAR *v14; // [sp-4h] [bp-324h]@18 const CHAR *v15; // [sp-4h] [bp-324h]@28 int Buffer; // [sp+Ch] [bp-314h]@23 int v17; // [sp+10h] [bp-310h]@23 DWORD NumberOfBytesWritten; // [sp+14h] [bp-30Ch]@23 char v19; // [sp+18h] [bp-308h]@11 const CHAR FileName; // [sp+218h] [bp-108h]@9 unsigned int v21; // [sp+31Ch] [bp-4h]@1 int v22; // [sp+320h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v3 = this; switch ( sub_441100(a2, *(_DWORD *)(this + 1216), 0xAu) ) { case 0: *(_DWORD *)(v3 + 936) = 1; return 1; case 1: v5 = sub_4440F0((void *)v3); if ( !v5 ) return 1; sub_4443A0(v3, v5); return 1; case 2: sub_4452E0(v3); return 1; case 3: sub_444DF0((void *)v3); goto LABEL_7; case 5: LABEL_7: sub_444E60((void *)v3); return 1; case 4: sub_444DF0((void *)v3); return 1; case 6: if ( !sub_444460(v3, (int)&FileName) ) return 1; if ( sub_444980(v3, &FileName) ) { sprintf(&v19, "%s - READ OK", &FileName); sub_443CC0((void *)v3, &v19); result = 1; } else { ++*(_DWORD *)(v3 + 944); sprintf(&v19, "%s - READ ERROR", &FileName); sub_443CC0((void *)v3, &v19); result = 1; } return result; case 7: if ( !sub_444460(v3, (int)&FileName) ) return 1; v6 = (void *)sub_4438E0(v3, &FileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); v7 = v6; if ( v6 == (void *)-1 ) goto LABEL_18; if ( sub_444BC0(v3, 0, v6) && sub_444CE0(v3, 0, v7) ) { sub_442F80(v3, v7); v14 = &FileName; v12 = "%s - WRITE OK"; goto LABEL_44; } sub_442F80(v3, v7); LABEL_18: v14 = &FileName; v12 = "%s - WRITE ERROR"; goto LABEL_43; case 8: if ( !sub_444460(v3, (int)&FileName) ) return 1; v8 = (void *)sub_4438E0(v3, &FileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); if ( v8 == (void *)-1 ) goto LABEL_31; v9 = *(_DWORD *)(v3 + 1232); if ( !v9 ) goto LABEL_28; while ( 1 ) { Buffer = 286331153; v17 = 4 * *(_DWORD *)(v9 + 64) + 68; if ( !sub_443050(v3, v8, &Buffer, 8u, &NumberOfBytesWritten, 0) ) break; if ( !sub_443050(v3, v8, (LPCVOID)v9, 0x40u, &NumberOfBytesWritten, 0) || !sub_443050(v3, v8, (LPCVOID)(v9 + 64), 4u, &NumberOfBytesWritten, 0) || !sub_443050(v3, v8, *(LPCVOID *)(v9 + 68), 4 * *(_DWORD *)(v9 + 64), &NumberOfBytesWritten, 0) ) break; v9 = *(_DWORD *)(v9 + 72); if ( !v9 ) { LABEL_28: sub_442F80(v3, v8); v15 = &FileName; v13 = "%s - WRITE FORMAT OK"; goto LABEL_29; } } sub_442F80(v3, v8); LABEL_31: ++*(_DWORD *)(v3 + 944); v15 = &FileName; v13 = "%s - WRITE FORMAT ERROR"; LABEL_29: sprintf(&v19, v13, v15); sub_443CC0((void *)v3, &v19); return 1; case 9: if ( !sub_444460(v3, (int)&FileName) ) return 1; v10 = (void *)sub_4438E0(v3, &FileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); if ( v10 == (void *)-1 ) goto LABEL_42; v11 = *(_DWORD *)(v3 + 1248); if ( !v11 ) goto LABEL_40; break; default: return 0; } while ( 1 ) { Buffer = 572662306; v17 = *(_DWORD *)(v11 + 4) + 8; if ( !sub_443050(v3, v10, &Buffer, 8u, &NumberOfBytesWritten, 0) ) break; if ( !sub_443050(v3, v10, (LPCVOID)v11, 4u, &NumberOfBytesWritten, 0) || !sub_443050(v3, v10, (LPCVOID)(v11 + 4), 4u, &NumberOfBytesWritten, 0) || !sub_443050(v3, v10, *(LPCVOID *)(v11 + 8), *(_DWORD *)(v11 + 4), &NumberOfBytesWritten, 0) ) break; v11 = *(_DWORD *)(v11 + 12); if ( !v11 ) { LABEL_40: sub_442F80(v3, v10); v14 = &FileName; v12 = "%s - WRITE DATA OK"; goto LABEL_44; } } sub_442F80(v3, v10); LABEL_42: v14 = &FileName; v12 = "%s - WRITE DATA ERROR"; LABEL_43: ++*(_DWORD *)(v3 + 944); LABEL_44: sprintf(&v19, v12, v14); sub_443CC0((void *)v3, &v19); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00445940) -------------------------------------------------------- int __thiscall sub_445940(int this, LPCSTR lpFileName, int a3, int a4, const char *a5) { int v5; // esi@1 signed int v6; // eax@2 LPCSTR v7; // eax@9 const CHAR v8; // cl@10 const unsigned __int8 *v9; // eax@12 const unsigned __int8 *v10; // edi@12 int result; // eax@18 DWORD v12; // ebx@19 char *v13; // [sp-10h] [bp-220h]@20 const char *v14; // [sp-Ch] [bp-21Ch]@20 const char *v15; // [sp-4h] [bp-214h]@6 char v16; // [sp+Ch] [bp-204h]@6 unsigned int v17; // [sp+20Ch] [bp-4h]@1 int v18; // [sp+210h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v5 = this; *(_DWORD *)(this + 928) = a3; *(_DWORD *)(this + 932) = a4; if ( a5 ) v6 = sub_4412E0(this, a5); else v6 = sub_4411D0(this, lpFileName); if ( v6 ) { if ( *(_DWORD *)(v5 + 664) ) { sub_443CC0((void *)v5, "---------------------------------------------------------------"); sprintf(&v16, "Include - %s ", lpFileName); sub_443CC0((void *)v5, &v16); v15 = "---------------------------------------------------------------"; } else { sub_443CC0((void *)v5, "================================================================================"); sprintf(&v16, "FILE PROCESSING - %s ", lpFileName); sub_443CC0((void *)v5, &v16); sub_443CC0((void *)v5, "================================================================================"); v15 = " "; } sub_443CC0((void *)v5, v15); if ( lpFileName ) { v7 = lpFileName; do { v8 = *v7; v7[v5 + 668 - (_DWORD)lpFileName] = *v7; ++v7; } while ( v8 ); } sub_440E00((void *)v5, v5 + 956); while ( !*(_DWORD *)(v5 + 936) ) { v9 = sub_440EA0(v5); v10 = v9; if ( !v9 ) break; if ( !sub_443EE0(v5, v9) && !sub_445440(v5, v10, (int)&v16) ) { if ( !sub_4446E0(v5, v10, (int)&v16) ) { sprintf(&v16, "%s - UNKNOWNED.", v10); sub_443CC0((void *)v5, &v16); ++*(_DWORD *)(v5 + 944); } } } sub_444770(v5); sub_440DA0(v5); result = *(_DWORD *)(v5 + 940) + *(_DWORD *)(v5 + 944) <= 0; } else { v12 = GetLastError(); sub_443CC0((void *)v5, "---------------------------------------------------------------"); if ( *(_DWORD *)(v5 + 664) ) { v14 = "INCLUDE OPEN ERROR(Code = %d) - %s "; v13 = &v16; } else { v14 = "FILE OPEN ERROR(Code = %d) - %s "; v13 = &v16; } sprintf(v13, v14, v12, lpFileName); sub_443CC0((void *)v5, &v16); sub_443CC0((void *)v5, "---------------------------------------------------------------"); ++*(_DWORD *)(v5 + 940); sub_444770(v5); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00445B70) -------------------------------------------------------- int __thiscall sub_445B70(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)this = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 36) = 3; return result; } //----- (00445BA0) -------------------------------------------------------- HANDLE __thiscall sub_445BA0(void *this, HANDLE FileHandle, ULONG_PTR CompletionKey) { HANDLE *v3; // esi@1 HANDLE result; // eax@2 v3 = (HANDLE *)this; if ( *(_DWORD *)this != -1 || (result = CreateIoCompletionPort((HANDLE)0xFFFFFFFF, 0, 0, 0), *v3 = result, result != (HANDLE)-1) ) result = CreateIoCompletionPort(FileHandle, *v3, CompletionKey, 0); return result; } //----- (00445BE0) -------------------------------------------------------- void __thiscall sub_445BE0(ULONG_PTR dwCompletionKey, int a2) { ULONG_PTR v2; // esi@1 int v3; // eax@4 signed int v4; // ebx@7 int v5; // edi@8 int v6; // eax@9 signed int v7; // edx@15 int v8; // ecx@16 int v9; // eax@16 int v10; // [sp+4h] [bp-Ch]@8 int v11; // [sp+8h] [bp-8h]@6 int v12; // [sp+Ch] [bp-4h]@4 v2 = dwCompletionKey; if ( *(_DWORD *)(dwCompletionKey + 12) && *(_DWORD *)(dwCompletionKey + 8) ) { if ( a2 == -1 ) { v3 = *(_DWORD *)(dwCompletionKey + 4); v12 = 0; } else { v12 = a2; v3 = a2 + 1; } v11 = v3; while ( 1 ) { do { v4 = 0; if ( v12 >= v11 ) break; v5 = 20 * v12; v10 = v11 - v12; do { v6 = v5 + *(_DWORD *)(v2 + 12); switch ( *(_DWORD *)(v6 + 4) ) { case 4: CloseHandle(*(HANDLE *)(v6 + 8)); *(_DWORD *)(v5 + *(_DWORD *)(v2 + 12) + 4) = 0; break; case 2: *(_DWORD *)(v6 + 4) = 3; v4 = 1; PostQueuedCompletionStatus(*(HANDLE *)v2, 0, v2, (LPOVERLAPPED)(v2 + 16)); break; case 1: case 3: v4 = 1; break; default: break; } v5 += 20; --v10; } while ( v10 ); } while ( v4 ); v7 = 1; if ( *(_DWORD *)(v2 + 4) <= 0 ) break; v8 = *(_DWORD *)(v2 + 4); v9 = *(_DWORD *)(v2 + 12) + 4; do { if ( *(_DWORD *)v9 ) v7 = 0; v9 += 20; --v8; } while ( v8 ); if ( v7 ) break; if ( a2 != -1 ) return; Sleep(2u); } operator delete(*(void **)(v2 + 12)); *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 8) = 0; } } //----- (00445D10) -------------------------------------------------------- int __stdcall sub_445D10(LPOVERLAPPED Overlapped) { LPOVERLAPPED v1; // esi@1 DWORD v2; // ST10_4@1 DWORD v3; // eax@5 DWORD v4; // eax@8 DWORD v5; // ST10_4@11 unsigned __int32 CompletionKey; // [sp+Ch] [bp-Ch]@2 DWORD NumberOfBytesTransferred; // [sp+10h] [bp-8h]@2 HANDLE CompletionPort; // [sp+14h] [bp-4h]@1 v1 = Overlapped; v2 = Overlapped->Internal; CompletionPort = *(HANDLE *)Overlapped->hEvent; sub_446330(dword_4DC7F0, "", v2); v1->InternalHigh = 2; do { if ( GetQueuedCompletionStatus(CompletionPort, &NumberOfBytesTransferred, &CompletionKey, &Overlapped, 0x3E8u) ) { if ( Overlapped[1].Internal == 3 ) break; (*(void (__stdcall **)(LPOVERLAPPED, DWORD))**(void (__stdcall ****)(_DWORD, _DWORD))Overlapped[1].InternalHigh)( Overlapped, NumberOfBytesTransferred); } else { v3 = GetLastError(); if ( v3 != 258 ) { if ( v3 != 995 ) { if ( Overlapped ) { v4 = Overlapped[1].InternalHigh; if ( v4 ) (*(void (__stdcall **)(LPOVERLAPPED))(**(_DWORD **)v4 + 4))(Overlapped); } } } } } while ( v1->InternalHigh == 2 ); v5 = v1->Internal; v1->InternalHigh = 4; sub_446330(dword_4DC7F0, "", v5); return 0; } //----- (00445DE0) -------------------------------------------------------- HANDLE __thiscall sub_445DE0(ULONG_PTR this) { HANDLE *v1; // esi@1 HANDLE result; // eax@1 v1 = (HANDLE *)this; sub_445BE0(this, -1); result = *v1; if ( *v1 ) { result = (HANDLE)CloseHandle(*v1); *v1 = 0; } return result; } //----- (00445E00) -------------------------------------------------------- HANDLE __thiscall sub_445E00(void *dwCompletionKey, void *a2, int a3) { ULONG_PTR v3; // esi@1 HANDLE result; // eax@2 void *v5; // edi@3 signed int v6; // eax@3 signed int v7; // ebx@3 int v8; // edi@4 int v9; // ebx@7 signed int v10; // [sp+Ch] [bp+8h]@8 v3 = (ULONG_PTR)dwCompletionKey; if ( *(_DWORD *)dwCompletionKey || (result = CreateIoCompletionPort((HANDLE)0xFFFFFFFF, 0, 0, 0), (*(_DWORD *)v3 = result) != 0) ) { sub_445BE0(v3, -1); v5 = a2; *(_DWORD *)(v3 + 12) = unknown_libname_17(20 * (_DWORD)a2 | -((unsigned __int8)(20 * (unsigned __int64)(unsigned int)a2 >> 32) != 0)); v6 = 1; v7 = 0; *(_DWORD *)(v3 + 8) = 1; if ( (signed int)a2 > 0 ) { v8 = 0; do { *(_DWORD *)(*(_DWORD *)(v3 + 12) + v8 + 16) = v3; *(_DWORD *)(v8 + *(_DWORD *)(v3 + 12)) = v7; *(_DWORD *)(*(_DWORD *)(v3 + 12) + v8 + 4) = v6; *(_DWORD *)(*(_DWORD *)(v3 + 12) + v8 + 8) = CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)sub_445D10, (LPVOID)(v8 + *(_DWORD *)(v3 + 12)), 0, (LPDWORD)(v8 + *(_DWORD *)(v3 + 12) + 12)); Sleep(0x32u); ++v7; v8 += 20; v6 = 1; } while ( v7 < (signed int)a2 ); v5 = a2; } v9 = 0; if ( a3 ) { v10 = 0; while ( v10 < (signed int)v5 ) { if ( *(_DWORD *)(*(_DWORD *)(v3 + 12) + v9 + 4) == v6 ) { Sleep(0x32u); v6 = 1; } else { v10 += v6; v9 += 20; } } } *(_DWORD *)(v3 + 4) = v5; result = v5; } return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00445EF0) -------------------------------------------------------- int __cdecl sub_445EF0(DWORD dwMessageId, int a2) { DWORD v2; // esi@1 DWORD v3; // eax@3 const char *v5; // [sp-8h] [bp-10h]@7 v2 = dwMessageId; if ( !dwMessageId ) v2 = GetLastError(); v3 = 4608; if ( !a2 ) v3 = 4863; if ( !FormatMessageA(v3, 0, v2, 0x400u, Buffer, 0x400u, 0) ) { if ( a2 ) v5 = "ErrorCode=%d\r\n"; else v5 = "ErrorCode=%d"; sprintf(Buffer, v5, v2); } return (int)Buffer; } //----- (00445F60) -------------------------------------------------------- int __cdecl sub_445F60(int a1) { struct _SYSTEMTIME SystemTime; // [sp+0h] [bp-114h]@2 char v3; // [sp+10h] [bp-104h]@4 char v4; // [sp+90h] [bp-84h]@4 unsigned int v5; // [sp+110h] [bp-4h]@1 int v6; // [sp+114h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; if ( a1 ) GetSystemTime(&SystemTime); else GetLocalTime(&SystemTime); sprintf(&v3, "%04d-%02d-%02d", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); sprintf(&v4, "%02d:%02d:%02d", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond); sprintf(byte_6EBDD8, "%s %s ", &v3, &v4); return (int)byte_6EBDD8; } // 4DE38C: using guessed type int __security_cookie; //----- (00446020) -------------------------------------------------------- int __cdecl sub_446020(int a1) { struct _SYSTEMTIME SystemTime; // [sp+0h] [bp-114h]@2 char v3; // [sp+10h] [bp-104h]@4 CHAR TimeStr; // [sp+90h] [bp-84h]@4 unsigned int v5; // [sp+110h] [bp-4h]@1 int v6; // [sp+114h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; if ( a1 ) GetSystemTime(&SystemTime); else GetLocalTime(&SystemTime); sprintf(&v3, "%04d-%02d-%02d", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); sprintf(&TimeStr, "%02d:%02d:%02d", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond); GetTimeFormatA(0, 0, &SystemTime, "tt hhmmss", &TimeStr, 128); sprintf(byte_6EBE58, "%s %s", &v3, &TimeStr); return (int)byte_6EBE58; } // 4DE38C: using guessed type int __security_cookie; //----- (00446100) -------------------------------------------------------- FILE *__cdecl sub_446100(int a1, char *a2, const char *a3, va_list a4) { FILE *result; // eax@1 int v5; // esi@2 int v6; // eax@2 char *v7; // eax@2 char *v8; // ecx@3 char v9; // dl@4 char v10; // cl@6 FILE *v11; // esi@7 struct _SYSTEMTIME SystemTime; // [sp+4h] [bp-B1Ch]@7 char v13; // [sp+14h] [bp-B0Ch]@2 char v14; // [sp+414h] [bp-70Ch]@2 char v15; // [sp+814h] [bp-30Ch]@7 const CHAR DirPath; // [sp+894h] [bp-28Ch]@7 int v17; // [sp+998h] [bp-188h]@2 char v18; // [sp+99Ch] [bp-184h]@2 char v19; // [sp+A9Ch] [bp-84h]@7 unsigned int v20; // [sp+B1Ch] [bp-4h]@1 int v21; // [sp+B20h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; result = (FILE *)a3; if ( a1 ) { _vsnprintf(&v14, 0x400u, a3, a4); v5 = (unsigned __int16)word_6EB9D0++; v6 = sub_445F60(0); sprintf(&v13, "%06d %s%s\n", v5, v6, &v14); v17 = (int)&unk_67734D; memset(&v18, 0, 0x100u); v7 = a2; if ( a2 != &byte_4B4667 ) { v8 = a2; do v9 = *v8++; while ( v9 ); if ( v8 != a2 + 1 ) { do { v10 = *v7; v7[(char *)&v17 - a2] = *v7; ++v7; } while ( v10 ); } } GetLocalTime(&SystemTime); sprintf(&v19, "%04d-%02d-%02d", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); sprintf(&v15, "%02d:%02d:%02d", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond); sprintf((char *)&DirPath, ".\\DebugMessage\\%s_%s.txt", &v17, &v19); MakeSureDirectoryPathExists(&DirPath); result = fopen(&DirPath, "a+"); v11 = result; if ( result ) { fprintf(result, &v13); result = (FILE *)fclose(v11); } } return result; } // 4DE38C: using guessed type int __security_cookie; // 6EB9D0: using guessed type __int16 word_6EB9D0; //----- (00446290) -------------------------------------------------------- FILE *__cdecl sub_446290(const char *a1) { FILE *result; // eax@1 FILE *v2; // esi@1 const CHAR DirPath; // [sp+8h] [bp-108h]@1 unsigned int v4; // [sp+10Ch] [bp-4h]@1 int v5; // [sp+110h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; sprintf((char *)&DirPath, ".\\DebugMessage\\ExecUpdateInfo.txt"); MakeSureDirectoryPathExists(&DirPath); result = fopen(&DirPath, "w"); v2 = result; if ( result ) { fprintf(result, a1); result = (FILE *)fclose(v2); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00446310) -------------------------------------------------------- FILE *sub_446310(const char *a1, ...) { va_list va; // [sp+Ch] [bp+Ch]@1 va_start(va, a1); return sub_446100(1, "Msg", a1, va); } //----- (00446330) -------------------------------------------------------- FILE *sub_446330(int a1, const char *a2, ...) { va_list va; // [sp+10h] [bp+10h]@1 va_start(va, a2); return sub_446100(a1, "Msg", a2, va); } //----- (00446350) -------------------------------------------------------- FILE *sub_446350(int a1, char *a2, const char *a3, ...) { va_list va; // [sp+14h] [bp+14h]@1 va_start(va, a3); return sub_446100(a1, a2, a3, va); } //----- (00446370) -------------------------------------------------------- int __cdecl sub_446370(int a1, int a2, int a3, __int16 a4) { int result; // eax@1 int v5; // ecx@1 int v6; // ecx@6 int v7; // esi@8 result = a2; *(_BYTE *)a2 = 37; v5 = a2 + 1; if ( a4 & 0x20 ) { *(_BYTE *)v5 = 43; v5 = a2 + 2; } if ( a4 & 8 ) *(_BYTE *)v5++ = 35; if ( *(_BYTE *)a3 == 76 ) { *(_WORD *)v5 = 13897; *(_BYTE *)(v5 + 2) = 52; v6 = v5 + 3; } else { *(_BYTE *)v5 = *(_BYTE *)a3; v6 = v5 + 1; } v7 = a4 & 0xE00; if ( v7 == 1024 ) { *(_BYTE *)v6 = 111; *(_BYTE *)(v6 + 1) = 0; } else { if ( v7 == 2048 ) { *(_BYTE *)v6 = ~(8 * a4) & 0x20 | 0x58; *(_BYTE *)(v6 + 1) = 0; } else { *(_BYTE *)v6 = *(_BYTE *)(a3 + 1); *(_BYTE *)(v6 + 1) = 0; } } return result; } //----- (00446400) -------------------------------------------------------- int __cdecl sub_446400(int a1, int a2, int a3, int a4, unsigned __int8 *a5, int a6) { int v6; // ecx@1 int v7; // ebx@1 unsigned __int8 *v8; // edi@2 unsigned __int8 v9; // dl@4 int v10; // eax@5 int v11; // eax@6 int v12; // ecx@6 int v13; // eax@6 int result; // eax@11 v6 = a4; v7 = a6; if ( a6 ) { v8 = a5; do { if ( !v6 || ((v9 = *v8, !**(_DWORD **)(v6 + 36)) || (v10 = *(_DWORD *)(v6 + 52), *(_DWORD *)v10 <= 0) ? (v13 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v6 + 12))(v9)) : (--*(_DWORD *)v10, v11 = *(_DWORD *)(v6 + 36), v12 = *(_DWORD *)v11, ++*(_DWORD *)v11, *(_BYTE *)v12 = v9, v13 = v9), v6 = a4, v13 == -1) ) LOBYTE(a3) = 1; ++v8; --v7; } while ( v7 ); } result = a2; *(_DWORD *)a2 = a3; *(_DWORD *)(a2 + 4) = v6; return result; } //----- (00446470) -------------------------------------------------------- int __cdecl sub_446470(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6) { int v6; // ecx@1 int i; // esi@1 int v8; // eax@4 int v9; // eax@5 int v10; // ecx@5 int v11; // eax@5 int result; // eax@10 v6 = a4; for ( i = a6; i; --i ) { if ( v6 ) { if ( **(_DWORD **)(v6 + 36) && (v8 = *(_DWORD *)(v6 + 52), *(_DWORD *)v8 > 0) ) { --*(_DWORD *)v8; v9 = *(_DWORD *)(v6 + 36); v10 = (*(_DWORD *)v9)++; *(_BYTE *)v10 = a5; v11 = a5; } else { v11 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v6 + 12))(a5); } v6 = a4; if ( v11 != -1 ) continue; } LOBYTE(a3) = 1; } result = a2; *(_DWORD *)a2 = a3; *(_DWORD *)(a2 + 4) = v6; return result; } //----- (004464E0) -------------------------------------------------------- int __cdecl sub_4464E0(int a1, int a2, int a3, int a4, const void *a5, size_t a6, unsigned __int8 a7) { size_t v7; // ebx@1 const void *v8; // edi@1 void *v9; // eax@2 int v10; // esi@3 int v11; // eax@5 int v12; // edi@5 int v13; // ebx@5 int v14; // eax@7 int v15; // edx@9 char v17; // [sp+Ch] [bp-10h]@7 char v18; // [sp+14h] [bp-8h]@5 v7 = a6; v8 = a5; while ( 1 ) { v9 = memchr(v8, 0, v7); v10 = v9 ? v9 - v8 : v7; v11 = sub_446400(a1, (int)&v18, a3, a4, (unsigned __int8 *)v8, v10); a3 = *(_DWORD *)v11; v12 = (int)((char *)v8 + v10); v13 = v7 - v10; a4 = *(_DWORD *)(v11 + 4); if ( !v13 ) break; if ( a7 ) { v14 = sub_446470(a1, (int)&v17, *(_DWORD *)v11, *(_DWORD *)(v11 + 4), a7, 1); a3 = *(_DWORD *)v14; a4 = *(_DWORD *)(v14 + 4); } v8 = (const void *)(v12 + 1); v7 = v13 - 1; } v15 = *(_DWORD *)v11; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v11 + 4); *(_DWORD *)a2 = v15; return a2; } //----- (00446580) -------------------------------------------------------- signed int __cdecl sub_446580(int a1, int a2) { char v2; // bl@1 int v3; // esi@3 char *v4; // eax@5 char v6; // [sp+Ch] [bp-34h]@7 int v7; // [sp+30h] [bp-10h]@1 int v8; // [sp+3Ch] [bp-4h]@3 v2 = 0; v7 = 0; if ( a1 && !*(_DWORD *)a1 ) { v3 = operator new(0x10u); v7 = v3; v8 = 0; if ( v3 ) { if ( *(_DWORD *)(*(_DWORD *)a2 + 24) ) v4 = *(char **)(*(_DWORD *)a2 + 24); else v4 = (char *)(*(_DWORD *)a2 + 28); sub_43F770(&v6, v4); v2 = 1; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)v3 = &off_4B98C0; *(_QWORD *)(v3 + 8) = _Getcvt(); } else { v3 = 0; } v8 = -1; *(_DWORD *)a1 = v3; if ( v2 & 1 ) sub_43F820(&v6); } return 4; } // 4B98C0: using guessed type int (__thiscall *off_4B98C0)(void *, char); //----- (00446640) -------------------------------------------------------- int __thiscall sub_446640(int this, int a2, size_t a3, char a4) { int v4; // esi@1 unsigned int v5; // eax@1 unsigned int v6; // edi@6 unsigned int v7; // ecx@8 unsigned int v8; // eax@10 int v9; // ecx@11 int result; // eax@14 int v11; // eax@18 bool v12; // cf@20 v4 = this; v5 = *(_DWORD *)(this + 16); if ( v5 < a2 ) sub_48B4EB((int)"invalid string position"); if ( -1 - v5 <= a3 ) sub_48B49E((int)"string too long"); if ( !a3 ) return v4; v6 = v5 + a3; if ( v5 + a3 > 0xFFFFFFFE ) sub_48B49E((int)"string too long"); v7 = *(_DWORD *)(this + 20); if ( v7 < v6 ) { sub_43D9E0(v5, v4, v6, v5); if ( v6 ) { LABEL_10: v8 = *(_DWORD *)(v4 + 20); if ( v8 < 0x10 ) v9 = v4; else v9 = *(_DWORD *)v4; if ( v8 < 0x10 ) v11 = v4; else v11 = *(_DWORD *)v4; memmove_0((void *)(a3 + a2 + v11), (const void *)(a2 + v9), *(_DWORD *)(v4 + 16) - a2); sub_43F5C0(v4, a2, a3, a4); v12 = *(_DWORD *)(v4 + 20) < 0x10u; *(_DWORD *)(v4 + 16) = v6; if ( !v12 ) { *(_BYTE *)(*(_DWORD *)v4 + v6) = 0; return v4; } *(_BYTE *)(v4 + v6) = 0; } return v4; } if ( v6 ) goto LABEL_10; *(_DWORD *)(v4 + 16) = 0; if ( v7 < 0x10 ) { result = v4; *(_BYTE *)v4 = 0; } else { **(_BYTE **)v4 = 0; result = v4; } return result; } //----- (00446740) -------------------------------------------------------- int __cdecl sub_446740(int a1) { int v1; // ebx@1 int v2; // edi@5 int v3; // esi@5 int v4; // eax@5 int v5; // ecx@6 int v6; // eax@8 int v7; // esi@9 unsigned int v8; // eax@18 char v10; // [sp+10h] [bp-24h]@16 char v11; // [sp+1Ch] [bp-18h]@21 char v12; // [sp+20h] [bp-14h]@4 int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 std::_Lockit::_Lockit(0); v1 = dword_6EBED8; v14 = 0; v13 = dword_6EBED8; if ( !dword_6EBEDC ) { std::_Lockit::_Lockit(0); if ( !dword_6EBEDC ) { ++dword_A429B8; dword_6EBEDC = dword_A429B8; } std::_Lockit::__Lockit(&v12); } v2 = a1; v3 = dword_6EBEDC; v4 = *(_DWORD *)a1; if ( (unsigned int)dword_6EBEDC >= *(_DWORD *)(*(_DWORD *)a1 + 12) ) { v5 = 0; } else { v5 = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4 * dword_6EBEDC); if ( v5 ) { LABEL_11: v7 = v5; LABEL_12: if ( v7 ) goto LABEL_21; goto LABEL_13; } } if ( !*(_BYTE *)(v4 + 20) ) goto LABEL_11; v6 = sub_48B801(); if ( (unsigned int)v3 < *(_DWORD *)(v6 + 12) ) { v7 = *(_DWORD *)(*(_DWORD *)(v6 + 8) + 4 * v3); goto LABEL_12; } LABEL_13: if ( v1 ) { v7 = v1; } else { if ( sub_446580((int)&v13, v2) == -1 ) { sub_48E045(&v10, (unsigned int)"bad cast"); _CxxThrowException(&v10, &unk_4D17CC); } v7 = v13; dword_6EBED8 = v13; std::_Lockit::_Lockit(0); v8 = *(_DWORD *)(v7 + 4); if ( v8 < 0xFFFFFFFF ) *(_DWORD *)(v7 + 4) = v8 + 1; std::_Lockit::__Lockit(&a1); std::locale::facet::_Facet_Register(v7); } LABEL_21: v14 = -1; std::_Lockit::__Lockit(&v11); return v7; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 48B78A: using guessed type _DWORD __cdecl std__locale__facet___Facet_Register(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6EBED8: using guessed type int dword_6EBED8; // 6EBEDC: using guessed type int dword_6EBEDC; // A429B8: using guessed type int dword_A429B8; //----- (00446880) -------------------------------------------------------- int __thiscall sub_446880(int this, char *a2, int a3) { const void *v3; // edx@1 int v4; // esi@1 unsigned int v5; // ecx@2 unsigned int v6; // eax@3 int v7; // eax@7 int result; // eax@11 unsigned int v9; // eax@13 unsigned int v10; // edi@16 unsigned int v11; // ecx@18 int v12; // eax@21 bool v13; // cf@27 v3 = a2; v4 = this; if ( a2 ) { v5 = *(_DWORD *)(this + 20); v6 = v5 < 0x10 ? v4 : *(_DWORD *)v4; if ( (unsigned int)a2 >= v6 ) { v7 = v5 < 0x10 ? v4 : *(_DWORD *)v4; if ( v7 + *(_DWORD *)(v4 + 16) > (unsigned int)a2 ) { if ( v5 < 0x10 ) result = sub_440190(v4, v4, (unsigned int)&a2[-v4], a3); else result = sub_440190(v4, v4, (unsigned int)&a2[-*(_DWORD *)v4], a3); return result; } } } v9 = *(_DWORD *)(v4 + 16); if ( -1 - v9 <= a3 ) sub_48B49E((int)"string too long"); if ( !a3 ) return v4; v10 = v9 + a3; if ( v9 + a3 > 0xFFFFFFFE ) sub_48B49E((int)"string too long"); v11 = *(_DWORD *)(v4 + 20); if ( v11 < v10 ) { sub_43D9E0(v9, v4, v9 + a3, v9); v3 = a2; if ( v10 ) { LABEL_20: if ( *(_DWORD *)(v4 + 20) < 0x10u ) v12 = v4; else v12 = *(_DWORD *)v4; memmove((void *)(v12 + *(_DWORD *)(v4 + 16)), v3, a3); v13 = *(_DWORD *)(v4 + 20) < 0x10u; *(_DWORD *)(v4 + 16) = v10; if ( !v13 ) { *(_BYTE *)(*(_DWORD *)v4 + v10) = 0; return v4; } *(_BYTE *)(v4 + v10) = 0; } return v4; } if ( v10 ) goto LABEL_20; *(_DWORD *)(v4 + 16) = 0; if ( v11 < 0x10 ) { result = v4; *(_BYTE *)v4 = 0; } else { **(_BYTE **)v4 = 0; result = v4; } return result; } //----- (004469A0) -------------------------------------------------------- void *__thiscall sub_4469A0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // eax@3 void *v5; // eax@4 int v6; // eax@6 int v7; // eax@7 int v8; // eax@7 int v9; // ebx@7 unsigned int v10; // eax@8 int v11; // edi@11 int v12; // edi@11 int v13; // eax@13 int v14; // ecx@13 char v15; // dl@13 int v16; // ecx@13 int v17; // edi@13 void (__thiscall *v18)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@13 int v19; // ecx@16 int v20; // eax@17 int v21; // ecx@22 int v23; // [sp+0h] [bp-44h]@1 int v24; // [sp+10h] [bp-34h]@13 void *v25; // [sp+18h] [bp-2Ch]@1 bool v26; // [sp+1Ch] [bp-28h]@6 int v27; // [sp+20h] [bp-24h]@7 int v28; // [sp+24h] [bp-20h]@11 int v29; // [sp+28h] [bp-1Ch]@7 int v30; // [sp+2Ch] [bp-18h]@1 void *v31; // [sp+30h] [bp-14h]@1 int *v32; // [sp+34h] [bp-10h]@1 int v33; // [sp+40h] [bp-4h]@3 v32 = &v23; v2 = this; v31 = this; v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this + 4) + 56); v30 = 0; v25 = v31; if ( v3 ) (*(void (**)(void))(*(_DWORD *)v3 + 4))(); v4 = *(_DWORD *)(*(_DWORD *)v2 + 4); v33 = 0; if ( !*(_DWORD *)((char *)v2 + v4 + 12) ) { v5 = *(void **)((char *)v2 + v4 + 60); if ( v5 ) sub_43FEA0(v5); } v6 = *(_DWORD *)v2; v26 = *(_DWORD *)((char *)v2 + *(_DWORD *)(*(_DWORD *)v2 + 4) + 12) == 0; v33 = 1; if ( v26 ) { v7 = sub_43E6D0((int)((char *)v2 + *(_DWORD *)(v6 + 4)), (int)&v29); LOBYTE(v33) = 2; v8 = sub_446740(v7); v9 = v29; v27 = v8; LOBYTE(v33) = 1; if ( v29 ) { std::_Lockit::_Lockit(0); v10 = *(_DWORD *)(v9 + 4); if ( v10 > 0 && v10 < 0xFFFFFFFF ) *(_DWORD *)(v9 + 4) = v10 - 1; v11 = -(*(_DWORD *)(v9 + 4) == 0); std::_Lockit::__Lockit(&v28); v12 = v9 & v11; if ( v12 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v12)(v12, 1); } v13 = *(_DWORD *)(*(_DWORD *)v2 + 4); v14 = *(_DWORD *)(*(_DWORD *)v2 + 4); v15 = *((_BYTE *)v2 + v14 + 64); v16 = *(_DWORD *)((char *)v2 + v14 + 56); LOBYTE(v28) = v15; v17 = *(_DWORD *)v27; LOBYTE(v24) = 0; v18 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(v17 + 28); LOBYTE(v33) = 3; v18(v27, &v24, v24, v16, (char *)v2 + v13, v28, a2); if ( (_BYTE)v24 ) v30 = 4; v33 = 1; } v19 = (int)((char *)v2 + *(_DWORD *)(*(_DWORD *)v2 + 4)); if ( v30 ) { v20 = v30 | *(_DWORD *)(v19 + 12); if ( !*(_DWORD *)(v19 + 56) ) LOBYTE(v20) = v20 | 4; sub_43EAA0(v19, v20, 0); } v33 = 5; if ( !__uncaught_exception() ) sub_4400D0(v2); v21 = *(_DWORD *)((char *)v2 + *(_DWORD *)(*(_DWORD *)v2 + 4) + 56); v33 = -1; if ( v21 ) (*(void (**)(void))(*(_DWORD *)v21 + 8))(); return v2; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (00446B43) -------------------------------------------------------- int (*__usercall sub_446B43(int a1))() { int v1; // eax@1 int v2; // ecx@1 int v3; // ecx@3 v1 = *(_DWORD *)(a1 - 20) + *(_DWORD *)(**(_DWORD **)(a1 - 20) + 4); v2 = *(_DWORD *)(v1 + 12) | 4; if ( !*(_DWORD *)(v1 + 56) ) v2 = *(_DWORD *)(v1 + 12) | 4; v3 = v2 & 0x17; *(_DWORD *)(v1 + 12) = v3; if ( v3 & *(_DWORD *)(v1 + 16) ) _CxxThrowException(0, 0); *(_DWORD *)(a1 - 4) = 1; return loc_446B74; } // 446B74: using guessed type int loc_446B74(); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00446B90) -------------------------------------------------------- #error "446CFC: positive sp value has been found (funcsize=113)" //----- (00446D10) -------------------------------------------------------- int __cdecl sub_446D10(int a1, int a2, int a3, int a4, int a5, unsigned __int8 a6, const void *a7, size_t a8, size_t a9, size_t a10, int a11) { size_t v11; // ebx@1 unsigned __int8 *v12; // edi@1 int v13; // eax@1 int v14; // esi@1 int v15; // esi@2 unsigned int v16; // eax@2 int v17; // esi@5 int v18; // esi@5 int (__thiscall *v19)(_DWORD, _DWORD); // eax@8 char v20; // al@8 void *v21; // esi@11 void *v22; // eax@13 void *v23; // eax@16 size_t v24; // ebx@20 int v25; // ebx@26 void *v26; // ebx@27 const char *v27; // eax@29 int v28; // edi@31 int v29; // eax@31 int v30; // ecx@40 unsigned int v31; // eax@40 int v32; // eax@46 int v33; // eax@48 int v34; // eax@50 int v35; // eax@51 void *v36; // eax@53 size_t v37; // eax@54 int v38; // ebx@54 int v39; // eax@54 int v40; // eax@54 unsigned __int8 v41; // al@54 int v42; // eax@54 int v43; // eax@54 int v44; // ecx@54 void *v45; // eax@55 int v46; // ebx@56 int v47; // eax@56 int v48; // eax@56 bool v49; // zf@56 unsigned __int8 *v50; // ecx@56 int v51; // eax@58 int v52; // edx@58 int v53; // eax@59 int v54; // eax@59 int v55; // ecx@59 int v56; // edx@59 int v57; // eax@59 unsigned int v59; // [sp-4h] [bp-94h]@1 char v60; // [sp+10h] [bp-80h]@54 int v61; // [sp+14h] [bp-7Ch]@1 int v62; // [sp+18h] [bp-78h]@1 int v63; // [sp+1Ch] [bp-74h]@54 int v64; // [sp+20h] [bp-70h]@1 size_t v65; // [sp+24h] [bp-6Ch]@1 int v66; // [sp+28h] [bp-68h]@48 int v67; // [sp+2Ch] [bp-64h]@5 int v68; // [sp+30h] [bp-60h]@2 char v69; // [sp+34h] [bp-5Ch]@11 __int16 v70; // [sp+35h] [bp-5Bh]@11 size_t v71; // [sp+38h] [bp-58h]@1 size_t v72; // [sp+3Ch] [bp-54h]@1 unsigned int v73; // [sp+40h] [bp-50h]@11 size_t v74; // [sp+44h] [bp-4Ch]@1 void *v75; // [sp+48h] [bp-48h]@8 unsigned int v76; // [sp+5Ch] [bp-34h]@13 char *v77; // [sp+64h] [bp-2Ch]@8 size_t v78; // [sp+74h] [bp-1Ch]@8 unsigned int v79; // [sp+78h] [bp-18h]@8 unsigned int v80; // [sp+80h] [bp-10h]@1 int v81; // [sp+8Ch] [bp-4h]@1 int v82; // [sp+90h] [bp+0h]@1 int v83; // [sp+A0h] [bp+10h]@54 int v84; // [sp+A4h] [bp+14h]@54 v80 = (unsigned int)&v82 ^ __security_cookie; v59 = (unsigned int)&v82 ^ __security_cookie; v11 = a11; v12 = (unsigned __int8 *)a7; v65 = a9; v71 = a8; v62 = a5; v72 = a10; v74 = a11; v13 = sub_43E6D0(a5, (int)&v64); v81 = 0; v14 = sub_440A80(v13); v61 = v14; v81 = -1; if ( v64 ) { v15 = v64; v68 = v64; std::_Lockit::_Lockit(0); v16 = *(_DWORD *)(v15 + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(v15 + 4) = v16 - 1; v17 = -(*(_DWORD *)(v15 + 4) == 0); std::_Lockit::__Lockit(&v67); v18 = v68 & v17; if ( v18 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v18)(v18, 1); v14 = v61; } sub_440170((void *)v14, (int)&v75); v19 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v14 + 8); v81 = 1; LOBYTE(v68) = v19(v14, v59); v79 = 15; v78 = 0; LOBYTE(v77) = 0; v20 = *(_BYTE *)a7; LOBYTE(v81) = 2; if ( v20 == 43 || (v67 = 0, v20 == 45) ) v67 = 1; v69 = *localeconv()->decimal_point; v70 = 101; v21 = memchr(a7, 101, a11); v73 = (unsigned int)memchr(a7, v69, a11); if ( !v73 ) v72 = 0; v22 = v75; if ( v76 < 0x10 ) v22 = &v75; if ( *(_BYTE *)v22 != 127 ) { v23 = v75; if ( v76 < 0x10 ) v23 = &v75; if ( *(_BYTE *)v23 > 0 ) { sub_446880((int)&v77, (char *)a7, a11); if ( v21 ) { v24 = v73; if ( !v73 ) { sub_440710((int)&v77, v71, 48); v71 = v24; } sub_446640((int)&v77, v21 - a7, v72, 48); } else { sub_440710((int)&v77, v72, 48); v24 = v73; } if ( v24 ) { v25 = v24 - (_DWORD)a7; sub_446640((int)&v77, v25 + 1, v65, 48); sub_446640((int)&v77, v25, v71, 48); v65 = 0; } else { sub_440710((int)&v77, v71, 48); } v26 = v75; v71 = 0; if ( v76 < 0x10 ) v26 = &v75; v27 = v77; if ( v79 < 0x10 ) v27 = (const char *)&v77; v28 = strcspn(v27, &v69); for ( LOBYTE(v29) = *(_BYTE *)v26; *(_BYTE *)v26 != 127; LOBYTE(v29) = *(_BYTE *)v26 ) { if ( (char)v29 <= 0 ) break; v29 = (char)v29; if ( (char)v29 >= (unsigned int)(v28 - v67) ) break; v28 -= v29; sub_446640((int)&v77, v28, 1u, 0); if ( *((_BYTE *)v26 + 1) > 0 ) v26 = (char *)v26 + 1; } v12 = (unsigned __int8 *)v77; if ( v79 < 0x10 ) v12 = (unsigned __int8 *)&v77; v72 = 0; v74 = v78; v11 = v78; } } v30 = *(_DWORD *)(v62 + 32); v31 = v71 + v65 + v11 + v72; if ( *(_DWORD *)(v62 + 36) >= 0 && (*(_DWORD *)(v62 + 36) > 0 || v30) && v30 > v31 ) v73 = v30 - v31; else v73 = 0; v32 = *(_DWORD *)(v62 + 20) & 0x1C0; if ( v32 != 64 ) { if ( v32 == 256 ) { if ( v67 ) { v34 = sub_446400(a1, (int)&v66, a3, a4, v12, 1); a3 = *(_DWORD *)v34; ++v12; --v11; a4 = *(_DWORD *)(v34 + 4); v74 = v11; } v35 = sub_446470(a1, (int)&v66, a3, a4, a6, v73); a3 = *(_DWORD *)v35; a4 = *(_DWORD *)(v35 + 4); } else { v33 = sub_446470(a1, (int)&v66, a3, a4, a6, v73); a3 = *(_DWORD *)v33; a4 = *(_DWORD *)(v33 + 4); } v73 = 0; } v36 = memchr(v12, v69, v11); if ( v36 ) { v37 = v36 - v12; v38 = v37 + 1; v39 = sub_4464E0(a1, (int)&v66, a3, a4, v12, v37, v68); v40 = sub_446470(a1, (int)&v66, *(_DWORD *)v39, *(_DWORD *)(v39 + 4), 0x30u, v71); v83 = *(_DWORD *)v40; v84 = *(_DWORD *)(v40 + 4); v41 = (*(int (**)(void))(*(_DWORD *)v61 + 4))(); LOBYTE(v64) = v41; v42 = sub_446470(a1, (int)&v60, v83, v84, v41, 1); v43 = sub_446470(a1, (int)&v63, *(_DWORD *)v42, *(_DWORD *)(v42 + 4), 0x30u, v65); v44 = *(_DWORD *)v43; v12 += v38; v74 -= v38; v11 = v74; a3 = v44; a4 = *(_DWORD *)(v43 + 4); } v45 = memchr(v12, 101, v11); if ( v45 ) { v46 = v45 - v12 + 1; v47 = sub_4464E0(a1, (int)&v63, a3, a4, v12, v45 - v12, v68); v48 = sub_446470(a1, (int)&v63, *(_DWORD *)v47, *(_DWORD *)(v47 + 4), 0x30u, v72); v49 = (*(_BYTE *)(v62 + 20) & 4) == 0; v72 = 0; v50 = (unsigned __int8 *)&unk_4B98E8; if ( v49 ) v50 = (unsigned __int8 *)&unk_4B98E4; v51 = sub_446400(a1, (int)&v63, *(_DWORD *)v48, *(_DWORD *)(v48 + 4), v50, 1); v52 = *(_DWORD *)v51; v12 += v46; v74 -= v46; v11 = v74; a3 = v52; a4 = *(_DWORD *)(v51 + 4); } v53 = sub_4464E0(a1, (int)&v63, a3, a4, v12, v11, v68); v54 = sub_446470(a1, (int)&v60, *(_DWORD *)v53, *(_DWORD *)(v53 + 4), 0x30u, v72); v56 = v62; v55 = *(_DWORD *)v54; v57 = *(_DWORD *)(v54 + 4); *(_DWORD *)(v62 + 32) = 0; *(_DWORD *)(v56 + 36) = 0; sub_446470(a1, a2, v55, v57, a6, v73); if ( v79 >= 0x10 ) operator delete(v77); v79 = 15; v78 = 0; LOBYTE(v77) = 0; if ( v76 >= 0x10 ) operator delete(v75); return a2; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (00447280) -------------------------------------------------------- int __cdecl sub_447280(int a1, int a2, int a3, int a4, int a5, unsigned __int8 a6, const void *a7, size_t a8) { const void *v8; // ebx@1 int v9; // eax@1 int v10; // eax@1 int v11; // esi@1 unsigned int v12; // eax@2 int v13; // edi@5 int v14; // edi@5 char v15; // al@7 char v16; // al@10 void *v17; // edx@15 void *v18; // eax@15 void *v19; // eax@18 size_t v20; // esi@23 int v21; // eax@23 int v22; // eax@26 int v23; // edi@29 int v24; // edi@33 int v25; // eax@35 int v26; // eax@37 int v27; // eax@38 int v28; // eax@38 unsigned __int8 v29; // al@40 int v30; // eax@40 int v31; // edx@40 int v32; // ST14_4@40 int v33; // edi@40 int v34; // eax@40 unsigned int v36; // [sp-4h] [bp-64h]@1 int v37; // [sp+Ch] [bp-54h]@40 void *v38; // [sp+10h] [bp-50h]@1 int v39; // [sp+14h] [bp-4Ch]@1 char v40; // [sp+18h] [bp-48h]@38 void *i; // [sp+1Ch] [bp-44h]@23 int v42; // [sp+20h] [bp-40h]@1 int v43; // [sp+24h] [bp-3Ch]@1 char v44; // [sp+28h] [bp-38h]@37 int v45; // [sp+2Ch] [bp-34h]@5 size_t v46; // [sp+30h] [bp-30h]@1 void *v47; // [sp+34h] [bp-2Ch]@7 unsigned int v48; // [sp+48h] [bp-18h]@15 unsigned int v49; // [sp+50h] [bp-10h]@1 int v50; // [sp+5Ch] [bp-4h]@1 int v51; // [sp+60h] [bp+0h]@1 int v52; // [sp+70h] [bp+10h]@40 v49 = (unsigned int)&v51 ^ __security_cookie; v36 = (unsigned int)&v51 ^ __security_cookie; v8 = a7; v39 = a2; v43 = a5; v46 = a8; v9 = sub_43E6D0(a5, (int)&v42); v50 = 0; v10 = sub_440A80(v9); v11 = v42; v38 = (void *)v10; v50 = -1; if ( v42 ) { std::_Lockit::_Lockit(0); v12 = *(_DWORD *)(v11 + 4); if ( v12 && v12 < 0xFFFFFFFF ) *(_DWORD *)(v11 + 4) = v12 - 1; v13 = -(*(_DWORD *)(v11 + 4) == 0); std::_Lockit::__Lockit(&v45); v14 = v11 & v13; if ( v14 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v14)(v14, 1); } sub_440170(v38, (int)&v47); v15 = *(_BYTE *)a7; v50 = 1; if ( v15 == 43 || v15 == 45 ) { v45 = 1; } else { if ( v15 != 48 || (v16 = *((_BYTE *)a7 + 1), v16 != 120) && v16 != 88 ) v45 = 0; else v45 = 2; } v17 = v47; v18 = v47; if ( v48 < 0x10 ) v18 = &v47; if ( *(_BYTE *)v18 != 127 ) { v19 = v47; if ( v48 < 0x10 ) v19 = &v47; if ( *(_BYTE *)v19 > 0 ) { if ( v48 < 0x10 ) v17 = &v47; v20 = v46; LOBYTE(v21) = *(_BYTE *)v17; for ( i = v17; (_BYTE)v21 != 127; LOBYTE(v21) = *(_BYTE *)v21 ) { if ( (char)v21 <= 0 ) break; v21 = (char)v21; if ( (char)v21 >= v20 - v45 ) break; v20 -= v21; memmove_s((char *)a7 + v20 + 1, v46 - v20 + 1, (char *)a7 + v20, v46 - v20 + 1); v22 = (int)i; ++v46; *((_BYTE *)a7 + v20) = 0; if ( *(_BYTE *)(v22 + 1) > 0 ) { ++v22; i = (void *)v22; } } } } v23 = *(_DWORD *)(v43 + 32); if ( *(_DWORD *)(v43 + 36) >= 0 && (*(_DWORD *)(v43 + 36) > 0 || v23) && v23 > v46 ) v24 = v23 - v46; else v24 = 0; v25 = *(_DWORD *)(v43 + 20) & 0x1C0; if ( v25 != 64 ) { if ( v25 == 256 ) { v27 = sub_446400(a1, (int)&v40, a3, a4, (unsigned __int8 *)a7, v45); v46 -= v45; v8 = (char *)a7 + v45; v28 = sub_446470(a1, (int)&v44, *(_DWORD *)v27, *(_DWORD *)(v27 + 4), a6, v24); a3 = *(_DWORD *)v28; a4 = *(_DWORD *)(v28 + 4); } else { v26 = sub_446470(a1, (int)&v44, a3, a4, a6, v24); a3 = *(_DWORD *)v26; a4 = *(_DWORD *)(v26 + 4); } v24 = 0; } v29 = (*(int (__stdcall **)(unsigned int))(*(_DWORD *)v38 + 8))(v36); LOBYTE(v42) = v29; v30 = sub_4464E0(a1, (int)&v37, a3, a4, v8, v46, v29); v31 = v43; v32 = v24; v33 = v39; v52 = *(_DWORD *)v30; v34 = *(_DWORD *)(v30 + 4); *(_DWORD *)(v43 + 32) = 0; *(_DWORD *)(v31 + 36) = 0; sub_446470(a1, v33, v52, v34, a6, v32); if ( v48 >= 0x10 ) operator delete(v47); return v33; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (00447510) -------------------------------------------------------- int __cdecl sub_447510(int a1) { int v1; // eax@1 signed int v2; // edi@1 int v3; // ecx@4 int v4; // eax@5 sub_446B90(10); v1 = *(_DWORD *)(*(_DWORD *)a1 + 4); v2 = 0; if ( !(*(_BYTE *)(v1 + a1 + 12) & 6) && (*(int (__thiscall **)(_DWORD))(**(_DWORD **)(v1 + a1 + 56) + 52))(*(_DWORD *)(v1 + a1 + 56)) == -1 ) v2 = 4; v3 = a1 + *(_DWORD *)(*(_DWORD *)a1 + 4); if ( v2 ) { v4 = v2 | *(_DWORD *)(v3 + 12); if ( !*(_DWORD *)(v3 + 56) ) LOBYTE(v4) = v4 | 4; sub_43EAA0(v3, v4, 0); } return a1; } // 446B90: using guessed type _DWORD __stdcall sub_446B90(char); //----- (00447570) -------------------------------------------------------- int __thiscall sub_447570(void *this, int a2, int a3, int a4, int a5, char a6, unsigned __int8 a7) { bool v7; // zf@1 int v8; // ebx@1 int v10; // eax@3 int v11; // eax@3 int v12; // edi@3 unsigned int v13; // eax@4 int v14; // edi@7 int v15; // edi@7 int v16; // eax@10 int v17; // eax@12 unsigned int v18; // edi@15 int v19; // ecx@15 int v20; // edi@19 int v21; // eax@22 unsigned __int8 *v22; // eax@23 int v23; // eax@25 int v24; // ecx@25 int v25; // eax@25 int v26; // esi@25 void *v27; // [sp-8h] [bp-7Ch]@11 char v28; // [sp+Ch] [bp-68h]@22 char v29; // [sp+10h] [bp-64h]@7 char v30; // [sp+14h] [bp-60h]@25 void *v31; // [sp+18h] [bp-5Ch]@3 int v32; // [sp+1Ch] [bp-58h]@3 int v33; // [sp+20h] [bp-54h]@1 int v34; // [sp+24h] [bp-50h]@4 int v35; // [sp+28h] [bp-4Ch]@1 void *v36; // [sp+2Ch] [bp-48h]@10 unsigned int v37; // [sp+40h] [bp-34h]@10 void *v38; // [sp+48h] [bp-2Ch]@9 unsigned int v39; // [sp+58h] [bp-1Ch]@9 unsigned int v40; // [sp+5Ch] [bp-18h]@9 unsigned int v41; // [sp+64h] [bp-10h]@1 int v42; // [sp+70h] [bp-4h]@3 int v43; // [sp+74h] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v7 = (*(_DWORD *)(a5 + 20) & 0x4000) == 0; v8 = (int)this; v33 = a2; LOBYTE(v35) = a6; if ( v7 ) { (*(void (__stdcall **)(int, int, int, int, int, _DWORD))(*(_DWORD *)this + 28))(a2, a3, a4, a5, v35, a7); return a2; } v10 = sub_43E6D0(a5, (int)&v32); v42 = 0; v11 = sub_440A80(v10); v12 = v32; v31 = (void *)v11; v42 = -1; if ( v32 ) { v34 = v32; std::_Lockit::_Lockit(0); v13 = *(_DWORD *)(v12 + 4); if ( v13 && v13 < 0xFFFFFFFF ) *(_DWORD *)(v12 + 4) = v13 - 1; v14 = -(*(_DWORD *)(v12 + 4) == 0); std::_Lockit::__Lockit(&v29); v15 = v34 & v14; if ( v15 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v15)(v15, 1); } v40 = 15; v39 = 0; LOBYTE(v38) = 0; v42 = 1; if ( a7 ) { v16 = sub_440150(v31, (int)&v36); LOBYTE(v42) = 2; sub_442890(&v38, (void **)v16); LOBYTE(v42) = 1; if ( v37 >= 0x10 ) { v27 = v36; LABEL_14: operator delete(v27); goto LABEL_15; } } else { v17 = sub_440130(v31, (int)&v36); LOBYTE(v42) = 3; sub_442890(&v38, (void **)v17); LOBYTE(v42) = 1; if ( v37 >= 0x10 ) { v27 = v36; goto LABEL_14; } } LABEL_15: v18 = *(_DWORD *)(a5 + 32); v19 = v39; if ( *(_DWORD *)(a5 + 36) >= 0 && (*(_DWORD *)(a5 + 36) > 0 || v18) && v18 > v39 ) v20 = v18 - v39; else v20 = 0; if ( (*(_DWORD *)(a5 + 20) & 0x1C0) != 64 ) { v21 = sub_446470(v8, (int)&v28, a3, a4, v35, v20); a3 = *(_DWORD *)v21; v19 = v39; a4 = *(_DWORD *)(v21 + 4); v20 = 0; } v22 = (unsigned __int8 *)v38; if ( v40 < 0x10 ) v22 = (unsigned __int8 *)&v38; v23 = sub_446400(v8, (int)&v30, a3, a4, v22, v19); v24 = *(_DWORD *)v23; v25 = *(_DWORD *)(v23 + 4); *(_DWORD *)(a5 + 32) = 0; *(_DWORD *)(a5 + 36) = 0; v26 = v33; sub_446470(v8, v33, v24, v25, v35, v20); if ( v40 >= 0x10 ) operator delete(v38); return v26; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (00447790) -------------------------------------------------------- int __thiscall sub_447790(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7) { int v7; // esi@1 int v8; // eax@1 int v9; // eax@1 char DstBuf; // [sp+Ch] [bp-4Ch]@1 char v12; // [sp+4Ch] [bp-Ch]@1 unsigned int v13; // [sp+54h] [bp-4h]@1 int v14; // [sp+58h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v7 = this; v8 = sub_446370(this, (int)&v12, (int)&unk_4B98EC, *(_DWORD *)(a5 + 20)); v9 = sprintf_s(&DstBuf, 0x40u, (const char *)v8, a7); sub_447280(v7, a2, a3, a4, a5, a6, &DstBuf, v9); return a2; } // 4DE38C: using guessed type int __security_cookie; //----- (00447810) -------------------------------------------------------- int __thiscall sub_447810(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7) { int v7; // esi@1 int v8; // eax@1 int v9; // eax@1 char DstBuf; // [sp+Ch] [bp-4Ch]@1 char v12; // [sp+4Ch] [bp-Ch]@1 unsigned int v13; // [sp+54h] [bp-4h]@1 int v14; // [sp+58h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v7 = this; v8 = sub_446370(this, (int)&v12, (int)&unk_4B98F0, *(_DWORD *)(a5 + 20)); v9 = sprintf_s(&DstBuf, 0x40u, (const char *)v8, a7); sub_447280(v7, a2, a3, a4, a5, a6, &DstBuf, v9); return a2; } // 4DE38C: using guessed type int __security_cookie; //----- (00447890) -------------------------------------------------------- int __thiscall sub_447890(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, int a8) { int v8; // esi@1 int v9; // eax@1 int v10; // eax@1 char DstBuf; // [sp+Ch] [bp-4Ch]@1 char v13; // [sp+4Ch] [bp-Ch]@1 unsigned int v14; // [sp+54h] [bp-4h]@1 int v15; // [sp+58h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v8 = this; v9 = sub_446370(this, (int)&v13, (int)&unk_4B98F4, *(_DWORD *)(a5 + 20)); v10 = sprintf_s(&DstBuf, 0x40u, (const char *)v9, a7, a8); sub_447280(v8, a2, a3, a4, a5, a6, &DstBuf, v10); return a2; } // 4DE38C: using guessed type int __security_cookie; //----- (00447910) -------------------------------------------------------- int __thiscall sub_447910(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, int a8) { int v8; // esi@1 int v9; // eax@1 int v10; // eax@1 char DstBuf; // [sp+Ch] [bp-4Ch]@1 char v13; // [sp+4Ch] [bp-Ch]@1 unsigned int v14; // [sp+54h] [bp-4h]@1 int v15; // [sp+58h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v8 = this; v9 = sub_446370(this, (int)&v13, (int)&unk_4B98F8, *(_DWORD *)(a5 + 20)); v10 = sprintf_s(&DstBuf, 0x40u, (const char *)v9, a7, a8); sub_447280(v8, a2, a3, a4, a5, a6, &DstBuf, v10); return a2; } // 4DE38C: using guessed type int __security_cookie; //----- (00447990) -------------------------------------------------------- int __thiscall sub_447990(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, unsigned __int64 a7) { signed int v7; // esi@1 unsigned int v8; // eax@1 size_t v9; // edi@1 unsigned __int64 v10; // st7@11 int v11; // ecx@11 size_t v12; // esi@11 int v13; // edx@11 unsigned __int64 v14; // st7@14 unsigned __int64 v15; // st6@14 double v16; // st5@16 double v17; // st4@16 double v18; // st5@17 double v19; // qt2@18 double v20; // qtt@20 double v21; // st4@20 double v22; // qt0@21 unsigned __int64 v23; // st5@21 double v24; // st7@21 double v25; // st5@25 double v26; // qt1@26 unsigned __int8 v27; // cf@29 double v28; // qt2@29 unsigned __int64 v29; // st5@29 double v30; // st6@29 double v31; // st5@29 char *v32; // eax@35 int v33; // edx@39 int v34; // ecx@40 int v35; // eax@45 int v37; // [sp+14h] [bp-8Ch]@1 signed int v38; // [sp+1Ch] [bp-84h]@9 size_t v39; // [sp+20h] [bp-80h]@11 char v40; // [sp+27h] [bp-79h]@14 char DstBuf; // [sp+28h] [bp-78h]@45 char Format; // [sp+94h] [bp-Ch]@35 char v43; // [sp+95h] [bp-Bh]@35 char v44; // [sp+96h] [bp-Ah]@36 unsigned int v45; // [sp+9Ch] [bp-4h]@1 int v46; // [sp+A0h] [bp+0h]@1 v45 = (unsigned int)&v46 ^ __security_cookie; v7 = *(_DWORD *)(a5 + 24); v8 = *(_DWORD *)(a5 + 28); v9 = 0; v37 = (int)this; if ( (signed int)v8 <= 0 && ((v8 & 0x80000000u) != 0 || (unsigned int)v7 <= 0) && !(*(_DWORD *)(a5 + 20) & 0x2000) ) { v7 = 6; v8 = 0; } if ( (v8 & 0x80000000u) != 0 || (signed int)v8 <= 0 && (unsigned int)v7 <= 0x24 ) v38 = v7; else v38 = 36; v10 = a7; v11 = (__PAIR__(v8, v7) - v38) >> 32; v12 = v7 - v38; v13 = *(_DWORD *)(a5 + 20); v39 = 0; if ( (*(_DWORD *)(a5 + 20) & 0x3000) == 8192 && *(double *)&a7 != 0.5 * *(double *)&a7 ) { if ( *(double *)&a7 >= 0.0 ) { v40 = 0; v15 = a7; *(double *)&v14 = 0.0; } else { *(double *)&v14 = 0.0; v40 = 1; *(double *)&v15 = -*(double *)&a7; } v16 = 1.0e35; v17 = 1.0e10; if ( *(double *)&v15 >= 1.0e35 ) { while ( v39 < 0x1388 ) { *(double *)&v15 = *(double *)&v15 / v17; v39 += 10; v20 = v17; v21 = v16; v18 = v20; if ( v21 > *(double *)&v15 ) goto LABEL_21; v19 = v21; v17 = v18; v16 = v19; } } v18 = v17; LABEL_21: v22 = v18; v23 = v14; v24 = v22; if ( *(double *)&v23 < *(double *)&v15 && v11 >= 0 && (v11 > 0 || v12 >= 0xA) ) { v25 = 1.0e-35; while ( v25 >= *(double *)&v15 && v9 < 0x1388 ) { v27 = __CFADD__(v12, -10); v12 -= 10; v28 = v25; v29 = v15; v30 = v28; v11 = v27 + v11 - 1; v31 = *(double *)&v29 * v24; v9 += 10; if ( v11 <= 0 && (v11 < 0 || v12 < 0xA) ) { *(double *)&v15 = v31; break; } v26 = v31; v25 = v30; *(double *)&v15 = v26; } } v10 = v15; if ( v40 ) *(double *)&v10 = -*(double *)&v15; } Format = 37; v32 = &v43; if ( v13 & 0x20 ) { v43 = 43; v32 = &v44; } if ( v13 & 0x10 ) *v32++ = 35; v33 = v13 & 0x3000; *(_WORD *)v32 = 10798; if ( v33 == 8192 ) { LOBYTE(v34) = 102; } else { if ( v33 == 12288 ) { LOBYTE(v34) = 97; } else { LOBYTE(v11) = v33 != 4096; v34 = 2 * v11 + 101; } } v32[2] = v34; v32[3] = 0; v35 = sprintf_s(&DstBuf, 0x6Cu, &Format, v38, v10, v10 >> 32); sub_446D10(v37, a2, a3, a4, a5, a6, &DstBuf, v39, v9, v12, v35); return a2; } // 4DE38C: using guessed type int __security_cookie; //----- (00447BA0) -------------------------------------------------------- int __thiscall sub_447BA0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, unsigned __int64 a7) { signed int v7; // esi@1 unsigned int v8; // eax@1 size_t v9; // edi@1 int v10; // ecx@11 size_t v11; // esi@11 int v12; // edx@11 unsigned __int64 v13; // st6@12 double v14; // st5@14 double v15; // st4@14 double v16; // st5@15 double v17; // qt0@17 double v18; // qt1@19 double v19; // st4@19 double v20; // st7@20 double v21; // st5@24 double v22; // qtt@25 unsigned __int8 v23; // cf@28 double v24; // qt0@28 unsigned __int64 v25; // st5@28 double v26; // st6@28 double v27; // st5@28 unsigned __int64 v28; // st7@32 char *v29; // eax@36 int v30; // edx@40 int v31; // ecx@41 int v32; // eax@45 int v34; // [sp+14h] [bp-8Ch]@1 signed int v35; // [sp+1Ch] [bp-84h]@9 size_t v36; // [sp+20h] [bp-80h]@11 char v37; // [sp+27h] [bp-79h]@13 char DstBuf; // [sp+28h] [bp-78h]@45 char Format; // [sp+94h] [bp-Ch]@36 char v40; // [sp+95h] [bp-Bh]@36 char v41; // [sp+96h] [bp-Ah]@37 unsigned int v42; // [sp+9Ch] [bp-4h]@1 int v43; // [sp+A0h] [bp+0h]@1 v42 = (unsigned int)&v43 ^ __security_cookie; v7 = *(_DWORD *)(a5 + 24); v8 = *(_DWORD *)(a5 + 28); v9 = 0; v34 = (int)this; if ( (signed int)v8 <= 0 && ((v8 & 0x80000000u) != 0 || (unsigned int)v7 <= 0) && !(*(_DWORD *)(a5 + 20) & 0x2000) ) { v7 = 6; v8 = 0; } if ( (v8 & 0x80000000u) != 0 || (signed int)v8 <= 0 && (unsigned int)v7 <= 0x24 ) v35 = v7; else v35 = 36; v10 = (__PAIR__(v8, v7) - v35) >> 32; v11 = v7 - v35; v12 = *(_DWORD *)(a5 + 20); v36 = 0; if ( (*(_DWORD *)(a5 + 20) & 0x3000) == 8192 ) { v13 = a7; if ( *(double *)&a7 >= 0.0 ) { v37 = 0; } else { v37 = 1; *(double *)&v13 = -*(double *)&a7; } v14 = 1.0e35; v15 = 1.0e10; if ( *(double *)&v13 >= 1.0e35 ) { while ( v36 < 0x1388 ) { *(double *)&v13 = *(double *)&v13 / v15; v36 += 10; v18 = v15; v19 = v14; v16 = v18; if ( v19 > *(double *)&v13 ) goto LABEL_20; v17 = v19; v15 = v16; v14 = v17; } } v16 = v15; LABEL_20: v20 = v16; if ( *(double *)&v13 > 0.0 && v10 >= 0 && (v10 > 0 || v11 >= 0xA) ) { v21 = 1.0e-35; while ( v21 >= *(double *)&v13 && v9 < 0x1388 ) { v23 = __CFADD__(v11, -10); v11 -= 10; v24 = v21; v25 = v13; v26 = v24; v10 = v23 + v10 - 1; v27 = *(double *)&v25 * v20; v9 += 10; if ( v10 <= 0 && (v10 < 0 || v11 < 0xA) ) { *(double *)&v13 = v27; break; } v22 = v27; v21 = v26; *(double *)&v13 = v22; } } v28 = v13; if ( v37 ) *(double *)&v28 = -*(double *)&v13; } else { v28 = a7; } Format = 37; v29 = &v40; if ( v12 & 0x20 ) { v40 = 43; v29 = &v41; } if ( v12 & 0x10 ) *v29++ = 35; v30 = v12 & 0x3000; *(_WORD *)v29 = 10798; v29[2] = 76; if ( v30 == 8192 ) { LOBYTE(v31) = 102; } else { if ( v30 == 12288 ) { LOBYTE(v31) = 97; } else { LOBYTE(v10) = v30 != 4096; v31 = 2 * v10 + 101; } } v29[3] = v31; v29[4] = 0; v32 = sprintf_s(&DstBuf, 0x6Cu, &Format, v35, v28, v28 >> 32); sub_446D10(v34, a2, a3, a4, a5, a6, &DstBuf, v36, v9, v11, v32); return a2; } // 4DE38C: using guessed type int __security_cookie; //----- (00447DA0) -------------------------------------------------------- int __thiscall sub_447DA0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7) { int v7; // edi@1 int v8; // eax@1 char DstBuf; // [sp+Ch] [bp-44h]@1 unsigned int v11; // [sp+4Ch] [bp-4h]@1 int v12; // [sp+50h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v7 = (int)this; v8 = sprintf_s(&DstBuf, 0x40u, "%p", a7); sub_447280(v7, a2, a3, a4, a5, a6, &DstBuf, v8); return a2; } // 4DE38C: using guessed type int __security_cookie; //----- (00447E00) -------------------------------------------------------- signed int __thiscall sub_447E00(int this, int a2) { int v2; // edi@1 int v3; // ebx@1 int v4; // esi@1 signed int result; // eax@4 v2 = this; v3 = sub_443D90(this); v4 = 0; if ( v3 <= 0 ) { LABEL_4: result = 0; } else { while ( *(_DWORD *)sub_443DA0(v2, v4) ) { ++v4; if ( v4 >= v3 ) goto LABEL_4; } *(_DWORD *)a2 = sub_443DF0(v2, v4, 0); *(_DWORD *)(a2 + 4) = sub_443DF0(v2, v4, 1); *(_DWORD *)(a2 + 8) = *(_DWORD *)sub_443DF0(v2, v4, 2); *(_DWORD *)(a2 + 12) = *(_DWORD *)sub_443DF0(v2, v4, 3); *(_DWORD *)(a2 + 16) = *(_DWORD *)sub_443DF0(v2, v4, 4); result = 1; } return result; } //----- (00447E90) -------------------------------------------------------- signed int __thiscall sub_447E90(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 v3 = this; if ( *(_DWORD *)sub_443DA0(this, a3) == 3 ) { *(_DWORD *)a2 = sub_443DF0(v3, a3, 0); *(_DWORD *)(a2 + 4) = *(_DWORD *)sub_443DF0(v3, a3, 1); *(_DWORD *)(a2 + 8) = *(_DWORD *)sub_443DF0(v3, a3, 2); *(_DWORD *)(a2 + 12) = *(_DWORD *)sub_443DF0(v3, a3, 3); *(_DWORD *)(a2 + 16) = *(_DWORD *)sub_443DF0(v3, a3, 4); *(_DWORD *)(a2 + 20) = sub_443DF0(v3, a3, 5); *(_DWORD *)(a2 + 24) = *(_DWORD *)sub_443DF0(v3, a3, 6); *(_DWORD *)(a2 + 28) = *(_DWORD *)sub_443DF0(v3, a3, 7); *(_DWORD *)(a2 + 32) = *(_DWORD *)sub_443DF0(v3, a3, 8); result = 1; } else { result = 0; } return result; } //----- (00447F40) -------------------------------------------------------- signed int __thiscall sub_447F40(int this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // ebx@1 int v6; // esi@1 int v7; // ebx@3 int v9; // [sp+14h] [bp-20h]@3 int v10; // [sp+18h] [bp-1Ch]@3 int v11; // [sp+30h] [bp-4h]@1 v4 = this; v5 = sub_443D90(this); v6 = 0; v11 = v5; if ( v5 <= 0 ) return -1; while ( *(_DWORD *)sub_443DA0(v4, v6) != 3 ) { LABEL_7: ++v6; if ( v6 >= v5 ) return -1; } sub_443DF0(v4, v6, 0); v7 = *(_DWORD *)sub_443DF0(v4, v6, 1); v9 = *(_DWORD *)sub_443DF0(v4, v6, 2); v10 = *(_DWORD *)sub_443DF0(v4, v6, 3); sub_443DF0(v4, v6, 4); sub_443DF0(v4, v6, 5); sub_443DF0(v4, v6, 6); sub_443DF0(v4, v6, 7); sub_443DF0(v4, v6, 8); if ( a2 != v7 || a3 != v9 || a4 != v10 ) { v5 = v11; goto LABEL_7; } return v6; } //----- (00448010) -------------------------------------------------------- signed int __thiscall sub_448010(int this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // ebx@1 int v6; // esi@1 int v7; // ebx@3 int v8; // eax@3 int v10; // [sp+Ch] [bp-8h]@3 int v11; // [sp+10h] [bp-4h]@1 v4 = this; v5 = sub_443D90(this); v6 = 0; v11 = v5; if ( v5 <= 0 ) return 0; while ( *(_DWORD *)sub_443DA0(v4, v6) != 4 ) { LABEL_6: ++v6; if ( v6 >= v5 ) return 0; } v7 = *(_DWORD *)sub_443DF0(v4, v6, 1); v8 = *(_DWORD *)sub_443DF0(v4, v6, 2); v10 = v8; if ( v7 != a3 || v8 != a4 ) { v5 = v11; goto LABEL_6; } *(_DWORD *)a2 = sub_443DF0(v4, v6, 0); *(_DWORD *)(a2 + 4) = v7; *(_DWORD *)(a2 + 8) = v10; *(_DWORD *)(a2 + 12) = sub_443DF0(v4, v6, 3); *(_DWORD *)(a2 + 16) = sub_443DF0(v4, v6, 4); return 1; } //----- (004480C0) -------------------------------------------------------- signed int __thiscall sub_4480C0(int this, int a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // eax@1 signed int result; // eax@2 v5 = this; v6 = sub_447F40(this, a3, a4, a5); if ( v6 == -1 ) result = 0; else result = sub_447E90(v5, a2, v6); return result; } //----- (00448100) -------------------------------------------------------- void *__thiscall sub_448100(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_440660(this, a2, 504, 76) ) { sub_44B530(&unk_4DCB00, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 504, 504, v5, v4); sub_44B580(&unk_4DCB00, (int)&v7, 0); loc_44B5D0("BinaryDataBox::bdb_ReadData"); } return v2; } // 4DE38C: using guessed type int __security_cookie; //----- (004481B0) -------------------------------------------------------- int __thiscall sub_4481B0(void *this, const char *a2) { int v2; // esi@1 int v3; // ecx@1 unsigned int v4; // edi@1 unsigned int v5; // ebx@1 int v6; // eax@3 int v7; // eax@5 int i; // eax@8 int v9; // eax@12 int v10; // ebx@15 int v11; // eax@21 int v12; // ecx@23 char *v13; // ecx@23 int v14; // ebx@23 int result; // eax@27 unsigned int v16; // ebx@27 int v17; // [sp+14h] [bp+8h]@18 v2 = (int)this; sub_448100(this, a2); v3 = *(_DWORD *)(v2 + 52); v4 = 0; *(_DWORD *)(v2 + 144) = 0; v5 = 0; if ( *(_DWORD *)(v3 + 40) > 0 ) { do { if ( v5 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ) v6 = sub_43E7B0(v2, v5); else v6 = v2 + 64; v7 = *(_WORD *)v6; if ( *(_DWORD *)(v2 + 144) < v7 ) *(_DWORD *)(v2 + 144) = v7; ++v5; } while ( (signed int)v5 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ); } ++*(_DWORD *)(v2 + 144); *(_DWORD *)(v2 + 140) = operator new(4 * *(_DWORD *)(v2 + 144)); for ( i = 0; i < *(_DWORD *)(v2 + 144); ++i ) *(_DWORD *)(*(_DWORD *)(v2 + 140) + 4 * i) = 0; if ( *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) > 0 ) { do { if ( v4 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ) v9 = sub_43E7B0(v2, v4); else v9 = v2 + 64; *(_DWORD *)(*(_DWORD *)(v2 + 140) + 4 * *(_WORD *)v9) = v9; if ( v4 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ) v10 = sub_43E7B0(v2, v4); else v10 = v2 + 64; if ( v4 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ) v17 = sub_43E7B0(v2, v4); else v17 = v2 + 64; if ( v4 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ) v11 = sub_43E7B0(v2, v4); else v11 = v2 + 64; v12 = dword_4DC00C & (dword_4DC008 + 1); dword_4DC008 = v12; v13 = (char *)&unk_4D4008 + 256 * v12; *(_DWORD *)v13 = *(_DWORD *)(v11 + 2); *((_DWORD *)v13 + 1) = *(_DWORD *)(v11 + 6); *((_DWORD *)v13 + 2) = *(_DWORD *)(v11 + 10); v13[12] = 0; v14 = *(_WORD *)v10; if ( !sub_44B6F0((void *)(v2 + 148), (unsigned __int8 *)v13, *(_WORD *)v17) ) { sub_44B580(&unk_4DCB00, (int)"MobDataBox::ReadData : memory leak for BTree", v14); loc_44B5D0("MapDataBox::mdb_Load"); } ++v4; } while ( (signed int)v4 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ); v4 = 0; } result = 0; *(_DWORD *)(v2 + 1176) = 0; *(_DWORD *)(v2 + 1180) = 0; *(_DWORD *)(v2 + 1184) = 0; *(_DWORD *)(v2 + 1188) = 0; *(_DWORD *)(v2 + 1192) = 0; *(_DWORD *)(v2 + 1196) = 0; *(_DWORD *)(v2 + 1200) = 0; *(_DWORD *)(v2 + 1204) = 0; *(_DWORD *)(v2 + 1208) = 0; *(_DWORD *)(v2 + 1212) = 0; *(_DWORD *)(v2 + 1216) = 0; *(_DWORD *)(v2 + 1220) = 0; *(_DWORD *)(v2 + 1224) = 0; *(_DWORD *)(v2 + 1228) = 0; *(_DWORD *)(v2 + 1232) = 0; *(_DWORD *)(v2 + 1236) = 0; *(_DWORD *)(v2 + 1240) = 0; *(_DWORD *)(v2 + 1244) = 0; *(_DWORD *)(v2 + 1248) = 0; *(_DWORD *)(v2 + 1252) = 0; *(_DWORD *)(v2 + 1256) = 0; *(_DWORD *)(v2 + 1260) = 0; *(_DWORD *)(v2 + 1264) = 0; *(_DWORD *)(v2 + 1268) = 0; *(_DWORD *)(v2 + 1272) = 0; *(_DWORD *)(v2 + 1276) = 0; *(_DWORD *)(v2 + 1280) = 0; *(_DWORD *)(v2 + 1284) = 0; *(_DWORD *)(v2 + 1288) = 0; *(_DWORD *)(v2 + 1292) = 0; *(_DWORD *)(v2 + 1296) = 0; *(_DWORD *)(v2 + 1300) = 0; *(_DWORD *)(v2 + 1304) = 0; v16 = 0; if ( *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) > (signed int)v4 ) { do { if ( v16 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ) result = sub_43E7B0(v2, v16); else result = v2 + 64; *(_DWORD *)(v2 + 4 * *(_DWORD *)(result + 46) + 1176) = result; ++v16; } while ( (signed int)v16 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ); } *(_DWORD *)(v2 + 1176) = v4; return result; } // 4DC008: using guessed type int dword_4DC008; // 4DC00C: using guessed type int dword_4DC00C; //----- (00448460) -------------------------------------------------------- void *__thiscall sub_448460(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B99CC; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B99CC: using guessed type int (__thiscall *off_4B99CC)(void *, char); //----- (00448490) -------------------------------------------------------- int __thiscall sub_448490(int this) { int v1; // esi@1 v1 = this; sub_44ECF0(this); *(_DWORD *)v1 = &off_4B99CC; *(_DWORD *)(v1 + 74) = 0; *(_DWORD *)(v1 + 70) = 0; *(_DWORD *)(v1 + 66) = 0; *(_DWORD *)(v1 + 131) = 0; *(_DWORD *)(v1 + 127) = 0; *(_DWORD *)(v1 + 123) = 0; memset((void *)(v1 + 64), 0, 0x4Cu); sub_44B6A0(v1 + 148); *(_DWORD *)(v1 + 140) = 0; *(_DWORD *)(v1 + 144) = 0; return v1; } // 4B99CC: using guessed type int (__thiscall *off_4B99CC)(void *, char); //----- (00448520) -------------------------------------------------------- void __thiscall sub_448520(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 140); if ( v2 ) operator delete(v2); sub_44B6C0((void *)(v1 + 148)); *(_DWORD *)v1 = &off_4B99CC; sub_44ED10(v1); } // 4B99CC: using guessed type int (__thiscall *off_4B99CC)(void *, char); //----- (004485A0) -------------------------------------------------------- char __thiscall sub_4485A0(void *this, const char *a2) { void *v2; // esi@1 FILE *v3; // eax@1 char result; // al@2 v2 = this; v3 = fopen(a2, "rb"); if ( v3 ) { fclose(v3); sub_4481B0(v2, a2); result = 1; } else { result = 0; } return result; } //----- (004485E0) -------------------------------------------------------- int __thiscall sub_4485E0(void *this, signed int a2) { int result; // eax@2 if ( a2 < 11 ) result = (int)((char *)this + 10 * a2 + 872); else result = 0; return result; } //----- (00448660) -------------------------------------------------------- void *__thiscall sub_448660(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B99E0; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B99E0: using guessed type int (__thiscall *off_4B99E0)(void *, char); //----- (00448690) -------------------------------------------------------- void *__thiscall sub_448690(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B99E8; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B99E8: using guessed type int (__thiscall *off_4B99E8)(void *, char); //----- (004486C0) -------------------------------------------------------- void *__thiscall sub_4486C0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B99F0; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B99F0: using guessed type int (__thiscall *off_4B99F0)(void *, char); //----- (004486F0) -------------------------------------------------------- void *__thiscall sub_4486F0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B99F8; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B99F8: using guessed type int (__thiscall *off_4B99F8)(void *, char); //----- (00448720) -------------------------------------------------------- void *__thiscall sub_448720(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B9A00; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B9A00: using guessed type int (__thiscall *off_4B9A00)(void *, char); //----- (00448750) -------------------------------------------------------- void *__thiscall sub_448750(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B9A08; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B9A08: using guessed type int (__thiscall *off_4B9A08)(void *, char); //----- (00448780) -------------------------------------------------------- void *__thiscall sub_448780(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B9A10; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B9A10: using guessed type int (__thiscall *off_4B9A10)(void *, char); //----- (004487B0) -------------------------------------------------------- int __thiscall sub_4487B0(int this) { int v1; // edi@1 v1 = this; sub_44ECF0(this); *(_DWORD *)v1 = &off_4B99E0; memset((void *)(v1 + 64), 0, 0x17Au); sub_44ECF0(v1 + 444); *(_DWORD *)(v1 + 444) = &off_4B99E8; memset((void *)(v1 + 508), 0, 0xDEu); sub_44ECF0(v1 + 732); *(_DWORD *)(v1 + 732) = &off_4B99F0; memset((void *)(v1 + 796), 0, 0x3Eu); sub_44ECF0(v1 + 860); *(_DWORD *)(v1 + 860) = &off_4B99F8; *(_DWORD *)(v1 + 924) = 0; sub_44ECF0(v1 + 928); *(_DWORD *)(v1 + 928) = &off_4B9A00; *(_DWORD *)(v1 + 992) = 0; *(_DWORD *)(v1 + 996) = 0; *(_DWORD *)(v1 + 1000) = 0; *(_DWORD *)(v1 + 1004) = 0; *(_DWORD *)(v1 + 1008) = 0; *(_DWORD *)(v1 + 1012) = 0; *(_DWORD *)(v1 + 1016) = 0; *(_DWORD *)(v1 + 1020) = 0; sub_44ECF0(v1 + 1024); *(_DWORD *)(v1 + 1024) = &off_4B9A08; *(_DWORD *)(v1 + 1088) = 0; *(_DWORD *)(v1 + 1092) = 0; *(_DWORD *)(v1 + 1096) = 0; *(_DWORD *)(v1 + 1100) = 0; *(_DWORD *)(v1 + 1104) = 0; *(_DWORD *)(v1 + 1108) = 0; *(_DWORD *)(v1 + 1112) = 0; *(_DWORD *)(v1 + 1116) = 0; *(_DWORD *)(v1 + 1120) = 0; sub_44ECF0(v1 + 1124); *(_DWORD *)(v1 + 1124) = &off_4B9A10; memset((void *)(v1 + 1188), 0, 0x42u); return v1; } // 4B99E0: using guessed type int (__thiscall *off_4B99E0)(void *, char); // 4B99E8: using guessed type int (__thiscall *off_4B99E8)(void *, char); // 4B99F0: using guessed type int (__thiscall *off_4B99F0)(void *, char); // 4B99F8: using guessed type int (__thiscall *off_4B99F8)(void *, char); // 4B9A00: using guessed type int (__thiscall *off_4B9A00)(void *, char); // 4B9A08: using guessed type int (__thiscall *off_4B9A08)(void *, char); // 4B9A10: using guessed type int (__thiscall *off_4B9A10)(void *, char); //----- (00448950) -------------------------------------------------------- void __thiscall sub_448950(void *this) { int v1; // esi@1 int v2; // ecx@1 v1 = (int)this; v2 = (int)((char *)this + 1124); *(_DWORD *)v2 = &off_4B9A10; sub_44ED10(v2); *(_DWORD *)(v1 + 1024) = &off_4B9A08; sub_44ED10(v1 + 1024); *(_DWORD *)(v1 + 928) = &off_4B9A00; sub_44ED10(v1 + 928); *(_DWORD *)(v1 + 860) = &off_4B99F8; sub_44ED10(v1 + 860); *(_DWORD *)(v1 + 732) = &off_4B99F0; sub_44ED10(v1 + 732); *(_DWORD *)(v1 + 444) = &off_4B99E8; sub_44ED10(v1 + 444); *(_DWORD *)v1 = &off_4B99E0; sub_44ED10(v1); } // 4B99E0: using guessed type int (__thiscall *off_4B99E0)(void *, char); // 4B99E8: using guessed type int (__thiscall *off_4B99E8)(void *, char); // 4B99F0: using guessed type int (__thiscall *off_4B99F0)(void *, char); // 4B99F8: using guessed type int (__thiscall *off_4B99F8)(void *, char); // 4B9A00: using guessed type int (__thiscall *off_4B9A00)(void *, char); // 4B9A08: using guessed type int (__thiscall *off_4B9A08)(void *, char); // 4B9A10: using guessed type int (__thiscall *off_4B9A10)(void *, char); //----- (00448A20) -------------------------------------------------------- char __thiscall sub_448A20(int this, const char *a2) { int v2; // esi@1 char result; // al@2 int v4; // edx@3 unsigned int v5; // ebx@3 int v6; // eax@5 int v7; // eax@9 void *v8; // eax@13 int v9; // eax@15 unsigned int v10; // ebx@15 unsigned int v11; // ecx@17 int v12; // eax@18 int v13; // eax@22 int v14; // ecx@24 int v15; // eax@25 unsigned int v16; // ebx@28 int v17; // eax@30 int v18; // eax@33 int v19; // [sp+10h] [bp+8h]@24 int v20; // [sp+10h] [bp+8h]@32 v2 = this; if ( sub_440660((void *)(this + 1036), a2, 19303, 378) ) { v4 = *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40); v5 = 0; *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = 0; if ( v4 ) { do { if ( v5 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v6 = sub_43E7B0(v2 + 1036, v5); else v6 = v2 + 1100; if ( *(_DWORD *)(v2 + 4) < (unsigned int)*(_WORD *)v6 ) { if ( v5 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v7 = sub_43E7B0(v2 + 1036, v5); else v7 = v2 + 1100; *(_DWORD *)(v2 + 4) = *(_WORD *)v7; } ++v5; } while ( v5 < *(_DWORD *)v2 ); } v8 = *(void **)(v2 + 2292); ++*(_DWORD *)(v2 + 4); if ( v8 ) { sub_48DB99(v8); *(_DWORD *)(v2 + 2292) = 0; } v9 = unknown_libname_17(40 * *(_DWORD *)(v2 + 4) | -((unsigned __int8)(40 * (unsigned __int64)*(_DWORD *)(v2 + 4) >> 32) != 0)); v10 = 0; *(_DWORD *)(v2 + 2292) = v9; if ( v9 ) { v11 = 0; if ( *(_DWORD *)(v2 + 4) > 0u ) { v12 = 0; do { *(_DWORD *)(v12 + *(_DWORD *)(v2 + 2292)) = v10; *(_DWORD *)(v12 + *(_DWORD *)(v2 + 2292) + 4) = v10; *(_DWORD *)(v12 + *(_DWORD *)(v2 + 2292) + 8) = v10; *(_WORD *)(v12 + *(_DWORD *)(v2 + 2292) + 16) = -1; v10 = 0; *(_DWORD *)(v12 + *(_DWORD *)(v2 + 2292) + 24) = 0; *(_BYTE *)(v12 + *(_DWORD *)(v2 + 2292) + 28) = -1; ++v11; v12 += 40; } while ( v11 < *(_DWORD *)(v2 + 4) ); } if ( *(_DWORD *)v2 ) { do { if ( v10 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v13 = sub_43E7B0(v2 + 1036, v10); else v13 = v2 + 1100; v14 = *(_WORD *)v13; v19 = *(_WORD *)v13; if ( v10 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) { v15 = sub_43E7B0(v2 + 1036, v10); v14 = v19; } else { v15 = v2 + 1100; } ++v10; *(_DWORD *)(*(_DWORD *)(v2 + 2292) + 40 * v14) = v15; } while ( v10 < *(_DWORD *)v2 ); } v16 = 0; if ( *(_DWORD *)v2 ) { do { if ( v16 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v17 = sub_43E7B0(v2 + 1036, v16); else v17 = v2 + 1100; v20 = *(_WORD *)v17; if ( v16 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v18 = sub_43E7B0(v2 + 1036, v16); else v18 = v2 + 1100; sub_44B6F0((void *)(v2 + 8), (unsigned __int8 *)(v18 + 2), v20); ++v16; } while ( v16 < *(_DWORD *)v2 ); } result = 1; } else { result = 0; } } else { result = 0; } return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00448C30) -------------------------------------------------------- void __thiscall sub_448C30(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 2292); if ( v2 ) { operator delete(v2); *(_DWORD *)(v1 + 2292) = 0; } sub_448950((void *)(v1 + 1036)); sub_44B6C0((void *)(v1 + 8)); } //----- (00448CB0) -------------------------------------------------------- void *__thiscall sub_448CB0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B99D4; sub_4A62E0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B99D4: using guessed type int (__thiscall *off_4B99D4)(void *, char); //----- (00448CE0) -------------------------------------------------------- char __thiscall sub_448CE0(void *this, const char *a2) { int v2; // esi@1 FILE *v3; // eax@1 char result; // al@2 v2 = (int)this; v3 = fopen(a2, "rb"); if ( v3 ) { fclose(v3); result = sub_448A20(v2, a2); } else { result = 0; } return result; } //----- (00448D20) -------------------------------------------------------- int __thiscall sub_448D20(void *this, const char *a2, char a3) { int v3; // esi@1 const char *v4; // edi@1 FILE *v5; // eax@5 v3 = (int)this; sub_44B6A0((int)((char *)this + 8)); sub_4487B0(v3 + 1036); v4 = a2; *(_DWORD *)(v3 + 2292) = 0; *(_DWORD *)(v3 + 4) = 0; if ( a2 != (const char *)-1 ) { if ( !a2 ) v4 = "../9Data/Shine/ItemInfo.shn"; if ( !a3 ) goto LABEL_7; v5 = fopen(v4, "rb"); if ( v5 ) { fclose(v5); LABEL_7: sub_448A20(v3, v4); return v3; } } return v3; } //----- (00448DD0) -------------------------------------------------------- int __stdcall sub_448DD0(int a1) { bool v1; // zf@1 __int32 v2; // ecx@2 SOCKET v3; // edx@2 int result; // eax@6 SOCKET v5; // edi@8 DWORD v6; // [sp-8h] [bp-130h]@4 struct timeval timeout; // [sp+4h] [bp-124h]@2 int addrlen; // [sp+Ch] [bp-11Ch]@2 fd_set readfds; // [sp+10h] [bp-118h]@2 struct sockaddr addr; // [sp+114h] [bp-14h]@8 unsigned int v11; // [sp+124h] [bp-4h]@1 int v12; // [sp+128h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v1 = *(_DWORD *)(a1 + 37496) == 0; *(_DWORD *)(a1 + 37492) = 1; if ( v1 ) { do { v2 = *(_DWORD *)(a1 + 37504); v3 = *(_DWORD *)a1; timeout.tv_sec = *(_DWORD *)(a1 + 37500); timeout.tv_usec = v2; addrlen = 16; readfds.fd_array[0] = v3; readfds.fd_count = 1; if ( select(0, &readfds, 0, 0, &timeout) == -1 ) { sub_446350(1, "Msg", "%s", "*Listen Socket Error!*"); } else { if ( _WSAFDIsSet(*(_DWORD *)a1, &readfds) ) { v5 = accept(*(_DWORD *)a1, &addr, &addrlen); if ( v5 != -1 ) { if ( !(*(int (__stdcall **)(SOCKET, struct sockaddr *))**(int (__stdcall ****)(_DWORD, _DWORD))(a1 + 37484))( v5, &addr) ) { sub_446350(1, "Msg", "%s", "*Accept_Process Error!*"); closesocket(v5); } v6 = 1; goto LABEL_5; } } } v6 = 10; LABEL_5: Sleep(v6); } while ( !*(_DWORD *)(a1 + 37496) ); } result = 0; *(_DWORD *)(a1 + 37492) = 0; return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00448F10) -------------------------------------------------------- int __thiscall sub_448F10(int this) { int v1; // esi@1 v1 = this; sub_44ECE0((void *)(this + 37484)); *(_DWORD *)v1 = -1; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 37492) = 0; *(_DWORD *)(v1 + 37496) = 0; *(_DWORD *)(v1 + 37500) = 0; *(_DWORD *)(v1 + 37504) = 0; *(_DWORD *)(v1 + 37508) = 0; *(_DWORD *)(v1 + 37512) = 0; *(_DWORD *)(v1 + 1020) = 0; *(_DWORD *)(v1 + 37448) = 0; *(_DWORD *)(v1 + 37452) = 0; *(_DWORD *)(v1 + 37456) = 0; InitializeCriticalSection((LPCRITICAL_SECTION)(v1 + 1024)); InitializeCriticalSection((LPCRITICAL_SECTION)(v1 + 37460)); return v1; } //----- (00448F90) -------------------------------------------------------- signed int __thiscall sub_448F90(SOCKET *this) { SOCKET *v1; // esi@1 v1 = this; if ( *this != -1 ) { if ( shutdown(*this, 1) ) GetLastError(); if ( *v1 != -1 ) { if ( closesocket(*v1) ) GetLastError(); else *v1 = -1; } } if ( v1[9373] ) { v1[9374] = 1; do Sleep(5u); while ( v1[9373] ); } return 1; } //----- (00449000) -------------------------------------------------------- signed int __thiscall sub_449000(SOCKET *this, const char *cp, u_short hostshort, int backlog) { SOCKET *v4; // esi@1 SOCKET v5; // eax@12 SOCKET v6; // ST08_4@15 char optval[4]; // [sp+Ch] [bp-20h]@13 int namelen; // [sp+10h] [bp-1Ch]@15 u_long argp; // [sp+14h] [bp-18h]@13 struct sockaddr name; // [sp+18h] [bp-14h]@12 unsigned int v12; // [sp+28h] [bp-4h]@1 int v13; // [sp+2Ch] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v4 = this; if ( *this != -1 ) { if ( shutdown(*this, 1) ) GetLastError(); if ( *v4 != -1 ) { if ( closesocket(*v4) ) GetLastError(); else *v4 = -1; } } if ( v4[9373] ) { v4[9374] = 1; do Sleep(5u); while ( v4[9373] ); } if ( sub_44A6A0(2u, 2u) ) { *(_DWORD *)&name.sa_data[6] = 0; *(_DWORD *)&name.sa_data[10] = 0; name.sa_family = 2; *(_DWORD *)&name.sa_data[2] = inet_addr(cp); *(_WORD *)&name.sa_data[0] = htons(hostshort); v5 = socket(2, 1, 0); *v4 = v5; if ( v5 != -1 ) { argp = 1; *(_DWORD *)optval = 1; setsockopt(v5, 65535, 4, optval, 4); ioctlsocket(*v4, -2147195266, &argp); if ( bind(*v4, &name, 16) != -1 ) { if ( listen(*v4, backlog) != -1 ) { v6 = *v4; namelen = 16; getsockname(v6, (struct sockaddr *)(v4 + 1), &namelen); return 1; } } } WSACleanup(); } return 0; } // 4DE38C: using guessed type int __security_cookie; //----- (00449180) -------------------------------------------------------- signed int __thiscall sub_449180(LPVOID lpParameter) { LPVOID v1; // esi@1 HANDLE v2; // eax@4 signed int result; // eax@7 v1 = lpParameter; if ( *((_DWORD *)lpParameter + 9373) ) { *((_DWORD *)lpParameter + 9374) = 1; do Sleep(5u); while ( *((_DWORD *)v1 + 9373) ); } *((_DWORD *)v1 + 9374) = 0; v2 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sub_448DD0, v1, 0, (LPDWORD)v1 + 9378); *((_DWORD *)v1 + 9377) = v2; if ( v2 ) { while ( *((_DWORD *)v1 + 9373) != 1 ) Sleep(5u); result = 1; } else { result = 0; } return result; } //----- (00449200) -------------------------------------------------------- void __thiscall sub_449200(SOCKET *this) { SOCKET *v1; // esi@1 v1 = this; sub_448F90(this); DeleteCriticalSection((LPCRITICAL_SECTION)(v1 + 256)); DeleteCriticalSection((LPCRITICAL_SECTION)(v1 + 9365)); } //----- (00449230) -------------------------------------------------------- signed int __thiscall sub_449230(SOCKET *lpParameter, const char *cp, int hostshort, int backlog) { void *v4; // edi@1 signed int result; // eax@2 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = lpParameter; if ( sub_449000(lpParameter, cp, hostshort, backlog) && sub_449180(v4) ) { sprintf(&v6, "", cp, hostshort, backlog); sub_446350(1, "Msg", "%s", &v6); result = 1; } else { result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004492D0) -------------------------------------------------------- signed int __thiscall sub_4492D0(SOCKET *lpParameter, int hostshort, int backlog) { SOCKET *v3; // esi@1 char *v4; // eax@2 v3 = lpParameter; if ( !sub_44A6A0(2u, 2u) ) return 0; v4 = sub_44A710(); if ( !v4 ) { sub_446350(1, "Msg", "%s", "ERROR - FAILED TO GET LISTEN SOCKET IP ADDRESS"); return 0; } return sub_449230(v3, v4, hostshort, backlog); } //----- (00449330) -------------------------------------------------------- void __thiscall sub_449330(int this) { if ( *(_DWORD *)(this + 37592) ) EnterCriticalSection((LPCRITICAL_SECTION)(this + 37568)); } //----- (00449350) -------------------------------------------------------- void __thiscall sub_449350(int this) { if ( *(_DWORD *)(this + 37592) ) LeaveCriticalSection((LPCRITICAL_SECTION)(this + 37568)); } //----- (00449370) -------------------------------------------------------- int __thiscall sub_449370(void *this) { void *v1; // edi@1 int v2; // eax@1 int v3; // esi@2 int result; // eax@4 int v5; // ecx@4 v1 = this; v2 = operator new(0xDCu); if ( v2 ) v3 = sub_44BAF0(v2); else v3 = 0; result = operator new(0x10u); *(_DWORD *)result = 0; *(_DWORD *)(result + 4) = 0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 12) = v3; **(_DWORD **)(v3 + 112) = *((_DWORD *)v1 + 9388); v5 = *(_DWORD *)(v3 + 80); *(_DWORD *)(v3 + 116) = result; *(_DWORD *)v5 = *((_DWORD *)v1 + 9388); *(_DWORD *)(v3 + 84) = result; return result; } //----- (00449420) -------------------------------------------------------- signed int __thiscall sub_449420(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // eax@1 char v6; // [sp+Ch] [bp-24h]@1 int v7; // [sp+28h] [bp-8h]@1 void *v8; // [sp+2Ch] [bp-4h]@1 v3 = *(_DWORD *)(a2 + 28); v4 = *(_DWORD *)(v3 + 12); v8 = this; memcpy(&v6, (const void *)a2, 0x20u); v7 = v4; if ( !(**(int (__stdcall ***)(char *, int))(v4 + 4))(&v6, a3) ) (*(void (__stdcall **)(int))(**((_DWORD **)v8 + 1) + 12))(v3); return 1; } //----- (00449480) -------------------------------------------------------- signed int __thiscall sub_449480(int this, SOCKET s, int a3) { if ( !(*(int (__stdcall **)(SOCKET, int))(**(_DWORD **)(this + 4) + 8))(s, a3) ) { shutdown(s, 1); closesocket(s); } return 1; } //----- (004494C0) -------------------------------------------------------- void *__thiscall sub_4494C0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B8734; if ( a2 & 1 ) operator delete(this); return v2; } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); //----- (004494F0) -------------------------------------------------------- signed int __thiscall sub_4494F0(int this) { int v1; // edi@1 int i; // esi@4 v1 = this; if ( *(_DWORD *)(this + 37532) ) { if ( *(_DWORD *)(this + 37592) ) EnterCriticalSection((LPCRITICAL_SECTION)(this + 37568)); for ( i = *(_DWORD *)(v1 + 37536); i; i = *(_DWORD *)(i + 8) ) sub_44B7C0(*(_DWORD *)(i + 12)); if ( *(_DWORD *)(v1 + 37592) ) LeaveCriticalSection((LPCRITICAL_SECTION)(v1 + 37568)); } return 1; } //----- (00449550) -------------------------------------------------------- void __thiscall sub_449550(int this) { int v1; // esi@1 int i; // eax@4 v1 = this; if ( *(_DWORD *)(this + 37532) ) { if ( *(_DWORD *)(this + 37592) ) EnterCriticalSection((LPCRITICAL_SECTION)(this + 37568)); for ( i = *(_DWORD *)(v1 + 37536); i; i = *(_DWORD *)(v1 + 37536) ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v1 + 12))(v1, i); if ( *(_DWORD *)(v1 + 37592) ) LeaveCriticalSection((LPCRITICAL_SECTION)(v1 + 37568)); } } //----- (004495B0) -------------------------------------------------------- void __thiscall sub_4495B0(int this, int a2) { int v2; // esi@1 int v3; // ecx@4 int v4; // ecx@7 int v5; // ecx@10 v2 = this; if ( *(_DWORD *)(this + 37592) ) EnterCriticalSection((LPCRITICAL_SECTION)(this + 37568)); if ( *(_DWORD *)a2 ) { v3 = *(_DWORD *)(a2 + 4); if ( v3 ) *(_DWORD *)(v3 + 8) = *(_DWORD *)(a2 + 8); else *(_DWORD *)(v2 + 37536) = *(_DWORD *)(a2 + 8); v4 = *(_DWORD *)(a2 + 8); if ( v4 ) *(_DWORD *)(v4 + 4) = *(_DWORD *)(a2 + 4); --*(_DWORD *)(v2 + 37532); if ( *(_DWORD *)a2 ) { *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = *(_DWORD *)(v2 + 37540); v5 = *(_DWORD *)(v2 + 37540); if ( v5 ) *(_DWORD *)(v5 + 4) = a2; *(_DWORD *)(v2 + 37540) = a2; *(_DWORD *)a2 = 0; } } if ( *(_DWORD *)(v2 + 37592) ) LeaveCriticalSection((LPCRITICAL_SECTION)(v2 + 37568)); } //----- (00449650) -------------------------------------------------------- void __thiscall sub_449650(int this, int a2) { int v2; // esi@1 int v3; // ecx@4 int v4; // ecx@7 int v5; // ecx@10 v2 = this; if ( *(_DWORD *)(this + 37592) ) EnterCriticalSection((LPCRITICAL_SECTION)(this + 37568)); if ( !*(_DWORD *)a2 ) { v3 = *(_DWORD *)(a2 + 4); if ( v3 ) *(_DWORD *)(v3 + 8) = *(_DWORD *)(a2 + 8); else *(_DWORD *)(v2 + 37540) = *(_DWORD *)(a2 + 8); v4 = *(_DWORD *)(a2 + 8); if ( v4 ) *(_DWORD *)(v4 + 4) = *(_DWORD *)(a2 + 4); if ( !*(_DWORD *)a2 ) { *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = *(_DWORD *)(v2 + 37536); v5 = *(_DWORD *)(v2 + 37536); if ( v5 ) *(_DWORD *)(v5 + 4) = a2; *(_DWORD *)(v2 + 37536) = a2; *(_DWORD *)a2 = 1; ++*(_DWORD *)(v2 + 37532); } } if ( *(_DWORD *)(v2 + 37592) ) LeaveCriticalSection((LPCRITICAL_SECTION)(v2 + 37568)); } //----- (004496F0) -------------------------------------------------------- signed int __thiscall sub_4496F0(int this, int a2) { int v2; // esi@1 v2 = this; if ( *(_DWORD *)(this + 37592) ) EnterCriticalSection((LPCRITICAL_SECTION)(this + 37568)); sub_4495B0(v2, a2); if ( *(_DWORD *)(v2 + 37592) ) LeaveCriticalSection((LPCRITICAL_SECTION)(v2 + 37568)); return 1; } //----- (00449740) -------------------------------------------------------- void *__thiscall sub_449740(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4B9AC8; sub_448F10((int)((char *)this + 12)); *((_DWORD *)v1 + 9386) = &off_4B9AB0; sub_44E8D0((char *)v1 + 37552); *((_DWORD *)v1 + 9390) = &off_4B9AB8; *((_DWORD *)v1 + 9388) = (char *)v1 + 37560; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 2) = 0; *((_DWORD *)v1 + 9382) = 0; *((_DWORD *)v1 + 9383) = 0; *((_DWORD *)v1 + 9384) = 0; *((_DWORD *)v1 + 9385) = 0; *((_DWORD *)v1 + 9398) = 0; *((_DWORD *)v1 + 9391) = v1; *((_DWORD *)v1 + 9387) = v1; *((_DWORD *)v1 + 9374) = (char *)v1 + 37544; return v1; } // 4B9AB0: using guessed type int (__stdcall *off_4B9AB0)(SOCKET s, int); // 4B9AB8: using guessed type int (__stdcall *off_4B9AB8)(int, int); // 4B9AC8: using guessed type int (*off_4B9AC8)(); //----- (00449800) -------------------------------------------------------- void __thiscall sub_449800(int this) { int v1; // esi@1 int v2; // edi@5 int v3; // ebx@5 v1 = this; if ( *(_DWORD *)(this + 37528) ) { if ( *(_DWORD *)(this + 37592) ) EnterCriticalSection((LPCRITICAL_SECTION)(this + 37568)); if ( *(_DWORD *)(v1 + 37540) ) { do { v2 = *(_DWORD *)(v1 + 37540); v3 = *(_DWORD *)(v2 + 8); if ( *(_DWORD *)(v1 + 37592) ) EnterCriticalSection((LPCRITICAL_SECTION)(v1 + 37568)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v1 + 4))(v1, v2); --*(_DWORD *)(v1 + 37528); if ( *(_DWORD *)(v1 + 37592) ) LeaveCriticalSection((LPCRITICAL_SECTION)(v1 + 37568)); *(_DWORD *)(v1 + 37540) = v3; } while ( v3 ); } if ( *(_DWORD *)(v1 + 37592) ) LeaveCriticalSection((LPCRITICAL_SECTION)(v1 + 37568)); } } //----- (004498B0) -------------------------------------------------------- int __thiscall sub_4498B0(int this) { int v1; // esi@1 int v2; // edi@3 int v3; // eax@4 v1 = this; if ( *(_DWORD *)(this + 37592) ) EnterCriticalSection((LPCRITICAL_SECTION)(this + 37568)); v2 = 0; if ( *(_DWORD *)(v1 + 37528) > *(_DWORD *)(v1 + 37532) && (v3 = *(_DWORD *)(v1 + 37540)) != 0 ) { v2 = *(_DWORD *)(v1 + 37540); (*(void (__thiscall **)(int))(*(_DWORD *)(*(_DWORD *)(v3 + 12) + 188) + 44))(*(_DWORD *)(v3 + 12) + 188); sub_449650(v1, v2); dword_4DCA78 = 1; } else { if ( dword_4DCA78 ) { sub_446350(1, "Msg", "%s", "* ACCEPT NO SESSION BUFFER - ERROR *"); dword_4DCA78 = 0; } } if ( *(_DWORD *)(v1 + 37592) ) LeaveCriticalSection((LPCRITICAL_SECTION)(v1 + 37568)); return v2; } // 4DCA78: using guessed type int dword_4DCA78; //----- (00449950) -------------------------------------------------------- int __thiscall sub_449950(int this, int a2, int a3) { int result; // eax@1 int v4; // ecx@2 result = sub_4498B0(this); if ( result ) { *(_DWORD *)(*(_DWORD *)(result + 12) + 8) = a2; v4 = *(_DWORD *)(result + 12); *(_DWORD *)(v4 + 12) = *(_DWORD *)a3; *(_DWORD *)(v4 + 16) = *(_DWORD *)(a3 + 4); *(_DWORD *)(v4 + 20) = *(_DWORD *)(a3 + 8); *(_DWORD *)(v4 + 24) = *(_DWORD *)(a3 + 12); } return result; } //----- (00449990) -------------------------------------------------------- signed int __thiscall sub_449990(int this, int a2, signed int a3, int a4, int a5) { int v5; // esi@1 bool v6; // zf@2 int v7; // eax@12 int v8; // ecx@12 signed int result; // eax@15 v5 = this; if ( a2 ) { v6 = *(_DWORD *)(this + 4) == 0; *(_DWORD *)(this + 8) = a2; if ( v6 ) { InitializeCriticalSection((LPCRITICAL_SECTION)(this + 37568)); *(_DWORD *)(v5 + 37592) = 1; *(_DWORD *)(v5 + 4) = 1; } if ( a3 != *(_DWORD *)(v5 + 37528) ) { sub_449550(v5); sub_449800(v5); } if ( a3 >= 1 ) { if ( a4 ) *(_DWORD *)(v5 + 37552) = a4; if ( a5 ) *(_DWORD *)(v5 + 37496) = a5; *(_DWORD *)(v5 + 37540) = (**(int (__thiscall ***)(_DWORD))v5)(v5); for ( *(_DWORD *)(v5 + 37528) = 1; *(_DWORD *)(v5 + 37528) < a3; ++*(_DWORD *)(v5 + 37528) ) { v7 = (**(int (__thiscall ***)(_DWORD))v5)(v5); *(_DWORD *)v7 = 1; *(_DWORD *)(v7 + 4) = 0; *(_DWORD *)(v7 + 8) = *(_DWORD *)(v5 + 37540); v8 = *(_DWORD *)(v5 + 37540); if ( v8 ) *(_DWORD *)(v8 + 4) = v7; *(_DWORD *)(v5 + 37540) = v7; *(_DWORD *)v7 = 0; } } result = 1; } else { result = 0; } return result; } //----- (00449A70) -------------------------------------------------------- signed int __thiscall sub_449A70(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 4) ) { sub_449550(this); sub_449800(v1); DeleteCriticalSection((LPCRITICAL_SECTION)(v1 + 37568)); *(_DWORD *)(v1 + 37592) = 0; } *(_DWORD *)(v1 + 4) = 0; return 1; } //----- (00449AB0) -------------------------------------------------------- void __thiscall sub_449AB0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4B9AC8; if ( *(_DWORD *)(this + 4) ) { sub_449550(this); sub_449800(v1); DeleteCriticalSection((LPCRITICAL_SECTION)(v1 + 37568)); *(_DWORD *)(v1 + 37592) = 0; } *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 37560) = &off_4B8734; *(_DWORD *)(v1 + 37556) = &off_4B8734; sub_449200((SOCKET *)(v1 + 12)); } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); // 4B9AC8: using guessed type int (*off_4B9AC8)(); //----- (00449B60) -------------------------------------------------------- signed int __thiscall sub_449B60(void *this, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, int a4) { void *v4; // esi@1 int v5; // eax@2 DWORD v6; // eax@4 signed int result; // eax@6 DWORD NumberOfBytesRead; // [sp+10h] [bp-108h]@3 char v9; // [sp+14h] [bp-104h]@2 unsigned int v10; // [sp+114h] [bp-4h]@1 int v11; // [sp+118h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v4 = this; if ( !nNumberOfBytesToRead ) { v5 = *((_DWORD *)this + 2); sprintf( &v9, "ERROR - CSocket_IOCP::Receive, m_Socket(%d), dwNumBytes(%d), IP(%d.%d.%d.%d)", *(_DWORD *)this, 0, (unsigned __int8)*((_DWORD *)this + 2), BYTE1(v5), (unsigned __int8)(*((_DWORD *)this + 2) >> 16), *((_DWORD *)this + 2) >> 24); sub_446350(1, "Msg", "%s", &v9); } if ( ReadFile(*(HANDLE *)v4, lpBuffer, nNumberOfBytesToRead, &NumberOfBytesRead, (LPOVERLAPPED)v4 + 4) || (v6 = GetLastError()) == 0 || v6 == 997 ) { if ( a4 ) *(_DWORD *)a4 = NumberOfBytesRead; result = 1; } else { sprintf( &v9, "CSocket_IOCP::Read, ERROR=%d, m_Socket=%d, pBuffer=%p, dwNumBytes:%d, ReadBytes:%d", v6, *(_DWORD *)v4, lpBuffer, nNumberOfBytesToRead, NumberOfBytesRead); sub_446350(1, "Msg", "%s", &v9); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00449C80) -------------------------------------------------------- signed int __thiscall sub_449C80(SOCKET *this) { int v1; // edi@2 int v2; // esi@3 DWORD v3; // eax@3 signed int result; // eax@5 char v5; // [sp+4h] [bp-104h]@6 unsigned int v6; // [sp+104h] [bp-4h]@1 int v7; // [sp+108h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; if ( *this != -1 && (v1 = shutdown(*this, 1)) != 0 ) { v2 = WSAGetLastError(); v3 = GetLastError(); if ( v2 != 10054 || v3 != 10054 ) { sprintf(&v5, "ERROR - CSocket_IOCP::Shutdown : ret(%d), GetLastError(%d), WsaError(%d)", v1, v3, v2); sub_446350(1, "Msg", "%s", &v5); result = 0; } else { result = 1; } } else { result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00449D40) -------------------------------------------------------- BOOL __thiscall sub_449D40(int this, HANDLE *a2) { return PostQueuedCompletionStatus(*a2, 0, *(_DWORD *)this, (LPOVERLAPPED)(this + 112)); } //----- (00449D60) -------------------------------------------------------- LONG __thiscall sub_449D60(void *this) { void *i; // esi@1 int v2; // ecx@2 LONG result; // eax@2 for ( i = this; *((_DWORD *)i + 43); result = sub_44EF40((void *)v2) ) { v2 = *((_DWORD *)i + 43); *((_DWORD *)i + 43) = *(_DWORD *)(v2 + 8204); *((_DWORD *)i + 42) -= *(_DWORD *)(v2 + 8196); } return result; } //----- (00449DA0) -------------------------------------------------------- signed int __thiscall sub_449DA0(SOCKET *this) { SOCKET *v1; // esi@1 signed int v2; // edi@1 int v3; // ebx@2 int v4; // edi@3 DWORD v5; // eax@3 char v7; // [sp+Ch] [bp-104h]@3 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v1 = this; v2 = 1; if ( *this != -1 ) { v3 = closesocket(*this); if ( v3 ) { v4 = WSAGetLastError(); v5 = GetLastError(); sprintf(&v7, "ERROR - CSocket_IOCP::Close : ret(%d), GetLastError(%d), WsaError(%d)", v3, v5, v4); sub_446350(1, "Msg", "%s", &v7); v2 = 0; } else { *v1 = -1; } } EnterCriticalSection((LPCRITICAL_SECTION)v1 + 6); sub_449D60(v1); v1[42] = 0; v1[43] = 0; LeaveCriticalSection((LPCRITICAL_SECTION)v1 + 6); return v2; } // 4DE38C: using guessed type int __security_cookie; //----- (00449E70) -------------------------------------------------------- void __thiscall sub_449E70(int this, int a2) { int v2; // esi@1 int v3; // ebx@1 int v4; // eax@1 char *v5; // edi@2 u_short v6; // ax@2 char *v7; // ebx@4 u_short v8; // ax@4 int v9; // edi@5 int v10; // eax@5 DWORD v11; // eax@8 DWORD v12; // edi@8 struct _RTL_CRITICAL_SECTION *v13; // [sp-4h] [bp-9Ch]@4 DWORD NumberOfBytesWritten; // [sp+Ch] [bp-8Ch]@6 int v15; // [sp+10h] [bp-88h]@1 char v16; // [sp+14h] [bp-84h]@14 unsigned int v17; // [sp+94h] [bp-4h]@1 int v18; // [sp+98h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v2 = this; v3 = this + 144; v15 = this + 144; EnterCriticalSection((LPCRITICAL_SECTION)(this + 144)); v4 = *(_DWORD *)(v2 + 172); if ( !v4 ) { v5 = inet_ntoa(*(struct in_addr *)(v2 + 8)); v6 = ntohs(*(_WORD *)(v2 + 6)); sub_446310( "m_pFirstBuf = NULL - WriteCallback, IP=%s:%d, SOCKET=%d, dwTransferred=%d, m_nPendingWrite=%d", v5, v6, *(_DWORD *)v2, a2, *(_DWORD *)(v2 + 168)); sub_449D60((void *)v2); LABEL_17: v13 = (struct _RTL_CRITICAL_SECTION *)v3; goto LABEL_18; } if ( a2 == *(_DWORD *)(v4 + 8196) ) { *(_DWORD *)(v2 + 168) -= a2; v9 = v4; v10 = *(_DWORD *)(v4 + 8204); v15 = v9; *(_DWORD *)(v2 + 172) = v10; if ( v10 && !WriteFile( *(HANDLE *)v2, (LPCVOID)(v10 + 4), *(_DWORD *)(v10 + 8196), &NumberOfBytesWritten, (LPOVERLAPPED)(v2 + 48)) && GetLastError() != 997 ) { v11 = GetLastError(); v12 = v11; if ( v11 != 10038 && v11 != 10054 && v11 != 10053 && v11 != 10058 && v11 != 10022 && v11 != 64 ) { sprintf(&v16, "CSocket_IOCP::WriteCallback %#x(%#x) err=%d", *(_DWORD *)v2, *(_DWORD *)v2, v11); sub_446350(1, "Msg", "%s", &v16); } sub_44F010((int)&unk_4DD298, "CSocket_IOCP::Write %#x(%#x) err=%d", *(_DWORD *)v2, *(_DWORD *)v2, v12); sub_449D60((void *)v2); v9 = v15; } sub_44EF40((void *)v9); goto LABEL_17; } v7 = inet_ntoa(*(struct in_addr *)(v2 + 8)); v8 = ntohs(*(_WORD *)(v2 + 6)); sub_446310( "MISSMATCH - WriteCallback, dwTransferred=%d, FirstBFSize=%d, IP=%s:%d, SOCKET=%d, m_nPendingWrite=%d", a2, *(_DWORD *)(*(_DWORD *)(v2 + 172) + 8196), v7, v8, *(_DWORD *)v2, *(_DWORD *)(v2 + 168)); sub_449D60((void *)v2); v13 = (struct _RTL_CRITICAL_SECTION *)v15; LABEL_18: LeaveCriticalSection(v13); } // 4DE38C: using guessed type int __security_cookie; //----- (0044A050) -------------------------------------------------------- int __thiscall sub_44A050(int this) { int v1; // esi@1 int v2; // edi@1 v1 = this; *(_DWORD *)(this + 20) = &off_4B9BF8; v2 = this + 24; sub_44E8D0((void *)(this + 24)); sub_44E8D0((void *)(v1 + 32)); sub_44E8D0((void *)(v1 + 40)); *(_DWORD *)v1 = -1; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 48) = 0; *(_DWORD *)(v1 + 52) = 0; *(_DWORD *)(v1 + 56) = 0; *(_DWORD *)(v1 + 60) = 0; *(_DWORD *)(v1 + 64) = 0; *(_DWORD *)(v1 + 68) = 1; *(_DWORD *)(v1 + 72) = v2; *(_DWORD *)(v1 + 76) = v1; *(_DWORD *)(v1 + 80) = 0; *(_DWORD *)(v1 + 84) = 0; *(_DWORD *)(v1 + 88) = 0; *(_DWORD *)(v1 + 92) = 0; *(_DWORD *)(v1 + 96) = 0; *(_DWORD *)(v1 + 100) = 0; *(_DWORD *)(v1 + 104) = v1 + 32; *(_DWORD *)(v1 + 108) = v1; *(_DWORD *)(v1 + 112) = 0; *(_DWORD *)(v1 + 116) = 0; *(_DWORD *)(v1 + 120) = 0; *(_DWORD *)(v1 + 124) = 0; *(_DWORD *)(v1 + 128) = 0; *(_DWORD *)(v1 + 168) = 0; *(_DWORD *)(v1 + 172) = 0; *(_DWORD *)(v1 + 132) = 2; *(_DWORD *)(v1 + 136) = v1 + 40; *(_DWORD *)(v1 + 140) = v1; InitializeCriticalSection((LPCRITICAL_SECTION)(v1 + 144)); return v1; } // 4B9BF8: using guessed type int (__stdcall *off_4B9BF8)(int, int); //----- (0044A150) -------------------------------------------------------- int (__stdcall **__thiscall sub_44A150(SOCKET *this))(int, int) { SOCKET *v1; // esi@1 int (__stdcall **result)(int, int); // eax@1 v1 = this; sub_449C80(this); sub_449DA0(v1); EnterCriticalSection((LPCRITICAL_SECTION)v1 + 6); sub_449D60(v1); v1[42] = 0; v1[43] = 0; LeaveCriticalSection((LPCRITICAL_SECTION)v1 + 6); DeleteCriticalSection((LPCRITICAL_SECTION)v1 + 6); result = &off_4B8734; v1[11] = (SOCKET)&off_4B8734; v1[9] = (SOCKET)&off_4B8734; v1[7] = (SOCKET)&off_4B8734; v1[5] = (SOCKET)&off_4B8734; return result; } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); //----- (0044A1E0) -------------------------------------------------------- signed int __thiscall sub_44A1E0(SOCKET *this, const char *cp, u_short hostshort, const char *a4, u_short a5) { SOCKET *v5; // esi@1 SOCKET v7; // eax@3 u_short v8; // ax@4 SOCKET v9; // ecx@4 SOCKET v10; // ST00_4@8 int namelen; // [sp+Ch] [bp-28h]@8 struct sockaddr name; // [sp+10h] [bp-24h]@4 int v13; // [sp+20h] [bp-14h]@5 unsigned __int32 v14; // [sp+24h] [bp-10h]@5 int v15; // [sp+28h] [bp-Ch]@5 int v16; // [sp+2Ch] [bp-8h]@5 unsigned int v17; // [sp+30h] [bp-4h]@1 int v18; // [sp+34h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v5 = this; sub_449C80(this); sub_449DA0(v5); if ( !sub_44A6A0(2u, 2u) || (v7 = socket(2, 1, 6), *v5 = v7, v7 == -1) ) return 0; *(_DWORD *)&name.sa_family = 0; *(_DWORD *)&name.sa_data[6] = 0; *(_DWORD *)&name.sa_data[10] = 0; name.sa_family = 2; *(_DWORD *)&name.sa_data[2] = inet_addr(cp); v8 = htons(hostshort); v9 = *v5; *(_WORD *)&name.sa_data[0] = v8; if ( bind(v9, &name, 16) == -1 ) goto LABEL_7; v13 = 0; v14 = 0; v15 = 0; v16 = 0; LOWORD(v13) = 2; v14 = inet_addr(a4); HIWORD(v13) = htons(a5); if ( connect(*v5, (const struct sockaddr *)&v13, 16) ) { WSAGetLastError(); LABEL_7: sub_449DA0(v5); return 0; } v10 = *v5; namelen = 16; getpeername(v10, (struct sockaddr *)(v5 + 1), &namelen); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0044A320) -------------------------------------------------------- signed int __thiscall sub_44A320(void *this, int a2, unsigned int a3) { size_t v3; // ebx@1 void *v4; // edi@1 int v5; // eax@8 int v6; // esi@8 struct _RTL_CRITICAL_SECTION *v7; // ST20_4@10 unsigned int v8; // eax@10 void *v9; // edx@11 int v10; // ecx@13 DWORD v11; // eax@16 DWORD v12; // esi@16 signed int result; // eax@25 int v14; // eax@26 char *v15; // [sp-18h] [bp-438h]@3 struct _RTL_CRITICAL_SECTION *v16; // [sp-4h] [bp-424h]@24 DWORD NumberOfBytesWritten; // [sp+Ch] [bp-414h]@14 void *v18; // [sp+10h] [bp-410h]@1 size_t v19; // [sp+14h] [bp-40Ch]@8 LPCRITICAL_SECTION lpCriticalSection; // [sp+18h] [bp-408h]@7 char v21; // [sp+1Ch] [bp-404h]@32 char v22; // [sp+11Ch] [bp-304h]@33 char v23; // [sp+21Ch] [bp-204h]@34 char v24; // [sp+31Ch] [bp-104h]@3 char v25; // [sp+39Ch] [bp-84h]@22 unsigned int v26; // [sp+41Ch] [bp-4h]@1 int v27; // [sp+420h] [bp+0h]@1 v26 = (unsigned int)&v27 ^ __security_cookie; v3 = a3; v4 = this; v18 = (void *)a2; if ( a3 > 0x2000 ) { if ( *(_BYTE *)a2 ) { sprintf( &v24, "WARNING - CSocket_IOCP::Send, OVERMAX SIZE,TYPE_0, PacketSize=%d, Netcmd=%d,%d", *(_BYTE *)a2, (unsigned int)*(_WORD *)(a2 + 1) >> 10, *(_WORD *)(a2 + 1) & 0x3FF); v15 = &v24; } else { sprintf( &v24, "WARNING - CSocket_IOCP::Send, OVERMAX SIZE,TYPE_1, PacketSize=%d, Netcmd=%d,%d", *(_WORD *)(a2 + 1), (unsigned int)*(_WORD *)(a2 + 3) >> 10, *(_WORD *)(a2 + 3) & 0x3FF); v15 = &v24; } sub_446350(1, "Msg", "%s", v15); } if ( a3 ) { lpCriticalSection = (LPCRITICAL_SECTION)((char *)v4 + 144); while ( 1 ) { v5 = sub_44EE50(); v6 = v5; v19 = 8192; if ( v3 <= 0x2000 ) v19 = v3; memmove((void *)(v5 + 4), v18, v19); v7 = lpCriticalSection; *(_DWORD *)(v6 + 8196) = v19; EnterCriticalSection(v7); v8 = *(_DWORD *)(v6 + 8196); if ( !v8 ) { sprintf(&v21, "CSocket_IOCP::Write dwSize=%d", 0); sub_446350(1, "Msg", "%s", &v21); sub_44EF40((void *)v6); v16 = lpCriticalSection; goto LABEL_25; } v9 = *(void **)v4; if ( *(_DWORD *)v4 == -1 ) break; if ( v8 > 0x2000 ) { sprintf(&v23, "Send IOBuffer Full::dwSize=%d, BUFFER_SIZE=%d", v8, 8192); sub_446350(1, "Msg", "%s", &v23); sub_44EF40((void *)v6); LABEL_24: v16 = lpCriticalSection; goto LABEL_25; } v10 = *((_DWORD *)v4 + 43); *((_DWORD *)v4 + 42) += v8; if ( v10 ) { v14 = *((_DWORD *)v4 + 44); if ( v10 == v14 || (unsigned int)(*(_DWORD *)(v6 + 8196) + *(_DWORD *)(v14 + 8196)) > 0x2000 ) { *(_DWORD *)(v14 + 8204) = v6; *((_DWORD *)v4 + 44) = v6; } else { memmove((void *)(*(_DWORD *)(v14 + 8196) + v14 + 4), (const void *)(v6 + 4), *(_DWORD *)(v6 + 8196)); *(_DWORD *)(*((_DWORD *)v4 + 44) + 8196) += *(_DWORD *)(v6 + 8196); sub_44EF40((void *)v6); } } else { *((_DWORD *)v4 + 44) = v6; *((_DWORD *)v4 + 43) = v6; if ( !WriteFile( v9, (LPCVOID)(v6 + 4), *(_DWORD *)(v6 + 8196), &NumberOfBytesWritten, (LPOVERLAPPED)((char *)v4 + 48)) && GetLastError() != 997 ) { v11 = GetLastError(); v12 = v11; if ( v11 != 10038 && v11 != 10054 && v11 != 10053 && v11 != 10058 && v11 != 10022 ) { if ( v11 != 64 ) { sprintf(&v25, "CSocket_IOCP::Write %#x(%#x) err=%d", *(_DWORD *)v4, *(_DWORD *)v4, v11); sub_446350(1, "Msg", "%s", &v25); } } sub_44F010((int)&unk_4DD298, "CSocket_IOCP::Write %#x(%#x) err=%d", *(_DWORD *)v4, *(_DWORD *)v4, v12); sub_449D60(v4); goto LABEL_24; } } LeaveCriticalSection(lpCriticalSection); v18 = (char *)v18 + v19; a3 -= v19; if ( !a3 ) goto LABEL_35; v3 = a3; } sprintf(&v22, "CSocket_IOCP::Write, INVALID m_Socket=%d", -1); sub_446350(1, "Msg", "%s", &v22); sub_44EF40((void *)v6); v16 = lpCriticalSection; LABEL_25: LeaveCriticalSection(v16); result = 0; } else { LABEL_35: result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0044A6A0) -------------------------------------------------------- signed int __cdecl sub_44A6A0(unsigned __int8 a1, unsigned __int8 a2) { struct WSAData WSAData; // [sp+4h] [bp-194h]@1 unsigned int v4; // [sp+194h] [bp-4h]@1 int v5; // [sp+198h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; if ( WSAStartup(a1 | (unsigned __int16)(a2 << 8), &WSAData) ) return 0; if ( WSAData.wVersion != (a1 | (unsigned __int16)(a2 << 8)) ) { WSACleanup(); return 0; } return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0044A710) -------------------------------------------------------- char *__cdecl sub_44A710() { char *result; // eax@2 struct hostent *v1; // eax@3 char name; // [sp+0h] [bp-204h]@1 unsigned int v3; // [sp+200h] [bp-4h]@1 int v4; // [sp+204h] [bp+0h]@1 v3 = (unsigned int)&v4 ^ __security_cookie; if ( gethostname(&name, 512) || (v1 = gethostbyname(&name)) == 0 ) result = 0; else result = inet_ntoa(**(struct in_addr **)v1->h_addr_list); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0044A780) -------------------------------------------------------- char __stdcall sub_44A780(char a1, int a2, int a3, int a4, char a5, int a6, int a7, int a8, char a9, int a10, int a11, int a12) { SC_HANDLE v12; // esi@1 int v13; // ST1C_4@2 int v14; // ST08_4@2 int v15; // eax@2 SC_HANDLE v16; // eax@2 v12 = OpenSCManagerA(0, 0, 2u); if ( !v12 ) goto LABEL_4; v13 = sub_44ADC0((int)&a9); v14 = sub_44ADC0((int)&a5); v15 = sub_44ADC0((int)&a1); v16 = CreateServiceA(v12, (LPCSTR)v15, (LPCSTR)v14, 0, 0x10u, 3u, 0, (LPCSTR)v13, 0, 0, 0, 0, 0); if ( !v16 ) { CloseServiceHandle(v12); LABEL_4: type_info::_type_info(&a1); type_info::_type_info(&a5); type_info::_type_info(&a9); return 0; } CloseServiceHandle(v16); CloseServiceHandle(v12); type_info::_type_info(&a1); type_info::_type_info(&a5); type_info::_type_info(&a9); return 1; } //----- (0044A880) -------------------------------------------------------- char __stdcall sub_44A880(char a1, int a2, int a3, int a4) { SC_HANDLE v4; // esi@1 char result; // al@2 int v6; // eax@3 SC_HANDLE v7; // edi@3 v4 = OpenSCManagerA(0, 0, 2u); if ( v4 ) { v6 = sub_44ADC0((int)&a1); v7 = OpenServiceA(v4, (LPCSTR)v6, 0x10000u); DeleteService(v7); CloseServiceHandle(v7); CloseServiceHandle(v4); type_info::_type_info(&a1); result = 1; } else { type_info::_type_info(&a1); result = 0; } return result; } //----- (0044A930) -------------------------------------------------------- BOOL __thiscall sub_44A930(int this) { int v1; // esi@1 SERVICE_STATUS_HANDLE v2; // ST00_4@1 SERVICE_STATUS_HANDLE v3; // ST00_4@1 BOOL result; // eax@1 struct _SERVICE_STATUS ServiceStatus; // [sp+Ch] [bp-20h]@1 unsigned int v6; // [sp+28h] [bp-4h]@1 int v7; // [sp+2Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v1 = this; v2 = *(_DWORD *)(this + 28); ServiceStatus.dwServiceType = 16; ServiceStatus.dwControlsAccepted = 5; ServiceStatus.dwWin32ExitCode = 0; ServiceStatus.dwServiceSpecificExitCode = 0; ServiceStatus.dwCurrentState = 3; ServiceStatus.dwCheckPoint = 1; ServiceStatus.dwWaitHint = 5000; SetServiceStatus(v2, &ServiceStatus); (*(void (**)(void))(v1 + 8))(); v3 = *(_DWORD *)(v1 + 28); ServiceStatus.dwCurrentState = 1; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwWaitHint = 0; result = SetServiceStatus(v3, &ServiceStatus); if ( *(_DWORD *)(v1 + 32) == -1 ) { result = CloseHandle((HANDLE)0xFFFFFFFF); *(_DWORD *)(v1 + 32) = -1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0044A9C0) -------------------------------------------------------- signed int __thiscall sub_44A9C0(void *this, int a2, LPCSTR lpMachineName, LPCSTR lpServiceName) { void *v4; // ebx@1 SC_HANDLE v5; // eax@1 void *v6; // esi@1 signed int result; // eax@2 SC_HANDLE v8; // eax@3 void *v9; // edi@3 v4 = this; v5 = OpenSCManagerA(lpMachineName, 0, 0x80000000u); v6 = v5; if ( v5 ) { v8 = OpenServiceA(v5, lpServiceName, 4u); v9 = v8; if ( v8 ) { if ( QueryServiceStatus(v8, (LPSERVICE_STATUS)((char *)v4 + 40)) ) { CloseServiceHandle(v9); CloseServiceHandle(v6); *(_DWORD *)a2 = *((_DWORD *)v4 + 11); result = 1; } else { *(_DWORD *)a2 = GetLastError(); CloseServiceHandle(v9); CloseServiceHandle(v6); result = 0; } } else { *(_DWORD *)a2 = GetLastError(); CloseServiceHandle(v6); result = 0; } } else { *(_DWORD *)a2 = GetLastError(); result = 0; } return result; } //----- (0044AA70) -------------------------------------------------------- void *__thiscall sub_44AA70(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4B9E8C; sub_44AE80((int)((char *)this + 12)); *((_DWORD *)v1 + 8) = -1; return v1; } // 4B9E8C: using guessed type int (*off_4B9E8C)(); //----- (0044AA90) -------------------------------------------------------- void *__thiscall sub_44AA90(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4B9E8C; type_info::_type_info((char *)this + 12); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B9E8C: using guessed type int (*off_4B9E8C)(); //----- (0044AAC0) -------------------------------------------------------- BOOL __stdcall HandlerProc(int a1) { int v1; // eax@1 *(_DWORD *)(sub_401EA0() + 36) = a1; v1 = sub_401EA0(); return SetEvent(*(HANDLE *)(v1 + 32)); } //----- (0044AAF0) -------------------------------------------------------- char __thiscall sub_44AAF0(int this) { int v1; // esi@1 int v2; // eax@1 SERVICE_STATUS_HANDLE v3; // eax@1 int (*v4)(void); // eax@1 char result; // al@2 SERVICE_STATUS_HANDLE v6; // ST08_4@3 struct _SERVICE_STATUS ServiceStatus; // [sp+Ch] [bp-20h]@1 unsigned int v8; // [sp+28h] [bp-4h]@1 int v9; // [sp+2Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v1 = this; *(_DWORD *)(this + 32) = CreateEventA(0, 0, 0, 0); v2 = sub_44ADC0(v1 + 12); v3 = RegisterServiceCtrlHandlerA((LPCSTR)v2, (LPHANDLER_FUNCTION)HandlerProc); *(_DWORD *)(v1 + 28) = v3; ServiceStatus.dwServiceType = 16; ServiceStatus.dwCurrentState = 2; ServiceStatus.dwControlsAccepted = 5; ServiceStatus.dwWin32ExitCode = 0; ServiceStatus.dwServiceSpecificExitCode = 0; ServiceStatus.dwCheckPoint = 1; ServiceStatus.dwWaitHint = 1000; SetServiceStatus(v3, &ServiceStatus); v4 = *(int (**)(void))(v1 + 4); if ( !v4 || (result = v4()) != 0 ) { v6 = *(_DWORD *)(v1 + 28); ServiceStatus.dwCurrentState = 4; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwWaitHint = 0; SetServiceStatus(v6, &ServiceStatus); result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0044ABB0) -------------------------------------------------------- BOOL __stdcall sub_44ABB0(int a1, int a2) { int v2; // eax@1 int v3; // eax@2 int v4; // eax@4 int v5; // esi@4 int v6; // ecx@5 int v7; // eax@9 int v8; // esi@9 int v9; // ecx@10 int v10; // eax@14 v2 = sub_401EA0(); if ( sub_44AAF0(v2) ) { v3 = dword_4DF8E0; while ( 2 ) { if ( !v3 ) { v4 = operator new(0x44u); v5 = v4; if ( v4 ) { *(_DWORD *)v4 = &off_4B9E8C; sub_44AE80(v4 + 12); *(_DWORD *)(v5 + 32) = -1; v6 = v5; } else { v6 = 0; } dword_4DF8E0 = v6; (**(void (***)(void))v6)(); v3 = dword_4DF8E0; } WaitForSingleObject(*(HANDLE *)(v3 + 32), 0xFFFFFFFFu); v3 = dword_4DF8E0; if ( !dword_4DF8E0 ) { v7 = operator new(0x44u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4B9E8C; sub_44AE80(v7 + 12); *(_DWORD *)(v8 + 32) = -1; v9 = v8; } else { v9 = 0; } dword_4DF8E0 = v9; (**(void (***)(void))v9)(); v3 = dword_4DF8E0; } switch ( *(_DWORD *)(v3 + 36) ) { default: continue; case 1: case 5: goto LABEL_14; } } } LABEL_14: v10 = sub_401EA0(); return sub_44A930(v10); } // 4B9E8C: using guessed type int (*off_4B9E8C)(); // 4DF8E0: using guessed type int dword_4DF8E0; //----- (0044ACE0) -------------------------------------------------------- char __thiscall sub_44ACE0(void *this, char a2, int a3, int a4, int a5, int a6, int a7) { void *v7; // esi@1 int v8; // eax@1 int v9; // edx@1 char result; // al@2 SERVICE_TABLE_ENTRYA ServiceStartTable; // [sp+8h] [bp-1Ch]@1 int v12; // [sp+10h] [bp-14h]@1 int v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@1 v7 = this; v14 = 0; sub_44AF40(&a2, (int)&a2); v8 = sub_44ADC0((int)&a2); v9 = a7; ServiceStartTable.lpServiceName = (LPSTR)v8; ServiceStartTable.lpServiceProc = (LPSERVICE_MAIN_FUNCTIONA)sub_44ABB0; v12 = 0; v13 = 0; *((_DWORD *)v7 + 1) = a6; *((_DWORD *)v7 + 2) = v9; if ( StartServiceCtrlDispatcherA(&ServiceStartTable) ) { v14 = -1; type_info::_type_info(&a2); result = 1; } else { GetLastError(); v14 = -1; type_info::_type_info(&a2); result = 0; } return result; } //----- (0044ADC0) -------------------------------------------------------- int __thiscall sub_44ADC0(int this) { return *(_DWORD *)(this + 4); } //----- (0044ADD0) -------------------------------------------------------- unsigned __int8 *__thiscall sub_44ADD0(int this) { return _mbsupr(*(unsigned __int8 **)(this + 4)); } //----- (0044ADE0) -------------------------------------------------------- void *__thiscall sub_44ADE0(void *this, const char *a2) { unsigned int v2; // eax@1 void *v3; // esi@1 int v4; // ecx@1 int v5; // eax@1 void *v6; // eax@3 void *v7; // eax@5 size_t v8; // ST08_4@5 int v9; // edx@6 const char *v10; // ecx@6 const char v11; // al@7 int v12; // eax@8 int v13; // ecx@9 v3 = this; v2 = strlen(a2); v4 = *((_DWORD *)v3 + 3); *((_DWORD *)v3 + 2) = v2; v5 = v2 + 1; if ( v5 > v4 ) { do v4 += 48; while ( v5 > v4 ); v6 = (void *)*((_DWORD *)v3 + 1); *((_DWORD *)v3 + 3) = v4; if ( v6 ) operator delete(v6); v7 = (void *)operator new(*((_DWORD *)v3 + 3)); v8 = *((_DWORD *)v3 + 3); *((_DWORD *)v3 + 1) = v7; memset(v7, 0, v8); } v9 = *((_DWORD *)v3 + 1); v10 = a2; do { v11 = *v10; *(_BYTE *)v9++ = *v10++; } while ( v11 ); v12 = 0; *((_DWORD *)v3 + 2) = 0; if ( *((_DWORD *)v3 + 3) > 0 ) { v13 = *((_DWORD *)v3 + 1); do { if ( !*(_BYTE *)(v13 + v12) ) break; ++*((_DWORD *)v3 + 2); ++v12; } while ( v12 < *((_DWORD *)v3 + 3) ); } return v3; } //----- (0044AE80) -------------------------------------------------------- int __thiscall sub_44AE80(int this) { int v1; // esi@1 size_t v2; // eax@1 void *v3; // eax@3 size_t v4; // ST08_4@3 v1 = this; *(_DWORD *)this = &off_4B9E98; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; v2 = 0; do v2 += 48; while ( (signed int)v2 < 48 ); *(_DWORD *)(this + 12) = v2; v3 = (void *)operator new(v2); v4 = *(_DWORD *)(v1 + 12); *(_DWORD *)(v1 + 4) = v3; memset(v3, 0, v4); return v1; } // 4B9E98: using guessed type int (__thiscall *off_4B9E98)(void *, char); //----- (0044AED0) -------------------------------------------------------- void *__thiscall sub_44AED0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 1); *(_DWORD *)this = &off_4B9E98; if ( v3 ) operator delete(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 4B9E98: using guessed type int (__thiscall *off_4B9E98)(void *, char); //----- (0044AF10) -------------------------------------------------------- int __thiscall sub_44AF10(int this, const char *a2) { int v2; // esi@1 v2 = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)this = &off_4B9E98; sub_44ADE0((void *)this, a2); return v2; } // 4B9E98: using guessed type int (__thiscall *off_4B9E98)(void *, char); //----- (0044AF40) -------------------------------------------------------- void *__thiscall sub_44AF40(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_44ADE0(this, *(const char **)(a2 + 4)); return v2; } //----- (0044AF60) -------------------------------------------------------- bool __cdecl sub_44AF60(int a1, int a2) { return _mbscmp(*(const unsigned __int8 **)(a1 + 4), *(const unsigned __int8 **)(a2 + 4)) == 0; } //----- (0044AF80) -------------------------------------------------------- int __usercall sub_44AF80(int a1, const void *lp) { char *v2; // edi@1 char v3; // al@2 int v4; // eax@3 int v5; // ecx@3 char v6; // dl@4 unsigned int v7; // eax@5 const void *v8; // esi@5 void *v9; // edi@5 char v10; // cl@6 char *v11; // eax@7 char v12; // cl@8 FILE *v13; // esi@9 int v14; // eax@10 int v15; // eax@10 int i; // eax@10 DWORD v17; // eax@14 unsigned int v19; // [sp-10h] [bp-238h]@1 int v20; // [sp+0h] [bp-228h]@1 char v21; // [sp+4h] [bp-224h]@14 char v22; // [sp+107h] [bp-121h]@1 CHAR Filename; // [sp+108h] [bp-120h]@1 unsigned int v24; // [sp+20Ch] [bp-1Ch]@1 unsigned int *v25; // [sp+210h] [bp-18h]@1 int v26; // [sp+218h] [bp-10h]@1 int (__cdecl *v27)(PEXCEPTION_RECORD, PVOID, int); // [sp+21Ch] [bp-Ch]@1 unsigned int v28; // [sp+220h] [bp-8h]@1 int v29; // [sp+224h] [bp-4h]@1 int v30; // [sp+228h] [bp+0h]@1 v27 = _except_handler4; v26 = a1; v28 = __security_cookie ^ (unsigned int)&unk_4D2058; v24 = (unsigned int)&v30 ^ __security_cookie; v19 = (unsigned int)&v30 ^ __security_cookie; v25 = &v19; v20 = (int)lp; v29 = 0; GetModuleFileNameA(0, &Filename, 0x104u); v2 = &v22; do v3 = (v2++)[1]; while ( v3 ); *(_WORD *)v2 = *(_WORD *)" "; v4 = sub_446020(0); v5 = v4; do v6 = *(_BYTE *)v4++; while ( v6 ); v7 = v4 - v5; v8 = (const void *)v5; v9 = &v22; do { v10 = *((_BYTE *)v9 + 1); v9 = (char *)v9 + 1; } while ( v10 ); memcpy(v9, v8, v7); v11 = &v22; do v12 = (v11++)[1]; while ( v12 ); *(_DWORD *)v11 = dword_4B9F24; *((_DWORD *)v11 + 1) = dword_4B9F28; *((_DWORD *)v11 + 2) = dword_4B9F2C; *((_WORD *)v11 + 6) = word_4B9F30; v13 = fopen(&Filename, "w"); if ( v13 ) { sub_44F570(); v15 = sub_44F9D0(v14, lp); fwrite((const void *)v15, strlen((const char *)v15), 1u, v13); fwrite("\n", 1u, 1u, v13); fwrite("--------------------------------------------------------------------------\n", 0x4Bu, 1u, v13); for ( i = sub_44FE20(14, (void *)lp); i; i = sub_44FE80(14, v20) ) { fwrite((const void *)i, strlen((const char *)i), 1u, v13); fwrite("\n", strlen("\n"), 1u, v13); } sub_44F5A0(); fclose(v13); } else { v17 = GetLastError(); sprintf(&v21, "EXCEPTION - Failed to Call Stack file '%s' (error %d)", &Filename, v17, v19); sub_446350(1, "Msg", "%s", &v21); } v29 = -2; return __security_check_cookie((unsigned int)&v30 ^ v24); } // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); // 4B9F24: using guessed type int dword_4B9F24; // 4B9F28: using guessed type int dword_4B9F28; // 4B9F2C: using guessed type int dword_4B9F2C; // 4B9F30: using guessed type __int16 word_4B9F30; // 4DE38C: using guessed type int __security_cookie; //----- (0044B1A0) -------------------------------------------------------- int __stdcall TopLevelExceptionFilter(void *a1) { HMODULE v1; // esi@1 unsigned __int8 *v2; // eax@2 int result; // eax@8 FARPROC v4; // ebx@9 char *v5; // edi@11 char v6; // al@12 int v7; // eax@13 int v8; // ecx@13 char v9; // dl@14 unsigned int v10; // eax@15 const void *v11; // esi@15 void *v12; // edi@15 char v13; // cl@16 char *v14; // eax@17 char v15; // cl@18 __int16 v16; // dx@19 HANDLE v17; // esi@19 DWORD v18; // ST08_4@20 HANDLE v19; // eax@20 DWORD v20; // eax@22 DWORD v21; // eax@23 DWORD v22; // [sp+Ch] [bp-324h]@20 void *v23; // [sp+10h] [bp-320h]@20 int v24; // [sp+14h] [bp-31Ch]@20 int v25; // [sp+18h] [bp-318h]@1 void *lp; // [sp+1Ch] [bp-314h]@1 CHAR LibFileName; // [sp+20h] [bp-310h]@1 char v28; // [sp+124h] [bp-20Ch]@21 char v29; // [sp+227h] [bp-109h]@11 CHAR FileName; // [sp+228h] [bp-108h]@11 unsigned int v31; // [sp+32Ch] [bp-4h]@1 int v32; // [sp+330h] [bp+0h]@1 v31 = (unsigned int)&v32 ^ __security_cookie; v1 = 0; lp = a1; v25 = 0; if ( GetModuleFileNameA(0, &LibFileName, 0x104u) ) { v2 = _mbsrchr((const unsigned __int8 *)&LibFileName, 0x5Cu); if ( v2 ) { *(_DWORD *)(v2 + 1) = *(_DWORD *)::LibFileName; *(_DWORD *)(v2 + 5) = dword_4BA02C; *(_DWORD *)(v2 + 9) = off_4BA030; v1 = LoadLibraryA(&LibFileName); } } sub_44AF80((int)lp, lp); if ( dword_6EC2B8 ) dword_6EC2B8(); if ( v1 || (v1 = LoadLibraryA(::LibFileName)) != 0 ) { v4 = GetProcAddress(v1, "MiniDumpWriteDump"); if ( v4 ) { GetModuleFileNameA(0, &FileName, 0x104u); v5 = &v29; do v6 = (v5++)[1]; while ( v6 ); *(_WORD *)v5 = *(_WORD *)" "; v7 = sub_446020(0); v8 = v7; do v9 = *(_BYTE *)v7++; while ( v9 ); v10 = v7 - v8; v11 = (const void *)v8; v12 = &v29; do { v13 = *((_BYTE *)v12 + 1); v12 = (char *)v12 + 1; } while ( v13 ); memcpy(v12, v11, v10); v14 = &v29; do v15 = (v14++)[1]; while ( v15 ); v16 = word_4B9FCC; *(_DWORD *)v14 = dword_4B9FC8; *((_WORD *)v14 + 2) = v16; v17 = CreateFileA(&FileName, 0x40000000u, 2u, 0, 2u, 0x80u, 0); if ( v17 == (HANDLE)-1 ) { v21 = GetLastError(); sprintf(&v28, "EXCEPTION - Failed to create dump file '%s' (error %d)", &FileName, v21); sub_446350(1, "Msg", "%s", &v28); } else { v22 = GetCurrentThreadId(); v23 = lp; v24 = 0; v18 = GetCurrentProcessId(); v19 = GetCurrentProcess(); if ( ((int (__stdcall *)(HANDLE, DWORD, HANDLE, signed int, DWORD *, _DWORD, _DWORD))v4)( v19, v18, v17, 64, &v22, 0, 0) ) { v25 = 1; sprintf(&v28, "EXCEPTION - Saved dump file to '%s'", &FileName); sub_446350(1, "Msg", "%s", &v28); CloseHandle(v17); } else { v20 = GetLastError(); sprintf(&v28, "EXCEPTION - Failed to save dump file to '%s' (error %d)", &FileName, v20); sub_446350(1, "Msg", "%s", &v28); CloseHandle(v17); } } result = v25; } else { sub_446350(1, "Msg", "%s", "EXCEPTION - DBGHELP.DLL TOO OLD"); result = 0; } } else { sub_446350(1, "Msg", "%s", "EXCEPTION - DBGHELP.DLL NOT FOUND"); result = 0; } return result; } // 4B9FC8: using guessed type int dword_4B9FC8; // 4B9FCC: using guessed type __int16 word_4B9FCC; // 4BA02C: using guessed type int dword_4BA02C; // 4BA030: using guessed type void *off_4BA030; // 4DE38C: using guessed type int __security_cookie; // 6EC2B8: using guessed type int (*dword_6EC2B8)(void); //----- (0044B490) -------------------------------------------------------- void *__thiscall sub_44B490(void *this) { void *v1; // esi@1 v1 = this; SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)TopLevelExceptionFilter); return v1; } //----- (0044B4B0) -------------------------------------------------------- int __thiscall sub_44B4B0(void *this) { void *v1; // edi@1 struct tm *v2; // esi@1 __time32_t Time; // [sp+Ch] [bp-4h]@1 v1 = this; _time32(&Time); v2 = _localtime32(&Time); sprintf((char *)v1 + 2, "%04d%02d%02d", v2->tm_year + 1900, v2->tm_mon + 1, v2->tm_mday); sprintf((char *)v1 + 34, "%02d:%02d:%02d", v2->tm_hour, v2->tm_min, v2->tm_sec); return sprintf((char *)v1 + 66, "Assert%s%02d.txt", (char *)v1 + 2, v2->tm_hour); } //----- (0044B530) -------------------------------------------------------- FILE *__thiscall sub_44B530(void *this, int a2, int a3) { void *v3; // esi@1 FILE *result; // eax@1 FILE *v5; // edi@2 v3 = this; result = (FILE *)sub_44B4B0(this); if ( *(_WORD *)v3 ) { result = fopen((const char *)v3 + 66, "a"); v5 = result; if ( result ) { fprintf(result, "%s : AssertClass::ac_AssertFail : %s[%s]\n", (char *)v3 + 34, a2, a3); result = (FILE *)fclose(v5); } } return result; } //----- (0044B580) -------------------------------------------------------- FILE *__thiscall sub_44B580(void *this, int a2, int a3) { void *v3; // esi@1 FILE *result; // eax@1 FILE *v5; // edi@2 v3 = this; result = (FILE *)sub_44B4B0(this); if ( *(_WORD *)v3 ) { result = fopen((const char *)v3 + 66, "a"); v5 = result; if ( result ) { fprintf(result, "%s : AssertClass::ac_AssertFail : %s[%d]\n", (char *)v3 + 34, a2, a3); result = (FILE *)fclose(v5); } } return result; } //----- (0044B6A0) -------------------------------------------------------- int __thiscall sub_44B6A0(int this) { *(_DWORD *)this = -1; memset((void *)(this + 4), 0, 0x400u); return this; } //----- (0044B6C0) -------------------------------------------------------- void __thiscall sub_44B6C0(void *this) { int v1; // edi@1 signed int v2; // ebx@1 void *v3; // esi@2 v1 = (int)((char *)this + 4); v2 = 256; do { v3 = *(void **)v1; if ( *(_DWORD *)v1 ) { sub_44B6C0(*(_DWORD *)v1); operator delete(v3); } v1 += 4; --v2; } while ( v2 ); } //----- (0044B6F0) -------------------------------------------------------- signed int __thiscall sub_44B6F0(void *this, unsigned __int8 *a2, int a3) { unsigned __int8 *v3; // esi@1 unsigned __int8 v4; // al@1 void *v5; // ebx@1 bool v6; // zf@2 int v7; // eax@2 int v8; // eax@3 int v9; // edx@3 signed int result; // eax@8 v3 = a2; v4 = *a2; v5 = this; if ( *a2 ) { while ( 1 ) { v6 = *((_DWORD *)v5 + v4 + 1) == 0; v7 = (int)((char *)v5 + 4 * v4 + 4); if ( v6 ) { v8 = operator new(0x404u); v9 = v8; if ( v8 ) { *(_DWORD *)v8 = -1; memset((void *)(v8 + 4), 0, 0x400u); } else { v9 = 0; } *((_DWORD *)v5 + *v3 + 1) = v9; v7 = (int)((char *)v5 + 4 * *v3 + 4); if ( !*(_DWORD *)v7 ) break; } v5 = *(void **)v7; v4 = (v3++)[1]; if ( !v4 ) goto LABEL_8; } result = 0; } else { LABEL_8: *(_DWORD *)v5 = a3; result = 1; } return result; } //----- (0044B780) -------------------------------------------------------- signed int __thiscall sub_44B780(void *this, unsigned __int8 *a2) { unsigned __int8 *v2; // edx@1 unsigned __int8 v3; // al@1 bool v4; // zf@2 int v5; // eax@2 signed int result; // eax@4 v2 = a2; v3 = *a2; if ( *a2 ) { while ( 1 ) { v4 = *((_DWORD *)this + v3 + 1) == 0; v5 = (int)((char *)this + 4 * v3 + 4); if ( v4 ) break; this = *(void **)v5; v3 = (v2++)[1]; if ( !v3 ) goto LABEL_4; } result = -1; } else { LABEL_4: result = *(_DWORD *)this; } return result; } //----- (0044B7C0) -------------------------------------------------------- signed int __thiscall sub_44B7C0(int this) { SOCKET *v1; // esi@1 v1 = (SOCKET *)(this + 8); sub_449C80((SOCKET *)(this + 8)); return sub_449DA0(v1); } //----- (0044B7E0) -------------------------------------------------------- signed int __thiscall sub_44B7E0(void *this, int a2) { void *v2; // edi@1 int v3; // ST04_4@1 int v4; // eax@1 v2 = this; sub_44E2D0(a2); sub_44E2F0(a2); v3 = sub_44E2D0(a2); v4 = sub_44E2F0(a2); return sub_44A320((char *)v2 + 8, v4, v3); } //----- (0044B830) -------------------------------------------------------- signed int __thiscall sub_44B830(int this, int a2, unsigned int a3) { return sub_44A320((void *)(this + 8), a2, a3); } //----- (0044B860) -------------------------------------------------------- signed int __thiscall sub_44B860(int this, void *a2) { int v2; // edi@1 int v3; // eax@2 signed int result; // eax@2 int v5; // eax@3 int v6; // eax@4 char v7; // [sp+8h] [bp-104h]@2 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( sub_445BA0(a2, *(HANDLE *)(this + 8), *(_DWORD *)(this + 8)) ) { v5 = sub_44EBD0(v2 + 188); if ( sub_449B60((void *)(v2 + 8), *(LPVOID *)(v2 + 192), v5, 0) ) { result = 1; } else { v6 = sub_445EF0(0, 1); sprintf(&v7, "ERROR - Socket_Register_To_IOCP Step #2, Socket=%d, %s", *(_DWORD *)(v2 + 8), v6); sub_446350(1, "Msg", "%s", &v7); result = 0; } } else { v3 = sub_445EF0(0, 1); sprintf(&v7, "ERROR - Socket_Register_To_IOCP Step #1, Socket=%d, %s", *(_DWORD *)(v2 + 8), v3); sub_446350(1, "Msg", "%s", &v7); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0044B960) -------------------------------------------------------- signed int __stdcall sub_44B960(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int v5; // eax@6 v2 = *(_DWORD *)(a1 + 28); v3 = *(_DWORD *)(a1 + 20); if ( v3 ) { if ( v3 == 1 ) { sub_449E70(v2 + 8, a2); return 1; } return 1; } if ( !a2 || (*(_DWORD *)(v2 + 208) += a2, !(***(int (__stdcall ****)(_DWORD))(v2 + 212))(v2 + 188)) ) { LABEL_8: sub_449C80((SOCKET *)(v2 + 8)); sub_449DA0((SOCKET *)(v2 + 8)); return 0; } v5 = sub_44EBD0(v2 + 188); if ( v5 < 1 ) { sub_446350(1, "Msg", "%s", "ERROR - Socket buffer full, some protocol too large then socket buffer size."); goto LABEL_8; } sub_449B60((void *)(v2 + 8), (LPVOID)(*(_DWORD *)(v2 + 208) + *(_DWORD *)(v2 + 192)), v5, 0); return 1; } //----- (0044BA20) -------------------------------------------------------- signed int __stdcall sub_44BA20(int a1) { while ( (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 12))(a1) ) { (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 24))(a1); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 20))(a1); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 36))(a1); } (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 40))(a1); return 1; } //----- (0044BA70) -------------------------------------------------------- int (__stdcall **__thiscall sub_44BA70(int this))(int, int) { int v1; // esi@1 int (__stdcall **result)(int, int); // eax@1 v1 = this; *(_DWORD *)this = &off_4BA17C; sub_449C80((SOCKET *)(this + 8)); sub_449DA0((SOCKET *)(v1 + 8)); sub_44E8E0(v1 + 188); result = sub_44A150((SOCKET *)(v1 + 8)); *(_DWORD *)(v1 + 4) = &off_4B8734; return result; } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); // 4BA17C: using guessed type int (__thiscall *off_4BA17C)(void *, char); //----- (0044BAF0) -------------------------------------------------------- int __thiscall sub_44BAF0(int this) { int v1; // esi@1 int v2; // edi@1 int v3; // edx@1 v1 = this; v2 = this + 4; *(_DWORD *)this = &off_4BA17C; *(_DWORD *)(this + 4) = &off_4BA164; sub_44A050(this + 8); sub_44EBE0(v1 + 188); *(_DWORD *)(v1 + 216) = &off_4BA174; **(_DWORD **)(v1 + 80) = v2; v3 = *(_DWORD *)(v1 + 112); *(_DWORD *)(v1 + 84) = v1; *(_DWORD *)v3 = v2; *(_DWORD *)(v1 + 212) = v1 + 216; *(_DWORD *)(v1 + 116) = v1; return v1; } // 4BA164: using guessed type int (__stdcall *off_4BA164)(int, int); // 4BA174: using guessed type int (__stdcall *off_4BA174)(int); // 4BA17C: using guessed type int (__thiscall *off_4BA17C)(void *, char); //----- (0044BB80) -------------------------------------------------------- void *__thiscall sub_44BB80(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4BA17C; sub_449C80((SOCKET *)this + 2); sub_449DA0((SOCKET *)v2 + 2); sub_44E8E0((int)((char *)v2 + 188)); sub_44A150((SOCKET *)v2 + 2); *((_DWORD *)v2 + 1) = &off_4B8734; if ( a2 & 1 ) operator delete(v2); return v2; } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); // 4BA17C: using guessed type int (__thiscall *off_4BA17C)(void *, char); //----- (0044BC10) -------------------------------------------------------- int __thiscall sub_44BC10(void *this, __int16 a2, char a3, char a4, char a5) { void *v5; // esi@1 int v6; // edx@1 char v7; // al@1 int v8; // ecx@1 int result; // eax@1 struct _SYSTEMTIME SystemTime; // [sp+4h] [bp-14h]@1 unsigned int v11; // [sp+14h] [bp-4h]@1 int v12; // [sp+18h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v5 = this; GetLocalTime(&SystemTime); v6 = (unsigned __int8)word_6EC2BC; *((_WORD *)v5 + 4) = a2; v7 = SystemTime.wYear; v8 = (*(_DWORD *)v5 & 0xFC000000 | ((a3 & 0xF | 16 * (a4 & 0x1F | 32 * v6)) << 9)) & 0x3FFFFFF | (SystemTime.wSecond << 26); LOBYTE(v6) = LOBYTE(SystemTime.wMonth); *(_DWORD *)v5 = v8; ++word_6EC2BC; result = SystemTime.wMinute & 0x3F | ((SystemTime.wHour & 0x1F | 32 * (SystemTime.wDay & 0x1F | 32 * (v6 & 0xF | 16 * (32 * (a5 & 0x3F) | (v7 - 16) & 0x1F)))) << 6); *((_DWORD *)v5 + 1) = result; return result; } // 4DE38C: using guessed type int __security_cookie; // 6EC2BC: using guessed type __int16 word_6EC2BC; //----- (0044BCD0) -------------------------------------------------------- int __thiscall sub_44BCD0(int this, int a2, __int16 a3, int a4) { *(_DWORD *)a4 = *(_DWORD *)this; *(_DWORD *)(a4 + 4) = *(_DWORD *)(this + 4); *(_WORD *)(a4 + 8) = a3; return (*(int (__stdcall **)(int, int))(*(_DWORD *)a2 + 4))(this + 8, a4 + 10); } //----- (0044BD10) -------------------------------------------------------- int __thiscall sub_44BD10(int this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // eax@1 *(_DWORD *)this = *(_DWORD *)a4; *(_DWORD *)(this + 4) = *(_DWORD *)(a4 + 4); v4 = this + 8; *(_WORD *)(this + 8) = *(_WORD *)(a4 + 8); v5 = sub_44BD50(dword_6EC2C8, *(_WORD *)(a4 + 8)); return (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v5 + 8))(v5, v4, a4 + 10); } //----- (0044BD50) -------------------------------------------------------- void *__thiscall sub_44BD50(void *this, unsigned __int16 a2) { void *v2; // ebx@1 int v3; // ecx@2 int v4; // esi@4 void *result; // eax@6 int v6; // eax@7 v2 = this; if ( a2 >= (unsigned int)dword_6EA3EC || (v3 = dword_6EACDC + 40 * a2) == 0 || !*(_DWORD *)v3 ) return v2; v4 = **(_WORD **)v3; if ( (_WORD)v4 != a2 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v4 + 10000 * a2); return v2; } v6 = *(_DWORD *)(*(_DWORD *)v3 + 102); if ( v6 < 38 ) { result = (void *)*((_DWORD *)v2 + v6 + 38); } else { sub_44B580(&unk_4DCB00, (int)"ItemAttributeClassContainer::operator [] : Invalid item class", v6); result = v2; } return result; } // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (0044BDF0) -------------------------------------------------------- char __cdecl sub_44BDF0() { return 1; } //----- (0044BE00) -------------------------------------------------------- signed int __stdcall sub_44BE00(int a1) { return 1; } //----- (0044BE10) -------------------------------------------------------- signed int __cdecl sub_44BE10() { return 255; } //----- (0044BE20) -------------------------------------------------------- int __stdcall sub_44BE20(int a1) { return 0; } //----- (0044BE30) -------------------------------------------------------- int __stdcall sub_44BE30(int a1) { return *(_BYTE *)(a1 + 2); } //----- (0044BE40) -------------------------------------------------------- char __stdcall sub_44BE40(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 2) = a2; return result; } //----- (0044BE50) -------------------------------------------------------- int __cdecl sub_44BE50() { return 0; } //----- (0044BE60) -------------------------------------------------------- int __stdcall sub_44BE60(int a1) { return *(_WORD *)(a1 + 2); } //----- (0044BE70) -------------------------------------------------------- signed int __cdecl sub_44BE70() { return 1; } //----- (0044BE80) -------------------------------------------------------- int __stdcall sub_44BE80(int a1) { return *(_DWORD *)(a1 + 2); } //----- (0044BE90) -------------------------------------------------------- signed int __cdecl sub_44BE90() { return 2; } //----- (0044BEA0) -------------------------------------------------------- signed int __cdecl sub_44BEA0() { return 3; } //----- (0044BEC0) -------------------------------------------------------- int __stdcall sub_44BEC0(int a1) { return *(_BYTE *)(a1 + 18); } //----- (0044BED0) -------------------------------------------------------- int __stdcall sub_44BED0(int a1) { return a1 + 61; } //----- (0044BEF0) -------------------------------------------------------- signed int __cdecl sub_44BEF0() { return 6; } //----- (0044BF00) -------------------------------------------------------- int __stdcall sub_44BF00(int a1) { return a1 + 9; } //----- (0044BF10) -------------------------------------------------------- signed int __cdecl sub_44BF10() { return 7; } //----- (0044BF20) -------------------------------------------------------- int __stdcall sub_44BF20(int a1) { return *(_BYTE *)(a1 + 10); } //----- (0044BF30) -------------------------------------------------------- int __stdcall sub_44BF30(int a1) { return a1 + 5; } //----- (0044BF40) -------------------------------------------------------- signed int __cdecl sub_44BF40() { return 9; } //----- (0044BF50) -------------------------------------------------------- int __stdcall sub_44BF50(int a1) { return a1 + 25; } //----- (0044BF60) -------------------------------------------------------- signed int __cdecl sub_44BF60() { return 10; } //----- (0044BF70) -------------------------------------------------------- signed int __cdecl sub_44BF70() { return 11; } //----- (0044BF80) -------------------------------------------------------- signed int __cdecl sub_44BF80() { return 14; } //----- (0044BF90) -------------------------------------------------------- signed int __cdecl sub_44BF90() { return 17; } //----- (0044BFA0) -------------------------------------------------------- int __stdcall sub_44BFA0(int a1) { return a1 + 2; } //----- (0044BFB0) -------------------------------------------------------- signed int __cdecl sub_44BFB0() { return 18; } //----- (0044BFC0) -------------------------------------------------------- signed int __cdecl sub_44BFC0() { return 25; } //----- (0044BFD0) -------------------------------------------------------- signed int __cdecl sub_44BFD0() { return 21; } //----- (0044BFE0) -------------------------------------------------------- int __stdcall sub_44BFE0(int a1) { return a1 + 4; } //----- (0044BFF0) -------------------------------------------------------- signed int __cdecl sub_44BFF0() { return 23; } //----- (0044C000) -------------------------------------------------------- signed int __cdecl sub_44C000() { return 26; } //----- (0044C010) -------------------------------------------------------- signed int __cdecl sub_44C010() { return 37; } //----- (0044C020) -------------------------------------------------------- signed int __cdecl sub_44C020() { return 27; } //----- (0044C030) -------------------------------------------------------- signed int __cdecl sub_44C030() { return 34; } //----- (0044C040) -------------------------------------------------------- int __stdcall sub_44C040(int a1) { return a1 + 10; } //----- (0044C050) -------------------------------------------------------- signed int __cdecl sub_44C050() { return 30; } //----- (0044C060) -------------------------------------------------------- signed int __cdecl sub_44C060() { return 31; } //----- (0044C070) -------------------------------------------------------- __int16 __stdcall sub_44C070(int a1, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(a1 + 2) = a2; return result; } //----- (0044C090) -------------------------------------------------------- signed int __cdecl sub_44C090() { return 35; } //----- (0044C0A0) -------------------------------------------------------- signed int __cdecl sub_44C0A0() { return 36; } //----- (0044C0B0) -------------------------------------------------------- int __stdcall sub_44C0B0(int a1, int a2, const void *a3, int a4) { int result; // eax@1 int v5; // ecx@3 __int16 v6; // dx@3 char v7; // [sp+8h] [bp-28h]@3 int v8; // [sp+Ch] [bp-24h]@3 int v9; // [sp+10h] [bp-20h]@3 int v10; // [sp+14h] [bp-1Ch]@3 int v11; // [sp+18h] [bp-18h]@3 char v12; // [sp+1Ch] [bp-14h]@3 unsigned int v13; // [sp+2Ch] [bp-4h]@1 int v14; // [sp+30h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; result = a2; if ( a2 > 0 ) { memcpy(&v7, a3, 0x24u); v9 = a4 + a2; _LN52(&v7); v5 = v9 & 0x3F | (v8 << 6); v6 = v11; *(_BYTE *)a1 = v12 - 100; result = *(_BYTE *)a1; *(_DWORD *)a1 = result | ((v6 + 1) << 8) & 0x1F00 | ((v10 & 0x3F | (v5 << 6)) << 13); } else { *(_DWORD *)a1 = 1992027391; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (0044C150) -------------------------------------------------------- signed int __stdcall sub_44C150(int a1) { return -1; } //----- (0044C160) -------------------------------------------------------- int __stdcall sub_44C160(int a1, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(a1 + 2) = a2; return result; } //----- (0044C170) -------------------------------------------------------- int __stdcall sub_44C170(int a1) { return a1 + 39; } //----- (0044C180) -------------------------------------------------------- int __stdcall sub_44C180(int a1) { return a1 + 66; } //----- (0044C190) -------------------------------------------------------- int __stdcall sub_44C190(int a1) { return a1 + 14; } //----- (0044C1A0) -------------------------------------------------------- char __stdcall sub_44C1A0(int a1) { return -1; } //----- (0044C1C0) -------------------------------------------------------- char __stdcall sub_44C1C0(int a1) { return *(_BYTE *)(a1 + 38); } //----- (0044C1D0) -------------------------------------------------------- char __stdcall sub_44C1D0(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 38) = a2; return result; } //----- (0044C1E0) -------------------------------------------------------- char __stdcall sub_44C1E0(int a1) { return *(_BYTE *)(a1 + 65); } //----- (0044C1F0) -------------------------------------------------------- char __stdcall sub_44C1F0(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 65) = a2; return result; } //----- (0044C200) -------------------------------------------------------- char __stdcall sub_44C200(int a1) { return *(_BYTE *)(a1 + 13); } //----- (0044C210) -------------------------------------------------------- char __stdcall sub_44C210(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 13) = a2; return result; } //----- (0044C220) -------------------------------------------------------- __int16 __stdcall sub_44C220(int a1, unsigned __int8 a2) { signed int v2; // eax@1 unsigned int v3; // ecx@2 int v4; // esi@3 v2 = 0; if ( a2 < 0xFu ) { v3 = (unsigned int)*(_BYTE *)(a1 + 13) >> 1; if ( (signed int)v3 <= 0 ) { LABEL_6: LOWORD(v2) = 0; } else { v4 = a1 + 14; while ( *(_BYTE *)v4 != a2 ) { ++v2; v4 += 3; if ( v2 >= (signed int)v3 ) goto LABEL_6; } LOWORD(v2) = *(_WORD *)(v2 + a1 + 2 * v2 + 10 + 5); } } return v2; } //----- (0044C270) -------------------------------------------------------- char __thiscall sub_44C270(void *this, int a2, int a3, int a4, int a5) { if ( a2 ) { *(_BYTE *)(a2 + 18) = 0; (*(void (__stdcall **)(int))(*(_DWORD *)this + 132))(a2 + 8); } return 1; } //----- (0044C2A0) -------------------------------------------------------- void __stdcall sub_44C2A0(int a1, unsigned __int8 a2, __int16 a3) { unsigned int v3; // eax@3 signed int v4; // ecx@3 int v5; // esi@5 int v6; // edx@9 int v7; // ecx@10 int v8; // esi@10 int v9; // esi@14 int v10; // ecx@18 if ( a2 < 0xFu && a1 ) { v3 = (unsigned int)*(_BYTE *)(a1 + 13) >> 1; v4 = 0; if ( a3 ) { if ( (signed int)v3 <= 0 ) { LABEL_17: if ( (signed int)v3 < 8 ) { v10 = a1 + 2 * v3 + 13; *(_WORD *)(v10 + v3 + 2) = a3; *(_BYTE *)(v10 + v3 + 1) = a2; *(_BYTE *)(a1 + 13) = *(_BYTE *)(a1 + 13) & 1 ^ 2 * (v3 + 1); } } else { v9 = a1 + 14; while ( *(_BYTE *)v9 != a2 ) { ++v4; v9 += 3; if ( v4 >= (signed int)v3 ) goto LABEL_17; } *(_WORD *)(v4 + a1 + 2 * v4 + 13 + 2) = a3; } } else { if ( (signed int)v3 > 0 ) { v5 = a1 + 14; while ( *(_BYTE *)v5 != a2 ) { ++v4; v5 += 3; if ( v4 >= (signed int)v3 ) return; } v6 = v4 + 1; if ( v4 + 1 < (signed int)v3 ) { v7 = v6 + a1 + 2 * v6 + 13 + 1; v8 = v3 - v6; do { *(_WORD *)(v7 - 3) = *(_WORD *)v7; *(_BYTE *)(v7 - 1) = *(_BYTE *)(v7 + 2); *(_BYTE *)v7 = 0; *(_WORD *)(v7 + 1) = 0; v7 += 3; --v8; } while ( v8 ); } *(_BYTE *)(a1 + 13) = *(_BYTE *)(a1 + 13) & 1 | 2 * (v3 - 1); } } } } //----- (0044C390) -------------------------------------------------------- int __stdcall sub_44C390(int a1) { int result; // eax@1 result = a1; if ( a1 ) { *(_BYTE *)(a1 + 14) = 0; *(_WORD *)(a1 + 15) = 0; *(_BYTE *)(a1 + 17) = 0; *(_WORD *)(a1 + 18) = 0; *(_BYTE *)(a1 + 20) = 0; *(_WORD *)(a1 + 21) = 0; *(_BYTE *)(a1 + 23) = 0; *(_WORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 26) = 0; *(_WORD *)(a1 + 27) = 0; *(_BYTE *)(a1 + 29) = 0; *(_WORD *)(a1 + 30) = 0; *(_BYTE *)(a1 + 32) = 0; *(_WORD *)(a1 + 33) = 0; *(_BYTE *)(a1 + 35) = 0; *(_WORD *)(a1 + 36) = 0; *(_BYTE *)(a1 + 13) = 1; } return result; } //----- (0044C3E0) -------------------------------------------------------- int __stdcall sub_44C3E0(int a1, int a2) { return a2; } //----- (0044C3F0) -------------------------------------------------------- int __stdcall sub_44C3F0(int a1, int a2) { *(_WORD *)a2 = *(_WORD *)(a1 + 2); return a2 + 2; } //----- (0044C410) -------------------------------------------------------- int __stdcall sub_44C410(int a1, void *a2) { memcpy(a2, (const void *)(a1 + 2), 0x24u); return (int)((char *)a2 + 36); } //----- (0044C430) -------------------------------------------------------- int __stdcall sub_44C430(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 6); return a2 + 8; } //----- (0044C450) -------------------------------------------------------- int __stdcall sub_44C450(int a1, void *a2) { memcpy(a2, (const void *)(a1 + 2), 0x65u); return (int)((char *)a2 + 10 * *(_BYTE *)a2 + 1); } //----- (0044C480) -------------------------------------------------------- int __stdcall sub_44C480(int a1, void *a2) { memcpy(a2, (const void *)(a1 + 2), 0x41u); return (int)((char *)a2 + 8 * (*(_BYTE *)a2 & 0xF) + 1); } //----- (0044C4B0) -------------------------------------------------------- int __stdcall sub_44C4B0(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 6); *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 10); *(_DWORD *)(a2 + 12) = *(_DWORD *)(a1 + 14); *(_WORD *)(a2 + 16) = *(_WORD *)(a1 + 18); *(_BYTE *)(a2 + 18) = *(_BYTE *)(a1 + 20); return a2 + 19; } //----- (0044C4F0) -------------------------------------------------------- int __stdcall sub_44C4F0(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); return a2 + 4; } //----- (0044C510) -------------------------------------------------------- int __stdcall sub_44C510(int a1, int a2) { *(_BYTE *)a2 = *(_BYTE *)(a1 + 2); return a2 + 1; } //----- (0044C530) -------------------------------------------------------- int __stdcall sub_44C530(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 6); *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 10); return a2 + 12; } //----- (0044C560) -------------------------------------------------------- int __stdcall sub_44C560(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 6); *(_BYTE *)(a2 + 8) = *(_BYTE *)(a1 + 10); return a2 + 9; } //----- (0044C590) -------------------------------------------------------- int __stdcall sub_44C590(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_BYTE *)(a2 + 4) = *(_BYTE *)(a1 + 6); return a2 + 5; } //----- (0044C5B0) -------------------------------------------------------- int __stdcall sub_44C5B0(int a1, void *a2) { memcpy(a2, (const void *)(a1 + 2), 0x1Au); return (int)((char *)a2 + 26); } //----- (0044C5E0) -------------------------------------------------------- int __stdcall sub_44C5E0(int a1, const void *a2) { memcpy((void *)(a1 + 2), a2, 0x24u); return (int)((char *)a2 + 36); } //----- (0044C600) -------------------------------------------------------- int __stdcall sub_44C600(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_DWORD *)(a1 + 6) = *(_DWORD *)(a2 + 4); return a2 + 8; } //----- (0044C620) -------------------------------------------------------- int __stdcall sub_44C620(int a1, int a2) { return a2 + 1; } //----- (0044C630) -------------------------------------------------------- int __stdcall sub_44C630(int a1, const void *a2) { memcpy((void *)(a1 + 2), a2, 0x65u); return (int)((char *)a2 + 10 * *(_BYTE *)a2 + 1); } //----- (0044C660) -------------------------------------------------------- int __stdcall sub_44C660(int a1, const void *a2) { memcpy((void *)(a1 + 2), a2, 0x41u); return (int)((char *)a2 + 8 * (*(_BYTE *)a2 & 0xF) + 1); } //----- (0044C690) -------------------------------------------------------- int __stdcall sub_44C690(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_DWORD *)(a1 + 6) = *(_DWORD *)(a2 + 4); *(_DWORD *)(a1 + 10) = *(_DWORD *)(a2 + 8); *(_DWORD *)(a1 + 14) = *(_DWORD *)(a2 + 12); *(_WORD *)(a1 + 18) = *(_WORD *)(a2 + 16); *(_BYTE *)(a1 + 20) = *(_BYTE *)(a2 + 18); return a2 + 19; } //----- (0044C6D0) -------------------------------------------------------- int __stdcall sub_44C6D0(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; return a2 + 4; } //----- (0044C6F0) -------------------------------------------------------- int __stdcall sub_44C6F0(int a1, int a2) { *(_BYTE *)(a1 + 2) = *(_BYTE *)a2; return a2 + 1; } //----- (0044C710) -------------------------------------------------------- int __stdcall sub_44C710(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_DWORD *)(a1 + 6) = *(_DWORD *)(a2 + 4); *(_DWORD *)(a1 + 10) = *(_DWORD *)(a2 + 8); return a2 + 12; } //----- (0044C740) -------------------------------------------------------- int __stdcall sub_44C740(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_DWORD *)(a1 + 6) = *(_DWORD *)(a2 + 4); *(_BYTE *)(a1 + 10) = *(_BYTE *)(a2 + 8); return a2 + 9; } //----- (0044C770) -------------------------------------------------------- int __stdcall sub_44C770(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_BYTE *)(a1 + 6) = *(_BYTE *)(a2 + 4); return a2 + 5; } //----- (0044C790) -------------------------------------------------------- int __stdcall sub_44C790(int a1, int a2) { *(_WORD *)(a1 + 2) = *(_WORD *)a2; return a2 + 2; } //----- (0044C7B0) -------------------------------------------------------- int __stdcall sub_44C7B0(int a1, const void *a2) { memcpy((void *)(a1 + 2), a2, 0x1Au); return (int)((char *)a2 + 26); } //----- (0044C7E0) -------------------------------------------------------- signed int __stdcall sub_44C7E0(int a1) { return 2; } //----- (0044C7F0) -------------------------------------------------------- signed int __stdcall sub_44C7F0(int a1) { return 4; } //----- (0044C800) -------------------------------------------------------- signed int __stdcall sub_44C800(int a1) { return 36; } //----- (0044C810) -------------------------------------------------------- signed int __stdcall sub_44C810(int a1) { return 8; } //----- (0044C820) -------------------------------------------------------- int __stdcall sub_44C820(int a1) { return 10 * *(_BYTE *)a1 + 1; } //----- (0044C840) -------------------------------------------------------- signed int __stdcall sub_44C840(int a1) { return 65; } //----- (0044C850) -------------------------------------------------------- signed int __stdcall sub_44C850(int a1) { return 19; } //----- (0044C860) -------------------------------------------------------- signed int __stdcall sub_44C860(int a1) { return 12; } //----- (0044C870) -------------------------------------------------------- signed int __stdcall sub_44C870(int a1) { return 9; } //----- (0044C880) -------------------------------------------------------- signed int __stdcall sub_44C880(int a1) { return 5; } //----- (0044C890) -------------------------------------------------------- signed int __stdcall sub_44C890(int a1) { return 26; } //----- (0044C8A0) -------------------------------------------------------- char __stdcall sub_44C8A0(int a1, int a2) { int v2; // eax@1 int v3; // edi@3 unsigned int v4; // esi@3 __int16 v5; // dx@5 LOBYTE(v2) = *(_BYTE *)(a2 + 2); if ( (_BYTE)v2 == 73 || (_BYTE)v2 == 105 ) { v2 = a1; *(_BYTE *)v2 |= 1u; } else { v3 = a1; v4 = (unsigned int)*(_BYTE *)a1 >> 1; if ( (signed int)v4 < 8 ) { v2 = sscanf((const char *)(a2 + 2), "%d/%d", &a1, &a2); if ( v2 == 2 ) { v5 = a2; v2 = v3 + 2 * v4; *(_BYTE *)(v2 + v4 + 1) = a1; *(_WORD *)(v2 + v4 + 2) = v5; LOBYTE(v2) = *(_BYTE *)v3 & 1; *(_BYTE *)v3 = v2 ^ ((*(_BYTE *)v3 & 0xFE) + 2); } } } return v2; } //----- (0044C920) -------------------------------------------------------- char __stdcall sub_44C920(int a1, int a2, int a3) { char result; // al@1 result = *(_BYTE *)(a3 + 1); if ( result == 76 || result == 108 ) { result = sscanf((const char *)(a3 + 2), "%d", &a3); *(_BYTE *)(a2 + 10) = a3; } return result; } //----- (0044C960) -------------------------------------------------------- char __stdcall sub_44C960(int a1, int a2, int a3) { char result; // al@1 result = *(_BYTE *)(a3 + 1); if ( result == 76 || result == 108 ) { result = sscanf((const char *)(a3 + 2), "%d", &a3); *(_DWORD *)(a2 + 10) = a3; } return result; } //----- (0044C9A0) -------------------------------------------------------- char __thiscall sub_44C9A0(void *this, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // esi@1 char v6; // al@1 char v7; // al@4 char result; // al@7 v4 = a4; v5 = a3; *(_BYTE *)(a3 + 46) = 0; v6 = *(_BYTE *)(v4 + 1); if ( v6 == 79 || v6 == 111 ) { *(_WORD *)(v5 + 19) = 0; *(_BYTE *)(v5 + 18) = 0; (*(void (__stdcall **)(int))(*(_DWORD *)this + 132))(v5 + 8); *(_DWORD *)(v5 + 10) &= 0xFFu; *(_BYTE *)(v5 + 47) = 1; *(_BYTE *)(v5 + 10) = 0; } v7 = *(_BYTE *)(v4 + 1); if ( v7 == 80 || v7 == 112 ) sub_44C8A0(v5 + 47, v4); *(_DWORD *)(v5 + 14) = 0; *(_BYTE *)(v5 + 21) = 1; result = *(_BYTE *)(v4 + 1); if ( result == 85 || result == 117 ) { result = sscanf((const char *)(v4 + 2), "%d", &a3); *(_BYTE *)(v5 + 18) = a3; } return result; } //----- (0044CA40) -------------------------------------------------------- char __stdcall sub_44CA40(int a1, signed int a2, int a3) { signed int v3; // esi@1 char result; // al@1 int v5; // edi@1 char v6; // dl@1 v3 = a2; result = 0; v5 = a3; *(_BYTE *)(a2 + 73) = 0; v6 = *(_BYTE *)(v5 + 1); if ( v6 == 79 || v6 == 111 ) { *(_WORD *)(v3 + 11) = 0; *(_BYTE *)(v3 + 10) = 0; *(_BYTE *)(v3 + 47) = 0; *(_DWORD *)(v3 + 19) = 0; *(_DWORD *)(v3 + 25) = 0; *(_DWORD *)(v3 + 31) = 0; *(_WORD *)(v3 + 17) = -1; *(_WORD *)(v3 + 29) = -1; *(_WORD *)(v3 + 23) = -1; *(_DWORD *)(v3 + 69) &= 0xFFu; *(_WORD *)(v3 + 35) = -1; *(_BYTE *)(v3 + 37) = 0; *(_BYTE *)(v3 + 74) = 1; *(_BYTE *)(v3 + 69) = 0; *(_DWORD *)(v3 + 13) = 0; *(_WORD *)(v3 + 58) = -1; *(_BYTE *)(v3 + 60) = -1; *(_WORD *)(v3 + 61) = -1; *(_BYTE *)(v3 + 63) = -1; *(_DWORD *)(v3 + 64) = 16777215; *(_BYTE *)(v3 + 68) = 0; } else { if ( v6 == 80 || v6 == 112 ) sub_44C8A0(v3 + 74, v5); result = *(_BYTE *)(v5 + 1); switch ( result ) { case 85: case 117: result = sscanf((const char *)(v5 + 2), "%d", &a2); *(_BYTE *)(v3 + 10) = a2; break; case 83: case 115: sscanf((const char *)(v5 + 2), "%d", &a2); result = a2; *(_BYTE *)(v3 + 11) = a2; break; case 69: case 101: sscanf((const char *)(v5 + 2), "%d", &a2); result = a2; if ( a2 >= 2 ) result = 2; *(_BYTE *)(v3 + 67) = result; break; } } return result; } //----- (0044CB70) -------------------------------------------------------- char __stdcall sub_44CB70(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 char result; // al@1 v3 = a2; v4 = a3; *(_BYTE *)(a2 + 21) = 0; result = *(_BYTE *)(v4 + 1); if ( result == 79 || result == 111 ) { *(_DWORD *)(v3 + 17) &= 0xFFu; *(_WORD *)(v3 + 11) = 0; *(_BYTE *)(v3 + 10) = 0; *(_BYTE *)(v3 + 22) = 1; *(_BYTE *)(v3 + 17) = 0; *(_DWORD *)(v3 + 13) = 0; } else { if ( result == 80 || result == 112 ) sub_44C8A0(v3 + 22, v4); result = *(_BYTE *)(v4 + 1); if ( result == 85 || result == 117 ) { result = sscanf((const char *)(v4 + 2), "%d", &a2); *(_BYTE *)(v3 + 10) = a2; } else { if ( result == 83 || result == 115 ) { result = sscanf((const char *)(v4 + 2), "%d", &a2); *(_BYTE *)(v3 + 11) = a2; } } } return result; } //----- (0044CC10) -------------------------------------------------------- char __stdcall sub_44CC10(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 char result; // al@1 v3 = a2; v4 = a3; *(_BYTE *)(a2 + 21) = 0; result = *(_BYTE *)(v4 + 1); if ( result == 79 || result == 111 ) { *(_DWORD *)(v3 + 17) &= 0xFFu; *(_BYTE *)(v3 + 12) = 0; *(_WORD *)(v3 + 10) = 0; *(_BYTE *)(v3 + 22) = 1; *(_BYTE *)(v3 + 17) = 0; *(_DWORD *)(v3 + 13) = 0; } else { if ( result == 80 || result == 112 ) sub_44C8A0(v3 + 22, v4); result = *(_BYTE *)(v4 + 1); if ( result == 85 || result == 117 ) { result = sscanf((const char *)(v4 + 2), "%d", &a2); *(_BYTE *)(v3 + 10) = a2; } else { if ( result == 83 || result == 115 ) { result = sscanf((const char *)(v4 + 2), "%d", &a2); *(_BYTE *)(v3 + 11) = a2; } } } return result; } //----- (0044CCB0) -------------------------------------------------------- int __stdcall sub_44CCB0(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_BYTE *)(result + 10) &= 0xFEu; *(float *)(a2 + 17) = 276.0; *(float *)(a2 + 21) = 389.0; *(_BYTE *)(a2 + 13) = 0; *(_DWORD *)(result + 13) &= 0xFFu; *(float *)(a2 + 25) = 6.0; *(_BYTE *)(a2 + 33) = 0; *(_DWORD *)(result + 33) &= 0xFFu; *(float *)(a2 + 29) = 0.0; *(_WORD *)(a2 + 11) = 0; *(_BYTE *)(a2 + 37) = 0; *(_DWORD *)(a2 + 38) = 0; *(_DWORD *)(a2 + 42) = 0; return result; } //----- (0044CD00) -------------------------------------------------------- int __stdcall sub_44CD00(int a1, int a2, int a3) { int result; // eax@1 result = 0; *(_DWORD *)(a2 + 10) = 0; *(_DWORD *)(a2 + 14) = 0; return result; } //----- (0044CD30) -------------------------------------------------------- char __thiscall sub_44CD30(void *this, int a2, int a3, int a4) { int v4; // esi@1 char v5; // al@1 int v6; // eax@4 int v7; // ecx@6 v4 = a4; v5 = *(_BYTE *)(a4 + 1); if ( v5 == 79 || v5 == 111 ) (*(void (__stdcall **)(int, int, _UNKNOWN *))(*(_DWORD *)this + 20))(a2, a3, &unk_4BBFF4); LOBYTE(v6) = *(_BYTE *)(v4 + 1); if ( (_BYTE)v6 == 78 || (_BYTE)v6 == 110 ) { LOBYTE(v6) = sscanf((const char *)(v4 + 2), "%d", &a4); v7 = a4; *(_BYTE *)(a3 + 10) = a4; if ( v7 > 0 ) { v6 = a3 + 17; do { *(_DWORD *)(v6 - 4) = 10000; *(_DWORD *)v6 = 10000; *(_WORD *)(v6 - 6) = -1; v6 += 10; --v7; } while ( v7 ); } } return v6; } //----- (0044CDB0) -------------------------------------------------------- char __stdcall sub_44CDB0(int a1, int a2, int a3) { int v3; // eax@1 LOBYTE(v3) = *(_BYTE *)(a3 + 1); if ( (_BYTE)v3 == 79 || (_BYTE)v3 == 111 ) { v3 = a2; *(_BYTE *)(v3 + 10) &= 0xF0u; } return v3; } //----- (0044CDD0) -------------------------------------------------------- int __stdcall sub_44CDD0(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(a2 + 10) = 0; return result; } //----- (0044CDF0) -------------------------------------------------------- char __stdcall sub_44CDF0(int a1, int a2, int a3) { char result; // al@1 result = *(_BYTE *)(a3 + 1); if ( result == 79 || result == 111 ) { result = 0; *(_WORD *)(a2 + 10) = 0; } else { if ( result == 83 || result == 115 ) { result = sscanf((const char *)(a3 + 2), "%d", &a3); *(_WORD *)(a2 + 10) = a3; } } return result; } //----- (0044CE40) -------------------------------------------------------- int __stdcall sub_44CE40(int a1, int a2, int a3) { int result; // eax@1 *(_WORD *)(a2 + 10) = sub_401E90(); *(_DWORD *)(a2 + 12) = 0; *(_WORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 18) = 0; result = sub_44BE50(); *(_DWORD *)(a2 + 22) = result; *(_BYTE *)(a2 + 26) = 0; *(_WORD *)(a2 + 27) = 0; return result; } //----- (0044CE90) -------------------------------------------------------- signed int __stdcall sub_44CE90(int a1, int a2, int a3) { unsigned int v3; // eax@1 int v4; // esi@2 int v5; // ecx@4 signed int result; // eax@6 v3 = *(_WORD *)(a2 + 8); if ( v3 >= dword_6EA3EC || (v4 = dword_6EACDC + 40 * v3) == 0 || !*(_DWORD *)v4 ) goto LABEL_6; v5 = **(_WORD **)v4; if ( (_WORD)v5 != *(_WORD *)(a2 + 8) ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v5 + 10000 * v3); LABEL_6: result = 1000; *(_DWORD *)(a2 + 10) = 1000; return result; } result = *(_DWORD *)(*(_DWORD *)v4 + 106); *(_DWORD *)(a2 + 10) = result; return result; } // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (0044CF10) -------------------------------------------------------- int __stdcall sub_44CF10(int a1, int a2, int a3) { int result; // eax@1 *(_DWORD *)(a2 + 10) = 0; result = sub_44BE50(); *(_DWORD *)(a2 + 10) = (unsigned __int16)result; return result; } //----- (0044CF40) -------------------------------------------------------- int __stdcall sub_44CF40(int a1, int a2, int a3) { int result; // eax@1 result = 0; *(_DWORD *)(a2 + 10) = 0; *(_DWORD *)(a2 + 14) = 0; *(_DWORD *)(a2 + 18) = 0; return result; } //----- (0044CF60) -------------------------------------------------------- int __stdcall sub_44CF60(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(a2 + 10) = 26999999; *(_WORD *)(a2 + 14) = 1; *(_WORD *)(a2 + 17) = 1; return result; } //----- (0044CF80) -------------------------------------------------------- int __stdcall sub_44CF80(int a1, int a2, int a3) { int v3; // eax@1 int v4; // esi@1 int result; // eax@1 v3 = dword_7D2644 & (dword_7D2640 + 1); dword_7D2640 = v3; v4 = (unsigned __int16)word_7CA640[v3]; dword_A12880 = dword_A12884 & (dword_A12880 + 1); *(_DWORD *)(a2 + 10) = 10000 * (100 * v4 + (unsigned __int16)word_A0A880[dword_A12880] + 101) + (unsigned __int16)sub_44FFB0((int)&unk_A428B8, 0x3E8u); result = dword_7525C4 & (dword_7525C0 + 1); dword_7525C0 = result; *(_BYTE *)(a2 + 14) = byte_74A5C0[2 * result]; return result; } // 7525C0: using guessed type int dword_7525C0; // 7525C4: using guessed type int dword_7525C4; // 7CA640: using guessed type __int16 word_7CA640[]; // 7D2640: using guessed type int dword_7D2640; // 7D2644: using guessed type int dword_7D2644; // A0A880: using guessed type __int16 word_A0A880[]; // A12880: using guessed type int dword_A12880; // A12884: using guessed type int dword_A12884; //----- (0044D000) -------------------------------------------------------- char __stdcall sub_44D000(int a1, int a2, int a3, int a4) { return 0; } //----- (0044D010) -------------------------------------------------------- char __stdcall sub_44D010(int a1, int a2, int a3) { char result; // al@1 result = *(_BYTE *)(a3 + 1); if ( result == 76 || result == 108 ) { result = sscanf((const char *)(a3 + 2), "%d", &a3); *(_WORD *)(a2 + 10) = a3; } return result; } //----- (0044D050) -------------------------------------------------------- int __stdcall sub_44D050(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(a2 + 14) = -1; *(_DWORD *)(a2 + 10) = -1; *(_DWORD *)(a2 + 18) = 0; *(_DWORD *)(a2 + 22) = 0; *(_DWORD *)(a2 + 26) = 0; *(_DWORD *)(a2 + 30) = 0; *(_WORD *)(a2 + 34) = 0; return result; } //----- (0044D080) -------------------------------------------------------- int __stdcall sub_44D080(int a1) { return *(_DWORD *)(a1 + 10); } //----- (0044D090) -------------------------------------------------------- int __stdcall sub_44D090(int a1, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(a1 + 10) = a2; return result; } //----- (0044D0B0) -------------------------------------------------------- __int16 __stdcall sub_44D0B0(int a1) { return *(_WORD *)(a1 + 8) >> 15; } //----- (0044D0D0) -------------------------------------------------------- int __stdcall sub_44D0D0(int a1, unsigned __int8 a2) { int result; // eax@1 result = a1; *(_WORD *)(a1 + 8) = *(_WORD *)(a1 + 8) & 0x7FFF | (a2 << 15); return result; } //----- (0044D100) -------------------------------------------------------- int __stdcall sub_44D100(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_BYTE *)(a3 + 10) = *(_BYTE *)(a2 + 36); return result; } //----- (0044D120) -------------------------------------------------------- int __stdcall sub_44D120(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_WORD *)(a3 + 10) = *(_WORD *)(a2 + 36); return result; } //----- (0044D140) -------------------------------------------------------- int __stdcall sub_44D140(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(a3 + 10) = *(_DWORD *)(a2 + 36); return result; } //----- (0044D160) -------------------------------------------------------- char __thiscall sub_44D160(void *this, int a2, int a3, int a4) { (*(void (__stdcall **)(int, int, _UNKNOWN *))(*(_DWORD *)this + 20))(a2, a4, &unk_4BBFF8); return sub_450210((int)((char *)&unk_6F5F1C + 36 * *(_WORD *)(a3 + 60)), a4 + 47); } //----- (0044D1A0) -------------------------------------------------------- int __thiscall sub_44D1A0(void *this, int a2, int a3, int a4) { int v4; // edx@1 unsigned int v5; // eax@1 int v6; // esi@1 int v7; // ecx@2 int result; // eax@4 int v9; // esi@4 (*(void (__stdcall **)(int, int, _UNKNOWN *))(*(_DWORD *)this + 20))(a2, a4, &unk_4BBFF8); *(_BYTE *)(a4 + 12) = 0; v4 = (unsigned __int16)sub_44FFB0((int)&unk_A428B8, 0x3E8u); v5 = 0; v6 = a3 + 40; do { v7 = *(_WORD *)v6; if ( v4 < v7 ) break; ++v5; v4 -= v7; v6 += 2; } while ( v5 < 0xA ); *(_BYTE *)(a4 + 10) = v5 < 0xA ? v5 : 0; sub_450210((int)((char *)&unk_6F5F1C + 36 * *(_WORD *)(a3 + 60)), a4 + 74); result = sub_4500E0(); v9 = result; if ( result ) { if ( (unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD))result)(result, *(_WORD *)(a4 + 8)) >= 2u ) { result = 2; *(_BYTE *)(a4 + 67) = 2; } else { result = (unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v9, *(_WORD *)(a4 + 8)); *(_BYTE *)(a4 + 67) = result; } } return result; } //----- (0044D250) -------------------------------------------------------- char __thiscall sub_44D250(void *this, int a2, int a3, int a4) { int v4; // edx@1 unsigned int v5; // eax@1 int v6; // esi@1 int v7; // ecx@2 (*(void (__stdcall **)(int, int, _UNKNOWN *))(*(_DWORD *)this + 20))(a2, a4, &unk_4BBFF8); *(_BYTE *)(a4 + 12) = 0; v4 = (unsigned __int16)sub_44FFB0((int)&unk_A428B8, 0x3E8u); v5 = 0; v6 = a3 + 40; do { v7 = *(_WORD *)v6; if ( v4 < v7 ) break; ++v5; v4 -= v7; v6 += 2; } while ( v5 < 0xA ); *(_BYTE *)(a4 + 10) = v5 < 0xA ? v5 : 0; return sub_450210((int)((char *)&unk_6F5F1C + 36 * *(_WORD *)(a3 + 60)), a4 + 22); } //----- (0044D2D0) -------------------------------------------------------- int __stdcall sub_44D2D0(int a1, int a2, int a3) { int result; // eax@1 result = 0; *(_DWORD *)(a3 + 10) = 0; *(_DWORD *)(a3 + 14) = 0; return result; } //----- (0044D2F0) -------------------------------------------------------- signed int __stdcall sub_44D2F0(__int16 a1, int a2, int a3, char a4, int a5, int a6) { *(_WORD *)a2 = 7172; *(_WORD *)(a2 + 2) = a1; *(_BYTE *)(a2 + 4) = a4; return 5; } //----- (0044D320) -------------------------------------------------------- int __stdcall sub_44D320(int a1, int a2, int a3, int a4, int a5, int a6) { return 0; } //----- (0044D330) -------------------------------------------------------- signed int __stdcall sub_44D330(__int16 a1, int a2, int a3, int a4, int a5, int a6) { signed int v6; // eax@1 int v7; // edx@1 int v8; // eax@7 unsigned __int16 v9; // cx@7 *(_WORD *)a2 = 7173; *(_WORD *)(a2 + 2) = a1; *(_WORD *)(a2 + 4) = *(_WORD *)a3; *(_BYTE *)(a2 + 6) = *(_BYTE *)(a3 + 2); v6 = 0; v7 = a3 + 9; while ( *(_WORD *)(a3 + 27) != *(_WORD *)v7 ) { ++v6; v7 += 6; if ( v6 >= 3 ) { *(_WORD *)(a2 + 8) = -1; *(_BYTE *)(a2 + 10) = 0; goto LABEL_8; } } if ( v6 < 3 ) { v8 = a3 + 6 * v6; v9 = *(_WORD *)(v8 + 9); *(_WORD *)(a2 + 8) = v9; *(_BYTE *)(a2 + 10) = sub_4A6320(dword_6EC2C0, v9, *(_DWORD *)(v8 + 11) & 0xFFFFFFF); } else { *(_WORD *)(a2 + 8) = -1; *(_BYTE *)(a2 + 10) = 0; } LABEL_8: if ( a5 ) *(_WORD *)a5 = *(_WORD *)(a2 + 8); if ( a6 ) *(_BYTE *)a6 = *(_BYTE *)(a2 + 10); return 11; } // 6EC2C0: using guessed type int dword_6EC2C0; //----- (0044D3E0) -------------------------------------------------------- signed int __stdcall sub_44D3E0(__int16 a1, int a2, int a3, char a4, int a5, int a6) { *(_WORD *)a2 = 7171; *(_WORD *)(a2 + 2) = a1; *(_WORD *)(a2 + 4) = *(_WORD *)a3; *(_BYTE *)(a2 + 6) = *(_BYTE *)(a3 + 2); *(_BYTE *)(a2 + 7) = a4; return 8; } //----- (0044D420) -------------------------------------------------------- signed int __stdcall sub_44D420(__int16 a1, int a2, int a3, char a4, int a5, int a6) { *(_WORD *)a2 = 7170; *(_WORD *)(a2 + 2) = a1; *(_WORD *)(a2 + 4) = *(_WORD *)a3; *(_BYTE *)(a2 + 6) = a4; return 7; } //----- (0044D450) -------------------------------------------------------- char __stdcall sub_44D450(int a1, int a2, int a3, int a4) { return 1; } //----- (0044D460) -------------------------------------------------------- char __stdcall sub_44D460(int a1, int a2, int a3, int a4) { signed __int64 v4; // qax@1 v4 = 274877907i64 * a3 * (*(_WORD *)(a2 + 62) - *(_WORD *)(a2 + 60) + 1); *(_BYTE *)(a1 + 10) = *(_BYTE *)(a2 + 60) + (SHIDWORD(v4) >> 6) + (unsigned __int8)(HIDWORD(v4) >> 31); return 1; } //----- (0044D4A0) -------------------------------------------------------- char __stdcall sub_44D4A0(int a1, int a2, int a3, int a4) { *(_DWORD *)(a1 + 10) = *(_WORD *)(a2 + 60) + a3 * (*(_WORD *)(a2 + 62) - *(_WORD *)(a2 + 60) + 1) / 1000; return 1; } //----- (0044D4E0) -------------------------------------------------------- char __stdcall sub_44D4E0(int a1, int a2, signed int a3, int a4) { unsigned int v4; // eax@1 int v5; // ecx@1 int v6; // eax@6 v4 = 0; v5 = a2 + 64; while ( *(_WORD *)v5 <= a3 ) { ++v4; v5 += 2; if ( v4 >= 0x10 ) goto LABEL_6; } *(_BYTE *)(a1 + 10) = v4; LABEL_6: *(_BYTE *)(a1 + 10) = 0; *(_WORD *)(a1 + 17) = -1; *(_DWORD *)(a1 + 19) = 0; *(_DWORD *)(a1 + 25) = 0; *(_DWORD *)(a1 + 31) = 0; *(_WORD *)(a1 + 23) = -1; *(_WORD *)(a1 + 29) = -1; *(_BYTE *)(a1 + 74) = 1; *(_WORD *)(a1 + 58) = -1; *(_BYTE *)(a1 + 60) = 0; *(_WORD *)(a1 + 61) = -1; *(_BYTE *)(a1 + 63) = 0; *(_DWORD *)(a1 + 64) = 65535; v6 = sub_4500E0(); if ( v6 ) *(_BYTE *)(a1 + 67) = (**(int (__thiscall ***)(_DWORD, _DWORD))v6)(v6, *(_WORD *)(a1 + 8)); *(_BYTE *)(a1 + 68) = 0; return 1; } //----- (0044D570) -------------------------------------------------------- char __stdcall sub_44D570(int a1, int a2, signed int a3, int a4) { unsigned int v4; // eax@1 int v5; // ecx@1 v4 = 0; v5 = a2 + 64; while ( *(_WORD *)v5 <= a3 ) { ++v4; v5 += 2; if ( v4 >= 0x10 ) { *(_BYTE *)(a1 + 10) = 0; *(_BYTE *)(a1 + 22) = 1; return 1; } } *(_BYTE *)(a1 + 10) = v4; *(_BYTE *)(a1 + 10) = 0; *(_BYTE *)(a1 + 22) = 1; return 1; } //----- (0044D5C0) -------------------------------------------------------- char __stdcall sub_44D5C0(int a1, int a2, int a3, int a4) { return sub_44E3D0(); } //----- (0044D5E0) -------------------------------------------------------- char __stdcall sub_44D5E0(int a1, int a2, int a3, int a4) { int v4; // esi@1 signed __int64 v5; // qax@1 v4 = *(_WORD *)(a2 + 60); v5 = 274877907i64 * a3 * (*(_WORD *)(a2 + 62) - v4 + 1); *(_WORD *)(a1 + 10) = v4 + (SHIDWORD(v5) >> 6) + (unsigned __int16)(HIDWORD(v5) >> 31); return 1; } //----- (0044D620) -------------------------------------------------------- signed int __stdcall sub_44D620(int a1, int a2, int a3) { return 3; } //----- (0044D630) -------------------------------------------------------- signed int __stdcall sub_44D630(int a1, __int16 a2, int a3) { signed int v3; // eax@1 int v4; // ecx@1 signed int v5; // eax@4 int v6; // ecx@4 signed int v8; // ecx@9 v3 = 0; v4 = a1 + 17; do { if ( *(_WORD *)v4 == a2 ) return 1; ++v3; v4 += 6; } while ( v3 < 3 ); v5 = 0; v6 = a1 + 17; while ( *(_WORD *)v6 != -1 ) { ++v5; v6 += 6; if ( v5 >= 3 ) return 2; } v8 = 0; if ( *(_WORD *)(a1 + 17) != -1 ) v8 = 1; if ( *(_WORD *)(a1 + 23) != -1 ) ++v8; if ( *(_WORD *)(a1 + 29) != -1 ) ++v8; if ( !v8 ) { *(_DWORD *)(a1 + 37) = *(_DWORD *)a3; *(_DWORD *)(a1 + 41) = *(_DWORD *)(a3 + 4); *(_DWORD *)(a1 + 45) = *(_DWORD *)(a3 + 8); *(_DWORD *)(a1 + 49) = *(_DWORD *)(a3 + 12); *(_DWORD *)(a1 + 53) = *(_DWORD *)(a3 + 16); *(_BYTE *)(a1 + 57) = 0; } *(_WORD *)(a1 + 6 * v5 + 17) = a2; return 0; } //----- (0044D6E0) -------------------------------------------------------- int __stdcall sub_44D6E0(int a1, int a2, int a3) { return 0; } //----- (0044D6F0) -------------------------------------------------------- int __stdcall sub_44D6F0(int a1, __int16 a2, int a3) { signed int v3; // eax@1 int v4; // ecx@1 int result; // eax@4 int v6; // eax@5 int v7; // ecx@5 int v8; // edx@5 v3 = 0; v4 = a1 + 17; while ( *(_WORD *)v4 != a2 ) { ++v3; v4 += 6; if ( v3 >= 3 ) return -1; } v6 = 3 * v3; v7 = *(_DWORD *)(a1 + 2 * v6 + 19); v8 = a1 + 2 * v6 + 19; result = a3 + (v7 & 0xFFFFFFF); *(_DWORD *)v8 = v7 ^ (result ^ v7) & 0xFFFFFFF; return result; } //----- (0044D740) -------------------------------------------------------- _UNKNOWN *__stdcall sub_44D740(int a1) { return &unk_6EC3F8; } //----- (0044D750) -------------------------------------------------------- int __stdcall sub_44D750(int a1) { return a1 + 37; } //----- (0044D760) -------------------------------------------------------- char __stdcall sub_44D760(int a1, int a2, int a3) { return 0; } //----- (0044D770) -------------------------------------------------------- char __stdcall sub_44D770(int a1, int a2, int a3) { int v3; // eax@1 char v4; // cl@2 v3 = a3; do { v4 = *(_BYTE *)v3; *(_BYTE *)(a1 + 37 - a3 + v3) = *(_BYTE *)v3; ++v3; } while ( v4 ); return 1; } //----- (0044D790) -------------------------------------------------------- int __stdcall sub_44D790(int a1, int a2, int a3) { int result; // eax@1 result = a2 + *(_WORD *)(a1 + 10); if ( result > a3 ) result = a3; if ( result < 0 ) result = 0; *(_WORD *)(a1 + 10) = result; return result; } //----- (0044D7C0) -------------------------------------------------------- int __stdcall sub_44D7C0(int a1) { return *(_WORD *)(a1 + 10); } //----- (0044D7D0) -------------------------------------------------------- signed int __stdcall sub_44D7D0(int a1, int a2, int a3) { return 65535; } //----- (0044D7E0) -------------------------------------------------------- signed int __stdcall sub_44D7E0(int a1, int a2, int a3) { unsigned int v3; // eax@1 int v4; // ecx@2 int v5; // esi@4 signed int result; // eax@6 v3 = *(_WORD *)(a3 + 8); if ( v3 >= *(_DWORD *)(a2 + 4) || (v4 = *(_DWORD *)(a2 + 2292) + 40 * v3) == 0 || !*(_DWORD *)v4 ) return 65535; v5 = **(_WORD **)v4; if ( (_WORD)v5 != *(_WORD *)(a3 + 8) ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v5 + 10000 * v3); return 65535; } result = sub_44B780((void *)(a1 + 1640), (unsigned __int8 *)(*(_DWORD *)v4 + 6)); if ( result == -1 ) return 65535; return (unsigned __int16)result; } //----- (0044D860) -------------------------------------------------------- __int16 __stdcall sub_44D860(int a1, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(a1 + 11) = a2; return result; } //----- (0044D880) -------------------------------------------------------- int __stdcall sub_44D880(int a1, int a2) { return 0; } //----- (0044D890) -------------------------------------------------------- signed int __thiscall sub_44D890(void *this, int a2, int a3) { signed int result; // eax@2 int v4; // eax@3 if ( a2 && (v4 = (*(int (__stdcall **)(int))(*(_DWORD *)this + 140))(a2 + 8)) != 0 ) { *(_DWORD *)v4 = *(_DWORD *)a3; result = 1; } else { result = 0; } return result; } //----- (0044D8D0) -------------------------------------------------------- int __stdcall sub_44D8D0(int a1, int a2, int a3, int a4) { return 0; } //----- (0044D8E0) -------------------------------------------------------- signed int __userpurge sub_44D8E0(int a1, int a2, signed int a3, unsigned __int16 a4, unsigned __int16 a5, const void *a6) { signed int result; // eax@1 int v7; // ebx@2 unsigned int v8; // eax@8 char *v9; // ecx@8 int v10; // esi@9 int v11; // eax@9 bool v12; // sf@9 unsigned __int8 v13; // of@9 const void *v14; // esi@9 int v15; // eax@11 int v16; // edx@13 int v17; // [sp+4h] [bp-9Ch]@8 char v18; // [sp+Ch] [bp-94h]@9 char v19; // [sp+30h] [bp-70h]@11 int v20; // [sp+38h] [bp-68h]@11 char v21; // [sp+54h] [bp-4Ch]@8 int v22; // [sp+5Ch] [bp-44h]@8 int v23; // [sp+78h] [bp-28h]@9 unsigned int v24; // [sp+7Ch] [bp-24h]@9 unsigned int v25; // [sp+80h] [bp-20h]@9 unsigned int v26; // [sp+84h] [bp-1Ch]@9 unsigned int v27; // [sp+88h] [bp-18h]@9 int v28; // [sp+8Ch] [bp-14h]@9 unsigned int v29; // [sp+9Ch] [bp-4h]@1 int v30; // [sp+A0h] [bp+0h]@1 v29 = (unsigned int)&v30 ^ __security_cookie; result = a3; if ( a3 ) { v7 = (*(int (__stdcall **)(int, int))(*(_DWORD *)a1 + 140))(a3 + 8, a2); if ( v7 ) { if ( !a5 ) { *(_DWORD *)v7 = 1992027391; return 1; } if ( *(_BYTE *)v7 == -1 ) return 1; if ( a6 ) { memcpy(&v21, a6, 0x24u); v22 += a5; v17 = _LN52(&v21); v8 = *(_DWORD *)v7; v9 = &v21; if ( (unsigned __int8)*(_DWORD *)v7 ) { v28 = (unsigned __int8)*(_DWORD *)v7 + 100; v27 = ((v8 >> 8) & 0x1F) - 1; v26 = (v8 >> 13) & 0x3F; v25 = (v8 >> 19) & 0x3F; v24 = v8 >> 25; v23 = 0; memcpy(&v18, a6, 0x24u); v10 = _LN52(&v23); v11 = _LN52(&v18); v13 = __OFSUB__(v10, v11); v12 = v10 - v11 < 0; v14 = a6; if ( !(v12 ^ v13) ) v14 = &v23; memcpy(&v19, v14, 0x24u); v20 += a4; v15 = _LN52(&v19); v9 = &v21; if ( v17 >= v15 ) v9 = &v19; } v16 = *((_DWORD *)v9 + 2); *(_BYTE *)v7 = v9[20] - 100; *(_DWORD *)v7 = *(_BYTE *)v7 | (((unsigned __int16)*((_DWORD *)v9 + 4) + 1) << 8) & 0x1F00 | ((*((_DWORD *)v9 + 3) & 0x3F | (((*((_DWORD *)v9 + 1) << 6) | v16 & 0x3F) << 6)) << 13); return 1; } } result = 0; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (0044DA80) -------------------------------------------------------- char __stdcall sub_44DA80(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 37) = a2; return result; } //----- (0044DA90) -------------------------------------------------------- int __stdcall sub_44DA90(int a1) { return *(_DWORD *)(a1 + 13); } //----- (0044DAA0) -------------------------------------------------------- int __stdcall sub_44DAA0(int a1) { return *(_DWORD *)(a1 + 14); } //----- (0044DAB0) -------------------------------------------------------- int __stdcall sub_44DAB0(int a1) { return *(_DWORD *)(a1 + 18); } //----- (0044DAC0) -------------------------------------------------------- signed int __stdcall sub_44DAC0(int a1, int a2) { *(_DWORD *)(a1 + 14) = a2; return 1; } //----- (0044DAE0) -------------------------------------------------------- signed int __stdcall sub_44DAE0(int a1, int a2) { *(_DWORD *)(a1 + 13) = a2; return 1; } //----- (0044DB00) -------------------------------------------------------- signed int __stdcall sub_44DB00(int a1, int a2) { *(_DWORD *)(a1 + 18) = a2; return 1; } //----- (0044DB20) -------------------------------------------------------- int __stdcall sub_44DB20(int a1, int a2) { int result; // eax@1 result = a1; if ( a1 ) *(_DWORD *)(a1 + 22) = a2; return result; } //----- (0044DB40) -------------------------------------------------------- int __stdcall sub_44DB40(int a1) { int result; // eax@1 result = a1; if ( a1 ) result = *(_DWORD *)(a1 + 22); return result; } //----- (0044DB60) -------------------------------------------------------- signed int __cdecl sub_44DB60() { return 33; } //----- (0044DB70) -------------------------------------------------------- int __stdcall sub_44DB70(int a1, char a2) { int result; // eax@1 result = a1; if ( a1 ) *(_BYTE *)(a1 + 26) = a2; return result; } //----- (0044DB90) -------------------------------------------------------- char __stdcall sub_44DB90(int a1) { char result; // al@2 if ( a1 ) result = *(_BYTE *)(a1 + 26); else result = 0; return result; } //----- (0044DBB0) -------------------------------------------------------- int __stdcall sub_44DBB0(int a1, __int16 a2) { int result; // eax@1 result = a1; if ( a1 ) *(_WORD *)(a1 + 27) = a2; return result; } //----- (0044DBD0) -------------------------------------------------------- __int16 __stdcall sub_44DBD0(int a1) { __int16 result; // ax@1 result = a1; if ( a1 ) result = *(_WORD *)(a1 + 27); return result; } //----- (0044DBF0) -------------------------------------------------------- int __stdcall sub_44DBF0(int a1, int a2, const void *a3, int a4) { sub_44C0B0(a1 + 2, a2, a3, a4); return a1 + 2; } //----- (0044DC20) -------------------------------------------------------- int __stdcall sub_44DC20(int a1, int a2, const void *a3, int a4) { sub_44C0B0(a1 + 4, a2, a3, a4); return a1 + 4; } //----- (0044DC50) -------------------------------------------------------- int __thiscall sub_44DC50(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_4BA1D4; *(_DWORD *)(this + 4) = &off_4BA2A4; *(_DWORD *)(this + 8) = &off_4BA374; *(_DWORD *)(this + 12) = &off_4BA444; *(_DWORD *)(this + 16) = &off_4BA514; *(_DWORD *)(this + 20) = &off_4BA5E4; *(_DWORD *)(this + 24) = &off_4BA6B4; *(_DWORD *)(this + 28) = &off_4BA784; *(_DWORD *)(this + 32) = &off_4BA854; *(_DWORD *)(this + 36) = &off_4BA924; *(_DWORD *)(this + 40) = &off_4BA9F4; *(_DWORD *)(this + 44) = &off_4BAAC4; *(_DWORD *)(this + 48) = &off_4BAB94; *(_DWORD *)(this + 52) = &off_4BAC64; *(_DWORD *)(this + 56) = &off_4BAD34; *(_DWORD *)(this + 60) = &off_4BAE04; *(_DWORD *)(this + 64) = &off_4BAED4; *(_DWORD *)(this + 68) = &off_4BAFA4; *(_DWORD *)(this + 72) = &off_4BB074; *(_DWORD *)(this + 76) = &off_4BB144; *(_DWORD *)(this + 80) = &off_4BB214; *(_DWORD *)(this + 84) = &off_4BB2E4; *(_DWORD *)(this + 88) = &off_4BB3B4; *(_DWORD *)(this + 92) = &off_4BB484; *(_DWORD *)(this + 96) = &off_4BB554; *(_DWORD *)(this + 100) = &off_4BB624; *(_DWORD *)(this + 104) = &off_4BB6F4; *(_DWORD *)(this + 108) = &off_4BB7C4; *(_DWORD *)(this + 112) = &off_4BB894; *(_DWORD *)(this + 116) = &off_4BB964; *(_DWORD *)(this + 120) = &off_4BBA34; *(_DWORD *)(this + 124) = &off_4BBB04; *(_DWORD *)(this + 128) = &off_4BBBD4; *(_DWORD *)(this + 132) = &off_4BBCA4; *(_DWORD *)(this + 136) = &off_4BBD74; *(_DWORD *)(this + 140) = &off_4BC004; *(_DWORD *)(this + 144) = &off_4BBE44; *(_DWORD *)(this + 148) = &off_4BBF14; *(_DWORD *)(result + 280) = result; *(_DWORD *)(this + 152) = this + 4; *(_DWORD *)(this + 168) = this + 20; *(_DWORD *)(this + 172) = this + 24; *(_DWORD *)(this + 176) = this + 28; *(_DWORD *)(this + 180) = this + 32; *(_DWORD *)(this + 184) = this + 36; *(_DWORD *)(this + 188) = this + 40; *(_DWORD *)(this + 192) = this + 44; *(_DWORD *)(this + 196) = this + 48; *(_DWORD *)(this + 200) = this + 52; *(_DWORD *)(this + 204) = this + 56; *(_DWORD *)(this + 208) = this + 60; *(_DWORD *)(this + 212) = this + 64; *(_DWORD *)(this + 216) = this + 68; *(_DWORD *)(this + 220) = this + 72; *(_DWORD *)(result + 156) = result + 8; *(_DWORD *)(result + 160) = result + 12; *(_DWORD *)(result + 164) = result + 16; *(_DWORD *)(this + 224) = this + 76; *(_DWORD *)(this + 228) = this + 80; *(_DWORD *)(this + 232) = this + 84; *(_DWORD *)(this + 252) = this + 88; *(_DWORD *)(this + 236) = this + 92; *(_DWORD *)(this + 240) = this + 96; *(_DWORD *)(this + 244) = this + 100; *(_DWORD *)(this + 248) = this + 104; *(_DWORD *)(this + 256) = this + 108; *(_DWORD *)(this + 300) = this + 112; *(_DWORD *)(this + 260) = this + 116; *(_DWORD *)(this + 288) = this + 120; *(_DWORD *)(this + 264) = this + 124; *(_DWORD *)(this + 268) = this + 128; *(_DWORD *)(this + 272) = this + 132; *(_DWORD *)(this + 276) = this + 136; *(_DWORD *)(this + 284) = this + 140; *(_DWORD *)(this + 296) = this + 148; *(_DWORD *)(this + 292) = this + 144; return result; } // 4BA1D4: using guessed type int (__thiscall *off_4BA1D4)(void *, char); // 4BA2A4: using guessed type int (__thiscall *off_4BA2A4)(void *, char); // 4BA374: using guessed type int (__thiscall *off_4BA374)(void *, char); // 4BA444: using guessed type int (__thiscall *off_4BA444)(void *, char); // 4BA514: using guessed type int (__thiscall *off_4BA514)(void *, char); // 4BA5E4: using guessed type int (__thiscall *off_4BA5E4)(void *, char); // 4BA6B4: using guessed type int (__thiscall *off_4BA6B4)(void *, char); // 4BA784: using guessed type int (__thiscall *off_4BA784)(void *, char); // 4BA854: using guessed type int (__thiscall *off_4BA854)(void *, char); // 4BA924: using guessed type int (__thiscall *off_4BA924)(void *, char); // 4BA9F4: using guessed type int (__thiscall *off_4BA9F4)(void *, char); // 4BAAC4: using guessed type int (__thiscall *off_4BAAC4)(void *, char); // 4BAB94: using guessed type int (__thiscall *off_4BAB94)(void *, char); // 4BAC64: using guessed type int (__thiscall *off_4BAC64)(void *, char); // 4BAD34: using guessed type int (__thiscall *off_4BAD34)(void *, char); // 4BAE04: using guessed type int (__thiscall *off_4BAE04)(void *, char); // 4BAED4: using guessed type int (__thiscall *off_4BAED4)(void *, char); // 4BAFA4: using guessed type int (__thiscall *off_4BAFA4)(void *, char); // 4BB074: using guessed type int (__thiscall *off_4BB074)(void *, char); // 4BB144: using guessed type int (__thiscall *off_4BB144)(void *, char); // 4BB214: using guessed type int (__thiscall *off_4BB214)(void *, char); // 4BB2E4: using guessed type int (__thiscall *off_4BB2E4)(void *, char); // 4BB3B4: using guessed type int (__thiscall *off_4BB3B4)(void *, char); // 4BB484: using guessed type int (__thiscall *off_4BB484)(void *, char); // 4BB554: using guessed type int (__thiscall *off_4BB554)(void *, char); // 4BB624: using guessed type int (__thiscall *off_4BB624)(void *, char); // 4BB6F4: using guessed type int (__thiscall *off_4BB6F4)(void *, char); // 4BB7C4: using guessed type int (__thiscall *off_4BB7C4)(void *, char); // 4BB894: using guessed type int (__thiscall *off_4BB894)(void *, char); // 4BB964: using guessed type int (__thiscall *off_4BB964)(void *, char); // 4BBA34: using guessed type int (__thiscall *off_4BBA34)(void *, char); // 4BBB04: using guessed type int (__thiscall *off_4BBB04)(void *, char); // 4BBBD4: using guessed type int (__thiscall *off_4BBBD4)(void *, char); // 4BBCA4: using guessed type int (__thiscall *off_4BBCA4)(void *, char); // 4BBD74: using guessed type int (__thiscall *off_4BBD74)(void *, char); // 4BBE44: using guessed type int (__thiscall *off_4BBE44)(void *, char); // 4BBF14: using guessed type int (__thiscall *off_4BBF14)(void *, char); // 4BC004: using guessed type int (__thiscall *off_4BC004)(void *, char); //----- (0044DF70) -------------------------------------------------------- int __stdcall sub_44DF70(int a1, int a2, const void *a3, int a4) { sub_44C0B0(a1 + 10, a2, a3, a4); return a1 + 10; } //----- (0044DFA0) -------------------------------------------------------- void *__thiscall sub_44DFA0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4BA1D4; if ( a2 & 1 ) operator delete(this); return v2; } // 4BA1D4: using guessed type int (__thiscall *off_4BA1D4)(void *, char); //----- (0044DFD0) -------------------------------------------------------- unsigned int __stdcall sub_44DFD0(int a1, int a2) { memcpy((void *)a2, (const void *)(a1 + 2), 0x3Eu); return ((unsigned int)*(_BYTE *)(a2 + 37) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 37) >> 1) + 37 + 1; } //----- (0044E000) -------------------------------------------------------- unsigned int __stdcall sub_44E000(int a1, int a2) { memcpy((void *)a2, (const void *)(a1 + 2), 0x59u); return ((unsigned int)*(_BYTE *)(a2 + 64) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 64) >> 1) + 64 + 1; } //----- (0044E030) -------------------------------------------------------- unsigned int __stdcall sub_44E030(int a1, int a2) { memcpy((void *)a2, (const void *)(a1 + 2), 0x25u); return ((unsigned int)*(_BYTE *)(a2 + 12) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 12) >> 1) + 12 + 1; } //----- (0044E060) -------------------------------------------------------- unsigned int __stdcall sub_44E060(int a1, int a2) { memcpy((void *)(a1 + 2), (const void *)a2, 0x3Eu); return ((unsigned int)*(_BYTE *)(a2 + 37) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 37) >> 1) + 37 + 1; } //----- (0044E090) -------------------------------------------------------- unsigned int __stdcall sub_44E090(int a1, int a2) { memcpy((void *)(a1 + 2), (const void *)a2, 0x59u); return ((unsigned int)*(_BYTE *)(a2 + 64) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 64) >> 1) + 64 + 1; } //----- (0044E0C0) -------------------------------------------------------- unsigned int __stdcall sub_44E0C0(int a1, int a2) { memcpy((void *)(a1 + 2), (const void *)a2, 0x25u); return ((unsigned int)*(_BYTE *)(a2 + 12) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 12) >> 1) + 12 + 1; } //----- (0044E0F0) -------------------------------------------------------- unsigned int __stdcall sub_44E0F0(int a1) { return 3 * ((unsigned int)*(_BYTE *)(a1 + 37) >> 1) + 38; } //----- (0044E110) -------------------------------------------------------- unsigned int __stdcall sub_44E110(int a1) { return 3 * ((unsigned int)*(_BYTE *)(a1 + 64) >> 1) + 65; } //----- (0044E130) -------------------------------------------------------- unsigned int __stdcall sub_44E130(int a1) { return 3 * ((unsigned int)*(_BYTE *)(a1 + 12) >> 1) + 13; } //----- (0044E150) -------------------------------------------------------- signed int __stdcall sub_44E150(int a1, int a2, int a3) { signed int result; // eax@1 *(_DWORD *)a2 = -1; *(_DWORD *)(a2 + 4) = -1; memset((void *)(a2 + 8), 0, 0x67u); result = 65535; *(_WORD *)(a2 + 8) = -1; return result; } //----- (0044E180) -------------------------------------------------------- int __thiscall sub_44E180(int this) { int result; // eax@1 result = this; *(_BYTE *)(this + 2) = 2; *(_WORD *)(this + 3) = 0; *(_DWORD *)(this + 8192) = 0; return result; } //----- (0044E1A0) -------------------------------------------------------- signed int __thiscall sub_44E1A0(int this, unsigned int a2) { int v2; // esi@1 signed int result; // eax@2 char v4; // [sp+4h] [bp-104h]@5 unsigned int v5; // [sp+104h] [bp-4h]@1 int v6; // [sp+108h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v2 = this; if ( a2 + 2 >= 0x100 ) { if ( a2 > 0x1FFB ) { sprintf( &v4, "ERROR - CSendPacket::SetSize=%d, Current/Old Dep=%d, Cmd=%d", a2, (unsigned int)*(_WORD *)(this + 3) >> 10, *(_WORD *)(this + 3) & 0x3FF); sub_446350(1, "Msg", "%s", &v4); *(_BYTE *)(v2 + 2) = 2; *(_DWORD *)(v2 + 8192) = 0; *(_WORD *)(v2 + 3) = 0; result = 0; } else { *(_WORD *)(this + 1) = a2 + 2; *(_BYTE *)this = 0; *(_DWORD *)(this + 8192) = a2; result = 1; } } else { *(_BYTE *)(this + 2) = a2 + 2; *(_DWORD *)(this + 8192) = a2; result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0044E280) -------------------------------------------------------- signed int __thiscall sub_44E280(int this, const void *a2, size_t a3) { int v3; // eax@1 void *v4; // edi@1 signed int result; // eax@1 v3 = *(_DWORD *)(this + 8192); v4 = (void *)(v3 + this + 5); result = sub_44E1A0(this, a3 + v3); if ( result ) { if ( a2 ) { if ( a3 ) memmove(v4, a2, a3); } result = 1; } return result; } //----- (0044E2D0) -------------------------------------------------------- int __thiscall sub_44E2D0(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 8192); if ( (unsigned int)(v1 + 2) >= 0x100 ) result = v1 + 5; else result = v1 + 3; return result; } //----- (0044E2F0) -------------------------------------------------------- int __thiscall sub_44E2F0(int this) { int result; // eax@1 result = this; if ( (unsigned int)(*(_DWORD *)(this + 8192) + 2) < 0x100 ) result = this + 2; return result; } //----- (0044E310) -------------------------------------------------------- int __thiscall sub_44E310(int this, unsigned __int16 a2, size_t a3, const void *a4) { int v4; // esi@1 char v6; // [sp+Ch] [bp-104h]@5 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = this; *(_WORD *)(this + 3) = a2; if ( sub_44E1A0(this, a3) ) { if ( a4 && a3 ) memmove((void *)(v4 + 5), a4, a3); } else { sprintf( &v6, "FATAL - ERROR, CSendPacket::ID, Dep=%d, Cmd=%d, nDataSize=%d, pData=%p", (unsigned int)a2 >> 10, a2 & 0x3FF, a3, a4); sub_446350(1, "Msg", "%s", &v6); } return v4; } // 4DE38C: using guessed type int __security_cookie; //----- (0044E3B0) -------------------------------------------------------- int __thiscall sub_44E3B0(int this) { int v1; // esi@1 v1 = this; sub_4506C0(this); *(_DWORD *)v1 = &off_4BC15C; *(_DWORD *)(v1 + 12) = 0; return v1; } // 4BC15C: using guessed type int (__thiscall *off_4BC15C)(void *, char); //----- (0044E3D0) -------------------------------------------------------- char __cdecl sub_44E3D0() { return 0; } //----- (0044E3E0) -------------------------------------------------------- SQLRETURN __thiscall sub_44E3E0(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 12) ) { SQLFreeHandle(3, *(SQLHANDLE *)(this + 12)); *(_DWORD *)(v1 + 12) = 0; } return sub_4508E0(v1); } //----- (0044E410) -------------------------------------------------------- bool sub_44E410(int a1, const char *a2, ...) { int v2; // eax@1 SQLCHAR StatementText; // [sp+4h] [bp-2004h]@1 unsigned int v5; // [sp+2004h] [bp-4h]@1 int v6; // [sp+2008h] [bp+0h]@1 va_list va; // [sp+2018h] [bp+10h]@1 va_start(va, a2); v5 = (unsigned int)&v6 ^ __security_cookie; vsprintf((char *)&StatementText, a2, va); SQLCloseCursor(*(SQLHSTMT *)(a1 + 12)); SQLFreeStmt(*(SQLHSTMT *)(a1 + 12), 0); v2 = SQLExecDirect(*(SQLHSTMT *)(a1 + 12), &StatementText, -3); return !(_WORD)v2 || v2 == 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0044E4A0) -------------------------------------------------------- bool __thiscall sub_44E4A0(int this) { void *v1; // ST00_4@1 int v2; // eax@1 v1 = *(void **)(this + 12); *(_DWORD *)(this + 16) = 0; v2 = SQLFetch(v1); return !(_WORD)v2 || v2 == 1; } //----- (0044E4D0) -------------------------------------------------------- SQLRETURN __thiscall sub_44E4D0(int this) { return SQLCloseCursor(*(SQLHSTMT *)(this + 12)); } //----- (0044E4E0) -------------------------------------------------------- int __thiscall sub_44E4E0(int this, SQLPOINTER TargetValue) { int v2; // esi@1 v2 = this; ++*(_DWORD *)(v2 + 16); SQLGetData(*(SQLHSTMT *)(this + 12), *(_WORD *)(this + 16), -16, TargetValue, 4, 0); return v2; } //----- (0044E510) -------------------------------------------------------- int __thiscall sub_44E510(int this, SQLPOINTER TargetValue) { int v2; // esi@1 v2 = this; ++*(_DWORD *)(v2 + 16); SQLGetData(*(SQLHSTMT *)(this + 12), *(_WORD *)(this + 16), -28, TargetValue, 1, 0); return v2; } //----- (0044E540) -------------------------------------------------------- int __thiscall sub_44E540(int this, SQLPOINTER TargetValue) { int v2; // esi@1 v2 = this; ++*(_DWORD *)(v2 + 16); SQLGetData(*(SQLHSTMT *)(this + 12), *(_WORD *)(this + 16), -17, TargetValue, 2, 0); return v2; } //----- (0044E570) -------------------------------------------------------- int __thiscall sub_44E570(int this, SQLPOINTER TargetValue) { int v2; // esi@1 v2 = this; ++*(_DWORD *)(v2 + 16); SQLGetData(*(SQLHSTMT *)(this + 12), *(_WORD *)(this + 16), -18, TargetValue, 4, 0); return v2; } //----- (0044E5A0) -------------------------------------------------------- int __thiscall sub_44E5A0(int this, SQLPOINTER TargetValue) { int v2; // esi@1 v2 = this; ++*(_DWORD *)(v2 + 16); SQLGetData(*(SQLHSTMT *)(this + 12), *(_WORD *)(this + 16), -25, TargetValue, 8, 0); return v2; } //----- (0044E5D0) -------------------------------------------------------- int __thiscall sub_44E5D0(int this, SQLPOINTER TargetValue) { int v2; // esi@1 v2 = this; ++*(_DWORD *)(v2 + 16); SQLGetData(*(SQLHSTMT *)(this + 12), *(_WORD *)(this + 16), -27, TargetValue, 8, 0); return v2; } //----- (0044E600) -------------------------------------------------------- int __thiscall sub_44E600(int this, SQLPOINTER TargetValue) { int v2; // esi@1 SQLINTEGER NumericAttribute; // [sp+4h] [bp-4h]@1 v2 = this; ++*(_DWORD *)(v2 + 16); SQLColAttribute(*(SQLHSTMT *)(this + 12), *(_WORD *)(this + 16), 0x3EBu, 0, 0, 0, &NumericAttribute); SQLGetData(*(SQLHSTMT *)(v2 + 12), *(_WORD *)(v2 + 16), 1, TargetValue, NumericAttribute, 0); return v2; } //----- (0044E650) -------------------------------------------------------- int __thiscall sub_44E650(int this, SQLPOINTER TargetValue) { int v2; // esi@1 SQLINTEGER v3; // edi@1 size_t NumericAttribute; // [sp+Ch] [bp-4h]@1 v2 = this; ++*(_DWORD *)(v2 + 16); SQLColAttribute(*(SQLHSTMT *)(this + 12), *(_WORD *)(this + 16), 0x3EBu, 0, 0, 0, &NumericAttribute); v3 = NumericAttribute; memset(TargetValue, 0, NumericAttribute); SQLGetData(*(SQLHSTMT *)(v2 + 12), *(_WORD *)(v2 + 16), -2, TargetValue, v3, (SQLINTEGER *)&NumericAttribute); return v2; } //----- (0044E6B0) -------------------------------------------------------- int __thiscall sub_44E6B0(int this, SQLPOINTER TargetValue) { int v2; // esi@1 v2 = this; ++*(_DWORD *)(v2 + 16); SQLGetData(*(SQLHSTMT *)(this + 12), *(_WORD *)(this + 16), 11, TargetValue, 16, 0); return v2; } //----- (0044E6E0) -------------------------------------------------------- int __thiscall sub_44E6E0(int this) { return *(_DWORD *)(this + 12); } //----- (0044E6F0) -------------------------------------------------------- SQLRETURN __thiscall sub_44E6F0(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; *(_DWORD *)this = &off_4BC15C; v2 = *(void **)(this + 12); if ( v2 ) { SQLFreeHandle(3, v2); *(_DWORD *)(v1 + 12) = 0; } sub_4508E0(v1); return sub_450920(v1); } // 4BC15C: using guessed type int (__thiscall *off_4BC15C)(void *, char); //----- (0044E770) -------------------------------------------------------- char __thiscall sub_44E770(int this, SQLCHAR *szConnStrIn) { int v2; // edi@1 SQLHANDLE *v3; // esi@1 SQLRETURN v4; // ax@4 v2 = this; v3 = (SQLHANDLE *)(this + 12); if ( *(_DWORD *)(this + 12) ) { SQLFreeHandle(3, *(SQLHANDLE *)(this + 12)); *v3 = 0; } sub_4508E0(v2); if ( !sub_450990((void *)v2, szConnStrIn) ) return 0; v4 = SQLAllocHandle(3, *(SQLHANDLE *)(v2 + 8), v3); if ( v4 && v4 != 1 ) { *v3 = 0; return 0; } return 1; } //----- (0044E7E0) -------------------------------------------------------- int __thiscall sub_44E7E0(int this, char a2) { int v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_4BC15C; v3 = *(void **)(this + 12); if ( v3 ) { SQLFreeHandle(3, v3); *(_DWORD *)(v2 + 12) = 0; } sub_4508E0(v2); sub_450920(v2); if ( a2 & 1 ) operator delete((void *)v2); return v2; } // 4BC15C: using guessed type int (__thiscall *off_4BC15C)(void *, char); //----- (0044E870) -------------------------------------------------------- void *__thiscall sub_44E870(void *this) { return this; } //----- (0044E880) -------------------------------------------------------- int __stdcall sub_44E880(int a1) { return a1; } //----- (0044E890) -------------------------------------------------------- int __stdcall sub_44E890(int a1) { return a1 + 3668; } //----- (0044E8A0) -------------------------------------------------------- int __stdcall sub_44E8A0(int a1) { return a1 + 20376; } //----- (0044E8B0) -------------------------------------------------------- int __stdcall sub_44E8B0(int a1) { return a1 + 20960; } //----- (0044E8C0) -------------------------------------------------------- signed int __stdcall sub_44E8C0(int a1, int a2) { return 1; } //----- (0044E8D0) -------------------------------------------------------- void *__thiscall sub_44E8D0(void *this) { void *result; // eax@1 int v2; // ecx@1 result = this; v2 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4B8734; *(_DWORD *)result = v2; return result; } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); //----- (0044E8E0) -------------------------------------------------------- void __thiscall sub_44E8E0(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 4); *(_DWORD *)this = off_4BC16C; if ( v2 ) { operator delete(v2); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; } } // 4BC16C: using guessed type int (*off_4BC16C[4])(); //----- (0044E910) -------------------------------------------------------- signed int __thiscall sub_44E910(int this) { int v1; // edx@1 int v2; // eax@1 v1 = *(_DWORD *)(this + 12); v2 = *(_DWORD *)(this + 4) + *(_DWORD *)(this + 20) - v1; if ( *(_DWORD *)(this + 4) + *(_DWORD *)(this + 20) - v1 > 0 && (unsigned int)v2 >= 1 ) { if ( *(_BYTE *)v1 ) { if ( (unsigned int)v2 >= 3 ) return 1; } else { if ( (unsigned int)v2 >= 5 ) return 2; } } return 0; } //----- (0044E950) -------------------------------------------------------- int __thiscall sub_44E950(void *this) { void *v1; // esi@1 int result; // eax@1 int v3; // eax@2 int v4; // [sp+4h] [bp-4h]@2 v1 = this; result = (*(int (**)(void))(*(_DWORD *)this + 8))(); if ( result ) { v3 = (*(int (__thiscall **)(void *, int *))(*(_DWORD *)v1 + 16))(v1, &v4); if ( v4 < 0 || v3 > *((_DWORD *)v1 + 2) || (unsigned int)v3 <= 2 ) result = 2; else result = *((_DWORD *)v1 + 1) + *((_DWORD *)v1 + 5) - *((_DWORD *)v1 + 3) >= v3; } return result; } //----- (0044E9B0) -------------------------------------------------------- int __thiscall sub_44E9B0(int this, int a2) { int result; // eax@4 int v3; // eax@5 if ( !a2 ) return 0; if ( !*(_DWORD *)(this + 12) ) { *(_DWORD *)a2 = -1; return 0; } *(_DWORD *)a2 = 0; v3 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v3 ) result = *(_BYTE *)v3 + 1; else result = *(_WORD *)(v3 + 1) + 3; return result; } //----- (0044E9F0) -------------------------------------------------------- __int16 __thiscall sub_44E9F0(int this) { int v1; // eax@1 __int16 result; // ax@2 v1 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v1 ) result = *(_BYTE *)v1; else result = *(_WORD *)(v1 + 1); return result; } //----- (0044EA10) -------------------------------------------------------- int __thiscall sub_44EA10(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v1 ) result = v1 + 1; else result = v1 + 3; return result; } //----- (0044EA20) -------------------------------------------------------- int __thiscall sub_44EA20(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v1 ) result = v1 + 3; else result = v1 + 5; return result; } //----- (0044EA30) -------------------------------------------------------- signed int __thiscall sub_44EA30(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 signed int result; // eax@3 v4 = this; v5 = (*(int (**)(void))(*(_DWORD *)this + 12))(); if ( v5 ) { if ( v5 == 1 ) { *(_WORD *)a2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 52))(v4); *(_DWORD *)a3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 28))(v4); *(_DWORD *)a4 = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 20))(v4); result = 1; } else { result = 2; } } else { result = 0; } return result; } //----- (0044EA90) -------------------------------------------------------- int __thiscall sub_44EA90(void *this) { void *v1; // esi@1 int result; // eax@1 int v3; // [sp+4h] [bp-4h]@1 v1 = this; result = (*(int (__stdcall **)(int *))(*(_DWORD *)this + 16))(&v3); if ( v3 >= 0 ) *((_DWORD *)v1 + 3) += result; return result; } //----- (0044EAC0) -------------------------------------------------------- signed int __thiscall sub_44EAC0(int this) { int v1; // esi@1 int v2; // eax@1 signed int result; // eax@2 const void *v4; // ecx@3 void *v5; // edx@3 int v6; // edi@3 int v7; // eax@5 v1 = this; v2 = *(_DWORD *)(this + 20); if ( v2 >= *(_DWORD *)(this + 8) ) { v4 = *(const void **)(this + 12); v5 = *(void **)(v1 + 4); v6 = v4 - v5; if ( v4 == v5 ) { result = 0; } else { memmove_0(v5, v4, v2 - v6); v7 = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 20) -= v6; *(_DWORD *)(v1 + 12) = v7; result = 1; } } else { result = 0; } return result; } //----- (0044EB00) -------------------------------------------------------- int __thiscall sub_44EB00(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; if ( !*(_DWORD *)(this + 4) ) { *(_DWORD *)(this + 4) = unknown_libname_17(8192); *(_DWORD *)(v1 + 8) = 8192; } result = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 12) = result; *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 16) = 0; return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (0044EB40) -------------------------------------------------------- __int16 __thiscall sub_44EB40(int this) { int v1; // eax@1 __int16 result; // ax@2 v1 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v1 ) result = *(_WORD *)(v1 + 1); else result = *(_WORD *)(v1 + 3); return result; } //----- (0044EB60) -------------------------------------------------------- void *__thiscall sub_44EB60(int this, const void *a2, int a3) { size_t v3; // ebx@1 int v4; // esi@1 int v5; // eax@1 int v6; // eax@2 void *result; // eax@6 v3 = a3; v4 = this; v5 = *(_DWORD *)(this + 20); if ( v5 + a3 > *(_DWORD *)(this + 8) ) { v6 = operator new(1u); if ( v6 ) { *(_BYTE *)v6 = 0; a3 = v6; } else { a3 = 0; } _CxxThrowException(&a3, &unk_4D2110); } result = memmove((void *)(v5 + *(_DWORD *)(this + 4)), a2, a3); *(_DWORD *)(v4 + 20) += v3; **(_BYTE **)(v4 + 12) += v3; return result; } // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0044EBD0) -------------------------------------------------------- int __thiscall sub_44EBD0(int this) { return *(_DWORD *)(this + 8) - *(_DWORD *)(this + 20); } //----- (0044EBE0) -------------------------------------------------------- int __thiscall sub_44EBE0(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)this = off_4BC16C; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 12) = 0; v2 = unknown_libname_17(8192); *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)(v1 + 12) = v2; *(_DWORD *)(v1 + 8) = 8192; return v1; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4BC16C: using guessed type int (*off_4BC16C[4])(); //----- (0044EC20) -------------------------------------------------------- int __thiscall sub_44EC20(int this, __int16 a2, int a3, const void *a4) { int v4; // esi@1 signed int v5; // edi@1 unsigned int v6; // ebx@1 int v7; // eax@5 int v8; // eax@8 int result; // eax@9 v4 = this; v5 = (unsigned int)(a3 + 2) < 0x100 ? 3 : 5; v6 = v5 + a3; if ( *(_DWORD *)(this + 4) && *(_DWORD *)(this + 8) < (signed int)v6 ) { operator delete(*(void **)(this + 4)); *(_DWORD *)(v4 + 4) = 0; } if ( !*(_DWORD *)(v4 + 4) ) { v7 = unknown_libname_17(v6); *(_DWORD *)(v4 + 4) = v7; *(_DWORD *)(v4 + 12) = v7; *(_DWORD *)(v4 + 8) = v6; } *(_DWORD *)(v4 + 20) = v5; if ( a4 ) sub_44EB60(v4, a4, a3); v8 = *(_DWORD *)(v4 + 12); if ( v5 == 3 ) { *(_WORD *)(v8 + 1) = a2; **(_BYTE **)(v4 + 12) = v6 - 1; *(_DWORD *)(v4 + 16) = 3; result = v4; } else { *(_WORD *)(v8 + 3) = a2; **(_BYTE **)(v4 + 12) = 0; *(_WORD *)(*(_DWORD *)(v4 + 12) + 1) = v6 - 3; *(_DWORD *)(v4 + 16) = v5; result = v4; } return result; } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (0044ECE0) -------------------------------------------------------- void *__thiscall sub_44ECE0(void *this) { void *result; // eax@1 int v2; // ecx@1 result = this; v2 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4B87E0; *(_DWORD *)result = v2; return result; } // 4B87E0: using guessed type int (__stdcall *off_4B87E0)(int, int); //----- (0044ECF0) -------------------------------------------------------- int __thiscall sub_44ECF0(int this) { int v1; // esi@1 v1 = this; sub_43E740(this); *(_DWORD *)v1 = &off_4BC1AC; return v1; } // 4BC1AC: using guessed type int (__thiscall *off_4BC1AC)(void *, char); //----- (0044ED10) -------------------------------------------------------- void __thiscall sub_44ED10(int this) { *(_DWORD *)this = &off_4BC1AC; sub_43EC90(this); } // 4BC1AC: using guessed type int (__thiscall *off_4BC1AC)(void *, char); //----- (0044ED20) -------------------------------------------------------- void *__thiscall sub_44ED20(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4BC1AC; sub_43EC90((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4BC1AC: using guessed type int (__thiscall *off_4BC1AC)(void *, char); //----- (0044ED50) -------------------------------------------------------- LONG __thiscall sub_44ED50(void *Destination) { volatile LONG *v1; // esi@1 signed int v2; // ebx@1 LONG result; // eax@2 signed int v4; // [sp+Ch] [bp-4h]@4 v1 = (volatile LONG *)Destination; v2 = 3999; while ( 1 ) { result = InterlockedCompareExchange(v1, 1, 0); if ( !result ) break; _mm_pause(); --v2; if ( v2 < 0 ) { v4 = 3999; while ( 1 ) { SwitchToThread(); result = InterlockedCompareExchange(v1, 1, 0); if ( !result ) break; --v4; if ( v4 < 0 ) { do { Sleep(0x3E8u); result = InterlockedCompareExchange(v1, 1, 0); } while ( result ); return result; } } return result; } } return result; } //----- (0044EDC0) -------------------------------------------------------- int __thiscall sub_44EDC0(int this) { int v1; // ebx@1 signed int v2; // edi@1 int v3; // eax@2 int v4; // esi@2 v1 = this; v2 = 0; *(_DWORD *)(this + 2052) = 0; *(_DWORD *)(this + 2048) = 0; do { v3 = operator new(0x2010u); v4 = v3; if ( v3 ) { *(_DWORD *)v3 = &off_4BC1B4; InterlockedIncrement(&dword_6EC468); } else { v4 = 0; } *(_DWORD *)(v1 + 4 * v2) = v4; if ( !v4 ) loc_44B5D0("IOBufferContainer::IOBufferContainer"); ++v2; } while ( v2 < 512 ); return v1; } // 4BC1B4: using guessed type int (__thiscall *off_4BC1B4)(void *, char); //----- (0044EE20) -------------------------------------------------------- void *__thiscall sub_44EE20(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4BC1B4; if ( a2 & 1 ) operator delete(this); return v2; } // 4BC1B4: using guessed type int (__thiscall *off_4BC1B4)(void *, char); //----- (0044EE50) -------------------------------------------------------- int __cdecl sub_44EE50() { __int32 v0; // esi@1 int v1; // edi@3 unsigned int v2; // esi@5 char *v3; // ebx@5 int v4; // eax@7 int v5; // eax@8 int v6; // esi@8 volatile LONG *v8; // [sp-8h] [bp-14h]@3 LONG v9; // [sp-4h] [bp-10h]@3 v0 = InterlockedIncrement(&Addend) & 0xF; if ( InterlockedCompareExchange(&Destination + 2 * v0, 1, 0) ) sub_44ED50(&Destination + 2 * v0); v1 = dword_6F44F8[2 * v0]; v9 = 0; v8 = &Destination + 2 * v0; if ( v1 ) { dword_6F44F8[2 * v0] = *(_DWORD *)(v1 + 8204); } else { InterlockedExchange(v8, 0); v2 = 2056 * v0; v3 = (char *)&unk_6ECC7C + v2; if ( InterlockedCompareExchange((volatile LONG *)((char *)&unk_6ECC7C + v2), 1, 0) ) sub_44ED50((char *)&unk_6ECC7C + v2); v4 = dword_6ECC78[v2 / 4]; if ( v4 < 512 ) { v1 = *(int *)((char *)&dword_6EC478[v4] + v2); dword_6ECC78[v2 / 4] = v4 + 1; } else { v5 = operator new(0x2010u); v6 = v5; if ( v5 ) { *(_DWORD *)v5 = &off_4BC1B4; InterlockedIncrement(&dword_6EC468); v1 = v6; } else { v1 = 0; } } v9 = 0; v8 = (volatile LONG *)v3; } InterlockedExchange(v8, v9); *(_DWORD *)(v1 + 8196) = 0; *(_DWORD *)(v1 + 8200) = 1; *(_DWORD *)(v1 + 8204) = 0; InterlockedIncrement(&dword_6EC46C); return v1; } // 4BC1B4: using guessed type int (__thiscall *off_4BC1B4)(void *, char); // 6EC478: using guessed type int dword_6EC478[]; // 6ECC78: using guessed type int dword_6ECC78[]; // 6F44F8: using guessed type int dword_6F44F8[]; //----- (0044EF40) -------------------------------------------------------- LONG __thiscall sub_44EF40(void *this) { int v1; // ebx@1 int *v2; // esi@1 v1 = (int)this; InterlockedDecrement(&dword_6EC46C); v2 = &dword_6F44F8[2 * (InterlockedDecrement(&dword_6EC470) & 0xF)]; if ( InterlockedCompareExchange((volatile LONG *)v2 + 1, 1, 0) ) sub_44ED50(v2 + 1); *(_DWORD *)(v1 + 8204) = *v2; *v2 = v1; return InterlockedExchange((volatile LONG *)v2 + 1, 0); } // 6F44F8: using guessed type int dword_6F44F8[]; //----- (0044EFA0) -------------------------------------------------------- char __thiscall sub_44EFA0(int this, const char *a2) { const char *v2; // eax@1 const char *v3; // edx@2 char v4; // bl@3 int v5; // edx@6 const char v6; // cl@7 v2 = a2; if ( !a2 ) goto LABEL_13; v3 = a2; do v4 = *v3++; while ( v4 ); if ( v3 != a2 + 1 && strlen(a2) < 0x100 ) { v5 = this + 1 - (_DWORD)a2; do { v6 = *v2; v2[v5] = *v2; ++v2; } while ( v6 ); } else { LABEL_13: *(_DWORD *)(this + 1) = dword_4BC1E0; *(_DWORD *)(this + 5) = dword_4BC1E4; LOBYTE(v2) = byte_4BC1E8; *(_BYTE *)(this + 9) = byte_4BC1E8; } return (char)v2; } // 4BC1E0: using guessed type int dword_4BC1E0; // 4BC1E4: using guessed type int dword_4BC1E4; // 4BC1E8: using guessed type char byte_4BC1E8; //----- (0044F010) -------------------------------------------------------- char sub_44F010(int a1, const char *a2, ...) { int v3; // eax@3 FILE *v4; // eax@10 FILE *v5; // eax@11 char *v6; // eax@13 char v7; // cl@14 struct _SYSTEMTIME SystemTime; // [sp+4h] [bp-1514h]@3 char v9; // [sp+14h] [bp-1504h]@16 char v10; // [sp+1014h] [bp-504h]@5 char v11; // [sp+1414h] [bp-104h]@3 char v12; // [sp+1494h] [bp-84h]@3 unsigned int v13; // [sp+1514h] [bp-4h]@1 int v14; // [sp+1518h] [bp+0h]@1 va_list va; // [sp+1528h] [bp+10h]@1 va_start(va, a2); v13 = (unsigned int)&v14 ^ __security_cookie; if ( !*(_BYTE *)a1 ) return 1; GetLocalTime(&SystemTime); sprintf(&v12, "%04d-%02d-%02d", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); sprintf( &v11, "%02d:%02d:%02d:%03d", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond, SystemTime.wMilliseconds); v3 = *(_DWORD *)(a1 + 1316); if ( v3 ) { if ( v3 == 1 ) sprintf(&v10, "%s\\%s_%04d-%02d-%02d.txt", ".\\Log", a1 + 1, SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); } else { sprintf( &v10, "%s\\%s_%04d-%02d-%02d %02d.txt", ".\\Log", a1 + 1, SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay, SystemTime.wHour); } if ( strcmp((const char *)(a1 + 284), &v10) ) { if ( *(_DWORD *)(a1 + 1308) ) fclose(*(FILE **)(a1 + 1308)); v4 = fopen(&v10, "a+"); *(_DWORD *)(a1 + 1308) = v4; if ( !v4 ) { _mkdir(".\\Log"); v5 = fopen(&v10, "a+"); *(_DWORD *)(a1 + 1308) = v5; if ( !v5 ) return 0; } v6 = &v10; do { v7 = *v6; v6[a1 + 284 - (_DWORD)&v10] = *v6; ++v6; } while ( v7 ); *(_DWORD *)(a1 + 1312) = 1; } vsprintf(&v9, a2, va); fprintf(*(FILE **)(a1 + 1308), "%06d %s %s\t%s\n", *(_DWORD *)(a1 + 1312), &v12, &v11, &v9); fflush(*(FILE **)(a1 + 1308)); ++*(_DWORD *)(a1 + 1312); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0044F270) -------------------------------------------------------- int __cdecl sub_44F270(int a1) { int result; // eax@1 memset(&StackFrame, 0, 0x108u); LODWORD(StackFrame.AddrPC.Offset) = *(_DWORD *)(a1 + 184); StackFrame.AddrPC.Offset = (unsigned int)StackFrame.AddrPC.Offset; StackFrame.AddrPC.Mode = 3; LODWORD(StackFrame.AddrStack.Offset) = *(_DWORD *)(a1 + 196); StackFrame.AddrStack.Offset = LODWORD(StackFrame.AddrStack.Offset); StackFrame.AddrStack.Mode = 3; result = *(_DWORD *)(a1 + 180); LODWORD(StackFrame.AddrFrame.Offset) = *(_DWORD *)(a1 + 180); StackFrame.AddrFrame.Offset = LODWORD(StackFrame.AddrFrame.Offset); StackFrame.AddrFrame.Mode = 3; return result; } //----- (0044F2F0) -------------------------------------------------------- BOOL __stdcall ReadMemoryRoutine(int a1, LPCVOID lpBaseAddress, int a3, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead) { HANDLE v6; // eax@1 v6 = GetCurrentProcess(); return ReadProcessMemory(v6, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead); } //----- (0044F320) -------------------------------------------------------- int __cdecl sub_44F320(unsigned int a1) { int result; // eax@4 if ( a1 > 0xC0000005 ) { if ( a1 > 0xE06D7363 ) { LABEL_30: result = 0; } else { if ( a1 == -529697949 ) { result = (int)"Microsoft C++ Exception"; } else { switch ( a1 + 1073741818 ) { case 0x86u: result = (int)"EXCEPTION_ARRAY_BOUNDS_EXCEEDED"; break; case 0x87u: result = (int)"EXCEPTION_FLT_DENORMAL_OPERAND"; break; case 0x88u: result = (int)"EXCEPTION_FLT_DIVIDE_BY_ZERO"; break; case 0x89u: result = (int)"EXCEPTION_FLT_INEXACT_RESULT"; break; case 0x8Au: result = (int)"EXCEPTION_FLT_INVALID_OPERATION"; break; case 0x8Bu: result = (int)"EXCEPTION_FLT_OVERFLOW"; break; case 0x8Cu: result = (int)"EXCEPTION_FLT_STACK_CHECK"; break; case 0x8Du: result = (int)"EXCEPTION_FLT_UNDERFLOW"; break; case 0x8Eu: result = (int)"EXCEPTION_INT_DIVIDE_BY_ZERO"; break; case 0x8Fu: result = (int)"EXCEPTION_INT_OVERFLOW"; break; case 0x90u: result = (int)"EXCEPTION_PRIV_INSTRUCTION"; break; case 0u: result = (int)"EXCEPTION_IN_PAGE_ERROR"; break; case 0x17u: result = (int)"EXCEPTION_ILLEGAL_INSTRUCTION"; break; case 0x1Fu: result = (int)"EXCEPTION_NONCONTINUABLE_EXCEPTION"; break; case 0xF7u: result = (int)"EXCEPTION_STACK_OVERFLOW"; break; case 0x20u: result = (int)"EXCEPTION_INVALID_DISPOSITION"; break; case 2u: result = (int)"EXCEPTION_INVALID_HANDLE"; break; default: goto LABEL_30; } } } } else { if ( a1 == -1073741819 ) { result = (int)"EXCEPTION_ACCESS_VIOLATION"; } else { switch ( a1 ) { case 0x80000002u: result = (int)"EXCEPTION_DATATYPE_MISALIGNMENT"; break; case 0x80000003u: result = (int)"EXCEPTION_BREAKPOINT"; break; case 0x80000004u: result = (int)"EXCEPTION_SINGLE_STEP"; break; case 0x80000001u: result = (int)"EXCEPTION_GUARD_PAGE"; break; default: goto LABEL_30; } } } return result; } //----- (0044F570) -------------------------------------------------------- void __cdecl sub_44F570() { DWORD v0; // eax@2 HANDLE v1; // eax@2 if ( !dword_6F5D70 ) { v0 = SymGetOptions(); SymSetOptions(v0 | 0x10); v1 = GetCurrentProcess(); dword_6F5D70 = SymInitialize(v1, 0, 1); } } // 6F5D70: using guessed type int dword_6F5D70; //----- (0044F5A0) -------------------------------------------------------- void __cdecl sub_44F5A0() { HANDLE v0; // eax@2 if ( dword_6F5D70 == 1 ) { v0 = GetCurrentProcess(); SymCleanup(v0); dword_6F5D70 = 0; } } // 6F5D70: using guessed type int dword_6F5D70; //----- (0044F5D0) -------------------------------------------------------- int __userpurge sub_44F5D0(int a1, int a2) { HANDLE v2; // ST0C_4@1 HANDLE v3; // eax@1 DWORD64 v4; // ST20_8@3 HANDLE v5; // eax@3 int v6; // edx@3 int v7; // edi@3 int v8; // esi@5 char *v9; // eax@9 int v10; // eax@10 int v11; // edx@10 char *v12; // edi@10 char v13; // cl@11 int v14; // edx@12 char v15; // cl@13 int v16; // esi@14 DWORD64 v17; // ST18_8@16 HANDLE v18; // eax@16 int result; // eax@21 int v20; // eax@23 DWORD64 v21; // ST18_8@27 HANDLE v22; // eax@27 unsigned int v23; // [sp-10h] [bp-40h]@1 unsigned __int64 pdwDisplacement; // [sp+0h] [bp-30h]@16 int v25; // [sp+8h] [bp-28h]@3 int v26; // [sp+Ch] [bp-24h]@3 int v27; // [sp+14h] [bp-1Ch]@5 unsigned int *v28; // [sp+18h] [bp-18h]@1 int v29; // [sp+20h] [bp-10h]@1 int (__cdecl *v30)(PEXCEPTION_RECORD, PVOID, int); // [sp+24h] [bp-Ch]@1 unsigned int v31; // [sp+28h] [bp-8h]@1 int v32; // [sp+2Ch] [bp-4h]@1 int v33; // [sp+30h] [bp+0h]@1 v30 = _except_handler4; v29 = a1; v31 = __security_cookie ^ (unsigned int)&unk_4D2168; v23 = (unsigned int)&v33 ^ __security_cookie; v28 = &v23; v32 = 0; sub_44F570(); v2 = GetCurrentThread(); v3 = GetCurrentProcess(); if ( StackWalk64( 0x14Cu, v3, v2, &StackFrame, &unk_6F5990, (PREAD_PROCESS_MEMORY_ROUTINE64)ReadMemoryRoutine, SymFunctionTableAccess64, SymGetModuleBase64, 0) && StackFrame.AddrFrame.Offset && ((v4 = StackFrame.AddrPC.Offset, v5 = GetCurrentProcess(), v7 = ((int (__stdcall *)(HANDLE, _DWORD, _DWORD))SymGetModuleBase64)(v5, v4, HIDWORD(v4)), v25 = v7, v26 = v6, v7) || v6) ) { v27 = 0; v8 = wsprintfA(byte_6F4578, "%04X:%08X", dword_6F5A4C, StackFrame.AddrPC.Offset); v27 = v8; if ( (a2 & 1) == 1 ) { v8 += wsprintfA( &byte_6F4578[v8], " (0x%08X 0x%08X 0x%08X 0x%08X)", StackFrame.Params[0], StackFrame.Params[1], StackFrame.Params[2], StackFrame.Params[3]); v27 = v8; } if ( (a2 & 2) == 2 ) { v8 += wsprintfA(&byte_6F4578[v8], ", "); v27 = v8; if ( (signed int)GetModuleFileNameA((HMODULE)v7, Filename, 0x800u) > 0 ) { v9 = strrchr(Filename, 92); if ( v9 ) { v10 = (int)(v9 + 1); v11 = v10; v12 = &byte_6F4578[v8]; do { v13 = *(_BYTE *)v11; *v12++ = *(_BYTE *)v11++; } while ( v13 ); v14 = v10 + 1; do v15 = *(_BYTE *)v10++; while ( v15 ); v16 = v10 - v14 + v8; v27 = v16; v8 = wsprintfA(&byte_6F4578[v16], ", ") + v16; v27 = v8; } } } if ( (a2 & 4) == 4 ) { memset(&Symbol, 0, 0x400u); Symbol.SizeOfStruct = 32; Symbol.MaxNameLength = 992; Symbol.Address = StackFrame.AddrPC.Offset; v17 = StackFrame.AddrPC.Offset; v18 = GetCurrentProcess(); if ( SymGetSymFromAddr64(v18, v17, &pdwDisplacement, &Symbol) != 1 ) return (int)byte_6F4578; if ( a2 & 0xFFFFFFFB ) { v8 += wsprintfA(&byte_6F4578[v8], " "); v27 = v8; } if ( lstrlenA(Symbol.Name) > 1486 - v8 ) { lstrcpynA(&byte_6F4578[v8], Symbol.Name, 2047 - v8); return (int)byte_6F4578; } if ( pdwDisplacement <= HIDWORD(pdwDisplacement) ) v20 = wsprintfA(&byte_6F4578[v8], " %s ", Symbol.Name); else v20 = wsprintfA(&byte_6F4578[v8], " %s()+%04d byte(s)", Symbol.Name, pdwDisplacement); v8 += v20; v27 = v8; } if ( (a2 & 8) == 8 ) { Line64.Key = 0; Line64.LineNumber = 0; Line64.FileName = 0; Line64.Address = 0i64; Line64.SizeOfStruct = 24; v21 = StackFrame.AddrPC.Offset; v22 = GetCurrentProcess(); if ( SymGetLineFromAddr64(v22, v21, (PDWORD)&v26, &Line64) == 1 ) { if ( a2 & 0xFFFFFFF7 ) { v8 += wsprintfA(&byte_6F4578[v8], ","); v27 = v8; } if ( lstrlenA(Line64.FileName) > 1738 - v8 ) { lstrcpynA(&byte_6F4578[v8], Line64.FileName, 2047 - v8); return (int)byte_6F4578; } if ( v26 ) { v27 = wsprintfA(&byte_6F4578[v8], " %s, line %04d+%04d byte(s)", Line64.FileName, Line64.LineNumber, v26) + v8; return (int)byte_6F4578; } v27 = wsprintfA(&byte_6F4578[v8], " %s, line %04d", Line64.FileName, Line64.LineNumber) + v8; } } result = (int)byte_6F4578; } else { result = 0; } return result; } // 4AB2D4: invalid function type has been ignored // 4DE38C: using guessed type int __security_cookie; // 6F5A4C: using guessed type int dword_6F5A4C; //----- (0044F9D0) -------------------------------------------------------- int __userpurge sub_44F9D0(int a1, const void *lp) { int v3; // esi@3 HMODULE v4; // eax@3 char *v5; // eax@4 int v6; // eax@5 int v7; // edx@5 int v8; // edi@5 char v9; // cl@6 int v10; // edx@7 char v11; // cl@8 int v12; // esi@10 int v13; // ebx@10 int v14; // esi@10 DWORD v15; // eax@12 const void *v16; // ebx@12 DWORD v17; // ST10_4@13 HMODULE v18; // eax@13 int v19; // esi@14 int v20; // esi@14 int v21; // esi@14 __int64 v22; // ST1C_8@14 HANDLE v23; // eax@14 int v24; // eax@14 int v25; // edx@14 char *v26; // eax@18 char *v27; // ebx@18 int v28; // edx@19 char *v29; // eax@19 char v30; // cl@20 int v31; // eax@21 char v32; // cl@22 int v33; // esi@25 int v34; // esi@25 DWORD64 v35; // ST14_8@25 HANDLE v36; // eax@25 int v37; // esi@26 int v38; // eax@29 int v39; // esi@31 DWORD64 v40; // ST14_8@31 HANDLE v41; // eax@31 int v42; // esi@32 unsigned int v43; // [sp-10h] [bp-44h]@1 unsigned __int64 pdwDisplacement; // [sp+0h] [bp-34h]@25 int v45; // [sp+8h] [bp-2Ch]@10 int v46; // [sp+Ch] [bp-28h]@10 int v47; // [sp+10h] [bp-24h]@31 int v48; // [sp+18h] [bp-1Ch]@3 unsigned int *v49; // [sp+1Ch] [bp-18h]@1 int v50; // [sp+24h] [bp-10h]@1 int (__cdecl *v51)(PEXCEPTION_RECORD, PVOID, int); // [sp+28h] [bp-Ch]@1 unsigned int v52; // [sp+2Ch] [bp-8h]@1 int v53; // [sp+30h] [bp-4h]@1 int v54; // [sp+34h] [bp+0h]@1 v53 = -2; v51 = _except_handler4; v50 = a1; v52 = __security_cookie ^ (unsigned int)&unk_4D2188; v43 = (unsigned int)&v54 ^ __security_cookie; v49 = &v43; if ( IsBadReadPtr(lp, 8u) == 1 ) { OutputDebugStringA("Bad parameter to GetFaultReason\n"); return 0; } v3 = 0; v53 = 0; sub_44F570(); v48 = 0; v4 = GetModuleHandleA(0); if ( (signed int)GetModuleFileNameA(v4, Filename, 0x800u) > 0 ) { v5 = strrchr(Filename, 92); if ( v5 ) { v6 = (int)(v5 + 1); v7 = v6; v8 = (int)byte_6F4578; do { v9 = *(_BYTE *)v7; *(_BYTE *)v8++ = *(_BYTE *)v7++; } while ( v9 ); v10 = v6 + 1; do v11 = *(_BYTE *)v6++; while ( v11 ); v3 = v6 - v10; v48 = v6 - v10; } } v12 = wsprintfA(&byte_6F4578[v3], " caused an: ", v43) + v3; v48 = v12; v13 = sub_44F320(**(_DWORD **)lp); v45 = v13; v46 = 0; v14 = wsprintfA(&byte_6F4578[v12], "< ") + v12; v48 = v14; if ( v13 || v46 ) { v15 = wsprintfA(&byte_6F4578[v14], "%s", v13, v46); v16 = lp; } else { v16 = lp; v17 = **(_DWORD **)lp; v18 = GetModuleHandleA("NTDLL.DLL"); v15 = FormatMessageA(0xA00u, v18, v17, 0, &byte_6F4578[v14], 0x800u, 0); } v19 = v15 + v14; v48 = v19; v20 = wsprintfA(&byte_6F4578[v19], " >") + v19; v48 = v20; v21 = wsprintfA(&byte_6F4578[v20], "\nIn module: ") + v20; v48 = v21; v22 = *(_DWORD *)(*(_DWORD *)v16 + 12); v23 = GetCurrentProcess(); v24 = ((int (__stdcall *)(HANDLE, _DWORD, _DWORD))SymGetModuleBase64)(v23, v22, HIDWORD(v22)); v45 = v24; v46 = v25; if ( v24 || v25 ) { if ( (signed int)GetModuleFileNameA((HMODULE)v24, Filename, 0x800u) > 0 ) { v26 = strrchr(Filename, 92); v27 = v26; if ( v26 ) { v28 = (int)(v26 + 1); v29 = &byte_6F4578[v21]; do { v30 = *(_BYTE *)v28; *v29++ = *(_BYTE *)v28++; } while ( v30 ); v31 = (int)(v27 + 1); do v32 = *(_BYTE *)v31++; while ( v32 ); v21 += v31 - (_DWORD)(v27 + 2); v48 = v21; } v16 = lp; } } else { v21 += wsprintfA(&byte_6F4578[v21], ""); v48 = v21; } v33 = wsprintfA( &byte_6F4578[v21], " at: < %04X:%08X >", *(_DWORD *)(*((_DWORD *)v16 + 1) + 188), *(_DWORD *)(*(_DWORD *)v16 + 12)) + v21; v48 = v33; v34 = wsprintfA(&byte_6F4578[v33], "\n") + v33; v48 = v34; memset(&Symbol, 0, 0x400u); Symbol.SizeOfStruct = 32; Symbol.MaxNameLength = 992; v35 = *(_DWORD *)(*(_DWORD *)v16 + 12); v36 = GetCurrentProcess(); if ( SymGetSymFromAddr64(v36, v35, &pdwDisplacement, &Symbol) == 1 ) { v37 = wsprintfA(&byte_6F4578[v34], ",") + v34; v48 = v37; if ( lstrlenA(Symbol.Name) > 1486 - v37 ) { lstrcpynA(&byte_6F4578[v37], Symbol.Name, 2047 - v37); return (int)byte_6F4578; } v38 = pdwDisplacement <= HIDWORD(pdwDisplacement) ? wsprintfA(&byte_6F4578[v37], " %s ", Symbol.Name) : wsprintfA(&byte_6F4578[v37], " %s()+%04d byte(s)", Symbol.Name, pdwDisplacement); v39 = v38 + v37; v48 = v39; Line64.Key = 0; Line64.LineNumber = 0; Line64.FileName = 0; Line64.Address = 0i64; Line64.SizeOfStruct = 24; v40 = *(_DWORD *)(*(_DWORD *)v16 + 12); v41 = GetCurrentProcess(); if ( SymGetLineFromAddr64(v41, v40, (PDWORD)&v47, &Line64) == 1 ) { v42 = wsprintfA(&byte_6F4578[v39], ",") + v39; v48 = v42; if ( lstrlenA(Line64.FileName) > 1738 - v42 ) { lstrcpynA(&byte_6F4578[v42], Line64.FileName, 2047 - v42); return (int)byte_6F4578; } if ( v47 ) { v48 = wsprintfA(&byte_6F4578[v42], " %s, line %04d+%04d byte(s)", Line64.FileName, Line64.LineNumber, v47) + v42; return (int)byte_6F4578; } v48 = wsprintfA(&byte_6F4578[v42], " %s, line %04d", Line64.FileName, Line64.LineNumber) + v42; } } return (int)byte_6F4578; } // 4AB2D4: invalid function type has been ignored // 4DE38C: using guessed type int __security_cookie; //----- (0044FE20) -------------------------------------------------------- int __stdcall sub_44FE20(int a1, void *lp) { int result; // eax@2 int v3; // eax@3 if ( IsBadReadPtr(lp, 4u) == 1 ) { OutputDebugStringA("GetFirstStackTraceString - invalid pExPtrs!\n"); result = 0; } else { v3 = sub_44F270(*((_DWORD *)lp + 1)); memcpy(&unk_6F5990, *((const void **)lp + 1), 0x2CCu); result = sub_44F5D0(v3, a1); } return result; } //----- (0044FE80) -------------------------------------------------------- int __stdcall sub_44FE80(int a1, int a2) { return sub_44F5D0(a1, a1); } //----- (0044FE90) -------------------------------------------------------- int __thiscall sub_44FE90(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 64) = 0; *(_DWORD *)(this + 68) = 0; *(_DWORD *)(this + 72) = 0; *(_DWORD *)(this + 76) = 0; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 48) = 0; *(_DWORD *)(this + 52) = 0; *(_DWORD *)(this + 56) = 0; *(_DWORD *)(this + 60) = 0; return result; } //----- (0044FED0) -------------------------------------------------------- int __thiscall sub_44FED0(int this, int a2) { int result; // eax@1 int v3; // edx@1 signed int v4; // ecx@1 *(_DWORD *)(this + 64) = 0; *(_DWORD *)(this + 68) = 0; *(_DWORD *)(this + 72) = 0; *(_DWORD *)(this + 76) = 0; result = this; v3 = a2 - this; v4 = 16; do { *(_DWORD *)result = *(_DWORD *)(v3 + result); result += 4; --v4; } while ( v4 ); return result; } //----- (0044FF00) -------------------------------------------------------- double __thiscall sub_44FF00(int this) { int v1; // eax@1 int v2; // esi@1 int v3; // edi@1 int v4; // edx@1 int v5; // eax@1 v1 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 68) = *(_DWORD *)(this + 4 * (((_BYTE)v1 - 1) & 0xF)); v2 = *(_DWORD *)(this + 4 * (((_BYTE)v1 - 3) & 0xF)); v3 = *(_DWORD *)(this + 4 * v1) ^ v2 ^ ((v2 ^ 2 * *(_DWORD *)(this + 4 * v1)) << 15); *(_DWORD *)(this + 72) = v3; v4 = *(_DWORD *)(this + 4 * (((_BYTE)v1 - 7) & 0xF)) ^ (*(_DWORD *)(this + 4 * (((_BYTE)v1 - 7) & 0xF)) >> 11); *(_DWORD *)(this + 76) = v4; *(_DWORD *)(this + 4 * v1) = v4 ^ v3; *(_DWORD *)(this + 4 * (((unsigned __int8)*(_DWORD *)(this + 64) - 1) & 0xF)) = *(_DWORD *)(this + 72) ^ *(_DWORD *)(this + 4 * *(_DWORD *)(this + 64)) ^ *(_DWORD *)(this + 68) ^ 4 * (*(_DWORD *)(this + 68) ^ 8 * (*(_DWORD *)(this + 4 * *(_DWORD *)(this + 64)) & 0xFED22169 ^ ((*(_DWORD *)(this + 72) ^ (*(_DWORD *)(this + 76) << 10)) << 13))); v5 = ((unsigned __int8)*(_DWORD *)(this + 64) - 1) & 0xF; *(_DWORD *)(this + 64) = v5; return (double)*(unsigned int *)(this + 4 * v5) * 2.328306436538696e-10; } //----- (0044FFB0) -------------------------------------------------------- unsigned int __thiscall sub_44FFB0(int this, unsigned int a2) { return (unsigned int)(signed __int64)(sub_44FF00(this) * 1.0e11) % a2; } //----- (0044FFF0) -------------------------------------------------------- int __thiscall sub_44FFF0(int this) { int v1; // esi@1 v1 = this; sub_4513A0(this); return v1; } //----- (00450010) -------------------------------------------------------- int __stdcall sub_450010(int a1) { int v1; // edx@1 signed int v2; // ecx@1 int v3; // esi@1 int v4; // eax@2 unsigned __int8 v5; // al@6 int result; // eax@7 char *v7; // edx@9 int v8; // eax@9 unsigned __int16 v9; // dx@9 v1 = (unsigned __int16)sub_44FFB0((int)&unk_A428B8, 0x3E8u); v2 = 0; v3 = a1 + 7; do { v4 = *(_WORD *)v3; if ( v4 >= v1 ) break; ++v2; v1 -= v4; v3 += 2; } while ( v2 < 9 ); if ( v2 >= 9 ) { sub_44B580( &unk_4DCB00, (int)"ItemOptionsData::OptionCardStack::ocs_selectnumber : Error in random select", *(_WORD *)a1); v2 = 0; } v5 = *(_BYTE *)(a1 + 6); if ( v5 == 1 ) { result = v2 + 1; } else { if ( (unsigned int)v5 - 1 > 0x63 ) { v9 = 0; } else { v7 = (char *)&unk_6FA570 + 32776 * v5; v8 = *((_DWORD *)v7 + 8193) & (*((_DWORD *)v7 + 8192) + 1); *((_DWORD *)v7 + 8192) = v8; v9 = *(_WORD *)&v7[2 * v8]; } result = v9 + v2 * *(_BYTE *)(a1 + 6); if ( result >= 256 ) { sub_44B580(&unk_4DCB00, (int)"ItemOptionsData::OptionCardStack::ocs_selectnumber : Too large value", result); result = 255; } } return result; } //----- (004500E0) -------------------------------------------------------- int __cdecl sub_4500E0() { return dword_6F5DC8; } // 6F5DC8: using guessed type int dword_6F5DC8; //----- (00450100) -------------------------------------------------------- void *__thiscall sub_450100(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4BC6E0; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4BC6E0: using guessed type int (__thiscall *off_4BC6E0)(void *, char); //----- (00450130) -------------------------------------------------------- void *__thiscall sub_450130(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4BC6E8; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4BC6E8: using guessed type int (__thiscall *off_4BC6E8)(void *, char); //----- (00450160) -------------------------------------------------------- void *__thiscall sub_450160(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4BC6F0; sub_44ED10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4BC6F0: using guessed type int (__thiscall *off_4BC6F0)(void *, char); //----- (00450190) -------------------------------------------------------- char __thiscall sub_450190(int this, int a2) { int v2; // esi@1 int v3; // edx@1 int v4; // eax@2 int v5; // ecx@2 int v6; // eax@3 int v7; // edi@3 char result; // al@6 v2 = this; v3 = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 4); if ( (unsigned __int16)v3 >= *(_WORD *)(this + 4) ) { LABEL_6: result = 1; } else { while ( 1 ) { v4 = 12 * (unsigned __int16)v3; v5 = v4 + *(_DWORD *)(v2 + 8); if ( !*(_BYTE *)(v5 + 8) ) break; v6 = *(_DWORD *)(v2 + 8) + v4; v7 = *(_WORD *)(v6 + 4); if ( *(_DWORD *)v6 ) { if ( !(unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))a2)(a2, *(_DWORD *)v5, v3) ) break; } v3 = v7; if ( (unsigned __int16)v7 >= *(_WORD *)(v2 + 4) ) goto LABEL_6; } result = 0; } return result; } //----- (00450200) -------------------------------------------------------- char __stdcall sub_450200(int a1, int a2) { return 1; } //----- (00450210) -------------------------------------------------------- char __thiscall sub_450210(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@1 char result; // al@2 int v6; // eax@3 unsigned __int16 v7; // ax@4 int v8; // edx@5 bool v9; // zf@5 int v10; // eax@5 unsigned int *v11; // ebx@6 unsigned int v12; // ebx@7 signed __int16 v13; // ax@7 int *v14; // eax@9 int v15; // eax@13 signed int v16; // ecx@16 unsigned __int8 v17; // cl@18 signed int v18; // [sp+8h] [bp-Ch]@3 int v19; // [sp+Ch] [bp-8h]@10 unsigned int v20; // [sp+10h] [bp-4h]@0 v2 = a2; *(_BYTE *)v2 &= 1u; v3 = this; v4 = *(_DWORD *)(this + 32); if ( v4 ) { v6 = sub_450010(v4); *(_BYTE *)a2 &= 1u; v18 = v6; if ( (signed int)((unsigned int)*(_BYTE *)a2 >> 1) >= v6 ) { LABEL_19: result = 1; } else { while ( 1 ) { v7 = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); LOWORD(a2) = v7; if ( v7 < *(_WORD *)(v3 + 4) && (v8 = *(_DWORD *)(v3 + 8), v9 = *(_BYTE *)(v8 + 12 * v7 + 8) == 0, v10 = v8 + 12 * v7, !v9) && (v11 = *(unsigned int **)v10) != 0 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 12))(v3, a2); v12 = *v11; v20 = v12; v13 = 1; } else { v12 = v20; v13 = 0; } v9 = v13 == 0; v14 = *(int **)(v3 + 32); if ( v9 ) { sub_44B580(&unk_4DCB00, (int)"ItemOptionsData::OptionCardStack::ocs_make : Error in selecting", *(_WORD *)v14); return 0; } v19 = *(_WORD *)v14; if ( !(unsigned __int16)sub_451150((void *)v3, v12) ) sub_44B580(&unk_4DCB00, (int)"ItemOptionsData::OptionCardStack::ocs_make : Error in card recycle", v19); if ( v12 < *(_DWORD *)(dword_6F5EF4 + 40) ) v15 = sub_43E7B0((int)&dword_6F5EC0, v12); else v15 = (int)&dword_6F5F00; if ( *(_WORD *)v15 == -1 ) { sub_44B580(&unk_4DCB00, (int)"ItemOptionsData::OptionCardStack::ocs_make : Option not found", *(_WORD *)v15); return 0; } v16 = *(_DWORD *)(v15 + 2); if ( !v16 ) break; if ( v16 >= 12 ) break; *(_BYTE *)(((unsigned int)*(_BYTE *)v2 >> 1) + v2 + 2 * ((unsigned int)*(_BYTE *)v2 >> 1) + 1) = *(_BYTE *)(v15 + 2); *(_WORD *)(((unsigned int)*(_BYTE *)v2 >> 1) + v2 + 2 * ((unsigned int)*(_BYTE *)v2 >> 1) + 2) = sub_450010(*(_DWORD *)(v3 + 32)); v17 = *(_BYTE *)v2 & 1 ^ ((*(_BYTE *)v2 & 0xFE) + 2); *(_BYTE *)v2 = v17; if ( (signed int)((unsigned int)v17 >> 1) >= v18 ) goto LABEL_19; } sub_44B580(&unk_4DCB00, (int)"ItemOptionsData::OptionCardStack::ocs_make : Invalid Option", *(_WORD *)v15); result = 0; } } else { result = 0; } return result; } // 6F5EC0: using guessed type int dword_6F5EC0; // 6F5EF4: using guessed type int dword_6F5EF4; // 6F5F00: using guessed type int dword_6F5F00; //----- (004503D0) -------------------------------------------------------- char __thiscall sub_4503D0(int this, int a2, int a3) { (*(void (__stdcall **)(int))(**(_DWORD **)(this + 4) + 12))(a3); return 1; } //----- (00450400) -------------------------------------------------------- void *__thiscall sub_450400(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4BC708; _LN21((char *)this + 92, 0x24u, 500, sub_450000); *(_DWORD *)v2 = &off_4BC6E8; sub_44ED10((int)v2); if ( a2 & 1 ) operator delete(v2); return v2; } // 4BC6E8: using guessed type int (__thiscall *off_4BC6E8)(void *, char); // 4BC708: using guessed type int (__thiscall *off_4BC708)(void *, char); //----- (00450490) -------------------------------------------------------- int __thiscall sub_450490(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 32772) = 16383; *(_DWORD *)(this + 32768) = 0; return result; } //----- (004504B0) -------------------------------------------------------- signed int __thiscall sub_4504B0(void *this, signed int a2) { void *v2; // esi@1 signed int v3; // ecx@1 signed int v4; // edi@1 signed int v5; // edi@3 signed int v6; // eax@4 __int16 v7; // cx@5 signed int result; // eax@7 v2 = this; v3 = 0; v4 = 0; do { *((_WORD *)v2 + v3++) = v4 / 16384; v4 += a2; } while ( v3 < 16384 ); v5 = 0; do { v6 = (signed int)((double)rand() * 16384.0 / 32767.0); if ( v6 < 16384 ) { v7 = *((_WORD *)v2 + v5); *((_WORD *)v2 + v5) = *((_WORD *)v2 + v6); *((_WORD *)v2 + v6) = v7; } ++v5; } while ( v5 < 16384 ); result = 0; do { if ( *((_WORD *)v2 + result) >= a2 ) *((_WORD *)v2 + result) = 0; ++result; } while ( result < 16384 ); return result; } //----- (00450540) -------------------------------------------------------- void *__thiscall sub_450540(void *this) { void *v1; // esi@1 signed int v2; // ebx@1 unsigned int v3; // eax@1 signed int v4; // ecx@2 signed int v5; // edi@2 signed int v6; // edi@4 int v7; // eax@5 signed int v8; // eax@5 __int16 v9; // cx@6 signed int v10; // eax@8 void *v11; // esi@13 signed int v12; // edi@13 signed int v13; // esi@15 __time32_t Time; // [sp+Ch] [bp-5Ch]@1 int v16; // [sp+10h] [bp-58h]@5 void *v17; // [sp+14h] [bp-54h]@1 int v18[16]; // [sp+18h] [bp-50h]@16 unsigned int v19; // [sp+58h] [bp-10h]@1 int v20; // [sp+64h] [bp-4h]@1 int v21; // [sp+68h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v1 = this; v17 = this; _eh_vector_constructor_iterator_(this, 0x8008u, 101, (int)sub_450490, nullsub_1); v2 = 0; v20 = 0; _eh_vector_constructor_iterator_((char *)v1 + 3310376, 0x8008u, 4, (int)sub_450490, nullsub_1); sub_44FE90((int)((char *)v1 + 3441480)); LOBYTE(v20) = 2; v3 = _time32(&Time); srand(v3); do { v4 = 0; v5 = 0; do { *((_WORD *)v1 + v4++) = v5 / 16384; v5 += v2; } while ( v4 < 16384 ); v6 = 0; do { v7 = rand(); v16 = v7; v8 = (signed int)((double)v7 * 16384.0 / 32767.0); if ( v8 < 16384 ) { v9 = *((_WORD *)v1 + v6); *((_WORD *)v1 + v6) = *((_WORD *)v1 + v8); *((_WORD *)v1 + v8) = v9; } ++v6; } while ( v6 < 16384 ); v10 = 0; do { if ( *((_WORD *)v1 + v10) >= v2 ) *((_WORD *)v1 + v10) = 0; ++v10; } while ( v10 < 16384 ); ++v2; v1 = (char *)v1 + 32776; } while ( v2 < 101 ); v11 = (char *)v17 + 3310376; v12 = 4; do { sub_4504B0(v11, 1000); v11 = (char *)v11 + 32776; --v12; } while ( v12 ); v13 = 0; do v18[v13++] = rand(); while ( v13 < 16 ); sub_44FED0((int)((char *)v17 + 3441480), (int)v18); return v17; } // 4DE38C: using guessed type int __security_cookie; // 450540: using guessed type int var_50[16]; //----- (004506C0) -------------------------------------------------------- int __thiscall sub_4506C0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_4BC834; *(_DWORD *)(this + 8) = 0; *(_BYTE *)(this + 4) = 0; return result; } // 4BC834: using guessed type int (__thiscall *off_4BC834)(void *, char); //----- (004506E0) -------------------------------------------------------- char __cdecl sub_4506E0() { SQLRETURN v0; // ax@2 SQLRETURN v1; // ax@4 if ( !byte_A42908 ) { dword_A42910 = 0; v0 = SQLAllocHandle(1, 0, &OutputHandle); if ( v0 && v0 != 1 ) goto LABEL_7; v1 = SQLSetEnvAttr(OutputHandle, 200, (SQLPOINTER)2, -6); if ( v1 && v1 != 1 ) { SQLFreeHandle(1, OutputHandle); LABEL_7: OutputHandle = 0; return 0; } if ( SQLSetEnvAttr(OutputHandle, 201, (SQLPOINTER)1, -6) ) return 0; byte_A42908 = 1; } return 1; } // A42908: using guessed type char byte_A42908; // A42910: using guessed type int dword_A42910; //----- (00450780) -------------------------------------------------------- bool __thiscall sub_450780(int this) { int v1; // esi@1 bool result; // al@2 SQLRETURN v3; // di@3 v1 = this; if ( *(_BYTE *)(this + 4) ) { v3 = SQLEndTran(2, *(SQLHANDLE *)(this + 8), 0); SQLSetConnectAttr(*(SQLHDBC *)(v1 + 8), 102, (SQLPOINTER)1, 0); *(_BYTE *)(v1 + 4) = 0; result = !v3 || v3 == 1; } else { result = 0; } return result; } //----- (004507D0) -------------------------------------------------------- FILE *__cdecl sub_4507D0(int a1, FILE *StatementHandle) { FILE *result; // eax@1 SQLRETURN v3; // di@2 char *v4; // [sp-14h] [bp-C24h]@6 SQLINTEGER NativeError; // [sp+4h] [bp-C0Ch]@2 SQLSMALLINT TextLength[2]; // [sp+8h] [bp-C08h]@2 SQLCHAR Sqlstate; // [sp+Ch] [bp-C04h]@2 SQLCHAR MessageText; // [sp+40Ch] [bp-804h]@2 char v9; // [sp+80Ch] [bp-404h]@3 unsigned int v10; // [sp+C0Ch] [bp-4h]@1 int v11; // [sp+C10h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; result = StatementHandle; if ( a1 ) { *(_DWORD *)TextLength = 0; v3 = SQLError(0, 0, StatementHandle, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf(&v9, "ERROR - %s, state = %s error_num = %d error_str = %s", a1, &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v9); } result = (FILE *)v3; if ( v3 == -1 ) { sprintf(&v9, "ERROR - %s, SQLError = %d = SQL_ERROR", a1, -1); v4 = &v9; } else { if ( !v3 ) return result; sprintf(&v9, "ERROR - %s, SQLError = %d = unknown return value", a1, v3); v4 = &v9; } result = sub_446350(1, "Msg", "%s", v4); } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004508E0) -------------------------------------------------------- SQLRETURN __thiscall sub_4508E0(int this) { int v1; // esi@1 SQLRETURN result; // ax@4 v1 = this; if ( *(_DWORD *)(this + 8) ) { if ( *(_BYTE *)(this + 4) ) sub_450780(this); SQLDisconnect(*(SQLHDBC *)(v1 + 8)); result = SQLFreeHandle(2, *(SQLHANDLE *)(v1 + 8)); *(_DWORD *)(v1 + 8) = 0; --dword_A42910; } return result; } // A42910: using guessed type int dword_A42910; //----- (00450920) -------------------------------------------------------- SQLRETURN __thiscall sub_450920(int this) { int v1; // esi@1 SQLRETURN result; // ax@4 v1 = this; *(_DWORD *)this = &off_4BC834; if ( *(_DWORD *)(this + 8) ) { if ( *(_BYTE *)(this + 4) ) sub_450780(this); SQLDisconnect(*(SQLHDBC *)(v1 + 8)); result = SQLFreeHandle(2, *(SQLHANDLE *)(v1 + 8)); *(_DWORD *)(v1 + 8) = 0; --dword_A42910; } if ( dword_A42910 <= 0 ) { result = (signed __int16)OutputHandle; if ( OutputHandle ) { result = SQLFreeHandle(1, OutputHandle); OutputHandle = 0; } dword_A42910 = 0; byte_A42908 = 0; } return result; } // 4BC834: using guessed type int (__thiscall *off_4BC834)(void *, char); // A42908: using guessed type char byte_A42908; // A42910: using guessed type int dword_A42910; //----- (00450990) -------------------------------------------------------- char __thiscall sub_450990(void *this, SQLCHAR *szConnStrIn) { int v2; // edi@1 char result; // al@1 SQLHDBC *v4; // esi@2 SQLRETURN v5; // ax@6 SQLRETURN v6; // ax@8 SQLSMALLINT pcchConnStrOut; // [sp+8h] [bp-408h]@8 SQLCHAR szConnStrOut; // [sp+Ch] [bp-404h]@8 unsigned int v9; // [sp+40Ch] [bp-4h]@1 int v10; // [sp+410h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v2 = (int)this; result = sub_4506E0(); if ( result ) { v4 = (SQLHDBC *)(v2 + 8); if ( *(_DWORD *)(v2 + 8) ) { if ( *(_BYTE *)(v2 + 4) ) sub_450780(v2); SQLDisconnect(*v4); SQLFreeHandle(2, *v4); *v4 = 0; --dword_A42910; } v5 = SQLAllocHandle(2, OutputHandle, (SQLHANDLE *)(v2 + 8)); if ( v5 && v5 != 1 ) goto LABEL_11; v6 = SQLDriverConnect(*v4, 0, szConnStrIn, -3, &szConnStrOut, 1024, &pcchConnStrOut, 0); if ( v6 && v6 != 1 ) { SQLFreeHandle(2, *v4); LABEL_11: *v4 = 0; return 0; } ++dword_A42910; result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // A42910: using guessed type int dword_A42910; //----- (00450A90) -------------------------------------------------------- void *__thiscall sub_450A90(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_450920((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00450AE0) -------------------------------------------------------- char __thiscall sub_450AE0(int this, char *a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@3 char *v5; // edi@4 void *v6; // ebx@6 int i; // eax@8 void *v8; // eax@11 void *v9; // ecx@11 char *v10; // edx@11 signed int v11; // ecx@13 int v12; // eax@14 int v13; // eax@16 int v14; // ecx@16 void *v15; // ST08_4@16 void **v16; // ecx@16 int v17; // edx@16 void *v18; // [sp+Ch] [bp+8h]@4 v2 = this; if ( *(_WORD *)(this + 12) == -1 && (v4 = *(_DWORD *)(this + 16)) != 0 ) { v5 = &a2[*(_DWORD *)(v4 + 4)]; v18 = (void *)operator new(4 * (_DWORD)&a2[*(_DWORD *)(v4 + 4)]); if ( v18 ) { v6 = (void *)operator new(12 * (_DWORD)(v5 + 1)); if ( v6 ) { for ( i = 0; i < *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4); ++i ) *((_DWORD *)v18 + i) = *(_DWORD *)(**(_DWORD **)(v2 + 16) + 4 * i); memmove(v6, *(const void **)(v2 + 8), 12 * *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4)); *((_WORD *)v6 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 4) + 3) = (_WORD)v5; *((_WORD *)v6 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 6) + 2) = (_WORD)v5; if ( (signed int)v5 > 0 ) { v8 = v18; v9 = v6; v10 = v5; do { *(_DWORD *)v9 = v8; v8 = (char *)v8 + 4; v9 = (char *)v9 + 12; --v10; } while ( v10 ); } v11 = *(_WORD *)(v2 + 4); if ( v11 < (signed int)v5 ) { v12 = (int)((char *)v6 + 12 * v11 + 4); do { *(_WORD *)v12 = v11 + 1; *(_BYTE *)(v12 + 4) = 0; *(_WORD *)(v12 + 2) = v11++ - 1; v12 += 12; } while ( v11 < (signed int)v5 ); } *((_WORD *)v6 + 6 * *(_WORD *)(v2 + 4) + 3) = (_WORD)v5 - 1; *((_WORD *)v6 + 6 * (_DWORD)v5 - 4) = *(_WORD *)(v2 + 4); v13 = (int)((char *)v6 + 12 * (_DWORD)v5); v14 = *(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4); *(_DWORD *)v13 = *(_DWORD *)v14; *(_DWORD *)(v13 + 4) = *(_DWORD *)(v14 + 4); *(_DWORD *)(v13 + 8) = *(_DWORD *)(v14 + 8); v15 = *(void **)(v2 + 8); *(_WORD *)(v2 + 12) = *(_WORD *)(v2 + 4); operator delete(v15); v16 = *(void ***)(v2 + 16); *(_DWORD *)(v2 + 8) = v6; operator delete(*v16); **(_DWORD **)(v2 + 16) = v18; v17 = *(_DWORD *)(v2 + 16); *(_WORD *)(v2 + 4) = (_WORD)v5; *(_DWORD *)(v17 + 4) = (unsigned __int16)v5; *(_WORD *)(v2 + 14) = (_WORD)v5; result = 1; } else { operator delete(v18); result = 0; } } else { result = 0; } } else { result = 0; } return result; } //----- (00450CA0) -------------------------------------------------------- int __thiscall sub_450CA0(int this, unsigned __int16 a2) { int v3; // esi@3 int v4; // eax@3 __int16 v5; // bx@5 signed __int16 v6; // si@6 int v7; // edi@10 int v8; // esi@10 if ( a2 >= *(_WORD *)(this + 4) ) return 0; v3 = *(_DWORD *)(this + 8); v4 = 12 * a2; if ( *(_BYTE *)(v3 + v4 + 8) ) return 0; v5 = *(_WORD *)(v3 + v4 + 4); if ( v5 == a2 ) { v6 = -1; LABEL_9: *(_WORD *)(this + 12) = v6; goto LABEL_10; } *(_WORD *)(v3 + 12 * *(_WORD *)(v3 + v4 + 6) + 4) = v5; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4) + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6); if ( *(_WORD *)(this + 12) == a2 ) { v6 = *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4); goto LABEL_9; } LABEL_10: v7 = *(_WORD *)(this + 14); v8 = *(_DWORD *)(this + 8); if ( (_WORD)v7 == -1 ) { *(_WORD *)(v8 + v4 + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6) = a2; *(_WORD *)(this + 14) = a2; } else { *(_WORD *)(v8 + v4 + 4) = *(_WORD *)(v8 + 12 * v7 + 4); *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6) = *(_WORD *)(this + 14); *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 4) + 6) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 4) = a2; } *(_BYTE *)(*(_DWORD *)(this + 8) + v4 + 8) = 1; ++*(_WORD *)(this + 20); return *(_DWORD *)(v4 + *(_DWORD *)(this + 8)); } //----- (00450DA0) -------------------------------------------------------- int __thiscall sub_450DA0(int this, unsigned __int16 a2) { int v3; // esi@3 int v4; // eax@3 __int16 v5; // bx@5 signed __int16 v6; // si@6 __int16 v7; // si@10 if ( a2 >= *(_WORD *)(this + 4) ) return 0; v3 = *(_DWORD *)(this + 8); v4 = 12 * a2; if ( *(_BYTE *)(v3 + v4 + 8) ) return 0; v5 = *(_WORD *)(v3 + v4 + 4); if ( v5 == a2 ) { v6 = -1; LABEL_9: *(_WORD *)(this + 12) = v6; goto LABEL_10; } *(_WORD *)(v3 + 12 * *(_WORD *)(v3 + v4 + 6) + 4) = v5; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4) + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6); if ( *(_WORD *)(this + 12) == a2 ) { v6 = *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4); goto LABEL_9; } LABEL_10: v7 = *(_WORD *)(this + 14); if ( v7 == -1 ) { *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6) = a2; *(_WORD *)(this + 14) = a2; } else { *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4) = v7; *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 6); *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 6) + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 6) = a2; } *(_BYTE *)(*(_DWORD *)(this + 8) + v4 + 8) = 1; ++*(_WORD *)(this + 20); return *(_DWORD *)(v4 + *(_DWORD *)(this + 8)); } //----- (00450EA0) -------------------------------------------------------- char __thiscall sub_450EA0(int this, unsigned __int16 a2) { int v2; // edx@2 int v3; // eax@2 __int16 v4; // dx@4 char result; // al@7 if ( a2 < *(_WORD *)(this + 4) && (v2 = *(_DWORD *)(this + 8), v3 = 12 * a2, *(_BYTE *)(v2 + v3 + 8)) && a2 != *(_WORD *)(this + 14) ) { *(_WORD *)(v2 + 12 * *(_WORD *)(v2 + v3 + 6) + 4) = *(_WORD *)(v2 + v3 + 4); *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 4) + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 6); v4 = *(_WORD *)(this + 12); if ( v4 == -1 ) { *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 6) = a2; *(_WORD *)(this + 12) = a2; } else { *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 4) = v4; *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 12) + 6); *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 12) + 6) + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 12) + 6) = a2; } *(_BYTE *)(*(_DWORD *)(this + 8) + v3 + 8) = 0; --*(_WORD *)(this + 20); result = 1; } else { result = 0; } return result; } //----- (00450F90) -------------------------------------------------------- char __thiscall sub_450F90(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; result = 1; } else { result = 0; } return result; } //----- (00450FC0) -------------------------------------------------------- char __thiscall sub_450FC0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; result = 1; } else { result = 0; } return result; } //----- (00450FF0) -------------------------------------------------------- char __thiscall sub_450FF0(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; *(_DWORD *)a2 = **(_DWORD **)(v2 + 12 * v3); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (00451040) -------------------------------------------------------- char __thiscall sub_451040(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; *(_DWORD *)a2 = **(_DWORD **)(v2 + 12 * v3); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004510A0) -------------------------------------------------------- void *__thiscall sub_4510A0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_4BC8D4; if ( v3 ) operator delete(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 4BC8D4: using guessed type int (__thiscall *off_4BC8D4)(void *, char); //----- (004510E0) -------------------------------------------------------- void __thiscall sub_4510E0(int this) { int v1; // esi@1 void *v2; // eax@1 void *v3; // esi@3 v1 = this; v2 = *(void **)(this + 24); if ( v2 ) operator delete(v2); *(_DWORD *)v1 = &off_4BC8D4; v3 = *(void **)(v1 + 8); if ( v3 ) operator delete(v3); } // 4BC8D4: using guessed type int (__thiscall *off_4BC8D4)(void *, char); //----- (00451150) -------------------------------------------------------- signed int __thiscall sub_451150(void *this, int a2) { int v2; // esi@1 int v3; // eax@3 v2 = (int)this; while ( 1 ) { if ( *(_WORD *)(v2 + 12) != -1 ) { v3 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 8))(v2, *(_WORD *)(v2 + 12)); if ( v3 ) break; } if ( !sub_450AE0(v2, (char *)5) ) return 0; } *(_DWORD *)v3 = a2; return 1; } //----- (004511A0) -------------------------------------------------------- char __thiscall sub_4511A0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = operator new(12 * (a2 + 1)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_4BC818; v11 = v2; v12 = 0; LOBYTE(v3) = sub_450190(v2, (int)&v10); } } return v3; } // 4BC818: using guessed type int (__stdcall *off_4BC818)(int, int); //----- (00451320) -------------------------------------------------------- char __thiscall sub_451320(int this, int a2) { int v2; // esi@1 signed int v4; // eax@7 int v5; // edx@8 int v6; // ecx@10 v2 = this; if ( *(_DWORD *)(this + 8) ) operator delete(*(void **)(this + 8)); *(_DWORD *)(v2 + 16) = a2; if ( !*(_DWORD *)a2 ) { *(_DWORD *)(v2 + 8) = 0; return 0; } sub_4511A0(v2, *(_WORD *)(a2 + 4)); if ( !*(_DWORD *)(v2 + 8) ) return 0; v4 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { v5 = 0; do { if ( v4 < *(_WORD *)(v2 + 4) ) { v6 = *(_DWORD *)(v2 + 8); if ( !*(_DWORD *)(v6 + v5) ) *(_DWORD *)(v6 + v5) = *(_DWORD *)a2 + 4 * v4; } ++v4; v5 += 12; } while ( v4 < *(_WORD *)(v2 + 4) ); } return 1; } //----- (004513A0) -------------------------------------------------------- int __thiscall sub_4513A0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4BC8D4; *(_DWORD *)(this + 16) = 0; sub_4511A0(this, 1u); *(_DWORD *)(v1 + 28) = 5; *(_DWORD *)(v1 + 24) = operator new(0x14u); sub_451320(v1, v1 + 24); return v1; } // 4BC8D4: using guessed type int (__thiscall *off_4BC8D4)(void *, char); //----- (00451430) -------------------------------------------------------- int __stdcall sub_451430(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLPOINTER v3; // edi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; a1 = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)v3 + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)v3 + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -18, 4, 0, 0, (char *)v3 + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -27, -5, 0, 0, (char *)v3 + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -18, 4, 0, 0, (char *)v3 + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -28, -6, 0, 0, (char *)v3 + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 4, -28, -6, 0, 0, (char *)v3 + 29, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 4, -28, -6, 0, 0, (char *)v3 + 30, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 4, -28, -6, 0, 0, (char *)v3 + 31, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xBu, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Skill_Get(?,?,?,?,?,?,?,?,?,?,?)}", -3); return a1; } //----- (00451580) -------------------------------------------------------- bool __stdcall sub_451580(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLPOINTER v3; // edi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; a1 = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)v3 + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)v3 + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)v3 + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)v3 + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 4, 0, 0, (char *)v3 + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -28, -6, 0, 0, (char *)v3 + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -28, -6, 0, 0, (char *)v3 + 29, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -28, -6, 0, 0, (char *)v3 + 30, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 1, -28, -6, 0, 0, (char *)v3 + 31, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xBu, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Skill_Set(?,?,?,?,?,?,?,?,?,?,?)}", -3); return a1 == 0; } //----- (004516E0) -------------------------------------------------------- bool __stdcall sub_4516E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLPOINTER v3; // edi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; a1 = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)v3 + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)v3 + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)v3 + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Skill_SetPassive(?,?,?,?,?)}", -3); return a1 == 0; } //----- (004517A0) -------------------------------------------------------- bool __stdcall sub_4517A0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLPOINTER v3; // edi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; a1 = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)v3 + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Skill_Del(?,?,?)}", -3); return a1 == 0; } //----- (00451830) -------------------------------------------------------- bool __stdcall sub_451830(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Skill_GetAll(?)}", -3); return !v3 || v3 == 1; } //----- (00451890) -------------------------------------------------------- bool __stdcall sub_451890(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLPOINTER v3; // edi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; a1 = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)v3 + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)v3 + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)v3 + 29, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -28, -6, 0, 0, (char *)v3 + 30, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -28, -6, 0, 0, (char *)v3 + 31, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Skill_SetPowerAll(?,?,?,?,?,?,?)}", -3); return a1 == 1; } //----- (00451980) -------------------------------------------------------- bool __stdcall sub_451980(int a1, char rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); a1 = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Skill_ResetPower(?,?)}", -3); return a1 == 1; } //----- (004519F0) -------------------------------------------------------- bool __stdcall sub_4519F0(int pcbValue, char *rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLPOINTER v4; // ST1C_4@1 void *v5; // ebx@1 v2 = sub_44E6E0(pcbValue); SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; v4 = rgbValue; v5 = rgbValue + 112; pcbValue = 100; *((_DWORD *)rgbValue + 28) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, v4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, v3 + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -6, -6, 0, 0, v3 + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -2, -3, 0, 100, v3 + 9, 100, (SQLINTEGER *)&pcbValue); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -18, 4, 0, 0, v5, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Quest_Set(?,?,?,?,?)}", -3); return *(_DWORD *)v5 == 0; } //----- (00451AC0) -------------------------------------------------------- bool __stdcall sub_451AC0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 2) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Quest_Del(?,?,?)}", -3); return *((_DWORD *)rgbValue + 2) == 0; } //----- (00451B50) -------------------------------------------------------- bool __stdcall sub_451B50(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -6, -6, 0, 0, &a3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Quest_GetAllDoing(?,?)}", -3); return !v4 || v4 == 1; } //----- (00451BD0) -------------------------------------------------------- int __stdcall sub_451BD0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_WORD *)rgbValue + 8) = 100; *((_DWORD *)rgbValue + 3) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Friend_Set(?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 3); } //----- (00451C90) -------------------------------------------------------- bool __stdcall sub_451C90(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 2) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Friend_Del(?,?,?)}", -3); return *((_DWORD *)rgbValue + 2) == 0; } //----- (00451D20) -------------------------------------------------------- bool __stdcall sub_451D20(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 1) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Friend_Del_All(?,?)}", -3); return *((_DWORD *)rgbValue + 1) == 0; } //----- (00451D90) -------------------------------------------------------- signed int __stdcall sub_451D90(int a1, SQLPOINTER rgbValue) { int v2; // edi@1 int v3; // eax@1 signed int result; // eax@4 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 2) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Friend_Get(?,?)}", -3); *((_DWORD *)rgbValue + 2) = (signed __int16)v3; if ( (_WORD)v3 && v3 != 1 || !sub_44E4A0(a1) ) { result = 0; } else { sub_44E570(a1, (char *)rgbValue + 4); sub_44E510(a1, (char *)rgbValue + 12); sub_44E600(a1, (char *)rgbValue + 13); sub_44E510(a1, (char *)rgbValue + 53); sub_44E540(a1, (char *)rgbValue + 54); sub_44E600(a1, (char *)rgbValue + 56); sub_44E6B0(a1, (char *)rgbValue + 72); result = 1; } return result; } //----- (00451E70) -------------------------------------------------------- bool __stdcall sub_451E70(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Friend_GetAll(?)}", -3); return !v3 || v3 == 1; } //----- (00451ED0) -------------------------------------------------------- bool __stdcall sub_451ED0(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -18, 4, 0, 0, a3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Friend_GetNumOfFriend(?,?)}", -3); return !v4 || v4 == 1; } //----- (00451F50) -------------------------------------------------------- signed int __stdcall sub_451F50(int a1, SQLPOINTER rgbValue) { int v2; // ebx@1 SQLRETURN v3; // ax@1 signed int result; // eax@4 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_Get(?)}", -3); if ( v3 && v3 != 1 || !sub_44E4A0(a1) ) { result = 0; } else { sub_44E600(a1, (char *)rgbValue + 4); sub_44E600(a1, (char *)rgbValue + 23); sub_44E540(a1, (char *)rgbValue + 34); sub_44E5A0(a1, (char *)rgbValue + 40); sub_44E510(a1, (char *)rgbValue + 48); sub_44E510(a1, (char *)rgbValue + 49); sub_44E4E0(a1, (char *)rgbValue + 52); sub_44E540(a1, (char *)rgbValue + 56); sub_44E5A0(a1, (char *)rgbValue + 64); sub_44E6B0(a1, (char *)rgbValue + 72); sub_44E6B0(a1, (char *)rgbValue + 88); sub_44E6B0(a1, (char *)rgbValue + 104); sub_44E6B0(a1, (char *)rgbValue + 120); sub_44E4E0(a1, (char *)rgbValue + 136); sub_44E4E0(a1, (char *)rgbValue + 140); sub_44E4E0(a1, (char *)rgbValue + 144); sub_44E4E0(a1, (char *)rgbValue + 148); sub_44E510(a1, (char *)rgbValue + 152); sub_44E6B0(a1, (char *)rgbValue + 156); sub_44E6B0(a1, (char *)rgbValue + 304); sub_44E600(a1, (char *)rgbValue + 320); sub_44E600(a1, (char *)rgbValue + 341); sub_44E600(a1, (char *)rgbValue + 172); sub_44E4D0(a1); result = 1; } return result; } //----- (004520F0) -------------------------------------------------------- bool __stdcall sub_4520F0(int a1) { int v1; // esi@1 SQLRETURN v2; // ax@1 v1 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v1); v2 = SQLExecDirect((SQLHSTMT)v1, "{CALL p_Guild_GetAll}", -3); return !v2 || v2 == 1; } //----- (00452130) -------------------------------------------------------- bool __stdcall sub_452130(int a1) { int v1; // esi@1 SQLRETURN v2; // ax@1 v1 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v1); v2 = SQLExecDirect((SQLHSTMT)v1, "{CALL usp_Guild_GetTokenAll}", -3); return !v2 || v2 == 1; } //----- (00452170) -------------------------------------------------------- bool __stdcall sub_452170(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 13) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, -9, 0, 0, rgbValue, 18, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 19, 9, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 30, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 36, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -18, 4, 0, 0, (char *)rgbValue + 48, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 4, -16, 4, 0, 0, (char *)rgbValue + 52, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 4, -27, -5, 0, 0, (char *)rgbValue + 56, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_Make2(?,?,?,?,?,?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_DWORD *)rgbValue + 13) > 0; } //----- (004522B0) -------------------------------------------------------- bool __stdcall sub_4522B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_Delete(?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 4) == 1; } //----- (00452330) -------------------------------------------------------- bool __stdcall sub_452330(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 32) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -28, -6, 0, 0, (char *)rgbValue + 32, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_MoneyAdd(?,?,?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 32) == 1; } //----- (00452420) -------------------------------------------------------- int __stdcall sub_452420(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 32) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -28, -6, 0, 0, (char *)rgbValue + 32, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_MoneySub(?,?,?,?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 32) == 0; return result; } //----- (00452510) -------------------------------------------------------- bool __stdcall sub_452510(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 24) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 11, 11, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_SetDismiss(?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 24) == 1; } //----- (004525D0) -------------------------------------------------------- bool __stdcall sub_4525D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 5) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)rgbValue + 5, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_SetType(?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 5) == 1; } //----- (00452670) -------------------------------------------------------- bool __stdcall sub_452670(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 8) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_SetFame(?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 8) == 1; } //----- (00452710) -------------------------------------------------------- bool __stdcall sub_452710(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 16) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_SetMoney(?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 16) == 1; } //----- (004527B0) -------------------------------------------------------- bool __stdcall sub_4527B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 16) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_SetExp(?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 16) == 1; } //----- (00452850) -------------------------------------------------------- signed int __stdcall sub_452850(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Guild_GetToken(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPGuild::p_Guild_GetToken, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPGuild::p_Guild_GetToken, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPGuild::p_Guild_GetToken, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPGuild::p_Guild_GetToken, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00452A40) -------------------------------------------------------- bool __stdcall sub_452A40(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Guild_SetToken(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Guild_SetToken, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00452B50) -------------------------------------------------------- signed int __stdcall sub_452B50(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildTournament_getMoney(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPGuild::p_Get_Guild_Tournament_Proposal_Money, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPGuild::p_Get_Guild_Tournament_Proposal_Money, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPGuild::p_Get_Guild_Tournament_Proposal_Money, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf( &v12, "ERROR - CSQLPGuild::p_Get_Guild_Tournament_Proposal_Money, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00452D20) -------------------------------------------------------- bool __stdcall sub_452D20(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 56) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 11, 11, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 11, 11, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, 11, 11, 0, 0, (char *)rgbValue + 36, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 52, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -28, -6, 0, 0, (char *)rgbValue + 56, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_SetWar(?,?,?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 56) == 1; } //----- (00452E10) -------------------------------------------------------- bool __stdcall sub_452E10(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 16) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_SetWarResult(?,?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 16) == 1; } //----- (00452EE0) -------------------------------------------------------- bool __stdcall sub_452EE0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 554) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 20, 20, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 1, -9, 0, 0, (char *)rgbValue + 41, 512, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -28, -6, 0, 0, (char *)rgbValue + 554, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_SetNotify(?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 554) == 1; } //----- (00452FA0) -------------------------------------------------------- bool __stdcall sub_452FA0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 133) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 4, 128, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)rgbValue + 133, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_SetIntro(?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 133) == 1; } //----- (00453050) -------------------------------------------------------- bool __stdcall sub_453050(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_GetMyNo(?,?)}", -3); return (!v3 || v3 == 1) && *(_DWORD *)rgbValue; } //----- (004530E0) -------------------------------------------------------- bool __stdcall sub_4530E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 24; *((_DWORD *)rgbValue + 6) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 4, 18, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -18, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_setName(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Guild_SetName, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (004531F0) -------------------------------------------------------- bool __stdcall sub_4531F0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_Member_GetAll(?)}", -3); return !v3 || v3 == 1; } //----- (00453250) -------------------------------------------------------- bool __stdcall sub_453250(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 9) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -28, -6, 0, 0, (char *)rgbValue + 9, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_Member_Join(?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 9) == 1; } //----- (00453310) -------------------------------------------------------- bool __stdcall sub_453310(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 8) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_Member_Leave(?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 8) == 1; } //----- (004533B0) -------------------------------------------------------- bool __stdcall sub_4533B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@5 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 12; *((_DWORD *)rgbValue + 3) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 12, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_Member_SetGrade(?,?,?,?)}", -3); if ( (v4 && v4 != 1 || *(_DWORD *)v3) && *(_DWORD *)v3 != -1324 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Guild_Member_SetGrade, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (004534E0) -------------------------------------------------------- bool __stdcall sub_4534E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 73) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 1, -9, 0, 0, (char *)rgbValue + 8, 64, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -28, -6, 0, 0, (char *)rgbValue + 73, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Guild_Member_SetIntro(?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_BYTE *)rgbValue + 73) == 1; } //----- (004535A0) -------------------------------------------------------- signed int __stdcall sub_4535A0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 int v3; // ebx@1 SQLRETURN v4; // ax@2 signed int result; // eax@6 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = 0; if ( *((_DWORD *)rgbValue + 2) <= 0 ) { LABEL_6: result = 1; } else { while ( 1 ) { *(_DWORD *)rgbValue = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 8 * v3 + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8 * v3 + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -18, 4, 0, 0, rgbValue, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_GuildTournament_Set(?,?,?,?)}", -3); if ( v4 ) { if ( v4 != 1 ) break; } if ( *(_DWORD *)rgbValue ) break; ++v3; if ( v3 >= *((_DWORD *)rgbValue + 2) ) goto LABEL_6; } result = 0; } return result; } //----- (00453670) -------------------------------------------------------- signed int __stdcall sub_453670(int a1, int a2) { int v2; // ebx@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)a2 = 0; v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_GuildTournament_GetLastMatch}", -3); if ( v3 && v3 != 1 ) { result = 0; } else { for ( ; sub_44E4A0(a1); ++*(_DWORD *)(a2 + 8) ) { sub_44E4E0(a1, (SQLPOINTER)(a2 + 4)); sub_44E540(a1, (SQLPOINTER)(a2 + 8 * *(_DWORD *)(a2 + 8) + 12)); sub_44E570(a1, (SQLPOINTER)(a2 + 8 * *(_DWORD *)(a2 + 8) + 16)); } sub_44E4D0(a1); result = 1; } return result; } //----- (00453720) -------------------------------------------------------- signed int __stdcall sub_453720(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 int v5; // eax@3 SQLRETURN v6; // si@11 char *v8; // [sp-10h] [bp-D28h]@15 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@11 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@11 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@11 SQLCHAR MessageText; // [sp+414h] [bp-904h]@11 char v13; // [sp+814h] [bp-504h]@12 char v14; // [sp+C14h] [bp-104h]@8 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 32; *((_DWORD *)rgbValue + 8) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -16, 4, 0, 0, (char *)rgbValue + 32, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildTournament_setRegist(?,?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || (v5 = *(_DWORD *)v3) != 0 && v5 != -1421 && v5 != -1422 && v5 != -1423 && v5 != -1424 ) { sprintf(&v14, "ERROR - CSQLPGuild::usp_GuildTournament_Join_New, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPGuild::usp_GuildTournament_Join_New, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPGuild::usp_GuildTournament_Join_New, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPGuild::usp_GuildTournament_Join_New, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00453990) -------------------------------------------------------- signed int __stdcall sub_453990(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); v3 = (char *)rgbValue + 4; SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildTournament_getRegistList(?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPGuild::usp_GuildTournament_Join_List, ret(%d)", v4); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPGuild::usp_GuildTournament_Join_List", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00453A90) -------------------------------------------------------- signed int __stdcall sub_453A90(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 12; *((_DWORD *)rgbValue + 3) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildTournament_setChoice(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPGuild::usp_GuildTournament_Final_Selection, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPGuild::usp_GuildTournament_Final_Selection, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPGuild::usp_GuildTournament_Final_Selection, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPGuild::usp_GuildTournament_Final_Selection, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00453CA0) -------------------------------------------------------- signed int __stdcall sub_453CA0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildTournament_getChoiceList(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPGuild::usp_GuildTournament_Final_Selection_List, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPGuild::usp_GuildTournament_Final_Selection_List, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPGuild::usp_GuildTournament_Final_Selection_List, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf( &v12, "ERROR - CSQLPGuild::usp_GuildTournament_Final_Selection_List, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00453E70) -------------------------------------------------------- signed int __stdcall sub_453E70(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildTournament_setRefundNotice(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::usp_GuildTournament_Refund_Notice_Set, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPGuild::usp_GuildTournament_Refund_Notice_Set", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00453F90) -------------------------------------------------------- signed int __stdcall sub_453F90(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildTournament_SetResult(?,?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPGuild::usp_GuildTournament_Set_Result, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPGuild::usp_GuildTournament_Set_Result", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004540E0) -------------------------------------------------------- bool __stdcall sub_4540E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // si@1 char v5; // [sp+8h] [bp-104h]@4 unsigned int v6; // [sp+108h] [bp-4h]@1 int v7; // [sp+10Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *(_DWORD *)rgbValue = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 4, -16, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getGuildAcademyList(?)}", -3); if ( v3 && v3 != 1 || *(_DWORD *)rgbValue ) { sprintf(&v5, "ERROR - CSQLPGuild::p_GuildAcademy_getGuildAcademyList, ret(%d), nRet(%d)", v3, *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v5); } return (!v3 || v3 == 1) && !*(_DWORD *)rgbValue; } // 4DE38C: using guessed type int __security_cookie; //----- (004541C0) -------------------------------------------------------- bool __stdcall sub_4541C0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getMemberList(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Guild_Academy_Member_GetAll, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (004542B0) -------------------------------------------------------- bool __stdcall sub_4542B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 int v5; // edi@9 char v7; // [sp+Ch] [bp-104h]@5 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getGuildNo(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 && *(_DWORD *)v3 != -1521 ) { sprintf(&v7, "ERROR - CSQLPGuild::p_Guild_Academy_GetMyNo, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } return (!v4 || v4 == 1) && *(_DWORD *)rgbValue && ((v5 = *(_DWORD *)v3) == 0 || v5 == -1521); } // 4DE38C: using guessed type int __security_cookie; //----- (004543C0) -------------------------------------------------------- bool __stdcall sub_4543C0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // si@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 28; *((_DWORD *)rgbValue + 7) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 11, 11, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 28, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_setMember(?,?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPGuild::p_Guild_Academy_Member_Join, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } return (!v5 || v5 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454500) -------------------------------------------------------- bool __stdcall sub_454500(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_delMember(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Guild_Academy_Member_Leave, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454610) -------------------------------------------------------- bool __stdcall sub_454610(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // si@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 12; *((_DWORD *)rgbValue + 3) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 12, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_raiseMember(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPGuild::p_Guild_Academy_Member_Guild_Join, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } return (!v5 || v5 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454740) -------------------------------------------------------- bool __stdcall sub_454740(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 1028; *((_DWORD *)rgbValue + 257) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 4, 1024, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 1028, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_setNotify(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Guild_Academy_SetNotify, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454850) -------------------------------------------------------- bool __stdcall sub_454850(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_setMaster(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Guild_Academy_SetMaster, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454960) -------------------------------------------------------- bool __stdcall sub_454960(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getRewardAll(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Get_Guild_Academy_Reward_All, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454A70) -------------------------------------------------------- bool __stdcall sub_454A70(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getReward(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Get_Guild_Academy_Reward_Record, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454B80) -------------------------------------------------------- bool __stdcall sub_454B80(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 20; *((_DWORD *)rgbValue + 5) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -16, 4, 0, 0, (char *)rgbValue + 20, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_setReward(?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Set_Guild_Academy_Reward_Record, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454CE0) -------------------------------------------------------- bool __stdcall sub_454CE0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_delRewardAll(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Del_Guild_Academy_Reward_All, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454DF0) -------------------------------------------------------- bool __stdcall sub_454DF0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // si@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_withdrawMoney(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPGuild::pGuildAcademyMoneyWithdraw, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } return (!v5 || v5 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00454F20) -------------------------------------------------------- bool __stdcall sub_454F20(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // si@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_depositMoney(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPGuild::pGuildAcademyMoneyDeposit, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } return (!v5 || v5 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00455050) -------------------------------------------------------- bool __stdcall sub_455050(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 52; *((_DWORD *)rgbValue + 13) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 1, -9, 0, 40, (char *)rgbValue + 8, 40, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 48, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -17, 5, 0, 0, (char *)rgbValue + 50, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -16, 4, 0, 0, (char *)rgbValue + 52, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_setGraduate(?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Set_Guild_Academy_Graduate, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (004551B0) -------------------------------------------------------- bool __stdcall sub_4551B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getGraduateCount(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Get_Guild_Academy_Graduate_Count, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (004552A0) -------------------------------------------------------- bool __stdcall sub_4552A0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getGraduateList(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Get_Guild_Academy_Graduate_List, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00455390) -------------------------------------------------------- bool __stdcall sub_455390(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getRanking(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_GuildAcademy_getRanking, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00455480) -------------------------------------------------------- bool __stdcall sub_455480(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // si@1 char v5; // [sp+8h] [bp-104h]@4 unsigned int v6; // [sp+108h] [bp-4h]@1 int v7; // [sp+10Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *(_DWORD *)rgbValue = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 4, -16, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_setRanking(?)}", -3); if ( v3 && v3 != 1 || *(_DWORD *)rgbValue ) { sprintf(&v5, "ERROR - CSQLPGuild::p_Get_Guild_Academy_Set_Ranking, ret(%d), nRet(%d)", v3, *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v5); } return (!v3 || v3 == 1) && !*(_DWORD *)rgbValue; } // 4DE38C: using guessed type int __security_cookie; //----- (00455560) -------------------------------------------------------- bool __stdcall sub_455560(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // si@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 12; *((_DWORD *)rgbValue + 3) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 12, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_setMemberLevelup(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPGuild::p_Get_Guild_Academy_Level_Up, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } return (!v5 || v5 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00455690) -------------------------------------------------------- bool __stdcall sub_455690(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getMoney(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGuild::p_Get_Guild_Academy_Money, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00455780) -------------------------------------------------------- bool __stdcall sub_455780(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // si@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 12; *((_DWORD *)rgbValue + 3) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 12, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_setChatBanTime(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPGuild::p_Set_Guild_Academy_ChatBanTime, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } return (!v5 || v5 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (004558B0) -------------------------------------------------------- bool __stdcall sub_4558B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *(_DWORD *)rgbValue = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Guild_getHistoryList(?,?,?)}", -3); v4 = v3; if ( v3 && v3 != 1 || *(_DWORD *)rgbValue ) { sprintf(&v6, "ERROR - CSQLPGuild::usp_Guild_getHistoryList, ret(%d), nRet(%d)", v3, *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1 || (sub_4507D0((int)"CSQLPGuild::usp_Guild_getHistoryList", (FILE *)v2), v4 == 1)) && !*(_DWORD *)rgbValue; } // 4DE38C: using guessed type int __security_cookie; //----- (004559D0) -------------------------------------------------------- bool __stdcall sub_4559D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *(_DWORD *)rgbValue = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 1, -9, 0, 0, (char *)rgbValue + 12, 40, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Guild_setHistory(?,?,?,?,?)}", -3); v4 = v3; if ( v3 && v3 != 1 || *(_DWORD *)rgbValue ) { sprintf(&v6, "ERROR - CSQLPGuild::usp_Guild_setHistory, ret(%d), nRet(%d)", v3, *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1 || (sub_4507D0((int)"CSQLPGuild::usp_Guild_setHistory", (FILE *)v2), v4 == 1)) && !*(_DWORD *)rgbValue; } // 4DE38C: using guessed type int __security_cookie; //----- (00455B30) -------------------------------------------------------- bool __stdcall sub_455B30(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *(_DWORD *)rgbValue = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_getHistoryList(?,?,?)}", -3); v4 = v3; if ( v3 && v3 != 1 || *(_DWORD *)rgbValue ) { sprintf(&v6, "ERROR - CSQLPGuild::usp_GuildAcademy_getHistoryList, ret(%d), nRet(%d)", v3, *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1 || (sub_4507D0((int)"CSQLPGuild::usp_GuildAcademy_getHistoryList", (FILE *)v2), v4 == 1)) && !*(_DWORD *)rgbValue; } // 4DE38C: using guessed type int __security_cookie; //----- (00455C50) -------------------------------------------------------- bool __stdcall sub_455C50(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *(_DWORD *)rgbValue = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 1, -9, 0, 0, (char *)rgbValue + 12, 40, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildAcademy_setHistory(?,?,?,?,?)}", -3); v4 = v3; if ( v3 && v3 != 1 || *(_DWORD *)rgbValue ) { sprintf(&v6, "ERROR - CSQLPGuild::usp_GuildAcademy_setHistory, ret(%d), nRet(%d)", v3, *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1 || (sub_4507D0((int)"CSQLPGuild::usp_GuildAcademy_setHistory", (FILE *)v2), v4 == 1)) && !*(_DWORD *)rgbValue; } // 4DE38C: using guessed type int __security_cookie; //----- (00455DB0) -------------------------------------------------------- int __stdcall sub_455DB0(int a1) { int result; // eax@2 int v2; // esi@3 SQLRETURN v3; // ax@3 if ( a1 ) { v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_GuildEmblem_GetInfoAll}", -3); result = !v3 || v3 == 1; } else { result = 0; } return result; } //----- (00455E10) -------------------------------------------------------- int __stdcall sub_455E10(int a1, SQLPOINTER rgbValue) { int result; // eax@2 int v3; // esi@5 SQLRETURN v4; // ax@5 if ( a1 ) { if ( rgbValue ) { v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL usp_GuildEmblem_GetInfo(?)}", -3); result = !v4 || v4 == 1; } else { result = 0; } } else { result = 0; } return result; } //----- (00455EA0) -------------------------------------------------------- int __stdcall sub_455EA0(int a1, SQLPOINTER rgbValue) { int result; // eax@2 int v3; // esi@5 SQLRETURN v4; // ax@5 if ( a1 ) { if ( rgbValue ) { v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); *((_DWORD *)rgbValue + 12) = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v3, 4u, 1, 11, 11, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v3, 5u, 1, 11, 11, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v3, 6u, 1, -28, -6, 0, 0, (char *)rgbValue + 44, 0, 0); SQLBindParameter((SQLHSTMT)v3, 7u, 4, -16, 4, 0, 0, (char *)rgbValue + 48, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL usp_GuildEmblem_SetInfo(?,?,?,?,?,?,?)}", -3); result = (!v4 || v4 == 1) && *((_DWORD *)rgbValue + 12) >= 0; } else { result = 0; } } else { result = 0; } return result; } //----- (00455FC0) -------------------------------------------------------- int __stdcall sub_455FC0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_WORD *)rgbValue + 8) = 20; *((_DWORD *)rgbValue + 3) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_HolyPromise_Set(?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 3); } //----- (00456080) -------------------------------------------------------- bool __stdcall sub_456080(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 1) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_HolyPromise_Del(?,?)}", -3); return *((_DWORD *)rgbValue + 1) == 0; } //----- (004560F0) -------------------------------------------------------- bool __stdcall sub_4560F0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 1) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_HolyPromise_DelChar(?,?)}", -3); return *((_DWORD *)rgbValue + 1) == 0; } //----- (00456160) -------------------------------------------------------- signed int __stdcall sub_456160(int a1, __time32_t Time) { int v2; // edi@1 int v3; // esi@1 __time32_t v4; // ebx@1 SQLPOINTER v5; // ST1C_4@1 SQLRETURN v6; // ax@1 signed int result; // eax@3 __int16 v8; // cx@6 __int16 v9; // dx@6 __int16 v10; // di@6 __int16 v11; // si@6 __int16 v12; // ax@6 __int16 v13; // cx@6 __int16 v14; // dx@6 __int16 v15; // [sp+Ch] [bp-24h]@6 __int16 v16; // [sp+10h] [bp-20h]@6 int v17; // [sp+14h] [bp-1Ch]@6 int v18; // [sp+18h] [bp-18h]@6 int v19; // [sp+1Ch] [bp-14h]@6 int v20; // [sp+20h] [bp-10h]@6 v2 = a1; v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); v4 = Time; v5 = (SQLPOINTER)Time; *(_DWORD *)(Time + 120) = -1; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, v5, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -16, 4, 0, 0, (SQLPOINTER)(v4 + 120), 0, 0); v6 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_HolyPromise_Get(?,?)}", -3); if ( v6 && v6 != 1 ) { result = 0; } else { *(_DWORD *)(v4 + 60) = 0; *(_DWORD *)(v4 + 64) = 0; *(_DWORD *)(v4 + 68) = 0; *(_DWORD *)(v4 + 72) = 0; *(_DWORD *)(v4 + 76) = 0; *(_DWORD *)(v4 + 80) = 0; *(_DWORD *)(v4 + 84) = 0; *(_DWORD *)(v4 + 88) = 0; *(_DWORD *)(v4 + 92) = 0; *(_DWORD *)(v4 + 96) = 0; if ( sub_44E4A0(a1) ) { sub_44E4E0(a1, (SQLPOINTER)(v4 + 4)); sub_44E510(a1, (SQLPOINTER)(v4 + 8)); sub_44E6B0(a1, (SQLPOINTER)(v4 + 12)); sub_44E6B0(a1, (SQLPOINTER)(v4 + 28)); sub_44E6B0(a1, (SQLPOINTER)(v4 + 44)); sub_44E600(a1, (SQLPOINTER)(v4 + 60)); sub_44E540(a1, (SQLPOINTER)(v4 + 100)); sub_44E6B0(a1, (SQLPOINTER)(v4 + 104)); } else { Time = _time32(0); memcpy(&v15, _localtime32(&Time), 0x24u); v8 = v20; v9 = v19; v10 = v17; v11 = v18; *(_DWORD *)(v4 + 4) = -1; *(_BYTE *)(v4 + 8) = 0; *(_DWORD *)(v4 + 12) = 0; *(_DWORD *)(v4 + 16) = 0; *(_DWORD *)(v4 + 20) = 0; *(_DWORD *)(v4 + 24) = 0; *(_WORD *)(v4 + 20) = v16; v12 = v15; *(_WORD *)(v4 + 18) = v10; *(_WORD *)(v4 + 22) = v12; *(_WORD *)(v4 + 16) = v11; v8 += 1900; *(_WORD *)(v4 + 12) = v8; ++v9; *(_WORD *)(v4 + 14) = v9; *(_DWORD *)(v4 + 28) = *(_DWORD *)(v4 + 12); *(_DWORD *)(v4 + 32) = *(_DWORD *)(v4 + 16); *(_DWORD *)(v4 + 36) = *(_DWORD *)(v4 + 20); *(_DWORD *)(v4 + 40) = *(_DWORD *)(v4 + 24); *(_DWORD *)(v4 + 44) = *(_DWORD *)(v4 + 12); *(_DWORD *)(v4 + 48) = *(_DWORD *)(v4 + 16); *(_DWORD *)(v4 + 52) = *(_DWORD *)(v4 + 20); *(_DWORD *)(v4 + 56) = *(_DWORD *)(v4 + 24); *(_DWORD *)(v4 + 60) = 0; *(_DWORD *)(v4 + 64) = 0; *(_DWORD *)(v4 + 68) = 0; *(_DWORD *)(v4 + 72) = 0; *(_DWORD *)(v4 + 76) = 0; *(_DWORD *)(v4 + 80) = 0; *(_DWORD *)(v4 + 84) = 0; *(_DWORD *)(v4 + 88) = 0; *(_DWORD *)(v4 + 92) = 0; *(_DWORD *)(v4 + 96) = 0; *(_WORD *)(v4 + 100) = 0; *(_DWORD *)(v4 + 104) = 0; *(_DWORD *)(v4 + 108) = 0; *(_DWORD *)(v4 + 112) = 0; *(_DWORD *)(v4 + 116) = 0; *(_WORD *)(v4 + 104) = v8; v13 = v16; *(_WORD *)(v4 + 106) = v9; v14 = v15; *(_WORD *)(v4 + 110) = v10; v2 = a1; *(_WORD *)(v4 + 108) = v11; *(_WORD *)(v4 + 112) = v13; *(_WORD *)(v4 + 114) = v14; } sub_44E4D0(v2); result = 1; } return result; } //----- (00456370) -------------------------------------------------------- bool __stdcall sub_456370(int a1, char rgbValue, void *a3) { int v3; // esi@1 void *v4; // edi@1 SQLRETURN v5; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); v4 = a3; *(_DWORD *)a3 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -18, 4, 0, 0, v4, 0, 0); v5 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_HolyPromise_GetMember(?,?)}", -3); return !v5 || v5 == 1; } //----- (004563F0) -------------------------------------------------------- bool __stdcall sub_4563F0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 9) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 11, 11, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 11, 11, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -18, 4, 0, 0, (char *)rgbValue + 36, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_HolyPromise_SetDate(?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (004564B0) -------------------------------------------------------- signed int __stdcall sub_4564B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 int v5; // eax@3 SQLRETURN v6; // si@11 char *v8; // [sp-10h] [bp-D28h]@15 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@11 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@11 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@11 SQLCHAR MessageText; // [sp+414h] [bp-904h]@11 char v13; // [sp+814h] [bp-504h]@12 char v14; // [sp+C14h] [bp-104h]@8 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 20; *((_DWORD *)rgbValue + 5) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 20, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_HolyPromise_setMoney(?,?,?,?)}", -3); if ( v4 && v4 != 1 || (v5 = *(_DWORD *)v3) != 0 && v5 != -2223 && v5 != -2222 && v5 != -2221 && v5 != -2212 ) { sprintf(&v14, "ERROR - CSQLPHolyPromise::usp_HolyPromise_setMoney, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPHolyPromise::usp_HolyPromise_setMoney, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPHolyPromise::usp_HolyPromise_setMoney, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPHolyPromise::usp_HolyPromise_setMoney, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004566D0) -------------------------------------------------------- signed int __stdcall sub_4566D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 SQLRETURN v5; // si@8 char *v7; // [sp-10h] [bp-D28h]@12 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@8 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@8 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@8 SQLCHAR MessageText; // [sp+414h] [bp-904h]@8 char v12; // [sp+814h] [bp-504h]@9 char v13; // [sp+C14h] [bp-104h]@5 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_HolyPromise_getRemainMoney(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 && *(_DWORD *)v3 != -2224 ) { sprintf(&v13, "ERROR - CSQLPHolyPromise::usp_HolyPromise_getRemainMoney, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPHolyPromise::usp_HolyPromise_getRemainMoney, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPHolyPromise::usp_HolyPromise_getRemainMoney, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf( &v12, "ERROR - CSQLPHolyPromise::usp_HolyPromise_getRemainMoney, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004568B0) -------------------------------------------------------- bool __stdcall sub_4568B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_HolyPromise_withDrawRemainMoney(?,?)}", -3); return !v3 || v3 == 1; } //----- (00456950) -------------------------------------------------------- int __stdcall sub_456950(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLPOINTER v3; // edi@1 v2 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -6, -6, 0, 0, (char *)v3 + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -6, -6, 0, 0, (char *)v3 + 5, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -6, -6, 0, 0, (char *)v3 + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, 1, -9, 0x14u, 0, (char *)v3 + 7, 20, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -6, -6, 0, 0, (char *)v3 + 48, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -6, -6, 0, 0, (char *)v3 + 49, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -6, -6, 0, 0, (char *)v3 + 50, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -6, -6, 0, 0, (char *)v3 + 51, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 1, -6, -6, 0, 0, (char *)v3 + 52, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xBu, 1, -6, -6, 0, 0, (char *)v3 + 53, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xCu, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_Create( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )}", -3); return a1; } //----- (00456AC0) -------------------------------------------------------- int __stdcall sub_456AC0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 12) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, 12, 0, 16, (char *)rgbValue + 4, 16, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -17, 5, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 30, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -17, 5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -17, 5, 0, 0, (char *)rgbValue + 34, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 4, -18, 4, 0, 0, (char *)rgbValue + 48, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_CreateSetDefaultData(?,?,?,?,?,?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 12); } //----- (00456C00) -------------------------------------------------------- int __stdcall sub_456C00(int a1, char rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); a1 = 4; SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_Delete(?,?)}", -3); return a1; } //----- (00456C70) -------------------------------------------------------- int __stdcall sub_456C70(int a1, char rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); a1 = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_Wipe(?,?)}", -3); return a1; } //----- (00456CE0) -------------------------------------------------------- int __stdcall sub_456CE0(int a1, char rgbValue, void *a3) { int v3; // esi@1 v3 = sub_44E6E0(a1); a1 = -1; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, 1, -9, 0, 0, a3, 40, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_Rename(?,?,?)}", -3); return a1; } //----- (00456D60) -------------------------------------------------------- bool __stdcall sub_456D60(int a1, char rgbValue, int a3) { int v3; // esi@1 SQLRETURN v4; // ax@4 SQLCHAR *v6; // [sp-8h] [bp-Ch]@2 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); if ( a3 ) v6 = "{CALL p_Char_GetListOfUserCharAll( ? )}"; else v6 = (SQLCHAR *)"{CALL p_Char_GetListOfUserChar( ? )}"; v4 = SQLExecDirect((SQLHSTMT)v3, v6, -3); return !v4 || v4 == 1; } //----- (00456DD0) -------------------------------------------------------- bool __stdcall sub_456DD0(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_GetLoginData( ? )}", -3); if ( v3 && v3 != 1 ) result = 0; else result = sub_44E4A0(a1); return result; } //----- (00456E40) -------------------------------------------------------- bool __stdcall sub_456E40(int a1, char rgbValue, void *a3) { int v3; // esi@1 void *v4; // edi@1 bool result; // al@2 SQLRETURN v6; // ax@3 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); v4 = a3; if ( a3 ) { SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -18, 4, 0, 0, v4, 0, 0); v6 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_Login(?,?)}", -3); result = (!v6 || v6 == 1) && !*(_DWORD *)v4; } else { result = 0; } return result; } //----- (00456ED0) -------------------------------------------------------- bool __stdcall sub_456ED0(int a1, char rgbValue, char a3) { int v3; // esi@1 v3 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_Logout(?,?,?)}", -3); return a1 == 1; } //----- (00456F60) -------------------------------------------------------- bool __stdcall sub_456F60(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_GetAllData(?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = sub_44E4A0(a1); return result; } //----- (00456FD0) -------------------------------------------------------- bool __stdcall sub_456FD0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 11) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, 1, -9, 0, 0, (char *)rgbValue + 4, 40, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -18, 4, 0, 0, (char *)rgbValue + 44, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_GetCharID(?,?,?)}", -3); return !v3 || v3 == 1; } //----- (00457070) -------------------------------------------------------- bool __stdcall sub_457070(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, -9, 0, 0, (char *)rgbValue + 4, 40, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_GetCharNo(?,?)}", -3); return !v3 || v3 == 1; } //----- (004570F0) -------------------------------------------------------- bool __stdcall sub_4570F0(int pcbValue, char rgbValue) { int v2; // edi@1 int v3; // esi@1 SQLRETURN v4; // ax@1 bool result; // al@3 v2 = pcbValue; v3 = sub_44E6E0(pcbValue); pcbValue = -3; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, (SQLINTEGER *)&pcbValue); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_GetShape( ? )}", -3); if ( v4 && v4 != 1 ) result = 0; else result = sub_44E4A0(v2); return result; } //----- (00457160) -------------------------------------------------------- bool __stdcall sub_457160(int a1, char rgbValue, void *a3) { int v3; // esi@1 void *v4; // edi@1 SQLRETURN v5; // ax@1 bool result; // al@3 v3 = sub_44E6E0(a1); BYTE3(a1) = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v4 = a3; SQLBindParameter((SQLHSTMT)v3, 2u, 1, -28, -6, 0, 0, a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 1, -28, -6, 0, 0, (char *)v4 + 1, 0, 0); SQLBindParameter((SQLHSTMT)v3, 4u, 1, -28, -6, 0, 0, (char *)v4 + 2, 0, 0); SQLBindParameter((SQLHSTMT)v3, 5u, 1, -28, -6, 0, 0, (char *)v4 + 3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 6u, 1, -28, -6, 0, 0, (char *)v4 + 4, 0, 0); SQLBindParameter((SQLHSTMT)v3, 7u, 1, -28, -6, 0, 0, (char *)v4 + 5, 0, 0); SQLBindParameter((SQLHSTMT)v3, 8u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v5 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SetShape(?,?,?,?,?,?,?,?)}", -3); if ( v5 && v5 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00457280) -------------------------------------------------------- bool __stdcall sub_457280(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 SQLSMALLINT cbValueMax[2]; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(a1); BYTE3(a1) = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -2, -3, 0, 1024, a3, 1024, (SQLINTEGER *)cbValueMax); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_GetOptShortCutData(?,?,?)}", -3); return (!v4 || v4 == 1) && BYTE3(a1) == 1; } //----- (00457330) -------------------------------------------------------- bool __stdcall sub_457330(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 SQLSMALLINT cbValueMax[2]; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(a1); BYTE3(a1) = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -2, -3, 0, 24, a3, 24, (SQLINTEGER *)cbValueMax); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_GetOptShortCutSize(?,?,?)}", -3); return (!v4 || v4 == 1) && BYTE3(a1) == 1; } //----- (004573E0) -------------------------------------------------------- bool __stdcall sub_4573E0(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 SQLSMALLINT cbValueMax[2]; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(a1); BYTE3(a1) = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -2, -3, 0, 60, a3, 60, (SQLINTEGER *)cbValueMax); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_GetOptVideo(?,?,?)}", -3); return (!v4 || v4 == 1) && BYTE3(a1) == 1; } //----- (00457490) -------------------------------------------------------- bool __stdcall sub_457490(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 SQLSMALLINT cbValueMax[2]; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(a1); BYTE3(a1) = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -2, -3, 0, 1, a3, 1, (SQLINTEGER *)cbValueMax); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_GetOptSound(?,?,?)}", -3); return (!v4 || v4 == 1) && BYTE3(a1) == 1; } //----- (00457540) -------------------------------------------------------- bool __stdcall sub_457540(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 SQLSMALLINT cbValueMax[2]; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(a1); BYTE3(a1) = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -2, -3, 0, 64, a3, 64, (SQLINTEGER *)cbValueMax); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_GetOptGame(?,?,?)}", -3); return (!v4 || v4 == 1) && BYTE3(a1) == 1; } //----- (004575F0) -------------------------------------------------------- bool __stdcall sub_4575F0(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 SQLSMALLINT cbValueMax[2]; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(a1); BYTE3(a1) = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -2, -3, 0, 392, a3, 392, (SQLINTEGER *)cbValueMax); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_GetOptWindowsPos(?,?,?)}", -3); return (!v4 || v4 == 1) && BYTE3(a1) == 1; } //----- (004576A0) -------------------------------------------------------- bool __stdcall sub_4576A0(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 SQLSMALLINT cbValueMax[2]; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(a1); BYTE3(a1) = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -2, -3, 0, 308, a3, 308, (SQLINTEGER *)cbValueMax); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_GetOptKeyMapping(?,?,?)}", -3); return (!v4 || v4 == 1) && BYTE3(a1) == 1; } //----- (00457750) -------------------------------------------------------- bool __stdcall sub_457750(SQLINTEGER cbValueMax, char rgbValue, void *a3) { int v3; // esi@1 int v5; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(cbValueMax); SQLCloseCursor((SQLHSTMT)v3); cbValueMax = 1024; v5 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -2, -3, 0, cbValueMax, a3, cbValueMax, &cbValueMax); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &v5, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SetOptShortCutData(?,?,?)}", -3); return v5 == 1; } //----- (004577F0) -------------------------------------------------------- bool __stdcall sub_4577F0(SQLINTEGER cbValueMax, char rgbValue, void *a3) { int v3; // esi@1 int v5; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(cbValueMax); SQLCloseCursor((SQLHSTMT)v3); cbValueMax = 24; v5 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -2, -3, 0, cbValueMax, a3, cbValueMax, &cbValueMax); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &v5, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SetOptShortCutSize(?,?,?)}", -3); return v5 == 1; } //----- (00457890) -------------------------------------------------------- bool __stdcall sub_457890(SQLINTEGER cbValueMax, char rgbValue, void *a3) { int v3; // esi@1 int v5; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(cbValueMax); SQLCloseCursor((SQLHSTMT)v3); cbValueMax = 60; v5 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -2, -3, 0, cbValueMax, a3, cbValueMax, &cbValueMax); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &v5, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SetOptVideo(?,?,?)}", -3); return v5 == 1; } //----- (00457930) -------------------------------------------------------- bool __stdcall sub_457930(SQLINTEGER cbValueMax, char rgbValue, void *a3) { int v3; // esi@1 int v5; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(cbValueMax); SQLCloseCursor((SQLHSTMT)v3); cbValueMax = 1; v5 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -2, -3, 0, cbValueMax, a3, cbValueMax, &cbValueMax); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &v5, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SetOptSound(?,?,?)}", -3); return v5 == 1; } //----- (004579D0) -------------------------------------------------------- bool __stdcall sub_4579D0(SQLINTEGER cbValueMax, char rgbValue, void *a3) { int v3; // esi@1 int v5; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(cbValueMax); SQLCloseCursor((SQLHSTMT)v3); cbValueMax = 64; v5 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -2, -3, 0, cbValueMax, a3, cbValueMax, &cbValueMax); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &v5, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SetOptGame(?,?,?)}", -3); return v5 == 1; } //----- (00457A70) -------------------------------------------------------- bool __stdcall sub_457A70(SQLINTEGER cbValueMax, char rgbValue, void *a3) { int v3; // esi@1 int v5; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(cbValueMax); SQLCloseCursor((SQLHSTMT)v3); cbValueMax = 392; v5 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -2, -3, 0, cbValueMax, a3, cbValueMax, &cbValueMax); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &v5, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SetOptWindowsPos(?,?,?)}", -3); return v5 == 1; } //----- (00457B10) -------------------------------------------------------- bool __stdcall sub_457B10(SQLINTEGER cbValueMax, char rgbValue, void *a3) { int v3; // esi@1 int v5; // [sp+4h] [bp-4h]@1 v3 = sub_44E6E0(cbValueMax); SQLCloseCursor((SQLHSTMT)v3); cbValueMax = 308; v5 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -2, -3, 0, cbValueMax, a3, cbValueMax, &cbValueMax); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &v5, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SetOptKeyMapping(?,?,?)}", -3); return v5 == 1; } //----- (00457BB0) -------------------------------------------------------- bool __stdcall sub_457BB0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); a1 = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_DelStateAll(?,?)}", -3); return a1 == 0; } //----- (00457C20) -------------------------------------------------------- bool __stdcall sub_457C20(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_GetStateAllWithSetItemAndRestTime(?)}", -3); return !v3 || v3 == 1; } //----- (00457C80) -------------------------------------------------------- bool __stdcall sub_457C80(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 bool result; // al@3 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); BYTE3(a1) = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -27, -5, 0, 0, a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_MoneyGet( ?, ?, ? )}", -3); if ( v4 && v4 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00457D20) -------------------------------------------------------- bool __stdcall sub_457D20(int a1, char rgbValue, char a3, int a4) { int v4; // esi@1 SQLRETURN v5; // ax@1 bool result; // al@3 v4 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v4); BYTE3(a1) = 0; SQLBindParameter((SQLHSTMT)v4, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v4, 2u, 1, -27, -5, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v4, 3u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v5 = SQLExecDirect((SQLHSTMT)v4, "{CALL p_Char_MoneyAdd( ?, ?, ? )}", -3); if ( v5 && v5 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00457DC0) -------------------------------------------------------- bool __stdcall sub_457DC0(int a1, char rgbValue, char a3, int a4) { int v4; // esi@1 SQLRETURN v5; // ax@1 bool result; // al@3 v4 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v4); BYTE3(a1) = 0; SQLBindParameter((SQLHSTMT)v4, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v4, 2u, 1, -27, -5, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v4, 3u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v5 = SQLExecDirect((SQLHSTMT)v4, "{CALL p_Char_MoneySub( ?, ?, ? )}", -3); if ( v5 && v5 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00457E60) -------------------------------------------------------- bool __stdcall sub_457E60(int a1, char rgbValue, char a3, char a4, int a5) { int v5; // esi@1 SQLRETURN v6; // ax@1 bool result; // al@3 v5 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v5); BYTE3(a1) = 0; SQLBindParameter((SQLHSTMT)v5, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v5, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v5, 3u, 1, -27, -5, 0, 0, &a4, 0, 0); SQLBindParameter((SQLHSTMT)v5, 4u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v6 = SQLExecDirect((SQLHSTMT)v5, "{CALL p_Char_MoneyMove(?,?,?,?)}", -3); if ( v6 && v6 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00457F10) -------------------------------------------------------- bool __stdcall sub_457F10(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 bool result; // al@3 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); BYTE3(a1) = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_FameSet(?,?,?)}", -3); if ( v4 && v4 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00457FB0) -------------------------------------------------------- bool __stdcall sub_457FB0(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 bool result; // al@3 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); BYTE3(a1) = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_FameAdd(?,?,?)}", -3); if ( v4 && v4 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00458050) -------------------------------------------------------- bool __stdcall sub_458050(int a1, char rgbValue, char a3, char a4, int a5) { int v5; // esi@1 SQLRETURN v6; // ax@1 bool result; // al@3 v5 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v5); SQLBindParameter((SQLHSTMT)v5, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v5, 2u, 1, -17, 5, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v5, 3u, 1, -27, -5, 0, 0, &a4, 0, 0); SQLBindParameter((SQLHSTMT)v5, 4u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v6 = SQLExecDirect((SQLHSTMT)v5, "{CALL p_Char_SetLevelExp( ?, ?, ?, ? )}", -3); if ( v6 && v6 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00458100) -------------------------------------------------------- bool __stdcall sub_458100(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_GetTitleAll(?)}", -3); return !v3 || v3 == 1; } //----- (00458160) -------------------------------------------------------- bool __stdcall sub_458160(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 bool result; // al@3 char v6; // [sp+Ch] [bp-104h]@5 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_BYTE *)rgbValue + 16) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 5, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_SetTitle(?,?,?,?,?)}", -3); if ( v4 && v4 != 1 ) { result = 0; } else { if ( *v3 != 1 ) { sprintf( &v6, "ERROR - CSQLPCharacter::p_Char_SetTitle, nCharNo=%d, nType=%d, nElementNo=%d, nElementValue=%d, nRet=%d", *(_DWORD *)rgbValue, *((_BYTE *)rgbValue + 4), *((_BYTE *)rgbValue + 5), *((_DWORD *)rgbValue + 2), *((_DWORD *)rgbValue + 3), (unsigned __int8)*v3); sub_446350(1, "Msg", "%s", &v6); } result = *v3 == 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004582B0) -------------------------------------------------------- bool __stdcall sub_4582B0(int a1, char rgbValue, char a3) { int v3; // esi@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); a1 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -6, -6, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_StatPoint_Inc(?,?,?)}", -3); return a1 == 1; } //----- (00458340) -------------------------------------------------------- bool __stdcall sub_458340(int a1, char rgbValue, char a3) { int v3; // esi@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); a1 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -6, -6, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_StatPoint_Dec(?,?,?)}", -3); return a1 == 1; } //----- (004583D0) -------------------------------------------------------- bool __stdcall sub_4583D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 5) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 5, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -28, -6, 0, 0, (char *)rgbValue + 7, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -28, -6, 0, 0, (char *)rgbValue + 9, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 1, -28, -6, 0, 0, (char *)rgbValue + 18, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xBu, 4, -16, 4, 0, 0, (char *)rgbValue + 20, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setStatPoint(?,?,?,?,?,?,?,?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (00458540) -------------------------------------------------------- bool __stdcall sub_458540(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -27, -5, 0, 0, a3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_AddExp(?,?)}", -3); return !v4 || v4 == 1; } //----- (004585C0) -------------------------------------------------------- bool __stdcall sub_4585C0(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -27, -5, 0, 0, a3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SubExp(?,?)}", -3); return !v4 || v4 == 1; } //----- (00458640) -------------------------------------------------------- bool __stdcall sub_458640(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -6, -6, 0, 0, &a3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_ChangeClass(?,?)}", -3); return !v4 || v4 == 1; } //----- (004586C0) -------------------------------------------------------- bool __stdcall sub_4586C0(int a1, char rgbValue, char a3, void *a4, char a5) { int v5; // esi@1 SQLRETURN v6; // ax@1 v5 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v5); SQLBindParameter((SQLHSTMT)v5, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v5, 2u, 1, -17, 5, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v5, 3u, 1, -27, -5, 0, 0, a4, 0, 0); SQLBindParameter((SQLHSTMT)v5, 4u, 1, -18, 4, 0, 0, &a5, 0, 0); v6 = SQLExecDirect((SQLHSTMT)v5, "{CALL p_Char_SaveLevelExpFrame(?,?,?,?)}", -3); return !v6 || v6 == 1; } //----- (00458770) -------------------------------------------------------- bool __stdcall sub_458770(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, 12, 0, 0, (char *)rgbValue + 4, 16, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -16, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -16, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, 1, 12, 0, 0, (char *)rgbValue + 36, 16, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -16, 4, 0, 0, (char *)rgbValue + 52, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -16, 4, 0, 0, (char *)rgbValue + 56, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_SaveLocation(?,?,?,?, ?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (00458890) -------------------------------------------------------- bool __stdcall sub_458890(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -17, 5, 0, 0, (char *)rgbValue + 14, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -17, 5, 0, 0, (char *)rgbValue + 18, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_SaveStat(?,?,?,?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (00458990) -------------------------------------------------------- bool __stdcall sub_458990(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_SavePKCount(?,?)}", -3); return !v4 || v4 == 1; } //----- (00458A10) -------------------------------------------------------- signed int __stdcall sub_458A10(int a1, SQLPOINTER rgbValue) { int v2; // edi@1 SQLRETURN v3; // ax@1 signed int result; // eax@4 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_GetKQMap(?)}", -3); if ( v3 && v3 != 1 || !sub_44E4A0(a1) ) { result = 0; } else { sub_44E4E0(a1, (char *)rgbValue + 4); sub_44E600(a1, (char *)rgbValue + 8); sub_44E570(a1, (char *)rgbValue + 24); sub_44E570(a1, (char *)rgbValue + 28); sub_44E510(a1, (char *)rgbValue + 32); sub_44E6B0(a1, (char *)rgbValue + 36); sub_44E4D0(a1); result = 1; } return result; } //----- (00458AD0) -------------------------------------------------------- signed int __stdcall sub_458AD0(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // di@1 int v4; // eax@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+8h] [bp-D10h]@7 SQLSMALLINT TextLength[2]; // [sp+Ch] [bp-D0Ch]@7 int v10; // [sp+10h] [bp-D08h]@1 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); v10 = 0; SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, &v10, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setRestExpExecTime(?,?)}", -3); v4 = v10; if ( v3 && v3 != 1 || v10 ) { sprintf(&v14, "ERROR - CSQLPCharacter::p_Char_SaveRestExpLastExecTime, ret(%d), nRet(%d)", v3, v10); sub_446350(1, "Msg", "%s", &v14); v4 = v10; } if ( v3 && v3 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPCharacter::p_Char_SaveRestExpLastExecTime, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v5 == -1 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Char_SaveRestExpLastExecTime, SQLError = %d = SQL_ERROR", -1); v7 = &v13; } else { if ( !v5 ) return 0; sprintf(&v13, "ERROR - CSQLPCharacter::p_Char_SaveRestExpLastExecTime, SQLError = %d = unknown return value", v5); v7 = &v13; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( v4 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00458CB0) -------------------------------------------------------- signed int __stdcall sub_458CB0(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // di@1 int v5; // eax@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+8h] [bp-D10h]@7 SQLSMALLINT TextLength[2]; // [sp+Ch] [bp-D0Ch]@7 int v11; // [sp+10h] [bp-D08h]@1 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v14; // [sp+814h] [bp-504h]@8 char v15; // [sp+C14h] [bp-104h]@4 unsigned int v16; // [sp+D14h] [bp-4h]@1 int v17; // [sp+D18h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v3 = sub_44E6E0(a1); v11 = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -6, -7, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -16, 4, 0, 0, &v11, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL usp_Character_setAutoPick(?,?,?)}", -3); v5 = v11; if ( v4 && v4 != 1 || v11 ) { sprintf(&v15, "ERROR - CSQLPCharacter::p_Char_SetAutoPick, ret(%d), nRet(%d)", v4, v11); sub_446350(1, "Msg", "%s", &v15); v5 = v11; } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v3, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v14, "ERROR - CSQLPCharacter::p_Char_SaveAuto_Pick, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v14); } if ( v6 == -1 ) { sprintf(&v14, "ERROR - CSQLPCharacter::p_Char_SaveAuto_Pick, SQLError = %d = SQL_ERROR", -1); v8 = &v14; } else { if ( !v6 ) return 0; sprintf(&v14, "ERROR - CSQLPCharacter::p_Char_SaveAuto_Pick, SQLError = %d = unknown return value", v6); v8 = &v14; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( v5 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00458EB0) -------------------------------------------------------- bool __stdcall sub_458EB0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 11) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 40, (char *)rgbValue + 4, 40, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 44, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Char_chkCharNo(?,?,?)}", -3); return !v3 || v3 == 1; } //----- (00458F50) -------------------------------------------------------- bool __stdcall sub_458F50(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 24) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_User_Deposit(?,?,?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 24) == 0; return result; } //----- (00459020) -------------------------------------------------------- bool __stdcall sub_459020(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 24) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_User_Withdraw(?,?,?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 24) == 0; return result; } //----- (004590F0) -------------------------------------------------------- bool __stdcall sub_4590F0(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 bool result; // al@3 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); BYTE3(a1) = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -27, -5, 0, 0, a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_User_MoneyGet(?,?,?)}", -3); if ( v4 && v4 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00459190) -------------------------------------------------------- bool __stdcall sub_459190(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 44) = 1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, 11, 11, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, 11, 11, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -18, 4, 0, 0, (char *)rgbValue + 44, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_SetChargedBuffer(?,?,?,?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 44) == 0; return result; } //----- (00459280) -------------------------------------------------------- bool __stdcall sub_459280(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 44) = 1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -18, 4, 0, 0, (char *)rgbValue + 44, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_DelChargedBuff(?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 44) == 0; return result; } //----- (00459320) -------------------------------------------------------- bool __stdcall sub_459320(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_GetChargedBufferAll(?)}", -3); return !v3 || v3 == 1; } //----- (00459380) -------------------------------------------------------- bool __stdcall sub_459380(int pcbValue, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(pcbValue); pcbValue = -3; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, 1, -9, 0, 0, a3, 255, (SQLINTEGER *)&pcbValue); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_MiniHouseURL_Get(?,?)}", -3); return !v4 || v4 == 1; } //----- (00459400) -------------------------------------------------------- bool __stdcall sub_459400(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, 1, -9, 0, 0, a3, 255, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_MiniHouseURL_Set(?,?)}", -3); return !v4 || v4 == 1; } //----- (00459480) -------------------------------------------------------- bool __stdcall sub_459480(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Minihouse_getGateList(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::p_MiniHouse_get_Gate_List, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (00459570) -------------------------------------------------------- bool __stdcall sub_459570(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 40; *((_DWORD *)rgbValue + 10) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, 11, 11, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -16, 4, 0, 0, (char *)rgbValue + 40, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Minihouse_setGate(?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::p_MiniHouse_set_Gate, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (004596D0) -------------------------------------------------------- bool __stdcall sub_4596D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Minihouse_delGate(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::p_MiniHouse_del_Gate, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (004597E0) -------------------------------------------------------- bool __stdcall sub_4597E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Minihouse_setVisitorCount(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::p_MiniHouse_set_Visitor_Count, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (004598D0) -------------------------------------------------------- bool __stdcall sub_4598D0(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_WeddingStatus_Get(?)}", -3); return !v3 || v3 == 1; } //----- (00459930) -------------------------------------------------------- bool __stdcall sub_459930(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, 5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, 5, 0, 0, (char *)rgbValue + 9, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, 11, 11, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, 11, 11, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -28, -6, 0, 0, (char *)rgbValue + 44, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -28, -6, 0, 0, (char *)rgbValue + 45, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_WeddingStatus_Set(?,?,?,?,?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (00459A50) -------------------------------------------------------- bool __stdcall sub_459A50(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_Wedding_Propose(?,?,?)}", -3); return (!v4 || v4 == 1) && !a1; } //----- (00459AF0) -------------------------------------------------------- bool __stdcall sub_459AF0(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_Wedding_Cancel_Propose(?,?,?)}", -3); return (!v4 || v4 == 1) && !a1; } //----- (00459B90) -------------------------------------------------------- bool __stdcall sub_459B90(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, &a1, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_Wedding_Escape_Divorce_State(?,?)}", -3); return (!v3 || v3 == 1) && !a1; } //----- (00459C10) -------------------------------------------------------- bool __stdcall sub_459C10(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_Wedding_Divorce_by_Agree(?,?,?)}", -3); return (!v4 || v4 == 1) && !a1; } //----- (00459CB0) -------------------------------------------------------- bool __stdcall sub_459CB0(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_Wedding_Divorce_by_Force(?,?,?)}", -3); return (!v4 || v4 == 1) && !a1; } //----- (00459D50) -------------------------------------------------------- bool __stdcall sub_459D50(int a1, char rgbValue, char a3, char a4) { int v4; // esi@1 SQLRETURN v5; // ax@4 SQLCHAR *v7; // [sp-8h] [bp-Ch]@2 v4 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v4); SQLBindParameter((SQLHSTMT)v4, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v4, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v4, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); if ( a4 ) v7 = (SQLCHAR *)"{CALL p_Char_Wedding_Divorce_Do_by_Item(?,?,?)}"; else v7 = "{CALL p_Char_Wedding_Divorce_Do(?,?,?)}"; v5 = SQLExecDirect((SQLHSTMT)v4, v7, -3); return (!v5 || v5 == 1) && !a1; } //----- (00459E00) -------------------------------------------------------- bool __stdcall sub_459E00(int a1, char rgbValue, char a3, char a4, void *a5, void *a6) { int v6; // esi@1 SQLRETURN v7; // ax@1 v6 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v6); SQLBindParameter((SQLHSTMT)v6, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v6, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v6, 3u, 1, -28, -6, 0, 0, &a4, 0, 0); SQLBindParameter((SQLHSTMT)v6, 4u, 4, -28, -6, 0, 0, a5, 0, 0); SQLBindParameter((SQLHSTMT)v6, 5u, 4, -28, -6, 0, 0, a6, 0, 0); SQLBindParameter((SQLHSTMT)v6, 6u, 4, -18, 4, 0, 0, &a1, 0, 0); v7 = SQLExecDirect((SQLHSTMT)v6, "{CALL p_Char_Wedding_Divorce_Cancel(?,?,?,?,?,?)}", -3); return (!v7 || v7 == 1) && !a1; } //----- (00459EF0) -------------------------------------------------------- bool __stdcall sub_459EF0(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); a1 = 0; SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -18, 4, 0, 0, &a1, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Char_Wedding_Do(?,?,?)}", -3); return (!v4 || v4 == 1) && !a1; } //----- (00459F90) -------------------------------------------------------- bool __stdcall sub_459F90(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Char_Wedding_Get_Partner_Info(?)}", -3); return !v3 || v3 == 1; } //----- (00459FF0) -------------------------------------------------------- bool __stdcall sub_459FF0(int a1, char rgbValue, void *a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); a1 = 1; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -6, -6, 0, 0, a3, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -16, 4, 0, 0, &a1, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_IsPromotionUser(?,?,?)}", -3); return (!v4 || v4 == 1) && !a1; } //----- (0045A090) -------------------------------------------------------- bool __stdcall sub_45A090(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); *((_DWORD *)rgbValue + 2) = -1; SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -6, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -6, -6, 0, 0, (char *)rgbValue + 5, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, 11, 11, 0, 0, (char *)rgbValue + 12, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Promotion_Get(?,?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_DWORD *)rgbValue + 2) != -1; } //----- (0045A170) -------------------------------------------------------- bool __stdcall sub_45A170(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLPOINTER v3; // edi@1 SQLRETURN v4; // ax@1 v2 = sub_44E6E0(a1); a1 = -1; SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -6, -6, 0, 0, (char *)v3 + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -6, -6, 0, 0, (char *)v3 + 5, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)v3 + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -18, 4, 0, 0, &a1, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Promotion_Set(?,?,?,?,?)}", -3); return (!v4 || v4 == 1) && !a1; } //----- (0045A240) -------------------------------------------------------- signed int __stdcall sub_45A240(int a1, char rgbValue, void *a3) { void *v3; // edi@1 int v4; // esi@1 SQLRETURN v5; // ax@1 SQLRETURN v6; // bx@1 SQLRETURN v7; // si@7 char *v9; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v14; // [sp+814h] [bp-504h]@8 char v15; // [sp+C14h] [bp-104h]@4 unsigned int v16; // [sp+D14h] [bp-4h]@1 int v17; // [sp+D18h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v3 = a3; v4 = sub_44E6E0(a1); *(_DWORD *)v3 = 0; SQLCloseCursor((SQLHSTMT)v4); SQLBindParameter((SQLHSTMT)v4, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v4, 3u, 4, -16, 4, 0, 0, v3, 0, 0); v5 = SQLExecDirect((SQLHSTMT)v4, "{CALL usp_ChatBlock_getBlockList(?,?)}", -3); v6 = v5; if ( v5 && v5 != 1 || *(_DWORD *)v3 ) { sprintf(&v15, "ERROR - CSQLPCharacter::p_Char_GetChatRestrictList, ret(%d), nRet(%d)", v5, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v15); } if ( v6 && v6 != 1 ) { *(_DWORD *)TextLength = 0; v7 = SQLError(0, 0, (SQLHSTMT)v4, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v14, "ERROR - CSQLPCharacter::p_Char_GetChatRestrictList, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v14); } if ( v7 == -1 ) { sprintf(&v14, "ERROR - CSQLPCharacter::p_Char_GetChatRestrictList, SQLError = %d = SQL_ERROR", -1); v9 = &v14; } else { if ( !v7 ) return 0; sprintf(&v14, "ERROR - CSQLPCharacter::p_Char_GetChatRestrictList, SQLError = %d = unknown return value", v7); v9 = &v14; } sub_446350(1, "Msg", "%s", v9); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045A410) -------------------------------------------------------- signed int __stdcall sub_45A410(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 44; *((_DWORD *)rgbValue + 11) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 40, (char *)rgbValue + 4, 40, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 44, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChatBlock_setBlock(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045A600) -------------------------------------------------------- signed int __stdcall sub_45A600(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-928h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-90Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-908h]@7 SQLCHAR MessageText; // [sp+14h] [bp-904h]@7 SQLCHAR Sqlstate; // [sp+414h] [bp-504h]@7 char v12; // [sp+814h] [bp-104h]@4 unsigned int v13; // [sp+914h] [bp-4h]@1 int v14; // [sp+918h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChatBlock_delBlock(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict_Del, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v12); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict_Del, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict_Del, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict_Del, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045A7F0) -------------------------------------------------------- signed int __stdcall sub_45A7F0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChatBlock_delBlockALL(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict_Del_All, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict_Del_All, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict_Del_All, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPCharacter::p_Char_Chat_Restrict_Del_All, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045A9C0) -------------------------------------------------------- signed int __stdcall sub_45A9C0(int a1, char rgbValue, void *a3) { void *v3; // edi@1 int v4; // esi@1 SQLRETURN v5; // ax@1 SQLRETURN v6; // bx@1 SQLRETURN v7; // si@7 char *v9; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v14; // [sp+814h] [bp-504h]@8 char v15; // [sp+C14h] [bp-104h]@4 unsigned int v16; // [sp+D14h] [bp-4h]@1 int v17; // [sp+D18h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v3 = a3; v4 = sub_44E6E0(a1); *(_DWORD *)v3 = 0; SQLCloseCursor((SQLHSTMT)v4); SQLBindParameter((SQLHSTMT)v4, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v4, 2u, 4, -16, 4, 0, 0, v3, 0, 0); v5 = SQLExecDirect((SQLHSTMT)v4, "{CALL usp_Character_getSingleOption(?,?)}", -3); v6 = v5; if ( v5 && v5 != 1 || *(_DWORD *)v3 ) { sprintf(&v15, "ERROR - CSQLPCharacter::usp_Char_GetCharSingleOption, ret(%d), nRet(%d)", v5, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v15); } if ( v6 && v6 != 1 ) { *(_DWORD *)TextLength = 0; v7 = SQLError(0, 0, (SQLHSTMT)v4, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v14, "ERROR - CSQLPCharacter::usp_Char_GetCharSingleOption, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v14); } if ( v7 == -1 ) { sprintf(&v14, "ERROR - CSQLPCharacter::usp_Char_GetCharSingleOption, SQLError = %d = SQL_ERROR", -1); v9 = &v14; } else { if ( !v7 ) return 0; sprintf(&v14, "ERROR - CSQLPCharacter::usp_Char_GetCharSingleOption, SQLError = %d = unknown return value", v7); v9 = &v14; } sub_446350(1, "Msg", "%s", v9); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045AB90) -------------------------------------------------------- signed int __stdcall sub_45AB90(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setMysteryBolt( ?, ?, ? )}", -3); if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_Character_setMysteryBolt", (FILE *)v2); return 0; } if ( *((_DWORD *)rgbValue + 2) ) return 0; return 1; } //----- (0045AC40) -------------------------------------------------------- signed int __stdcall sub_45AC40(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 96; *((_DWORD *)rgbValue + 24) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 11, 11, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 1, 12, 0, 16, (char *)rgbValue + 20, 16, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 36, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -17, 5, 0, 0, (char *)rgbValue + 38, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, 1, 12, 0, 16, (char *)rgbValue + 40, 16, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, 1, 12, 0, 16, (char *)rgbValue + 56, 16, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, 1, 12, 0, 16, (char *)rgbValue + 72, 16, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -17, 5, 0, 0, (char *)rgbValue + 88, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 4, -16, 4, 0, 0, (char *)rgbValue + 92, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xBu, 4, -16, 4, 0, 0, (char *)rgbValue + 96, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_CharacterLoading(?,?,?,?,?,?,?,?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPCharacter::p_Set_Client_Loading_Bug_Detect, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPCharacter::p_Set_Client_Loading_Bug_Detect, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_Client_Loading_Bug_Detect, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_Client_Loading_Bug_Detect, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045AF00) -------------------------------------------------------- signed int __stdcall sub_45AF00(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_CharacterLoadingDetailInfo(?,?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf( &v14, "ERROR - CSQLPCharacter::p_Set_Client_Loading_Bug_Detec_Error_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPCharacter::p_Set_Client_Loading_Bug_Detec_Error_Data, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_Client_Loading_Bug_Detec_Error_Data, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf( &v13, "ERROR - CSQLPCharacter::p_Set_Client_Loading_Bug_Detec_Error_Data, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045B120) -------------------------------------------------------- signed int __stdcall sub_45B120(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 20; *((_DWORD *)rgbValue + 5) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 1, -9, 0, 0, (char *)rgbValue + 16, 3, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 20, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Dice_setDice(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045B330) -------------------------------------------------------- signed int __stdcall sub_45B330(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -25, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Dice_setDiceResult(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Result, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Result, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Result, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Result, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045B540) -------------------------------------------------------- signed int __stdcall sub_45B540(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 48; *((_DWORD *)rgbValue + 12) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 5, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -18, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 4, -16, 4, 0, 0, (char *)rgbValue + 48, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Dice_setDiceLog(?,?,?,?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Log, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Log, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Log, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Log, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045B7D0) -------------------------------------------------------- signed int __stdcall sub_45B7D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Dice_getDiceExpect(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Get_TaiSai_Dice_Roll_Expect, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Get_TaiSai_Dice_Roll_Expect, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::p_Get_TaiSai_Dice_Roll_Expect, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPCharacter::p_Get_TaiSai_Dice_Roll_Expect, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045B9C0) -------------------------------------------------------- signed int __stdcall sub_45B9C0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 24; *((_DWORD *)rgbValue + 6) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Dice_setDicePay(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Pay, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Pay, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Pay, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Pay, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045BBD0) -------------------------------------------------------- signed int __stdcall sub_45BBD0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Dice_getDiceRank(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Rank, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Rank, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Rank, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Roll_Rank, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045BDC0) -------------------------------------------------------- signed int __stdcall sub_45BDC0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 32; *((_DWORD *)rgbValue + 8) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -16, 4, 0, 0, (char *)rgbValue + 32, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Dice_chgMachineToMoneycard(?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf( &v13, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Chg_Machine_To_Money_Card, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Chg_Machine_To_Money_Card, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Chg_Machine_To_Money_Card, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf( &v12, "ERROR - CSQLPCharacter::p_Set_TaiSai_Dice_Chg_Machine_To_Money_Card, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C000) -------------------------------------------------------- signed int __stdcall sub_45C000(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_chkKeyMap(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::p_Get_Char_Option_Improve_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Get_Char_Option_Improve_Data", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C100) -------------------------------------------------------- signed int __stdcall sub_45C100(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_getShortCutList(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf( &v6, "ERROR - CSQLPCharacter::p_Get_Char_Option_Improve_Short_Cut_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Get_Char_Option_Improve_Short_Cut_Data", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C200) -------------------------------------------------------- signed int __stdcall sub_45C200(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 12; *((_DWORD *)rgbValue + 3) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 12, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setShortCut(?,?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf( &v7, "ERROR - CSQLPCharacter::p_Set_Char_Option_Improve_Short_Cut_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Set_Char_Option_Improve_Short_Cut_Data", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C350) -------------------------------------------------------- signed int __stdcall sub_45C350(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_initKeyMap(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf( &v6, "ERROR - CSQLPCharacter::p_Init_Char_Option_Improve_Key_Map_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Init_Char_Option_Improve_Key_Map_Data", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C450) -------------------------------------------------------- signed int __stdcall sub_45C450(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_getKeyMap(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::p_Get_Char_Option_Improve_Key_Map_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Get_Char_Option_Improve_Key_Map_Data", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C550) -------------------------------------------------------- signed int __stdcall sub_45C550(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 7, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setKeyMap(?,?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPCharacter::p_Set_Char_Option_Improve_Key_Map_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Set_Char_Option_Improve_Key_Map_Data", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C6A0) -------------------------------------------------------- signed int __stdcall sub_45C6A0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setGameOptionInit(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf( &v6, "ERROR - CSQLPCharacter::p_Init_Char_Option_Improve_Game_Option_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Init_Char_Option_Improve_Game_Option_Data", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C7A0) -------------------------------------------------------- signed int __stdcall sub_45C7A0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_getGameOption(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf( &v6, "ERROR - CSQLPCharacter::p_Get_Char_Option_Improve_Game_Option_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Get_Char_Option_Improve_Game_Option_Data", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C8A0) -------------------------------------------------------- signed int __stdcall sub_45C8A0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setGameOption(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf( &v7, "ERROR - CSQLPCharacter::p_Set_Char_Option_Improve_Game_Option_Data, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Set_Char_Option_Improve_Game_Option_Data", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045C9E0) -------------------------------------------------------- int __stdcall sub_45C9E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 int result; // eax@8 int v6; // edi@9 char v7; // [sp+Ch] [bp-104h]@5 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_SpamFilter_get(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 && *(_DWORD *)v3 != -2821 ) { sprintf(&v7, "ERROR - CSQLPCharacter::usp_SpamFilter_get, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_SpamFilter_get", (FILE *)v2); result = 0; } else { v6 = *(_DWORD *)v3; result = !v6 || v6 == -2821; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0045CB10) -------------------------------------------------------- signed int __stdcall sub_45CB10(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 5, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_SpamFilter_set(?,?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPCharacter::usp_SpamFilter_set, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_SpamFilter_set", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045CC60) -------------------------------------------------------- int __stdcall sub_45CC60(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 int result; // eax@8 int v6; // edi@9 char v7; // [sp+Ch] [bp-104h]@5 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_SpamBlock_getTime(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 && *(_DWORD *)v3 != -2822 ) { sprintf(&v7, "ERROR - CSQLPCharacter::usp_SpamBlock_getTime, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_SpamBlock_getTime", (FILE *)v2); result = 0; } else { v6 = *(_DWORD *)v3; result = !v6 || v6 == -2822; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0045CD90) -------------------------------------------------------- signed int __stdcall sub_45CD90(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 12; *((_DWORD *)rgbValue + 3) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 12, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_SpamBlock_setTime(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPCharacter::usp_SpamBlock_setTime, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_SpamBlock_setTime", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045CED0) -------------------------------------------------------- bool __stdcall sub_45CED0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_getChangeIDList(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::usp_Character_getChangeIDList, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (0045CFC0) -------------------------------------------------------- signed int __stdcall sub_45CFC0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v6; // [sp+Ch] [bp-108h]@1 char v7; // [sp+10h] [bp-104h]@4 unsigned int v8; // [sp+110h] [bp-4h]@1 int v9; // [sp+114h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 24; *((_DWORD *)rgbValue + 6) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 11, 11, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setItemActionCoolTime(?,?,?,?)}", -3); v6 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf( &v7, "ERROR - CSQLPCharacter::p_Character_setItemActionCoolTime, ret(%d), nRet(%d), nCharNo(%d), nActionID(%d)", v4, *(_DWORD *)v3, *(_DWORD *)rgbValue, *((_WORD *)rgbValue + 2)); sub_446350(1, "Msg", "%s", &v7); v4 = v6; } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::p_Character_setItemActionCoolTime", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045D110) -------------------------------------------------------- bool __stdcall sub_45D110(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // si@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_getItemActionCoolTime(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::p_Character_getItemActionCoolTime, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } return (!v4 || v4 == 1) && !*(_DWORD *)v3; } // 4DE38C: using guessed type int __security_cookie; //----- (0045D200) -------------------------------------------------------- int __stdcall sub_45D200(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 int result; // eax@8 int v6; // ebx@9 char v7; // [sp+Ch] [bp-104h]@5 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 44; *((_DWORD *)rgbValue + 11) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, -9, 0, 0, rgbValue, 40, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 44, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setChatBan(?, ?, ?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 && *(_DWORD *)v3 != -3121 ) { sprintf(&v7, "ERROR - CSQLPCharacter::usp_Character_setChatBan, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_Character_setChatBan", (FILE *)v2); result = 0; } else { v6 = *(_DWORD *)v3; result = !v6 || v6 == -3121; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0045D340) -------------------------------------------------------- signed int __stdcall sub_45D340(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_InGameGuide_getViewList(?, ?)}", -3); if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_InGameGuide_getViewList", (FILE *)v2); result = 0; } else { result = 1; } return result; } //----- (0045D3D0) -------------------------------------------------------- signed int __stdcall sub_45D3D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -6, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_InGameGuide_setGuideNo(?, ?, ?)}", -3); if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_InGameGuide_setGuideNo", (FILE *)v2); result = 0; } else { result = 1; } return result; } //----- (0045D480) -------------------------------------------------------- signed int __stdcall sub_45D480(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, -9, 0, 0, rgbValue, 3, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_setDice(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045D650) -------------------------------------------------------- signed int __stdcall sub_45D650(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -25, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_setDiceResult(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Result, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Result, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Result, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf( &v13, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Result, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045D860) -------------------------------------------------------- signed int __stdcall sub_45D860(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 48; *((_DWORD *)rgbValue + 12) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 5, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -18, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 4, -16, 4, 0, 0, (char *)rgbValue + 48, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_setDiceLog(?,?,?,?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Log, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Log, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Log, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf( &v12, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Log, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045DAF0) -------------------------------------------------------- signed int __stdcall sub_45DAF0(int a1, SQLPOINTER rgbValue) { int v2; // edi@1 SQLRETURN v3; // bx@1 SQLRETURN v4; // si@7 char *v6; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v11; // [sp+814h] [bp-504h]@8 char v12; // [sp+C14h] [bp-104h]@4 unsigned int v13; // [sp+D14h] [bp-4h]@1 int v14; // [sp+D18h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *(_DWORD *)rgbValue = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 4, -16, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_getDiceRank(?)}", -3); if ( v3 && v3 != 1 || *(_DWORD *)rgbValue ) { sprintf( &v12, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Rank, ret(%d), nRet(%d)", v3, *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v12); } if ( v3 && v3 != 1 ) { *(_DWORD *)TextLength = 0; v4 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v11, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Rank, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v11); } if ( v4 == -1 ) { sprintf(&v11, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Rank, SQLError = %d = SQL_ERROR", -1); v6 = &v11; } else { if ( !v4 ) return 0; sprintf( &v11, "ERROR - CSQLPCharacter::p_Set_Gamble_TaiSai_Dice_Roll_Rank, SQLError = %d = unknown return value", v4); v6 = &v11; } sub_446350(1, "Msg", "%s", v6); return 0; } if ( *(_DWORD *)rgbValue ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045DCB0) -------------------------------------------------------- signed int __stdcall sub_45DCB0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 36; *((_DWORD *)rgbValue + 9) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 11, 11, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 11, 11, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 36, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Attendance_getCallDateList(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPCharacter::usp_Attendance_getCallDateList, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_Attendance_getCallDateList", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045DDF0) -------------------------------------------------------- signed int __stdcall sub_45DDF0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 20; *((_DWORD *)rgbValue + 5) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 11, 11, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 20, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Attendance_setCall(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::usp_Attendance_setCall, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_Attendance_setCall", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045DF10) -------------------------------------------------------- signed int __stdcall sub_45DF10(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 36; *((_DWORD *)rgbValue + 9) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 11, 11, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 11, 11, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 36, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Attendance_getCount(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPCharacter::usp_Attendance_getCount, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_Attendance_getCount", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045E050) -------------------------------------------------------- signed int __stdcall sub_45E050(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 20; *((_DWORD *)rgbValue + 5) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 11, 11, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 20, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Attendance_getRewardList(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCharacter::usp_Attendance_getRewardList, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_Attendance_getRewardList", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045E170) -------------------------------------------------------- signed int __stdcall sub_45E170(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 24; *((_DWORD *)rgbValue + 6) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 11, 11, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Attendance_setReward(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPCharacter::usp_Attendance_setReward, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPCharacter::usp_Attendance_setReward", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0045E2B0) -------------------------------------------------------- bool __stdcall sub_45E2B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // di@1 *((_DWORD *)rgbValue + 1) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Tutorial_getIsSkip(?,?)}", -3); return !v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Tutorial_getIsSkip", (FILE *)v2), v3 == 1); } //----- (0045E360) -------------------------------------------------------- bool __stdcall sub_45E360(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // di@1 *((_DWORD *)rgbValue + 1) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Tutorial_getCharInfo(?,?)}", -3); return !v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Tutorial_getCharInfo", (FILE *)v2), v3 == 1); } //----- (0045E410) -------------------------------------------------------- bool __stdcall sub_45E410(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 3) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 9, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 12, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Tutorial_setCharInfo(?,?,?,?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 3) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_Tutorial_setCharInfo, nRet(%d), nCharNo(%d)", v3, *((_DWORD *)rgbValue + 3), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Tutorial_setCharInfo", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 3); } // 4DE38C: using guessed type int __security_cookie; //----- (0045E570) -------------------------------------------------------- bool __stdcall sub_45E570(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 1) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChatColor_get(?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 1) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_ChatColor_get, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 1), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_ChatColor_get", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 1); } // 4DE38C: using guessed type int __security_cookie; //----- (0045E680) -------------------------------------------------------- bool __stdcall sub_45E680(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 2) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChatColor_setFont(?,?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 2) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_ChatColor_setFont, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 2), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_ChatColor_setFont", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 2); } // 4DE38C: using guessed type int __security_cookie; //----- (0045E7B0) -------------------------------------------------------- bool __stdcall sub_45E7B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 2) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChatColor_setBalloon(?,?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 2) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_ChatColor_setBalloon, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 2), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_ChatColor_setBalloon", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 2); } // 4DE38C: using guessed type int __security_cookie; //----- (0045E8E0) -------------------------------------------------------- bool __stdcall sub_45E8E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 2) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setBuffScroll(?,?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 2) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_Character_setBuffScroll, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 2), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Character_setBuffScroll", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 2); } // 4DE38C: using guessed type int __security_cookie; //----- (0045EA10) -------------------------------------------------------- bool __stdcall sub_45EA10(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 2) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setChargedbuffScroll(?,?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 2) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_Character_setChargedbuffScroll, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 2), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Character_setChargedbuffScroll", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 2); } // 4DE38C: using guessed type int __security_cookie; //----- (0045EB40) -------------------------------------------------------- bool __stdcall sub_45EB40(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 1) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_getAutoScroll(?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 1) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_Character_getAutoScroll, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 1), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Character_getAutoScroll", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 1); } // 4DE38C: using guessed type int __security_cookie; //----- (0045EC50) -------------------------------------------------------- bool __stdcall sub_45EC50(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 4) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -16, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_setAutoMon(?,?,?,?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 4) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_Item_setAutoMon, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 4), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Item_setAutoMon", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 4); } // 4DE38C: using guessed type int __security_cookie; //----- (0045EDB0) -------------------------------------------------------- bool __stdcall sub_45EDB0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 2) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_getAutoMonList(?,?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 2) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_Item_getAutoMonList, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 2), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Item_getAutoMonList", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 2); } // 4DE38C: using guessed type int __security_cookie; //----- (0045EEE0) -------------------------------------------------------- bool __stdcall sub_45EEE0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 1) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_getFriendpoint(?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 1) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_Character_getFriendpoint, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 1), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Character_getFriendpoint", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 1); } // 4DE38C: using guessed type int __security_cookie; //----- (0045EFF0) -------------------------------------------------------- bool __stdcall sub_45EFF0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 2) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setFriendpoint(?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 2) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_Character_setFriendpoint, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 2), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Character_setFriendpoint", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 2); } // 4DE38C: using guessed type int __security_cookie; //----- (0045F120) -------------------------------------------------------- bool __stdcall sub_45F120(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // cx@1 SQLRETURN v5; // [sp+Ch] [bp-108h]@1 char v6; // [sp+10h] [bp-104h]@2 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; *((_DWORD *)rgbValue + 1) = 0; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_GetDiffFriendpoint(?,?)}", -3); v5 = v3; if ( *((_DWORD *)rgbValue + 1) ) { sprintf( &v6, "ERROR - CSQLPCharacter::usp_Character_GetDiffFriendpoint, nRet(%d), nCharNo(%d)", *((_DWORD *)rgbValue + 1), *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v6); v3 = v5; } return (!v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_Character_GetDiffFriendpoint", (FILE *)v2), v5 == 1)) && !*((_DWORD *)rgbValue + 1); } // 4DE38C: using guessed type int __security_cookie; //----- (0045F230) -------------------------------------------------------- bool __stdcall sub_45F230(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 int v4; // edi@1 SQLRETURN v6; // [sp+Ch] [bp-108h]@1 char v7; // [sp+10h] [bp-104h]@2 char v8; // [sp+11h] [bp-103h]@2 unsigned int v9; // [sp+110h] [bp-4h]@1 int v10; // [sp+114h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 8, 13, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_LinkScroll_SetDestMap(?,?,?)}", -3); v4 = *(_DWORD *)rgbValue; v6 = v3; if ( *(_DWORD *)rgbValue ) { v7 = 0; memset(&v8, 0, 0xFFu); sprintf( &v7, "ERROR - CSQLPCharacter::usp_LinkScroll_SetDestMap nRet(%d), nCharNo(%d)", v4, *((_DWORD *)rgbValue + 1)); sub_446350(1, "Msg", "%s", &v7); v3 = v6; } return !v3 || v3 == 1 || (sub_4507D0((int)"CSQLPCharacter::usp_LinkScroll_SetDestMap", (FILE *)v2), v6 == 1); } // 4DE38C: using guessed type int __security_cookie; //----- (0045F370) -------------------------------------------------------- void *__thiscall sub_45F370(int this, void *a2) { int v2; // edx@1 unsigned int *v3; // eax@2 unsigned int v4; // eax@3 char *v5; // ecx@5 signed int v6; // edi@5 int v7; // edx@9 int v8; // eax@10 char *v9; // ecx@10 void *v11; // [sp-8h] [bp-60h]@7 void *v12; // [sp+10h] [bp-48h]@11 int v13; // [sp+20h] [bp-38h]@11 unsigned int v14; // [sp+24h] [bp-34h]@11 void *v15; // [sp+2Ch] [bp-2Ch]@5 int v16; // [sp+3Ch] [bp-1Ch]@5 unsigned int v17; // [sp+40h] [bp-18h]@5 unsigned int v18; // [sp+48h] [bp-10h]@1 int v19; // [sp+54h] [bp-4h]@5 int v20; // [sp+58h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v2 = *(_DWORD *)(this + 64); if ( !(v2 & 2) ) { v3 = *(unsigned int **)(this + 36); if ( *v3 ) { v4 = *v3; if ( *(_DWORD *)(this + 60) >= v4 ) v4 = *(_DWORD *)(this + 60); v5 = (char *)**(_DWORD **)(this + 20); v6 = 15; v17 = 15; v16 = 0; LOBYTE(v15) = 0; sub_43DEA0((int)&v15, v5, v4 - (_DWORD)v5); v19 = 0; LABEL_6: *((_DWORD *)a2 + 5) = v6; *((_DWORD *)a2 + 4) = 0; *(_BYTE *)a2 = 0; sub_442890((void **)a2, &v15); if ( v17 >= 0x10 ) { v11 = v15; LABEL_13: operator delete(v11); return a2; } return a2; } } if ( !(v2 & 4) ) { v7 = *(_DWORD *)(this + 32); if ( *(_DWORD *)v7 ) { v8 = *(_DWORD *)v7 + **(_DWORD **)(this + 48); v9 = (char *)**(_DWORD **)(this + 16); v6 = 15; v17 = 15; v16 = 0; LOBYTE(v15) = 0; sub_43DEA0((int)&v15, v9, v8 - (_DWORD)v9); v19 = 1; goto LABEL_6; } } v14 = 15; v13 = 0; LOBYTE(v12) = 0; *((_DWORD *)a2 + 5) = 15; *((_DWORD *)a2 + 4) = 0; v19 = 2; *(_BYTE *)a2 = 0; sub_442890((void **)a2, &v12); if ( v14 >= 0x10 ) { v11 = v12; goto LABEL_13; } return a2; } // 4DE38C: using guessed type int __security_cookie; //----- (0045F4A0) -------------------------------------------------------- void *__thiscall sub_45F4A0(void *this, void *a2) { sub_45F370((int)((char *)this + 24), a2); return a2; } //----- (0045F4D0) -------------------------------------------------------- void *__cdecl sub_45F4D0(void *a1, const char *a2, signed int a3) { int v3; // eax@3 void *v4; // eax@3 void *v5; // eax@3 signed int v6; // esi@3 int v7; // esi@5 int v8; // eax@7 int v9; // edi@10 unsigned int v10; // eax@11 int v11; // esi@14 int v13; // [sp+1Ch] [bp-BCh]@1 int v14; // [sp+24h] [bp-B4h]@1 int v15; // [sp+28h] [bp-B0h]@1 int v16; // [sp+2Ch] [bp-ACh]@1 int (__thiscall **v17)(void *, char); // [sp+34h] [bp-A4h]@1 char v18; // [sp+38h] [bp-A0h]@17 void **v19; // [sp+44h] [bp-94h]@8 int v20; // [sp+48h] [bp-90h]@9 int v21; // [sp+54h] [bp-84h]@9 int v22; // [sp+58h] [bp-80h]@9 int v23; // [sp+64h] [bp-74h]@9 int v24; // [sp+68h] [bp-70h]@9 void *v25; // [sp+6Ch] [bp-6Ch]@9 int v26; // [sp+70h] [bp-68h]@3 int v27; // [sp+74h] [bp-64h]@3 int (__stdcall **v28)(char); // [sp+7Ch] [bp-5Ch]@1 int v29; // [sp+88h] [bp-50h]@2 int *v30; // [sp+B4h] [bp-24h]@1 int v31; // [sp+B8h] [bp-20h]@1 char v32; // [sp+BCh] [bp-1Ch]@1 void *v33; // [sp+C4h] [bp-14h]@9 int v34; // [sp+C8h] [bp-10h]@1 int v35; // [sp+D4h] [bp-4h]@1 v13 = (int)&unk_4B8DCC; v16 = (int)&unk_4B8DC4; v35 = 1; v34 = 2; v28 = &off_4B8C5C; v14 = 0; v15 = 0; sub_43EBD0((int)&v28); v30 = (int *)&v17; v31 = 0; v32 = sub_440280((int)&v28, 32); if ( !v30 ) sub_43EAA0((int)&v28, v29 | 4, 0); *(int *)((char *)&v16 + *(_DWORD *)(v16 + 4)) = (int)&off_4B8C54; *(int *)((char *)&v13 + *(_DWORD *)(v13 + 4)) = (int)&off_4B8C64; v3 = *(_DWORD *)(v13 + 4); v35 = 6; *(int *)((char *)&v13 + v3) = (int)&off_4B8D94; sub_43F4D0(&v17); v17 = &off_4B8D34; v26 = 0; v27 = 0; v35 = 8; v4 = sub_4407C0(&v16, "{CALL "); v5 = sub_4407C0(v4, a2); sub_4407C0(v5, "("); v6 = a3; if ( a3 > 0 ) { sub_4407C0(&v16, "?"); if ( v6 > 1 ) { v7 = v6 - 1; do { sub_4407C0(&v16, ",?"); --v7; } while ( v7 ); } } sub_4407C0(&v16, ")}"); sub_45F4A0(&v13, a1); v8 = *(_DWORD *)(v13 + 4); v34 = 3; *(int *)((char *)&v13 + v8) = (int)&off_4B8D94; v35 = 9; v17 = &off_4B8D34; if ( v27 & 1 ) operator delete(*v19); *v19 = 0; *(_DWORD *)v21 = 0; *(_DWORD *)v23 = 0; *(_DWORD *)v20 = 0; *(_DWORD *)v22 = 0; *(_DWORD *)v24 = 0; v27 &= 0xFFFFFFFEu; v26 = 0; v17 = &off_4B8CF4; LOBYTE(v35) = 10; v33 = v25; if ( v25 ) { v9 = *(_DWORD *)v25; if ( *(_DWORD *)v25 ) { std::_Lockit::_Lockit(0); v10 = *(_DWORD *)(v9 + 4); if ( v10 > 0 && v10 < 0xFFFFFFFF ) *(_DWORD *)(v9 + 4) = v10 - 1; v11 = *(_DWORD *)(v9 + 4) == 0 ? v9 : 0; std::_Lockit::__Lockit(&a3); if ( v11 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v11)(v11, 1); } operator delete(v33); } LOBYTE(v35) = 9; std::_Mutex::__Mutex(&v18); *(int *)((char *)&v13 + *(_DWORD *)(v13 + 4)) = (int)&off_4B8C64; *(int *)((char *)&v16 + *(_DWORD *)(v16 + 4)) = (int)&off_4B8C54; *(int *)((char *)&v13 + *(_DWORD *)(v13 + 4)) = (int)&off_4B8C5C; LOBYTE(v35) = 0; v28 = (int (__stdcall **)(char))&off_4B8C30; std::ios_base::_Ios_base_dtor(&v28); return a1; } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 48BC34: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 48BD9E: using guessed type int __thiscall std___Mutex____Mutex(_DWORD); // 4B8C30: using guessed type int (__thiscall *off_4B8C30)(void *, char); // 4B8C54: using guessed type int (__stdcall *off_4B8C54)(char); // 4B8C5C: using guessed type int (__stdcall *off_4B8C5C)(char); // 4B8C64: using guessed type int (__stdcall *off_4B8C64)(char); // 4B8CF4: using guessed type int (__thiscall *off_4B8CF4)(void *, char); // 4B8D34: using guessed type int (__thiscall *off_4B8D34)(void *, char); // 4B8D94: using guessed type int (__stdcall *off_4B8D94)(char); //----- (0045F7C0) -------------------------------------------------------- bool __stdcall sub_45F7C0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 void *v3; // eax@1 SQLRETURN v4; // ax@3 int v5; // eax@8 SQLRETURN v7; // [sp+Ch] [bp-428h]@3 int v8; // [sp+10h] [bp-424h]@1 void *v9; // [sp+14h] [bp-420h]@1 unsigned int v10; // [sp+28h] [bp-40Ch]@3 char v11; // [sp+30h] [bp-404h]@11 unsigned int v12; // [sp+430h] [bp-4h]@1 int v13; // [sp+434h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v8 = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 6, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -28, -6, 0, 0, (char *)rgbValue + 18, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -28, -6, 0, 0, (char *)rgbValue + 19, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -28, -6, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 1, -28, -6, 0, 0, (char *)rgbValue + 21, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xBu, 1, -17, 5, 0, 0, (char *)rgbValue + 22, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xCu, 1, -17, 5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xDu, 1, -17, 5, 0, 0, (char *)rgbValue + 26, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xEu, 1, -17, 5, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xFu, 1, -17, 5, 0, 0, (char *)rgbValue + 30, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x10u, 1, -17, 5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x11u, 1, -17, 5, 0, 0, (char *)rgbValue + 34, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x12u, 1, -17, 5, 0, 0, (char *)rgbValue + 36, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x13u, 1, -17, 5, 0, 0, (char *)rgbValue + 38, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x14u, 1, -17, 4, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x15u, 4, -18, 4, 0, 0, &v8, 0, 0); v3 = sub_45F4D0(&v9, "p_Char_SetStateWithSetItemAndRestTime", 21); if ( *((_DWORD *)v3 + 5) >= 0x10u ) v3 = *(void **)v3; v4 = SQLExecDirect((SQLHSTMT)v2, (SQLCHAR *)v3, -3); v7 = v4; if ( v10 >= 0x10 ) { operator delete(v9); v4 = v7; } if ( v4 && v4 != 1 ) sub_4507D0((int)"CSQLPCharacter::p_Char_SetState", (FILE *)v2); v5 = v8; if ( v8 == 2627 ) { v5 = 0; } else { if ( v8 ) { sprintf( &v11, "ERROR, CSQLPCharacter::p_Char_SetStateWithSetItem, nCharNo=%d, nStateNo=%d, nRet=%d (L=%d,T=%d,C=%d,PD=%d,PS=%d,PK=%d,PC=%d, SIA(%d,%d), SIB(%d,%d), SIC(%d,%d), SID(%d,%d)), (%d,%d,%d)", *(_DWORD *)rgbValue, *((_WORD *)rgbValue + 2), v8, *((_WORD *)rgbValue + 3), *((_DWORD *)rgbValue + 2), *((_WORD *)rgbValue + 8), *((_BYTE *)rgbValue + 18), *((_BYTE *)rgbValue + 19), *((_BYTE *)rgbValue + 20), *((_BYTE *)rgbValue + 21), *((_WORD *)rgbValue + 11), *((_WORD *)rgbValue + 12), *((_WORD *)rgbValue + 13), *((_WORD *)rgbValue + 14), *((_WORD *)rgbValue + 15), *((_WORD *)rgbValue + 16), *((_WORD *)rgbValue + 17), *((_WORD *)rgbValue + 18), *((_DWORD *)rgbValue + 3), *((_WORD *)rgbValue + 19), *((_WORD *)rgbValue + 20)); sub_446350(1, "Msg", "%s", &v11); v5 = v8; } } return v5 == 0; } // 4DE38C: using guessed type int __security_cookie; //----- (0045FB50) -------------------------------------------------------- int __stdcall sub_45FB50(int a1, SQLPOINTER rgbValue, int a3) { int v3; // esi@1 SQLRETURN v4; // ax@4 SQLRETURN v5; // si@6 char *v7; // [sp-10h] [bp-D28h]@10 SQLCHAR *v8; // [sp-8h] [bp-D20h]@2 SQLINTEGER v9; // [sp-4h] [bp-D1Ch]@2 SQLINTEGER NativeError; // [sp+8h] [bp-D10h]@6 SQLSMALLINT TextLength[2]; // [sp+Ch] [bp-D0Ch]@6 int v12; // [sp+10h] [bp-D08h]@1 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@6 SQLCHAR MessageText; // [sp+414h] [bp-904h]@6 char v15; // [sp+814h] [bp-504h]@7 char v16; // [sp+C14h] [bp-104h]@6 unsigned int v17; // [sp+D14h] [bp-4h]@1 int v18; // [sp+D18h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); v12 = -1; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); if ( a3 ) { SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v3, 4u, 4, -17, 5, 0, 0, (char *)rgbValue + 14, 0, 0); SQLBindParameter((SQLHSTMT)v3, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v3, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v3, 7u, 4, -18, 4, 0, 0, &v12, 0, 0); v9 = -3; v8 = "{CALL p_Item_Create_UseEmptyStorage(?,?,?,?,?,?,? )}"; } else { SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v3, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 14, 0, 0); SQLBindParameter((SQLHSTMT)v3, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v3, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v3, 7u, 4, -18, 4, 0, 0, &v12, 0, 0); v9 = -3; v8 = (SQLCHAR *)"{CALL p_Item_Create(?,?,?,?,?,?,?)}"; } v4 = SQLExecDirect((SQLHSTMT)v3, v8, v9); if ( v4 && v4 != 1 ) { sprintf(&v16, "ERROR - CSQLPItem::p_Item_Create, ret(%d), nRet(%d)", v4, v12); sub_446350(1, "Msg", "%s", &v16); *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v3, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v15, "ERROR - CSQLPItem::p_Item_Create, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v15); } if ( v5 == -1 ) { sprintf(&v15, "ERROR - CSQLPItem::p_Item_Create, SQLError = %d = SQL_ERROR", -1); v7 = &v15; goto LABEL_12; } if ( v5 ) { sprintf(&v15, "ERROR - CSQLPItem::p_Item_Create, SQLError = %d = unknown return value", v5); v7 = &v15; LABEL_12: sub_446350(1, "Msg", "%s", v7); return v12; } } return v12; } // 4DE38C: using guessed type int __security_cookie; //----- (0045FE40) -------------------------------------------------------- SQLRETURN __stdcall sub_45FE40(int a1, char rgbValue, int a3) { int v3; // esi@1 SQLRETURN result; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); a1 = -1; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -27, -5, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 4, -18, 4, 0, 0, &a1, 0, 0); result = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Item_Delete( ?, ? )}", -3); if ( !result || result == 1 ) result = a1; return result; } //----- (0045FEC0) -------------------------------------------------------- bool __stdcall sub_45FEC0(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -28, -6, 0, 0, &a3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Item_GetListType( ?, ? )}", -3); return !v4 || v4 == 1; } //----- (0045FF40) -------------------------------------------------------- bool __stdcall sub_45FF40(int a1, char rgbValue, char a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -28, -6, 0, 0, &a3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Item_GetStorageListType(?,?)}", -3); return !v4 || v4 == 1; } //----- (0045FFC0) -------------------------------------------------------- bool __stdcall sub_45FFC0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 10) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -17, 5, 0, 0, (char *)rgbValue + 14, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, 11, 11, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 4, -18, 4, 0, 0, (char *)rgbValue + 40, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_GetData(?,?,?,?,?,?,?,?)}", -3); return (!v3 || v3 == 1) && *((_DWORD *)rgbValue + 10) == 1; } //----- (004600E0) -------------------------------------------------------- SQLRETURN __stdcall sub_4600E0(int a1, char rgbValue, int a3, char a4, char a5, int a6) { int v6; // esi@1 SQLRETURN result; // ax@1 v6 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v6); a1 = -1; SQLBindParameter((SQLHSTMT)v6, 1u, 1, -27, -5, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v6, 2u, 1, -17, 5, 0, 0, &a4, 0, 0); SQLBindParameter((SQLHSTMT)v6, 3u, 1, -27, -5, 0, 0, &a5, 0, 0); SQLBindParameter((SQLHSTMT)v6, 4u, 4, -18, 4, 0, 0, &a1, 0, 0); result = SQLExecDirect((SQLHSTMT)v6, "{CALL p_Item_SetOption( ?, ?, ?, ? )}", -3); if ( !result || result == 1 ) result = a1; return result; } //----- (00460190) -------------------------------------------------------- SQLRETURN __stdcall sub_460190(int a1, char rgbValue, int a3, char a4, void *a5) { int v5; // esi@1 SQLRETURN result; // ax@1 v5 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v5); a1 = -1; SQLBindParameter((SQLHSTMT)v5, 1u, 1, -27, -5, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v5, 2u, 1, -17, 5, 0, 0, &a4, 0, 0); SQLBindParameter((SQLHSTMT)v5, 3u, 4, -27, -5, 0, 0, a5, 0, 0); SQLBindParameter((SQLHSTMT)v5, 4u, 4, -18, 4, 0, 0, &a1, 0, 0); result = SQLExecDirect((SQLHSTMT)v5, "{CALL p_Item_GetOption( ?, ?, ?, ? )}", -3); if ( !result || result == 1 ) result = a1 - 1; return result; } //----- (00460240) -------------------------------------------------------- bool __stdcall sub_460240(int a1, char rgbValue, int a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -27, -5, 0, 0, &rgbValue, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Item_GetOptionAll( ? )}", -3); return !v4 || v4 == 1; } //----- (004602A0) -------------------------------------------------------- SQLRETURN __stdcall sub_4602A0(int a1, char rgbValue, int a3, char a4, char a5, char a6) { int v6; // esi@1 SQLRETURN result; // ax@1 v6 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v6); a1 = -1; SQLBindParameter((SQLHSTMT)v6, 1u, 1, -27, -5, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v6, 2u, 1, -17, 5, 0, 0, &a4, 0, 0); SQLBindParameter((SQLHSTMT)v6, 3u, 1, -28, -6, 0, 0, &a5, 0, 0); SQLBindParameter((SQLHSTMT)v6, 4u, 1, -18, 4, 0, 0, &a6, 0, 0); SQLBindParameter((SQLHSTMT)v6, 5u, 4, -18, 4, 0, 0, &a1, 0, 0); result = SQLExecDirect((SQLHSTMT)v6, "{CALL p_Item_SetMobList( ?, ?, ?, ?, ? )}", -3); if ( !result || result == 1 ) result = a1; return result; } //----- (00460370) -------------------------------------------------------- bool __stdcall sub_460370(int a1, char rgbValue, int a3) { int v3; // esi@1 SQLRETURN v4; // ax@1 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); SQLBindParameter((SQLHSTMT)v3, 1u, 1, -27, -5, 0, 0, &rgbValue, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL p_Item_GetMobListAll( ? )}", -3); return !v4 || v4 == 1; } //----- (004603D0) -------------------------------------------------------- int __stdcall sub_4603D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 10) = 1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, 1, -9, 0, 0, (char *)rgbValue + 16, 24, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -18, 4, 0, 0, (char *)rgbValue + 40, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_SetTitle( ?, ?, ?, ?, ? )}", -3); return *((_DWORD *)rgbValue + 10); } //----- (00460490) -------------------------------------------------------- int __stdcall sub_460490(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 10) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -17, 5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -18, 4, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, 1, -9, 0, 0, (char *)rgbValue + 16, 24, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -18, 4, 0, 0, (char *)rgbValue + 40, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_GetTitle( ?, ?, ?, ?, ? )}", -3); return *((_DWORD *)rgbValue + 10); } //----- (00460550) -------------------------------------------------------- int __stdcall sub_460550(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 12) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, 1, -9, 0, 0, (char *)rgbValue + 24, 24, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -18, 4, 0, 0, (char *)rgbValue + 48, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_SetWeaponTitle(?,?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 12); } //----- (00460620) -------------------------------------------------------- int __stdcall sub_460620(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 10) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -17, 5, 0, 0, (char *)rgbValue + 26, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -27, -5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -18, 4, 0, 0, (char *)rgbValue + 40, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_ClrWeaponTitle(?,?,?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 10); } //----- (00460710) -------------------------------------------------------- bool __stdcall sub_460710(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLPOINTER v3; // edi@1 SQLRETURN v4; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -18, 4, 0, 0, (char *)v3 + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)v3 + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -17, 5, 0, 0, (char *)v3 + 14, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_GetStorageAndOwner(?,?,?,?,?)}", -3); if ( v4 && v4 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (004607E0) -------------------------------------------------------- bool __stdcall sub_4607E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLPOINTER v3; // edi@1 SQLRETURN v4; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = rgbValue; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)v3 + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)v3 + 10, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_SetStorage( ?, ?, ?, ? )}", -3); if ( v4 && v4 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00460890) -------------------------------------------------------- bool __stdcall sub_460890(int a1, SQLPOINTER rgbValue, int a3) { int v3; // esi@1 SQLPOINTER v4; // edi@1 SQLRETURN v5; // ax@4 bool result; // al@6 void *v7; // [sp-Ch] [bp-14h]@1 SQLCHAR *v8; // [sp-8h] [bp-10h]@2 SQLINTEGER v9; // [sp-4h] [bp-Ch]@2 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); v4 = rgbValue; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, (char *)v4 + 8, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 1, -28, -6, 0, 0, (char *)v4 + 12, 0, 0); v7 = (char *)v4 + 14; if ( a3 ) { SQLBindParameter((SQLHSTMT)v3, 4u, 4, -17, 5, 0, 0, v7, 0, 0); SQLBindParameter((SQLHSTMT)v3, 5u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v9 = -3; v8 = "{CALL p_Item_SetStorageAndOwner_UseEmptyStorage(?,?,?,?,?)}"; } else { SQLBindParameter((SQLHSTMT)v3, 4u, 1, -17, 5, 0, 0, v7, 0, 0); SQLBindParameter((SQLHSTMT)v3, 5u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v9 = -3; v8 = (SQLCHAR *)"{CALL p_Item_SetStorageAndOwner(?,?,?,?,?)}"; } v5 = SQLExecDirect((SQLHSTMT)v3, v8, v9); if ( v5 && v5 != 1 ) result = 0; else result = BYTE3(a1) == 1; return result; } //----- (00460990) -------------------------------------------------------- bool __stdcall sub_460990(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 10, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 26, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -28, -6, 0, 0, (char *)rgbValue + 28, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_ExchangeStorage( ?, ?, ?, ?, ?, ?, ? )}", -3); return !v3 || v3 == 1; } //----- (00460A90) -------------------------------------------------------- bool __stdcall sub_460A90(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 14, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -28, -6, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -17, 5, 0, 0, (char *)rgbValue + 30, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 4, -28, -6, 0, 0, (char *)rgbValue + 32, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_ExchangeStorageAndOwner(?,?,?,?,?,?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (00460BC0) -------------------------------------------------------- char __stdcall sub_460BC0(int a1, char rgbValue, int a3, char a4) { int v4; // esi@1 SQLRETURN v5; // ax@1 bool v6; // zf@2 char result; // al@2 v4 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v4); SQLBindParameter((SQLHSTMT)v4, 1u, 1, -27, -5, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v4, 2u, 1, -18, 4, 0, 0, &a4, 0, 0); SQLBindParameter((SQLHSTMT)v4, 3u, 4, -28, -6, 0, 0, (char *)&a1 + 3, 0, 0); v5 = SQLExecDirect((SQLHSTMT)v4, "{CALL p_Item_IsValidOwner(?,?,?)}", -3); if ( !v5 || (v6 = v5 == 1, result = 3, v6) ) result = BYTE3(a1); return result; } //----- (00460C50) -------------------------------------------------------- int __stdcall sub_460C50(int a1, SQLPOINTER rgbValue, char a3, int a4, char a5, char a6) { int v6; // esi@1 SQLRETURN v7; // ax@1 SQLRETURN v8; // si@3 char *v10; // [sp-10h] [bp-D28h]@7 SQLINTEGER NativeError; // [sp+8h] [bp-D10h]@3 SQLSMALLINT TextLength[2]; // [sp+Ch] [bp-D0Ch]@3 int v13; // [sp+10h] [bp-D08h]@1 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@3 SQLCHAR MessageText; // [sp+414h] [bp-904h]@3 char v16; // [sp+814h] [bp-504h]@4 char v17; // [sp+C14h] [bp-104h]@3 unsigned int v18; // [sp+D14h] [bp-4h]@1 int v19; // [sp+D18h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; v6 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v6); v13 = -1; SQLBindParameter((SQLHSTMT)v6, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v6, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v6, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v6, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 14, 0, 0); SQLBindParameter((SQLHSTMT)v6, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v6, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v6, 7u, 1, -27, -5, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v6, 8u, 1, -18, 4, 0, 0, &a5, 0, 0); SQLBindParameter((SQLHSTMT)v6, 9u, 1, -18, 4, 0, 0, &a6, 0, 0); SQLBindParameter((SQLHSTMT)v6, 0xAu, 4, -18, 4, 0, 0, &v13, 0, 0); v7 = SQLExecDirect((SQLHSTMT)v6, "{CALL p_Item_BuyAll(?,?,?,?,?,?,?,?,?,?)}", -3); if ( v7 && v7 != 1 ) { sprintf(&v17, "ERROR - CSQLPItem::p_Item_BuyAll, ret(%d), nRet(%d)", v7, v13); sub_446350(1, "Msg", "%s", &v17); *(_DWORD *)TextLength = 0; v8 = SQLError(0, 0, (SQLHSTMT)v6, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v16, "ERROR - CSQLPItem::p_Item_BuyAll, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v16); } if ( v8 == -1 ) { sprintf(&v16, "ERROR - CSQLPItem::p_Item_BuyAll, SQLError = %d = SQL_ERROR", -1); v10 = &v16; goto LABEL_9; } if ( v8 ) { sprintf(&v16, "ERROR - CSQLPItem::p_Item_BuyAll, SQLError = %d = unknown return value", v8); v10 = &v16; LABEL_9: sub_446350(1, "Msg", "%s", v10); return v13; } } return v13; } // 4DE38C: using guessed type int __security_cookie; //----- (00460ED0) -------------------------------------------------------- int __stdcall sub_460ED0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 10) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -18, 4, 0, 0, (char *)rgbValue + 36, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 4, -18, 4, 0, 0, (char *)rgbValue + 40, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_BuyLot(?,?,?,?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 10); } //----- (00460FE0) -------------------------------------------------------- int __stdcall sub_460FE0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 8) = 100; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -18, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_SellAll_LotCheck( ?, ?, ?, ?, ?, ? )}", -3); return *((_DWORD *)rgbValue + 8); } //----- (004610B0) -------------------------------------------------------- int __stdcall sub_4610B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 8) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -18, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_SellLot_LotCheck( ?, ?, ?, ?, ?, ? )}", -3); return *((_DWORD *)rgbValue + 8); } //----- (00461180) -------------------------------------------------------- char __stdcall sub_461180(int a1, int a2) { int v2; // eax@1 int v3; // eax@2 v2 = (unsigned __int8)sub_460BC0(a1, *(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 8)); *(_DWORD *)(a2 + 12) = (unsigned __int8)v2; if ( !(_BYTE)v2 ) { LOWORD(v3) = sub_45FE40(a1, *(_DWORD *)a2, *(_DWORD *)(a2 + 4)); *(_DWORD *)(a2 + 12) = v3; v2 = v3 != 0 ? 3 : 0; } return v2; } //----- (004611D0) -------------------------------------------------------- char __stdcall sub_4611D0(int a1, int a2) { int v2; // eax@1 int v3; // eax@2 v2 = (unsigned __int8)sub_460BC0(a1, *(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_DWORD *)(a2 + 8)); *(_DWORD *)(a2 + 24) = (unsigned __int8)v2; if ( !(_BYTE)v2 ) { LOWORD(v3) = sub_4600E0( a1, *(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_WORD *)(a2 + 12), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20)); *(_DWORD *)(a2 + 24) = v3; v2 = v3 != 0 ? 3 : 0; } return v2; } //----- (00461230) -------------------------------------------------------- __int16 __stdcall sub_461230(int a1, int a2) { int v2; // eax@1 LOWORD(v2) = sub_4600E0( a1, *(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_WORD *)(a2 + 8), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20)); *(_DWORD *)(a2 + 24) = v2; return v2; } //----- (00461260) -------------------------------------------------------- int __stdcall sub_461260(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 12) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -17, 5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -27, -5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 4, -18, 4, 0, 0, (char *)rgbValue + 48, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_Merge_New(?,?,?,?,?,?,?,? )}", -3); return *((_DWORD *)rgbValue + 12); } //----- (00461370) -------------------------------------------------------- int __stdcall sub_461370(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 14) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -17, 5, 0, 0, (char *)rgbValue + 36, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 4, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -27, -5, 0, 0, (char *)rgbValue + 48, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 4, -18, 4, 0, 0, (char *)rgbValue + 56, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_Split_N_Merge_New(?,?,?,?,?,?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 14); } //----- (004614B0) -------------------------------------------------------- int __stdcall sub_4614B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 26) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -27, -5, 0, 0, (char *)rgbValue + 48, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -27, -5, 0, 0, (char *)rgbValue + 56, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 1, -27, -5, 0, 0, (char *)rgbValue + 64, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xBu, 1, -27, -5, 0, 0, (char *)rgbValue + 72, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xCu, 1, -27, -5, 0, 0, (char *)rgbValue + 80, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xDu, 1, -15, 5, 0, 0, (char *)rgbValue + 88, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xEu, 1, -15, 5, 0, 0, (char *)rgbValue + 90, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xFu, 1, -15, 5, 0, 0, (char *)rgbValue + 92, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x10u, 1, -15, 5, 0, 0, (char *)rgbValue + 94, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x11u, 1, -15, 5, 0, 0, (char *)rgbValue + 96, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x12u, 1, -15, 5, 0, 0, (char *)rgbValue + 98, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x13u, 1, -15, 5, 0, 0, (char *)rgbValue + 100, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x14u, 1, -15, 5, 0, 0, (char *)rgbValue + 102, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0x15u, 4, -18, 4, 0, 0, (char *)rgbValue + 104, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_Upgrade_CelllInAll(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 26); } //----- (00461710) -------------------------------------------------------- int __stdcall sub_461710(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 8) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -15, 5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -18, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_MiniHouse_Effect_Resource_Del(?,?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 8); } //----- (004617E0) -------------------------------------------------------- signed int __stdcall sub_4617E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 18, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); v3 = (char *)rgbValue + 48; SQLBindParameter((SQLHSTMT)v2, 8u, 4, -16, 4, 0, 0, (char *)rgbValue + 48, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_Furniture_Endure_Update(?,?,?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPItem::p_Furniture_Endure_Update, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPItem::p_Furniture_Endure_Update, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPItem::p_Furniture_Endure_Update, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPItem::p_Furniture_Endure_Update, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00461A50) -------------------------------------------------------- signed int __stdcall sub_461A50(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLINTEGER v3; // eax@1 SQLRETURN v4; // si@7 char *v6; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@1 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@1 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v11; // [sp+814h] [bp-504h]@8 char v12; // [sp+C14h] [bp-104h]@4 unsigned int v13; // [sp+D14h] [bp-4h]@1 int v14; // [sp+D18h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 18, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); *(_DWORD *)TextLength = (char *)rgbValue + 48; SQLBindParameter((SQLHSTMT)v2, 8u, 4, -16, 4, 0, 0, (char *)rgbValue + 48, 0, 0); v3 = (unsigned __int16)SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_CostumWeapon_Endure_Update(?,?,?,?,?,?,?,?)}", -3); NativeError = v3; if ( (_WORD)v3 && (_WORD)v3 != 1 || **(_DWORD **)TextLength ) { sprintf( &v12, "ERROR - CSQLPItem::p_Item_CostumWeapon_Endure_Update, ret(%d), nRet(%d)", (signed __int16)v3, **(_DWORD **)TextLength); sub_446350(1, "Msg", "%s", &v12); sprintf( &v12, "nOwner(%d), nEndureKitKey(%I64d), nEndureKitOptionType(%d), nEndureKitLot(%d), nCostumWeaponKey(%I64d), nCostumWeaponEndureOptionType(%d), nCostumWeaponEndureOptionData(%I64d)", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 2), *((_DWORD *)rgbValue + 3), *((_WORD *)rgbValue + 8), *((_WORD *)rgbValue + 9), *((_DWORD *)rgbValue + 6), *((_DWORD *)rgbValue + 7), *((_WORD *)rgbValue + 16), *((_DWORD *)rgbValue + 10), *((_DWORD *)rgbValue + 11)); sub_446350(1, "Msg", "%s", &v12); LOWORD(v3) = NativeError; } if ( (_WORD)v3 && (_WORD)v3 != 1 ) { *(_DWORD *)TextLength = 0; v4 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v11, "ERROR - CSQLPItem::p_Item_CostumWeapon_Endure_Update, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v11); } if ( v4 == -1 ) { sprintf(&v11, "ERROR - CSQLPItem::p_Item_CostumWeapon_Endure_Update, SQLError = %d = SQL_ERROR", -1); v6 = &v11; } else { if ( !v4 ) return 0; sprintf(&v11, "ERROR - CSQLPItem::p_Item_CostumWeapon_Endure_Update, SQLError = %d = unknown return value", v4); v6 = &v11; } sub_446350(1, "Msg", "%s", v6); return 0; } if ( **(_DWORD **)TextLength ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00461D40) -------------------------------------------------------- signed int __stdcall sub_461D40(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLINTEGER v3; // eax@1 SQLRETURN v4; // si@7 char *v6; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@1 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@1 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v11; // [sp+814h] [bp-504h]@8 char v12; // [sp+C14h] [bp-104h]@4 unsigned int v13; // [sp+D14h] [bp-4h]@1 int v14; // [sp+D18h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); *(_DWORD *)TextLength = (char *)rgbValue + 24; SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v3 = (unsigned __int16)SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_CostumWeapon_Endure_Set(?,?,?,?)}", -3); NativeError = v3; if ( (_WORD)v3 && (_WORD)v3 != 1 || **(_DWORD **)TextLength ) { sprintf( &v12, "ERROR - CSQLPItem::p_Item_CostumWeapon_Endure_Set, ret(%d), nRet(%d)", (signed __int16)v3, **(_DWORD **)TextLength); sub_446350(1, "Msg", "%s", &v12); sprintf( &v12, "ERROR - CSQLPItem::p_Item_CostumWeapon_Endure_Set, CostumWeaponKey(%I64d), CostumWeaponEndureOptionType(%d), CostumWeaponEndureOptionData(%I64d)", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_WORD *)rgbValue + 4), *((_DWORD *)rgbValue + 4), *((_DWORD *)rgbValue + 5)); sub_446350(1, "Msg", "%s", &v12); LOWORD(v3) = NativeError; } if ( (_WORD)v3 && (_WORD)v3 != 1 ) { *(_DWORD *)TextLength = 0; v4 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v11, "ERROR - CSQLPItem::p_Item_CostumWeapon_Endure_Set, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v11); } if ( v4 == -1 ) { sprintf(&v11, "ERROR - CSQLPItem::p_Item_CostumWeapon_Endure_Set, SQLError = %d = SQL_ERROR", -1); v6 = &v11; } else { if ( !v4 ) return 0; sprintf(&v11, "ERROR - CSQLPItem::p_Item_CostumWeapon_Endure_Set, SQLError = %d = unknown return value", v4); v6 = &v11; } sub_446350(1, "Msg", "%s", v6); return 0; } if ( **(_DWORD **)TextLength ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00461FA0) -------------------------------------------------------- signed int __stdcall sub_461FA0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLINTEGER v3; // eax@1 SQLRETURN v4; // si@7 char *v6; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@1 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@1 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v11; // [sp+814h] [bp-504h]@8 char v12; // [sp+C14h] [bp-104h]@4 unsigned int v13; // [sp+D14h] [bp-4h]@1 int v14; // [sp+D18h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 18, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); *(_DWORD *)TextLength = (char *)rgbValue + 48; SQLBindParameter((SQLHSTMT)v2, 8u, 4, -16, 4, 0, 0, (char *)rgbValue + 48, 0, 0); v3 = (unsigned __int16)SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_CostumWeapon_Endure_Update(?,?,?,?,?,?,?,?)}", -3); NativeError = v3; if ( (_WORD)v3 && (_WORD)v3 != 1 || **(_DWORD **)TextLength ) { sprintf( &v12, "ERROR - CSQLPItem::p_Item_CostumShield_Endure_Update, ret(%d), nRet(%d)", (signed __int16)v3, **(_DWORD **)TextLength); sub_446350(1, "Msg", "%s", &v12); sprintf( &v12, "nOwner(%d), nEndureKitKey(%I64d), nEndureKitOptionType(%d), nEndureKitLot(%d), nCostumShieldKey(%I64d), nCostumShieldEndureOptionType(%d), nCostumShieldEndureOptionData(%I64d)", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 2), *((_DWORD *)rgbValue + 3), *((_WORD *)rgbValue + 8), *((_WORD *)rgbValue + 9), *((_DWORD *)rgbValue + 6), *((_DWORD *)rgbValue + 7), *((_WORD *)rgbValue + 16), *((_DWORD *)rgbValue + 10), *((_DWORD *)rgbValue + 11)); sub_446350(1, "Msg", "%s", &v12); LOWORD(v3) = NativeError; } if ( (_WORD)v3 && (_WORD)v3 != 1 ) { *(_DWORD *)TextLength = 0; v4 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v11, "ERROR - CSQLPItem::p_Item_CostumShield_Endure_Update, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v11); } if ( v4 == -1 ) { sprintf(&v11, "ERROR - CSQLPItem::p_Item_CostumShield_Endure_Update, SQLError = %d = SQL_ERROR", -1); v6 = &v11; } else { if ( !v4 ) return 0; sprintf(&v11, "ERROR - CSQLPItem::p_Item_CostumShield_Endure_Update, SQLError = %d = unknown return value", v4); v6 = &v11; } sub_446350(1, "Msg", "%s", v6); return 0; } if ( **(_DWORD **)TextLength ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00462290) -------------------------------------------------------- signed int __stdcall sub_462290(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLINTEGER v3; // eax@1 SQLRETURN v4; // si@7 char *v6; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@1 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@1 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v11; // [sp+814h] [bp-504h]@8 char v12; // [sp+C14h] [bp-104h]@4 unsigned int v13; // [sp+D14h] [bp-4h]@1 int v14; // [sp+D18h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); *(_DWORD *)TextLength = (char *)rgbValue + 24; SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v3 = (unsigned __int16)SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_CostumWeapon_Endure_Set(?,?,?,?)}", -3); NativeError = v3; if ( (_WORD)v3 && (_WORD)v3 != 1 || **(_DWORD **)TextLength ) { sprintf( &v12, "ERROR - CSQLPItem::p_Item_CostumShield_Endure_Set, ret(%d), nRet(%d)", (signed __int16)v3, **(_DWORD **)TextLength); sub_446350(1, "Msg", "%s", &v12); sprintf( &v12, "ERROR - CSQLPItem::p_Item_CostumShield_Endure_Set, CostumShieldKey(%I64d), CostumShieldEndureOptionType(%d), CostumShieldEndureOptionData(%I64d)", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_WORD *)rgbValue + 4), *((_DWORD *)rgbValue + 4), *((_DWORD *)rgbValue + 5)); sub_446350(1, "Msg", "%s", &v12); LOWORD(v3) = NativeError; } if ( (_WORD)v3 && (_WORD)v3 != 1 ) { *(_DWORD *)TextLength = 0; v4 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v11, "ERROR - CSQLPItem::p_Item_CostumShield_Endure_Set, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v11); } if ( v4 == -1 ) { sprintf(&v11, "ERROR - CSQLPItem::p_Item_CostumShield_Endure_Set, SQLError = %d = SQL_ERROR", -1); v6 = &v11; } else { if ( !v4 ) return 0; sprintf(&v11, "ERROR - CSQLPItem::p_Item_CostumShield_Endure_Set, SQLError = %d = unknown return value", v4); v6 = &v11; } sub_446350(1, "Msg", "%s", v6); return 0; } if ( **(_DWORD **)TextLength ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004624F0) -------------------------------------------------------- bool __stdcall sub_4624F0(int a1, char rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChargeItem_GetList(?)}", -3); return !v3 || v3 == 1; } //----- (00462550) -------------------------------------------------------- bool __stdcall sub_462550(int a1, char a2, char rgbValue) { int v3; // esi@1 SQLRETURN v4; // ax@1 bool result; // al@3 v3 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v3); a1 = 0; SQLBindParameter((SQLHSTMT)v3, 1u, 1, -18, 4, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v3, 2u, 1, -18, 4, 0, 0, &a2, 0, 0); SQLBindParameter((SQLHSTMT)v3, 3u, 4, -16, 4, 0, 0, &a1, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v3, "{CALL usp_ChargeItem_Draw(?,?,?)}", -3); if ( v4 && v4 != 1 ) result = 0; else result = a1 == 1; return result; } //----- (004625F0) -------------------------------------------------------- bool __stdcall sub_4625F0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 16) = 3; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChargeItem_UseStatPointDecDel(?,?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 16) == 0; return result; } //----- (004626B0) -------------------------------------------------------- bool __stdcall sub_4626B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 32) = 3; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -28, -6, 0, 0, (char *)rgbValue + 32, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChargeItem_UseStatPointDecLotChange(?,?,?,?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 32) == 0; return result; } //----- (004627A0) -------------------------------------------------------- bool __stdcall sub_4627A0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 16) = 3; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChargeItem_UseStatPointInitDel(?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 16) == 0; return result; } //----- (00462840) -------------------------------------------------------- bool __stdcall sub_462840(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 32) = 3; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -28, -6, 0, 0, (char *)rgbValue + 32, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChargeItem_UseStatPointInitLotChange(?,?,?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 32) == 0; return result; } //----- (00462910) -------------------------------------------------------- bool __stdcall sub_462910(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 16) = 3; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChargeItem_UseSkillPowerInitDel(?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 16) == 0; return result; } //----- (004629B0) -------------------------------------------------------- bool __stdcall sub_4629B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 bool result; // al@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_BYTE *)rgbValue + 32) = 3; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -28, -6, 0, 0, (char *)rgbValue + 32, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_ChargeItem_UseSkillPowerInitLotChange(?,?,?,?,?)}", -3); if ( v3 && v3 != 1 ) result = 0; else result = *((_BYTE *)rgbValue + 32) == 0; return result; } //----- (00462A80) -------------------------------------------------------- int __stdcall sub_462A80(int a1, SQLPOINTER rgbValue, char a3, int a4) { int v4; // esi@1 SQLRETURN v5; // ax@1 SQLRETURN v6; // si@3 char *v8; // [sp-10h] [bp-C28h]@7 SQLINTEGER NativeError; // [sp+8h] [bp-C10h]@3 SQLSMALLINT TextLength[2]; // [sp+Ch] [bp-C0Ch]@3 int v11; // [sp+10h] [bp-C08h]@1 SQLCHAR MessageText; // [sp+14h] [bp-C04h]@3 SQLCHAR Sqlstate; // [sp+414h] [bp-804h]@3 char v14; // [sp+814h] [bp-404h]@4 unsigned int v15; // [sp+C14h] [bp-4h]@1 int v16; // [sp+C18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v4 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v4); v11 = -1; SQLBindParameter((SQLHSTMT)v4, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v4, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v4, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v4, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 14, 0, 0); SQLBindParameter((SQLHSTMT)v4, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v4, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v4, 7u, 1, -27, -5, 0, 0, &a3, 0, 0); SQLBindParameter((SQLHSTMT)v4, 8u, 4, -18, 4, 0, 0, &v11, 0, 0); v5 = SQLExecDirect((SQLHSTMT)v4, "{CALL usp_Item_GuildToken_BuyAll(?,?,?,?,?,?,?,?)}", -3); if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v4, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v14, "ERROR - CSQLPItem::p_Item_GuildToken_BuyAll, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v14); } if ( v6 == -1 ) { sprintf(&v14, "ERROR - CSQLPItem::p_Item_GuildToken_BuyAll, SQLError = %d = SQL_ERROR", -1); v8 = &v14; goto LABEL_9; } if ( v6 ) { sprintf(&v14, "ERROR - CSQLPItem::p_Item_GuildToken_BuyAll, SQLError = %d = unknown return value", v6); v8 = &v14; LABEL_9: sub_446350(1, "Msg", "%s", v8); return v11; } } return v11; } // 4DE38C: using guessed type int __security_cookie; //----- (00462CA0) -------------------------------------------------------- int __stdcall sub_462CA0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 8) = -1; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -18, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_GuildToken_BuyLot(?,?,?,?,?,?)}", -3); return *((_DWORD *)rgbValue + 8); } //----- (00462D70) -------------------------------------------------------- signed int __stdcall sub_462D70(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 24; *((_DWORD *)rgbValue + 6) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 10, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_setPutOnBelonged( ?, ?, ?, ?, ?, ? )}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPCharacter::usp_Item_setPutOnBelonged, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::usp_Item_setPutOnBelonged, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::usp_Item_setPutOnBelonged, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf(&v12, "ERROR - CSQLPCharacter::usp_Item_setPutOnBelonged, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00462FB0) -------------------------------------------------------- signed int __stdcall sub_462FB0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 SQLRETURN v5; // si@7 char *v7; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v12; // [sp+814h] [bp-504h]@8 char v13; // [sp+C14h] [bp-104h]@4 unsigned int v14; // [sp+D14h] [bp-4h]@1 int v15; // [sp+D18h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 40; *((_DWORD *)rgbValue + 10) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -27, -5, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 10, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 26, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -17, 5, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -27, -5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 4, -16, 4, 0, 0, (char *)rgbValue + 40, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_setPutOnBelongedExchange( ?, ?, ?, ?, ?, ?, ?, ?, ? )}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v13, "ERROR - CSQLPCharacter::usp_Item_setPutOnBelongedExchange, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v13); } if ( v4 && v4 != 1 ) { *(_DWORD *)TextLength = 0; v5 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v12, "ERROR - CSQLPCharacter::usp_Item_setPutOnBelongedExchange, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v12); } if ( v5 == -1 ) { sprintf(&v12, "ERROR - CSQLPCharacter::usp_Item_setPutOnBelongedExchange, SQLError = %d = SQL_ERROR", -1); v7 = &v12; } else { if ( !v5 ) return 0; sprintf( &v12, "ERROR - CSQLPCharacter::usp_Item_setPutOnBelongedExchange, SQLError = %d = unknown return value", v5); v7 = &v12; } sub_446350(1, "Msg", "%s", v7); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00463240) -------------------------------------------------------- signed int __stdcall sub_463240(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 56; *((_DWORD *)rgbValue + 14) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 48, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 4, -16, 4, 0, 0, (char *)rgbValue + 56, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_setPutOnBelongedCancel( ?, ?, ?, ?, ?, ?, ?, ? )}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPCharacter::usp_Item_setPutOnBelongedCancel, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPItem::usp_Item_setPutOnBelongedCancel", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004633E0) -------------------------------------------------------- signed int __stdcall sub_4633E0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 12; *((_DWORD *)rgbValue + 3) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -16, 4, 0, 0, (char *)rgbValue + 12, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Item_GetStorageEmptyList( ?, ?, ?, ? )}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPItem::p_Item_GetStorageEmptyList, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPItem::p_Item_GetStorageEmptyList, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPItem::p_Item_GetStorageEmptyList, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPItem::p_Item_GetStorageEmptyList, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004635F0) -------------------------------------------------------- signed int __stdcall sub_4635F0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 28; *((_DWORD *)rgbValue + 7) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 26, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -16, 4, 0, 0, (char *)rgbValue + 28, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_SafeTrade_setAll( ?, ?, ?, ?, ?, ?, ? )}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPItem::p_Item_SetBoothTradeAll, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPItem::p_Item_SetBoothTradeAll, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPItem::p_Item_SetBoothTradeAll, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPItem::p_Item_SetBoothTradeAll, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00463850) -------------------------------------------------------- signed int __stdcall sub_463850(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 60; *((_DWORD *)rgbValue + 15) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -27, -5, 0, 0, (char *)rgbValue + 48, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -28, -6, 0, 0, (char *)rgbValue + 56, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 4, -16, 4, 0, 0, (char *)rgbValue + 60, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_SafeTrade_setMerge( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPItem::p_Item_SetBoothTradeMerge, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPItem::p_Item_SetBoothTradeMerge, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPItem::p_Item_SetBoothTradeMerge, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPItem::p_Item_SetBoothTradeMerge, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00463AF0) -------------------------------------------------------- signed int __stdcall sub_463AF0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 SQLRETURN v6; // si@7 char *v8; // [sp-10h] [bp-D28h]@11 SQLINTEGER NativeError; // [sp+Ch] [bp-D0Ch]@7 SQLSMALLINT TextLength[2]; // [sp+10h] [bp-D08h]@7 SQLCHAR Sqlstate; // [sp+14h] [bp-D04h]@7 SQLCHAR MessageText; // [sp+414h] [bp-904h]@7 char v13; // [sp+814h] [bp-504h]@8 char v14; // [sp+C14h] [bp-104h]@4 unsigned int v15; // [sp+D14h] [bp-4h]@1 int v16; // [sp+D18h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 72; *((_DWORD *)rgbValue + 18) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -17, 5, 0, 0, (char *)rgbValue + 18, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 20, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -17, 5, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -18, 4, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 1, -27, -5, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xAu, 1, -17, 5, 0, 0, (char *)rgbValue + 48, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xBu, 1, -27, -5, 0, 0, (char *)rgbValue + 56, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xCu, 1, -27, -5, 0, 0, (char *)rgbValue + 64, 0, 0); SQLBindParameter((SQLHSTMT)v2, 0xDu, 4, -16, 4, 0, 0, (char *)rgbValue + 72, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_SafeTrade_setLot( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v14, "ERROR - CSQLPItem::p_Item_SetBoothTradeLot, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v14); } if ( v5 && v5 != 1 ) { *(_DWORD *)TextLength = 0; v6 = SQLError(0, 0, (SQLHSTMT)v2, &Sqlstate, &NativeError, &MessageText, 1024, TextLength); if ( TextLength[0] ) { sprintf( &v13, "ERROR - CSQLPItem::p_Item_SetBoothTradeLot, state = %s error_num = %d error_str = %s", &Sqlstate, NativeError, &MessageText); sub_446350(1, "Msg", "%s", &v13); } if ( v6 == -1 ) { sprintf(&v13, "ERROR - CSQLPItem::p_Item_SetBoothTradeLot, SQLError = %d = SQL_ERROR", -1); v8 = &v13; } else { if ( !v6 ) return 0; sprintf(&v13, "ERROR - CSQLPItem::p_Item_SetBoothTradeLot, SQLError = %d = unknown return value", v6); v8 = &v13; } sub_446350(1, "Msg", "%s", v8); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00463DE0) -------------------------------------------------------- bool __stdcall sub_463DE0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 8) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 28, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -28, -6, 0, 0, (char *)rgbValue + 29, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -16, 4, 0, 0, (char *)rgbValue + 32, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_Add_EnchantGem( ?, ?, ?, ?, ?, ?, ? )}", -3); return !v3 || v3 == 1; } //----- (00463EE0) -------------------------------------------------------- bool __stdcall sub_463EE0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 10) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -28, -6, 0, 0, (char *)rgbValue + 25, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 26, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -27, -5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 4, -16, 4, 0, 0, (char *)rgbValue + 40, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_Del_EnchantGem( ?, ?, ?, ?, ?, ?, ?, ? )}", -3); return !v3 || v3 == 1; } //----- (00464000) -------------------------------------------------------- bool __stdcall sub_464000(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 10) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -28, -6, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -17, 5, 0, 0, (char *)rgbValue + 26, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -27, -5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -16, 4, 0, 0, (char *)rgbValue + 40, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_Add_EnchantSocket( ?, ?, ?, ?, ?, ?, ? )}", -3); return !v3 || v3 == 1; } //----- (00464100) -------------------------------------------------------- bool __stdcall sub_464100(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 5) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 17, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 20, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Item_Set_EnchantGemLot( ?, ?, ?, ?, ? )}", -3); return !v3 || v3 == 1; } //----- (004641D0) -------------------------------------------------------- bool __stdcall sub_4641D0(int a1, int a2, int a3, void *a4) { int v4; // esi@1 SQLRETURN v5; // ax@1 int rgbValue; // [sp+4h] [bp-8h]@1 int v8; // [sp+8h] [bp-4h]@1 v4 = sub_44E6E0(a1); rgbValue = a2; v8 = a3; SQLCloseCursor((SQLHSTMT)v4); SQLBindParameter((SQLHSTMT)v4, 1u, 1, -27, -5, 0, 0, &rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v4, 2u, 4, -16, 4, 0, 0, a4, 0, 0); v5 = SQLExecDirect((SQLHSTMT)v4, "{CALL usp_Item_Get_EnchantAll( ?, ? )}", -3); return !v5 || v5 == 1; } //----- (00464260) -------------------------------------------------------- void *__thiscall sub_464260(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = &off_4C4EC8; return result; } // 4C4EC8: using guessed type int (__thiscall *off_4C4EC8)(void *, char); //----- (00464270) -------------------------------------------------------- void __thiscall sub_464270(void *this) { *(_DWORD *)this = &off_4C4EC8; } // 4C4EC8: using guessed type int (__thiscall *off_4C4EC8)(void *, char); //----- (00464280) -------------------------------------------------------- bool __stdcall sub_464280(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, -9, 0, 0, (char *)rgbValue + 2, 16, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 263, 20, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 284, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, 1, -9, 0, 0, (char *)rgbValue + 286, 16, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, 1, -9, 0, 0, (char *)rgbValue + 302, 64, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 259, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -17, 5, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Prison_Add(?,?,?,?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (00464390) -------------------------------------------------------- bool __stdcall sub_464390(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, -9, 0, 0, (char *)rgbValue + 2, 16, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 263, 20, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 284, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, 1, -9, 0, 0, (char *)rgbValue + 286, 16, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, 1, -9, 0, 0, (char *)rgbValue + 302, 64, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -17, 5, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Prison_Add2(?,?,?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (00464480) -------------------------------------------------------- bool __stdcall sub_464480(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -17, 5, 0, 0, (char *)rgbValue + 4, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Prison_UpdateCharPrisonMin(?,?)}", -3); return !v3 || v3 == 1; } //----- (00464500) -------------------------------------------------------- signed int __stdcall sub_464500(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Prison_Get(?)}", -3); if ( v3 && v3 != 1 ) { result = 0; } else { if ( sub_44E4A0(a1) ) { sub_44E600(a1, (char *)rgbValue + 4); sub_44E600(a1, (char *)rgbValue + 20); sub_44E4D0(a1); result = 1; } else { result = -1; } } return result; } //----- (004645A0) -------------------------------------------------------- bool __stdcall sub_4645A0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, -9, 0, 0, (char *)rgbValue + 2, 16, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 263, 20, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 284, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, 1, -9, 0, 0, (char *)rgbValue + 286, 16, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, 1, -9, 0, 0, (char *)rgbValue + 302, 64, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -18, 4, 0, 0, (char *)rgbValue + 259, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -17, 5, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Prison_Alter(?,?,?,?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (004646B0) -------------------------------------------------------- bool __stdcall sub_4646B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, -9, 0, 0, (char *)rgbValue + 2, 16, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 263, 20, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -17, 5, 0, 0, (char *)rgbValue + 284, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, 1, -9, 0, 0, (char *)rgbValue + 286, 16, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, 1, -9, 0, 0, (char *)rgbValue + 302, 64, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -17, 5, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL p_Prison_Alter2(?,?,?,?,?,?)}", -3); return !v3 || v3 == 1; } //----- (004647A0) -------------------------------------------------------- void *__thiscall sub_4647A0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4C4EC8; if ( a2 & 1 ) operator delete(this); return v2; } // 4C4EC8: using guessed type int (__thiscall *off_4C4EC8)(void *, char); //----- (004647D0) -------------------------------------------------------- signed int __stdcall sub_4647D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 56; *((_DWORD *)rgbValue + 14) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, 1, -9, 0, 0, (char *)rgbValue + 8, 40, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 48, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -18, 4, 0, 0, (char *)rgbValue + 52, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -16, 4, 0, 0, (char *)rgbValue + 56, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setChangeID(?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPUserConnection::usp_Character_setChangeID, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPUserConnection::usp_Character_setChangeID", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00464940) -------------------------------------------------------- signed int __stdcall sub_464940(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 28; *((_DWORD *)rgbValue + 7) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -17, 5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -17, 5, 0, 0, (char *)rgbValue + 26, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 4, -16, 4, 0, 0, (char *)rgbValue + 28, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Character_setChangeIDItemUsed(?,?,?,?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPUserConnection::usp_Character_setChangeIDItemUsed, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPUserConnection::usp_Character_setChangeIDItemUsed", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00464AC0) -------------------------------------------------------- signed int __stdcall sub_464AC0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_getCoin(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGambleHouse::usp_Gamble_GetCoin, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPGambleHouse::usp_Gamble_GetCoin", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00464BC0) -------------------------------------------------------- signed int __stdcall sub_464BC0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 6) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_addCoin(?,?,?,?)}", -3); if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPGambleHouse::usp_Gamble_AddCoin", (FILE *)v2); result = 0; } else { result = 1; } return result; } //----- (00464C90) -------------------------------------------------------- signed int __stdcall sub_464C90(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 24; *((_DWORD *)rgbValue + 6) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 11, 11, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_getExchangedCoin(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPGambleHouse::usp_Gamble_GetExchangedCoin, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPGambleHouse::usp_Gamble_GetExchangedCoin", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00464DB0) -------------------------------------------------------- signed int __stdcall sub_464DB0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 12) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, 11, 11, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -16, 4, 0, 0, (char *)rgbValue + 48, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_setMoneyToCoin(?,?,?,?,?,?)}", -3); if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPGambleHouse::usp_Gamble_SetMoneyToCoin", (FILE *)v2); result = 0; } else { result = 1; } return result; } //----- (00464EB0) -------------------------------------------------------- signed int __stdcall sub_464EB0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 6) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_setCoinToMoney(?,?,?,?)}", -3); if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPGambleHouse::usp_Gamble_SetCoinToMoney", (FILE *)v2); result = 0; } else { result = 1; } return result; } //----- (00464F80) -------------------------------------------------------- signed int __stdcall sub_464F80(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 12) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, 1, 12, 0, 10, (char *)rgbValue + 17, 10, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -7, -7, 0, 0, (char *)rgbValue + 27, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 1, -27, -5, 0, 0, (char *)rgbValue + 32, 0, 0); SQLBindParameter((SQLHSTMT)v2, 7u, 1, -7, -7, 0, 0, (char *)rgbValue + 40, 0, 0); SQLBindParameter((SQLHSTMT)v2, 8u, 1, -18, 4, 0, 0, (char *)rgbValue + 44, 0, 0); SQLBindParameter((SQLHSTMT)v2, 9u, 4, -16, 4, 0, 0, (char *)rgbValue + 48, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_setSlotMachineResult(?,?,?,?,?,?,?,?,?)}", -3); if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPGambleHouse::usp_Gamble_setSlotMachineResult", (FILE *)v2); result = 0; } else { result = 1; } return result; } //----- (004650D0) -------------------------------------------------------- signed int __stdcall sub_4650D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 8) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, 12, 0, 20, rgbValue, 20, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 32, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_getJackpotRanking(?,?,?)}", -3); if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPGambleHouse::usp_Gamble_getJackpotRanking", (FILE *)v2); result = 0; } else { result = 1; } return result; } //----- (00465180) -------------------------------------------------------- signed int __stdcall sub_465180(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 signed int result; // eax@3 v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 8) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, 1, 12, 0, 20, rgbValue, 20, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 32, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Gamble_getJackpotCoin(?,?)}", -3); if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPGambleHouse::usp_Gamble_getJackpotCoin", (FILE *)v2); result = 0; } else { result = 1; } return result; } //----- (00465210) -------------------------------------------------------- signed int __stdcall sub_465210(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Collection_getCardList(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCollection::usp_Collection_getCardList, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCollection::usp_Collection_getCardList", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00465310) -------------------------------------------------------- signed int __stdcall sub_465310(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Collection_getFavoritesList(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCollection::usp_Collection_getFavoritesList, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCollection::usp_Collection_getFavoritesList", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00465410) -------------------------------------------------------- signed int __stdcall sub_465410(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 32; *((_DWORD *)rgbValue + 8) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 16, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 1, -27, -5, 0, 0, (char *)rgbValue + 24, 0, 0); SQLBindParameter((SQLHSTMT)v2, 6u, 4, -16, 4, 0, 0, (char *)rgbValue + 32, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Collection_setCard(?,?,?,?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCollection::usp_Collection_setCard, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCollection::usp_Collection_setCard", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00465580) -------------------------------------------------------- signed int __stdcall sub_465580(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -18, 4, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -6, -7, 0, 0, (char *)rgbValue + 12, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Collection_setFavorites(?,?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPCollection::usp_Collection_setFavorites, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); } if ( v5 && v5 != 1 ) { sub_4507D0((int)"CSQLPCollection::usp_Collection_setFavorites", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004656D0) -------------------------------------------------------- signed int __stdcall sub_4656D0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Collection_setReward(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCollection::usp_Collection_setReward, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCollection::usp_Collection_setReward", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004657F0) -------------------------------------------------------- signed int __stdcall sub_4657F0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // edi@1 SQLRETURN v4; // bx@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 4; *((_DWORD *)rgbValue + 1) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 4, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Collection_getRewardList(?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCollection::usp_Collection_getRewardList, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCollection::usp_Collection_getRewardList", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004658F0) -------------------------------------------------------- signed int __stdcall sub_4658F0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 16; *((_DWORD *)rgbValue + 4) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -27, -5, 0, 0, (char *)rgbValue + 8, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 16, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Collection_setSerial(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPCollection::usp_Collection_setSerial, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); } if ( v4 && v4 != 1 ) { sub_4507D0((int)"CSQLPCollection::usp_Collection_setSerial", (FILE *)v2); return 0; } if ( *(_DWORD *)v3 ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00465A10) -------------------------------------------------------- signed int __stdcall sub_465A10(int a1, SQLPOINTER rgbValue) { int v2; // edi@1 SQLRETURN v3; // bx@1 char v5; // [sp+Ch] [bp-104h]@4 unsigned int v6; // [sp+10Ch] [bp-4h]@1 int v7; // [sp+110h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *(_DWORD *)rgbValue = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 4, -16, 4, 0, 0, rgbValue, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Collection_getSerialList(?)}", -3); if ( v3 && v3 != 1 || *(_DWORD *)rgbValue ) { sprintf(&v5, "ERROR - CSQLPCollection::usp_Collection_getSerialList, ret(%d), nRet(%d)", v3, *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v5); } if ( v3 && v3 != 1 ) { sub_4507D0((int)"CSQLPCollection::usp_Collection_getSerialList", (FILE *)v2); return 0; } if ( *(_DWORD *)rgbValue ) return 0; return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (00465B00) -------------------------------------------------------- char __stdcall sub_465B00(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 char result; // al@9 SQLRETURN v6; // [sp+10h] [bp-10Ch]@1 char v7; // [sp+17h] [bp-105h]@1 char v8; // [sp+18h] [bp-104h]@4 unsigned int v9; // [sp+118h] [bp-4h]@1 int v10; // [sp+11Ch] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v7 = 1; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 28; *((_DWORD *)rgbValue + 7) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 4, 16, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 21, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 1, -28, -6, 0, 0, (char *)rgbValue + 22, 0, 0); SQLBindParameter((SQLHSTMT)v2, 5u, 4, -16, 4, 0, 0, (char *)rgbValue + 28, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Pet_setCreate(?,?,?,?,?)}", -3); v6 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v8, "ERROR - CSQLPPet::usp_Pet_setCreate, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v8); if ( v6 && v6 != 1 ) sub_4507D0((int)"CSQLPPet::usp_Pet_setCreate", (FILE *)v2); v7 = 0; } if ( sub_44E4A0(a1) == 1 ) { sub_44E570(a1, (char *)rgbValue + 24); sub_44E4D0(a1); result = v7; } else { sprintf(&v8, "ERROR - CSQLPPet::usp_Pet_setCreate, fetch error"); sub_446350(1, "Msg", "%s", &v8); sub_4507D0((int)"CSQLPPet::usp_Pet_setCreate", (FILE *)v2); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00465CD0) -------------------------------------------------------- char __stdcall sub_465CD0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char result; // al@7 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 24; *((_DWORD *)rgbValue + 6) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, 1, -9, 0, 0, (char *)rgbValue + 4, 16, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 24, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Pet_setName(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPPet::usp_Pet_setName, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); if ( v4 ) { if ( v4 != 1 ) sub_4507D0((int)"CSQLPPet::usp_Pet_setName", (FILE *)v2); } result = 0; } else { result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00465DE0) -------------------------------------------------------- char __stdcall sub_465DE0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // ax@1 SQLRETURN v5; // di@1 char result; // al@7 char v7; // [sp+Ch] [bp-104h]@4 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -28, -6, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 1, -28, -6, 0, 0, (char *)rgbValue + 5, 0, 0); SQLBindParameter((SQLHSTMT)v2, 4u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Pet_setTendency(?,?,?,?)}", -3); v5 = v4; if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v7, "ERROR - CSQLPPet::usp_Pet_setTendency, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v7); if ( v5 ) { if ( v5 != 1 ) sub_4507D0((int)"CSQLPPet::usp_Pet_setTendency", (FILE *)v2); } result = 0; } else { result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00465F10) -------------------------------------------------------- char __stdcall sub_465F10(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 SQLRETURN v3; // ax@1 char result; // al@9 SQLRETURN v5; // [sp+Ch] [bp-10Ch]@1 char v6; // [sp+13h] [bp-105h]@1 char v7; // [sp+14h] [bp-104h]@4 unsigned int v8; // [sp+114h] [bp-4h]@1 int v9; // [sp+118h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v6 = 1; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); *((_DWORD *)rgbValue + 7) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 4, -16, 4, 0, 0, (char *)rgbValue + 28, 0, 0); v3 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Pet_getInfo(?,?)}", -3); v5 = v3; if ( v3 && v3 != 1 || *((_DWORD *)rgbValue + 7) ) { sprintf(&v7, "ERROR - CSQLPPet::usp_Pet_getInfo, ret(%d), nRet(%d)", v3, *((_DWORD *)rgbValue + 7)); sub_446350(1, "Msg", "%s", &v7); if ( v5 && v5 != 1 ) sub_4507D0((int)"CSQLPPet::usp_Pet_getInfo", (FILE *)v2); v6 = 0; } if ( sub_44E4A0(a1) == 1 ) { *((_DWORD *)rgbValue + 2) = 0; *((_DWORD *)rgbValue + 3) = 0; *((_DWORD *)rgbValue + 4) = 0; *((_DWORD *)rgbValue + 5) = 0; *((_BYTE *)rgbValue + 24) = 0; sub_44E570(a1, (char *)rgbValue + 4); sub_44E600(a1, (char *)rgbValue + 8); sub_44E510(a1, (char *)rgbValue + 25); sub_44E510(a1, (char *)rgbValue + 26); sub_44E4D0(a1); result = v6; } else { sprintf(&v7, "ERROR - CSQLPPet::usp_Pet_getInfo, fetch error"); sub_446350(1, "Msg", "%s", &v7); sub_4507D0((int)"CSQLPPet::usp_Pet_getInfo", (FILE *)v2); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004660B0) -------------------------------------------------------- char __stdcall sub_4660B0(int a1, SQLPOINTER rgbValue) { int v2; // esi@1 char *v3; // ebx@1 SQLRETURN v4; // di@1 char result; // al@7 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = sub_44E6E0(a1); SQLCloseCursor((SQLHSTMT)v2); v3 = (char *)rgbValue + 8; *((_DWORD *)rgbValue + 2) = 0; SQLBindParameter((SQLHSTMT)v2, 1u, 1, -18, 4, 0, 0, rgbValue, 0, 0); SQLBindParameter((SQLHSTMT)v2, 2u, 1, -18, 4, 0, 0, (char *)rgbValue + 4, 0, 0); SQLBindParameter((SQLHSTMT)v2, 3u, 4, -16, 4, 0, 0, (char *)rgbValue + 8, 0, 0); v4 = SQLExecDirect((SQLHSTMT)v2, "{CALL usp_Pet_setDelete(?,?,?)}", -3); if ( v4 && v4 != 1 || *(_DWORD *)v3 ) { sprintf(&v6, "ERROR - CSQLPPet::usp_Pet_setDelete, ret(%d), nRet(%d)", v4, *(_DWORD *)v3); sub_446350(1, "Msg", "%s", &v6); if ( v4 ) { if ( v4 != 1 ) sub_4507D0((int)"CSQLPPet::usp_Pet_setDelete", (FILE *)v2); } result = 0; } else { result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004661C0) -------------------------------------------------------- int __thiscall sub_4661C0(int this, int a2, int a3, int a4) { int result; // eax@1 result = this; *(_DWORD *)this = a2; *(_DWORD *)(this + 4) = a3; *(_DWORD *)(this + 8) = a4; return result; } //----- (004661E0) -------------------------------------------------------- signed int __stdcall sub_4661E0(unsigned __int16 a1, void *a2) { signed int result; // eax@2 int v3; // eax@3 int v4; // edi@4 if ( a2 && (v3 = sub_402D20((int)&unk_6EA3E8, a1)) != 0 ) { v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 ) { memset(a2, 0, 0x65u); switch ( *(_DWORD *)(v4 + 102) ) { case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: case 0x21: case 0x22: *(_BYTE *)a2 = 1; result = 1; break; case 1: case 0x15: case 0x23: *(_WORD *)a2 = 1; result = 1; break; case 2: case 0x18: *(_DWORD *)a2 = 1; result = 1; break; case 3: result = 1; *(_WORD *)a2 = 1; break; case 5: *(_WORD *)((char *)a2 + 19) = -1; *(_WORD *)((char *)a2 + 7) = -1; *(_WORD *)((char *)a2 + 13) = -1; *(_WORD *)((char *)a2 + 25) = -1; result = 1; break; case 0xA: case 0x12: *(_DWORD *)a2 = 0; result = 1; break; case 0x17: *(_WORD *)a2 = 100; *(_DWORD *)((char *)a2 + 2) = 0; *((_WORD *)a2 + 3) &= 0x8000u; *((_DWORD *)a2 + 3) = 0; result = 1; break; case 0x1D: *((_DWORD *)a2 + 2) = 0; result = 1; break; case 0x1E: *(_DWORD *)a2 = 0; *((_DWORD *)a2 + 1) = 0; *((_BYTE *)a2 + 8) = 0; result = 1; break; case 0x1F: *(_DWORD *)a2 = 0; *((_BYTE *)a2 + 4) = 0; result = 1; break; case 0x24: *((_BYTE *)a2 + 25) = 0; *((_DWORD *)a2 + 1) = -1; *(_DWORD *)a2 = -1; *((_DWORD *)a2 + 2) = 0; *((_DWORD *)a2 + 3) = 0; *((_DWORD *)a2 + 4) = 0; *((_DWORD *)a2 + 5) = 0; *((_BYTE *)a2 + 24) = 0; goto LABEL_18; default: LABEL_18: result = 1; break; } } else { result = 0; } } else { result = 0; } return result; } //----- (004663A0) -------------------------------------------------------- signed int __stdcall sub_4663A0(unsigned __int16 a1, int a2, char a3) { signed int result; // eax@2 int v4; // eax@3 int v5; // eax@4 if ( a2 && (v4 = sub_402D20((int)&unk_6EA3E8, a1)) != 0 && (v5 = *(_DWORD *)v4) != 0 ) { switch ( *(_DWORD *)(v5 + 102) ) { case 6: *(_BYTE *)a2 = a3; result = 1; break; case 7: *(_BYTE *)a2 = a3; result = 1; break; case 5: case 8: *(_BYTE *)a2 = a3; goto LABEL_9; default: LABEL_9: result = 1; break; } } else { result = 0; } return result; } //----- (00466420) -------------------------------------------------------- signed int __stdcall sub_466420(unsigned __int16 a1, int a2, const void *a3) { signed int result; // eax@2 int v4; // eax@3 int v5; // eax@4 int v6; // edi@6 if ( a2 && (v4 = sub_402D20((int)&unk_6EA3E8, a1)) != 0 && (v5 = *(_DWORD *)v4) != 0 ) { switch ( *(_DWORD *)(v5 + 102) ) { case 4: v6 = a2 + 37; goto LABEL_9; case 5: v6 = a2 + 64; goto LABEL_9; case 6: case 7: case 8: v6 = a2 + 12; LABEL_9: memcpy((void *)v6, a3, 0x19u); break; default: break; } result = 1; } else { result = 0; } return result; } //----- (004664A0) -------------------------------------------------------- int __stdcall sub_4664A0(int a1, void *a2) { int result; // eax@2 int v3; // ebx@4 signed int v4; // ecx@12 signed int v5; // ecx@24 signed int v6; // ecx@36 char *v7; // edx@39 char *v8; // edx@41 char *v9; // edx@43 char *v10; // edx@45 if ( a2 ) { result = sub_402D20((int)&unk_6EA3E8, *(_WORD *)(a1 + 1)); if ( result ) { v3 = *(_DWORD *)result; if ( *(_DWORD *)result ) { memset(a2, 0, 0x65u); result = 1; switch ( *(_DWORD *)(v3 + 102) ) { case 0: case 0x16: case 0x21: *(_BYTE *)a2 = *(_BYTE *)(a1 + 5); break; case 1: case 0x23: *(_WORD *)a2 = *(_WORD *)(a1 + 5); break; case 2: *(_DWORD *)a2 = *(_DWORD *)(a1 + 5); break; case 0x18: *(_DWORD *)a2 = *(_DWORD *)(a1 + 5); break; case 3: *(_WORD *)a2 = 1; break; case 4: v4 = 0; if ( *(_DWORD *)(a1 + 13) ) { *((_BYTE *)a2 + 38) = 1; *(_WORD *)((char *)a2 + 39) = *(_WORD *)(a1 + 13); v4 = 1; } if ( *(_DWORD *)(a1 + 17) ) { *((_BYTE *)a2 + 2 * v4 + v4 + 38) = 5; *(_WORD *)((char *)a2 + 2 * v4 + v4 + 39) = *(_WORD *)(a1 + 17); ++v4; } if ( *(_DWORD *)(a1 + 21) ) { *((_BYTE *)a2 + 2 * v4 + v4 + 38) = 3; *(_WORD *)((char *)a2 + 2 * v4 + v4 + 39) = *(_WORD *)(a1 + 21); ++v4; } if ( *(_DWORD *)(a1 + 25) ) { *((_BYTE *)a2 + 2 * v4 + v4 + 38) = 2; *(_WORD *)((char *)a2 + 2 * v4 + v4 + 39) = *(_WORD *)(a1 + 25); ++v4; } if ( *(_DWORD *)(a1 + 29) ) { *((_BYTE *)a2 + 2 * v4 + v4 + 38) = 4; *(_WORD *)((char *)a2 + 2 * v4 + v4 + 39) = *(_WORD *)(a1 + 29); ++v4; } if ( v4 > 0 ) *((_BYTE *)a2 + 37) = 2 * v4 | 1; break; case 5: *(_WORD *)((char *)a2 + 7) = -1; *(_WORD *)((char *)a2 + 19) = -1; *(_WORD *)((char *)a2 + 13) = -1; *(_WORD *)((char *)a2 + 25) = -1; *(_BYTE *)a2 = *(_BYTE *)(a1 + 9); v5 = 0; if ( *(_DWORD *)(a1 + 13) ) { *((_BYTE *)a2 + 65) = 1; *((_WORD *)a2 + 33) = *(_WORD *)(a1 + 13); v5 = 1; } if ( *(_DWORD *)(a1 + 17) ) { *((_BYTE *)a2 + 2 * v5 + v5 + 65) = 5; *(_WORD *)((char *)a2 + 2 * v5 + v5 + 66) = *(_WORD *)(a1 + 17); ++v5; } if ( *(_DWORD *)(a1 + 21) ) { *((_BYTE *)a2 + 2 * v5 + v5 + 65) = 3; *(_WORD *)((char *)a2 + 2 * v5 + v5 + 66) = *(_WORD *)(a1 + 21); ++v5; } if ( *(_DWORD *)(a1 + 25) ) { *((_BYTE *)a2 + 2 * v5 + v5 + 65) = 2; *(_WORD *)((char *)a2 + 2 * v5 + v5 + 66) = *(_WORD *)(a1 + 25); ++v5; } if ( *(_DWORD *)(a1 + 29) ) { *((_BYTE *)a2 + 2 * v5 + v5 + 65) = 4; *(_WORD *)((char *)a2 + 2 * v5 + v5 + 66) = *(_WORD *)(a1 + 29); ++v5; } if ( v5 > 0 ) *((_BYTE *)a2 + 64) = 2 * v5 | 1; break; case 6: case 7: case 8: v6 = 0; if ( *(_DWORD *)(a1 + 13) ) { *((_BYTE *)a2 + 13) = 1; *((_WORD *)a2 + 7) = *(_WORD *)(a1 + 13); v6 = 1; } if ( *(_DWORD *)(a1 + 17) ) { v7 = (char *)a2 + 2 * v6; v7[v6 + 13] = 5; *(_WORD *)&v7[v6++ + 14] = *(_WORD *)(a1 + 17); } if ( *(_DWORD *)(a1 + 21) ) { v8 = (char *)a2 + 2 * v6; v8[v6 + 13] = 3; *(_WORD *)&v8[v6++ + 14] = *(_WORD *)(a1 + 21); } if ( *(_DWORD *)(a1 + 25) ) { v9 = (char *)a2 + 2 * v6; v9[v6 + 13] = 2; *(_WORD *)&v9[v6++ + 14] = *(_WORD *)(a1 + 25); } if ( *(_DWORD *)(a1 + 29) ) { v10 = (char *)a2 + 2 * v6; v10[v6 + 13] = 4; *(_WORD *)&v10[v6++ + 14] = *(_WORD *)(a1 + 29); } if ( v6 > 0 ) *((_BYTE *)a2 + 12) = 2 * v6 | 1; break; case 0xA: case 0x12: *(_DWORD *)a2 = 0; break; case 0xC: case 0xE: case 0x13: case 0x14: case 0x19: *(_BYTE *)a2 = 1; break; case 0x15: *(_WORD *)a2 = 1; break; case 0x17: *(_WORD *)a2 = 100; *(_DWORD *)((char *)a2 + 2) = 0; *((_WORD *)a2 + 3) &= 0x8000u; *((_DWORD *)a2 + 3) = 0; break; case 0x22: *(_BYTE *)a2 = *(_BYTE *)(a1 + 5); break; case 0x1D: *((_DWORD *)a2 + 2) = 0; break; case 0x24: *((_BYTE *)a2 + 25) = 0; *((_DWORD *)a2 + 1) = -1; *(_DWORD *)a2 = -1; *((_DWORD *)a2 + 2) = 0; *((_DWORD *)a2 + 3) = 0; *((_DWORD *)a2 + 4) = 0; *((_DWORD *)a2 + 5) = 0; *((_BYTE *)a2 + 24) = 0; break; default: return result; } } else { result = 0; } } } else { result = 0; } return result; } //----- (00466820) -------------------------------------------------------- signed int __stdcall sub_466820(unsigned __int16 a1, int a2, void *a3) { signed int result; // eax@2 int v4; // eax@3 int v5; // edi@4 if ( a3 && (v4 = sub_402D20((int)&unk_6EA3E8, a1)) != 0 ) { v5 = *(_DWORD *)v4; if ( *(_DWORD *)v4 ) { memset(a3, 0, 0x65u); switch ( *(_DWORD *)(v5 + 102) ) { case 0: case 0x16: *(_BYTE *)a3 = a2; result = 1; break; case 1: case 3: *(_WORD *)a3 = a2; result = 1; break; case 2: *(_DWORD *)a3 = a2; result = 1; break; case 0x18: *(_DWORD *)a3 = a2; result = 1; break; case 0xC: *(_BYTE *)a3 = 1; result = 1; break; case 0x22: *(_BYTE *)a3 = a2; result = 1; break; case 0xE: case 0x13: case 0x14: case 0x19: case 0x21: *(_BYTE *)a3 = a2; result = 1; break; case 0x15: case 0x23: *(_WORD *)a3 = a2; goto LABEL_15; default: LABEL_15: result = 1; break; } } else { result = 0; } } else { result = 0; } return result; } //----- (00466950) -------------------------------------------------------- SQLRETURN __stdcall sub_466950(int a1, char rgbValue, int a3) { return sub_45FE40(a1, rgbValue, a3); } //----- (00466970) -------------------------------------------------------- bool __stdcall sub_466970(int a1, SQLPOINTER rgbValue) { return sub_45FFC0(a1, rgbValue); } //----- (00466990) -------------------------------------------------------- SQLRETURN __stdcall sub_466990(int a1, char rgbValue, int a3, char a4, void *a5) { return sub_460190(a1, rgbValue, a3, a4, a5); } //----- (004669C0) -------------------------------------------------------- signed int __thiscall sub_4669C0(void *this, int a2, int rgbValue, int a4, void *a5) { signed int v5; // edi@2 char v6; // dl@50 int v7; // ebx@53 signed int v8; // edi@55 char *v9; // ebx@56 int v10; // ecx@58 int v11; // eax@139 int v12; // edx@178 int v13; // ecx@179 int v14; // eax@180 int v15; // edx@181 int v16; // ecx@182 int v17; // eax@183 int v18; // edx@184 int v19; // ecx@185 int v20; // edx@198 char *v21; // eax@216 int v22; // ecx@216 int *v23; // eax@219 char v24; // cl@220 bool v25; // zf@224 signed int v27; // [sp+Ch] [bp-158h]@2 int v28; // [sp+10h] [bp-154h]@57 __int16 v29; // [sp+14h] [bp-150h]@57 unsigned __int16 v30; // [sp+18h] [bp-14Ch]@3 void *v31; // [sp+1Ch] [bp-148h]@1 int v32; // [sp+20h] [bp-144h]@1 unsigned __int8 TargetValue; // [sp+26h] [bp-13Eh]@57 unsigned __int8 v34; // [sp+27h] [bp-13Dh]@2 float v35; // [sp+28h] [bp-13Ch]@3 int v36; // [sp+2Ch] [bp-138h]@139 int v37; // [sp+30h] [bp-134h]@218 int v38; // [sp+34h] [bp-130h]@218 int v39; // [sp+40h] [bp-124h]@219 char v40; // [sp+48h] [bp-11Ch]@235 char v41; // [sp+60h] [bp-104h]@210 unsigned int v42; // [sp+160h] [bp-4h]@1 int v43; // [sp+164h] [bp+0h]@1 v42 = (unsigned int)&v43 ^ __security_cookie; v31 = this; v32 = a2; memset(a5, 0, 0x65u); if ( !sub_460240(a2, rgbValue, a4) ) return 0; v5 = 0; v27 = 0; v34 = 0; if ( sub_44E4A0(a2) ) { do { sub_44E540(v32, &v30); sub_44E5A0(v32, &v35); if ( (signed int)v30 > 300 ) { if ( (signed int)v30 > 700 ) { if ( (signed int)v30 > 1000 ) { if ( (signed int)v30 > 1300 ) { if ( (signed int)v30 > 1800 ) { if ( (signed int)v30 > 2200 ) { if ( (signed int)v30 <= 2302 ) { if ( v30 == 2302 ) { *((_BYTE *)a5 + 4) = LOBYTE(v35); } else { switch ( v30 ) { case 0x8FCu: LABEL_143: *(_DWORD *)a5 = LODWORD(v35); break; case 0x899u: *((_WORD *)a5 + 2) = LOWORD(v35); break; case 0x89Au: *((_BYTE *)a5 + 6) = LOBYTE(v35); break; case 0x89Bu: *(_WORD *)((char *)a5 + 7) = LOWORD(v35); break; default: goto LABEL_210; } } continue; } if ( v30 == 2500 ) { LABEL_50: v6 = LOBYTE(v35); LABEL_51: *(_BYTE *)a5 = v6; continue; } if ( v30 == 2600 ) { *(_WORD *)a5 = LOWORD(v35); continue; } if ( v30 == 2700 ) { v27 = 1; *(_DWORD *)a5 = LODWORD(v35); continue; } goto LABEL_210; } if ( v30 != 2200 ) { switch ( v30 ) { case 0x7D0u: goto LABEL_108; case 0x76Cu: goto LABEL_186; case 0x73Au: goto LABEL_197; case 0x834u: v20 = v36; *(_DWORD *)a5 = LODWORD(v35); *((_DWORD *)a5 + 1) = v20; continue; case 0x835u: *((_DWORD *)a5 + 2) = LODWORD(v35); continue; default: goto LABEL_210; } goto LABEL_210; } LABEL_197: *(_DWORD *)a5 = LODWORD(v35); } else { if ( v30 != 1800 ) { switch ( v30 ) { case 0x578u: *(_BYTE *)a5 ^= (LOBYTE(v35) ^ *(_BYTE *)a5) & 0xF; continue; case 0x579u: v6 = *(_BYTE *)a5 & 0xF | 16 * LOBYTE(v35); goto LABEL_51; case 0x57Au: v12 = v36; *(_DWORD *)((char *)a5 + 1) = LODWORD(v35); *(_DWORD *)((char *)a5 + 5) = v12; continue; case 0x57Bu: v13 = v36; *(_DWORD *)((char *)a5 + 9) = LODWORD(v35); *(_DWORD *)((char *)a5 + 13) = v13; continue; case 0x57Cu: v14 = v36; *(_DWORD *)((char *)a5 + 17) = LODWORD(v35); *(_DWORD *)((char *)a5 + 21) = v14; continue; case 0x57Du: v15 = v36; *(_DWORD *)((char *)a5 + 25) = LODWORD(v35); *(_DWORD *)((char *)a5 + 29) = v15; continue; case 0x57Eu: v16 = v36; *(_DWORD *)((char *)a5 + 33) = LODWORD(v35); *(_DWORD *)((char *)a5 + 37) = v16; continue; case 0x57Fu: v17 = v36; *(_DWORD *)((char *)a5 + 41) = LODWORD(v35); *(_DWORD *)((char *)a5 + 45) = v17; continue; case 0x580u: v18 = v36; *(_DWORD *)((char *)a5 + 49) = LODWORD(v35); *(_DWORD *)((char *)a5 + 53) = v18; continue; case 0x581u: v19 = v36; *(_DWORD *)((char *)a5 + 57) = LODWORD(v35); *(_DWORD *)((char *)a5 + 61) = v19; continue; case 0x5DCu: goto LABEL_186; case 0x640u: *(_WORD *)a5 = LOWORD(v35); continue; case 0x641u: *(_DWORD *)((char *)a5 + 2) = LODWORD(v35); continue; case 0x642u: *((_WORD *)a5 + 3) ^= (LOWORD(v35) ^ *((_WORD *)a5 + 3)) & 0x7FFF; continue; case 0x643u: *((_DWORD *)a5 + 2) = LODWORD(v35); continue; case 0x644u: *((_DWORD *)a5 + 3) = LODWORD(v35); continue; case 0x645u: *((_BYTE *)a5 + 16) = LOBYTE(v35); continue; case 0x646u: *(_WORD *)((char *)a5 + 17) = LOWORD(v35); continue; default: goto LABEL_210; } goto LABEL_210; } LABEL_186: *(_DWORD *)a5 = LODWORD(v35); } } else { if ( v30 != 1300 ) { switch ( v30 ) { case 0x3EAu: LABEL_31: *((_DWORD *)a5 + 1) = LODWORD(v35); continue; case 0x44Cu: goto LABEL_50; case 0x457u: LABEL_106: *(_DWORD *)((char *)a5 + 3) = LODWORD(v35); continue; case 0x3E9u: goto LABEL_143; case 0x456u: *(_WORD *)((char *)a5 + 1) = LOWORD(v35); continue; case 0x458u: *(_DWORD *)((char *)a5 + 7) = LODWORD(v35); continue; case 0x460u: *(_WORD *)((char *)a5 + 11) = LOWORD(v35); continue; case 0x461u: *(_DWORD *)((char *)a5 + 13) = LODWORD(v35); continue; case 0x462u: *(_DWORD *)((char *)a5 + 17) = LODWORD(v35); continue; case 0x46Au: *(_WORD *)((char *)a5 + 21) = LOWORD(v35); continue; case 0x46Bu: *(_DWORD *)((char *)a5 + 23) = LODWORD(v35); continue; case 0x46Cu: *(_DWORD *)((char *)a5 + 27) = LODWORD(v35); continue; case 0x474u: *(_WORD *)((char *)a5 + 31) = LOWORD(v35); continue; case 0x475u: *(_DWORD *)((char *)a5 + 33) = LODWORD(v35); continue; case 0x476u: *(_DWORD *)((char *)a5 + 37) = LODWORD(v35); continue; case 0x47Eu: *(_WORD *)((char *)a5 + 41) = LOWORD(v35); continue; case 0x47Fu: *(_DWORD *)((char *)a5 + 43) = LODWORD(v35); continue; case 0x480u: *(_DWORD *)((char *)a5 + 47) = LODWORD(v35); continue; case 0x488u: *(_WORD *)((char *)a5 + 51) = LOWORD(v35); continue; case 0x489u: *(_DWORD *)((char *)a5 + 53) = LODWORD(v35); continue; case 0x48Au: *(_DWORD *)((char *)a5 + 57) = LODWORD(v35); continue; case 0x492u: *(_WORD *)((char *)a5 + 61) = LOWORD(v35); continue; case 0x493u: *(_DWORD *)((char *)a5 + 63) = LODWORD(v35); continue; case 0x494u: *(_DWORD *)((char *)a5 + 67) = LODWORD(v35); continue; case 0x49Cu: *(_WORD *)((char *)a5 + 71) = LOWORD(v35); continue; case 0x49Du: *(_DWORD *)((char *)a5 + 73) = LODWORD(v35); continue; case 0x49Eu: *(_DWORD *)((char *)a5 + 77) = LODWORD(v35); continue; case 0x4A6u: *(_WORD *)((char *)a5 + 81) = LOWORD(v35); continue; case 0x4A7u: *(_DWORD *)((char *)a5 + 83) = LODWORD(v35); continue; case 0x4A8u: *(_DWORD *)((char *)a5 + 87) = LODWORD(v35); continue; case 0x4B0u: *(_WORD *)((char *)a5 + 91) = LOWORD(v35); continue; case 0x4B1u: *(_DWORD *)((char *)a5 + 93) = LODWORD(v35); continue; case 0x4B2u: *(_DWORD *)((char *)a5 + 97) = LODWORD(v35); continue; default: goto LABEL_210; } goto LABEL_210; } } } else { if ( v30 != 1000 ) { switch ( v30 ) { case 0x320u: LABEL_6: *(_BYTE *)a5 = LOBYTE(v35); continue; case 0x2D2u: LABEL_33: *((_BYTE *)a5 + 11) = LOBYTE(v35); continue; case 0x323u: LABEL_34: *((_BYTE *)a5 + 12) = LOBYTE(v35); continue; case 0x2BDu: LABEL_60: *((_BYTE *)a5 + 1) = LOBYTE(v35); continue; case 0x2BEu: LABEL_62: *((_BYTE *)a5 + 2) = LOBYTE(v35); continue; case 0x321u: LABEL_87: *((_BYTE *)a5 + 1) = LOBYTE(v35); continue; case 0x322u: LABEL_88: *((_BYTE *)a5 + 2) = LOBYTE(v35); continue; case 0x324u: LABEL_89: *((_BYTE *)a5 + 13) = LOBYTE(v35); continue; case 0x325u: LABEL_90: *((_WORD *)a5 + 7) = LOWORD(v35); continue; case 0x326u: LABEL_91: *((_BYTE *)a5 + 16) = LOBYTE(v35); continue; case 0x327u: LABEL_92: *(_WORD *)((char *)a5 + 17) = LOWORD(v35); continue; case 0x328u: LABEL_93: *((_BYTE *)a5 + 19) = LOBYTE(v35); continue; case 0x329u: LABEL_94: *((_WORD *)a5 + 10) = LOWORD(v35); continue; case 0x32Au: LABEL_95: *((_BYTE *)a5 + 22) = LOBYTE(v35); continue; case 0x32Bu: LABEL_96: *(_WORD *)((char *)a5 + 23) = LOWORD(v35); continue; case 0x32Cu: LABEL_97: *((_BYTE *)a5 + 25) = LOBYTE(v35); continue; case 0x32Du: LABEL_98: *((_WORD *)a5 + 13) = LOWORD(v35); continue; case 0x32Eu: LABEL_99: *((_BYTE *)a5 + 28) = LOBYTE(v35); continue; case 0x32Fu: LABEL_100: *(_WORD *)((char *)a5 + 29) = LOWORD(v35); continue; case 0x330u: LABEL_101: *((_BYTE *)a5 + 31) = LOBYTE(v35); continue; case 0x331u: LABEL_102: *((_WORD *)a5 + 16) = LOWORD(v35); continue; case 0x332u: LABEL_103: *((_BYTE *)a5 + 34) = LOBYTE(v35); continue; case 0x333u: LABEL_104: *(_WORD *)((char *)a5 + 35) = LOWORD(v35); continue; case 0x334u: LABEL_105: *(_DWORD *)((char *)a5 + 7) = LODWORD(v35); continue; case 0x335u: goto LABEL_106; case 0x336u: LABEL_107: *((_BYTE *)a5 + 11) = LOBYTE(v35); continue; case 0x2BFu: *((_BYTE *)a5 + 12) = LOBYTE(v35); continue; case 0x2C0u: *((_BYTE *)a5 + 13) = LOBYTE(v35); continue; case 0x2C1u: *((_WORD *)a5 + 7) = LOWORD(v35); continue; case 0x2C2u: *((_BYTE *)a5 + 16) = LOBYTE(v35); continue; case 0x2C3u: *(_WORD *)((char *)a5 + 17) = LOWORD(v35); continue; case 0x2C4u: *((_BYTE *)a5 + 19) = LOBYTE(v35); continue; case 0x2C5u: *((_WORD *)a5 + 10) = LOWORD(v35); continue; case 0x2C6u: *((_BYTE *)a5 + 22) = LOBYTE(v35); continue; case 0x2C7u: *(_WORD *)((char *)a5 + 23) = LOWORD(v35); continue; case 0x2C8u: *((_BYTE *)a5 + 25) = LOBYTE(v35); continue; case 0x2C9u: *((_WORD *)a5 + 13) = LOWORD(v35); continue; case 0x2CAu: *((_BYTE *)a5 + 28) = LOBYTE(v35); continue; case 0x2CBu: *(_WORD *)((char *)a5 + 29) = LOWORD(v35); continue; case 0x2CCu: *((_BYTE *)a5 + 31) = LOBYTE(v35); continue; case 0x2CDu: *((_WORD *)a5 + 16) = LOWORD(v35); continue; case 0x2CEu: *((_BYTE *)a5 + 34) = LOBYTE(v35); continue; case 0x2CFu: *(_WORD *)((char *)a5 + 35) = LOWORD(v35); continue; case 0x2D0u: *(_DWORD *)((char *)a5 + 7) = LODWORD(v35); continue; case 0x2D1u: case 0x38Au: *(_DWORD *)((char *)a5 + 3) = LODWORD(v35); continue; case 0x384u: *(float *)((char *)a5 + 7) = v35; continue; case 0x385u: *(float *)((char *)a5 + 11) = v35; continue; case 0x386u: *(float *)((char *)a5 + 19) = v35; continue; case 0x387u: *(float *)((char *)a5 + 15) = v35; continue; case 0x388u: *(_BYTE *)a5 ^= (LOBYTE(v35) ^ *(_BYTE *)a5) & 1; continue; case 0x389u: *(_WORD *)((char *)a5 + 1) = LOWORD(v35); continue; case 0x38Bu: *(_DWORD *)((char *)a5 + 23) = LODWORD(v35); continue; case 0x38Cu: *((_BYTE *)a5 + 27) = LOBYTE(v35); continue; case 0x38Du: v11 = v36; *((_DWORD *)a5 + 7) = LODWORD(v35); *((_DWORD *)a5 + 8) = v11; continue; default: goto LABEL_210; } goto LABEL_210; } } } else { if ( v30 != 700 ) { switch ( v30 ) { case 0x258u: goto LABEL_6; case 0x190u: *((_BYTE *)a5 + 37) = LOBYTE(v35); continue; case 0x191u: *((_BYTE *)a5 + 38) = LOBYTE(v35); continue; case 0x192u: *(_WORD *)((char *)a5 + 39) = LOWORD(v35); continue; case 0x193u: *((_BYTE *)a5 + 41) = LOBYTE(v35); continue; case 0x194u: *((_WORD *)a5 + 21) = LOWORD(v35); continue; case 0x195u: *((_BYTE *)a5 + 44) = LOBYTE(v35); continue; case 0x196u: *(_WORD *)((char *)a5 + 45) = LOWORD(v35); continue; case 0x197u: *((_BYTE *)a5 + 47) = LOBYTE(v35); continue; case 0x198u: *((_WORD *)a5 + 24) = LOWORD(v35); continue; case 0x199u: *((_BYTE *)a5 + 50) = LOBYTE(v35); continue; case 0x19Au: *(_WORD *)((char *)a5 + 51) = LOWORD(v35); continue; case 0x19Bu: *((_BYTE *)a5 + 53) = LOBYTE(v35); continue; case 0x19Cu: *((_WORD *)a5 + 27) = LOWORD(v35); continue; case 0x19Du: *((_BYTE *)a5 + 56) = LOBYTE(v35); continue; case 0x19Eu: *(_WORD *)((char *)a5 + 57) = LOWORD(v35); continue; case 0x19Fu: *((_BYTE *)a5 + 59) = LOBYTE(v35); continue; case 0x1A0u: *((_WORD *)a5 + 30) = LOWORD(v35); continue; case 0x1A2u: *((_BYTE *)a5 + 8) = LOBYTE(v35); continue; case 0x1A3u: *((_BYTE *)a5 + 9) = LOBYTE(v35); continue; case 0x1A4u: *((_BYTE *)a5 + 10) = LOBYTE(v35); continue; case 0x1AAu: goto LABEL_31; case 0x1ABu: *((_BYTE *)a5 + 36) = LOBYTE(v35); continue; case 0x1ACu: goto LABEL_33; case 0x1ADu: case 0x25Bu: goto LABEL_34; case 0x1AEu: *(_WORD *)((char *)a5 + 13) = LOWORD(v35); continue; case 0x1AFu: *((_BYTE *)a5 + 15) = LOBYTE(v35); continue; case 0x1B0u: *((_WORD *)a5 + 8) = LOWORD(v35); continue; case 0x1B1u: *((_BYTE *)a5 + 18) = LOBYTE(v35); continue; case 0x1B2u: *(_WORD *)((char *)a5 + 19) = LOWORD(v35); continue; case 0x1B3u: *((_BYTE *)a5 + 21) = LOBYTE(v35); continue; case 0x1B4u: *((_WORD *)a5 + 11) = LOWORD(v35); continue; case 0x1B5u: *((_BYTE *)a5 + 24) = LOBYTE(v35); continue; case 0x1B7u: *((_BYTE *)a5 + 27) = LOBYTE(v35); continue; case 0x1B8u: *((_WORD *)a5 + 14) = LOWORD(v35); continue; case 0x1B9u: *((_BYTE *)a5 + 30) = LOBYTE(v35); continue; case 0x1BAu: *(_WORD *)((char *)a5 + 31) = LOWORD(v35); continue; case 0x1BBu: *((_BYTE *)a5 + 33) = LOBYTE(v35); continue; case 0x1BCu: *((_WORD *)a5 + 17) = LOWORD(v35); continue; case 0x1F4u: v5 = 1; goto LABEL_50; case 0x1F5u: v5 = 1; goto LABEL_60; case 0x1F6u: v5 = 1; goto LABEL_62; case 0x1F7u: v5 = 1; *((_BYTE *)a5 + 64) = LOBYTE(v35); continue; case 0x1F8u: v5 = 1; *((_BYTE *)a5 + 65) = LOBYTE(v35); continue; case 0x1F9u: v5 = 1; *((_WORD *)a5 + 33) = LOWORD(v35); continue; case 0x1FAu: v5 = 1; *((_BYTE *)a5 + 68) = LOBYTE(v35); continue; case 0x1FBu: v5 = 1; *(_WORD *)((char *)a5 + 69) = LOWORD(v35); continue; case 0x1FCu: v5 = 1; *((_BYTE *)a5 + 71) = LOBYTE(v35); continue; case 0x1FDu: v5 = 1; *((_WORD *)a5 + 36) = LOWORD(v35); continue; case 0x1FEu: v5 = 1; *((_BYTE *)a5 + 74) = LOBYTE(v35); continue; case 0x1FFu: v5 = 1; *(_WORD *)((char *)a5 + 75) = LOWORD(v35); continue; case 0x200u: v5 = 1; *((_BYTE *)a5 + 77) = LOBYTE(v35); continue; case 0x201u: v5 = 1; *((_WORD *)a5 + 39) = LOWORD(v35); continue; case 0x202u: v5 = 1; *((_BYTE *)a5 + 80) = LOBYTE(v35); continue; case 0x203u: v5 = 1; *(_WORD *)((char *)a5 + 81) = LOWORD(v35); continue; case 0x204u: v5 = 1; *((_BYTE *)a5 + 83) = LOBYTE(v35); continue; case 0x205u: v5 = 1; *((_WORD *)a5 + 42) = LOWORD(v35); continue; case 0x206u: v5 = 1; *((_BYTE *)a5 + 86) = LOBYTE(v35); continue; case 0x207u: v5 = 1; *(_WORD *)((char *)a5 + 87) = LOWORD(v35); continue; case 0x208u: v5 = 1; goto LABEL_81; case 0x1B6u: LABEL_81: *(_WORD *)((char *)a5 + 25) = LOWORD(v35); continue; case 0x209u: v5 = 1; *(_DWORD *)((char *)a5 + 59) = LODWORD(v35); continue; case 0x20Au: v5 = 1; *(_DWORD *)((char *)a5 + 3) = LODWORD(v35); continue; case 0x20Bu: v34 = 1; *((_BYTE *)a5 + 57) = LOBYTE(v35); continue; case 0x20Cu: v34 = 1; *((_BYTE *)a5 + 58) = LOBYTE(v35); continue; case 0x20Du: *((_BYTE *)a5 + 63) = LOBYTE(v35); continue; case 0x259u: goto LABEL_87; case 0x25Au: goto LABEL_88; case 0x25Cu: goto LABEL_89; case 0x25Du: goto LABEL_90; case 0x25Eu: goto LABEL_91; case 0x25Fu: goto LABEL_92; case 0x260u: goto LABEL_93; case 0x261u: goto LABEL_94; case 0x262u: goto LABEL_95; case 0x263u: goto LABEL_96; case 0x264u: goto LABEL_97; case 0x265u: goto LABEL_98; case 0x266u: goto LABEL_99; case 0x267u: goto LABEL_100; case 0x268u: goto LABEL_101; case 0x269u: goto LABEL_102; case 0x26Au: goto LABEL_103; case 0x26Bu: goto LABEL_104; case 0x26Cu: goto LABEL_105; case 0x26Du: goto LABEL_106; case 0x26Eu: goto LABEL_107; case 0x1A1u: goto LABEL_143; default: goto LABEL_210; } goto LABEL_210; } LABEL_108: *(_BYTE *)a5 = LOBYTE(v35); } } else { if ( v30 != 300 ) { switch ( v30 ) { case 1u: goto LABEL_6; case 2u: goto LABEL_7; case 3u: goto LABEL_143; case 4u: goto LABEL_197; default: break; } LABEL_210: sprintf( &v41, "WARNING - CGameDB_Item::GetItemOptions UNKNOWNED OPTION ID=%d, VALUE=%I64d, ITEMKEY=%I64d", v30, LODWORD(v35), v36, rgbValue, a4); sub_446350(1, "Msg", "%s", &v41); continue; } LABEL_7: *(_WORD *)a5 = LOWORD(v35); } } while ( sub_44E4A0(v32) ); } v7 = v32; sub_44E4D0(v32); if ( v5 ) { if ( !sub_460370(v7, rgbValue, a4) ) return 0; v8 = 0; if ( sub_44E4A0(v7) ) { v9 = (char *)a5 + 9; do { sub_44E540(v32, &v29); sub_44E510(v32, &TargetValue); sub_44E570(v32, &v28); if ( v8 >= 3 ) { sprintf(&v41, "¾ÆÀÌÅÛÀÇ Å¸ÀÌÆ² °¹¼", rgbValue, a4); sub_446350(1, "Msg", "%s", &v41); } else { v10 = v28 & 0xFFFFFFF | (TargetValue << 28); *((_WORD *)v9 - 1) = v29; *(_DWORD *)v9 = v10; } ++v8; v9 += 6; } while ( sub_44E4A0(v32) ); } v7 = v32; sub_44E4D0(v32); if ( v8 < 3 ) { v21 = (char *)a5 + 6 * v8 + 9; v22 = 3 - v8; do { *((_WORD *)v21 - 1) = -1; *(_DWORD *)v21 = 0; v21 += 6; --v22; } while ( v22 ); } v37 = rgbValue; v38 = a4; if ( sub_460490(v7, &v37) == 1 ) { v23 = &v39; do { v24 = *(_BYTE *)v23; *((_BYTE *)v23 + (char *)a5 + 27 - (char *)&v39) = *(_BYTE *)v23; v23 = (int *)((char *)v23 + 1); } while ( v24 ); } else { *((_BYTE *)a5 + 27) = 0; } } else { if ( !v34 ) goto LABEL_232; } v25 = v34 == 0; *((_WORD *)a5 + 24) = -1; *((_BYTE *)a5 + 50) = -1; *(_WORD *)((char *)a5 + 51) = -1; *((_BYTE *)a5 + 53) = -1; *((_WORD *)a5 + 27) = -1; *((_BYTE *)a5 + 56) = -1; if ( v25 ) goto LABEL_232; v28 = 0; if ( !sub_4641D0(v7, rgbValue, a4, &v28) ) return 0; v34 = 0; v32 = 65535; TargetValue = -1; if ( sub_44E4A0(v7) ) { while ( 1 ) { sub_44E510(v7, &v34); sub_44E570(v7, &v32); sub_44E510(v7, &TargetValue); if ( (unsigned int)v32 > 0xFFFF ) break; if ( v32 == 65535 ) break; if ( v34 >= 3u ) { sprintf(&v41, "Too many socket exists., Key = %I64d", rgbValue, a4); sub_446350(1, "Msg", "%s", &v41); return 0; } *(_WORD *)((char *)a5 + 2 * v34 + v34 + 48) = v32; *((_BYTE *)a5 + 2 * v34 + v34 + 50) = TargetValue; if ( !sub_44E4A0(v7) ) goto LABEL_231; } sprintf(&v41, "Invalid Gem Item., ShineItemID = %u", v32); sub_446350(1, "Msg", "%s", &v41); return 0; } LABEL_231: sub_44E4D0(v7); LABEL_232: if ( v27 == 1 && *(_DWORD *)a5 != -1 ) { v39 = *(_DWORD *)a5; if ( sub_465F10(v7, &v39) == 1 ) { strncpy((char *)a5 + 8, &v40, 0x10u); *((_BYTE *)a5 + 24) = 0; } } return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (004681E0) -------------------------------------------------------- __int16 __stdcall sub_4681E0(int a1, char rgbValue, int a3, char a4, char *a5) { char *v5; // edi@1 int v6; // eax@1 unsigned int v7; // eax@2 unsigned int v9; // [sp+24h] [bp+18h]@2 v5 = a5; LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4, *a5, 0); if ( !v6 ) { v7 = (unsigned int)(unsigned __int8)*a5 >> 1; v9 = v7; if ( (signed int)v7 >= 1 ) { LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 1, v5[1], 0); if ( v6 || (LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 2, *((_WORD *)v5 + 1), 0), v6) ) return v6; v7 = v9; } if ( (signed int)v7 >= 2 ) { LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 3, v5[4], 0); if ( v6 || (LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 4, *(_WORD *)(v5 + 5), 0), v6) ) return v6; v7 = v9; } if ( (signed int)v7 >= 3 ) { LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 5, v5[7], 0); if ( v6 || (LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 6, *((_WORD *)v5 + 4), 0), v6) ) return v6; v7 = v9; } if ( (signed int)v7 >= 4 ) { LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 7, v5[10], 0); if ( v6 || (LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 8, *(_WORD *)(v5 + 11), 0), v6) ) return v6; v7 = v9; } if ( (signed int)v7 >= 5 ) { LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 9, v5[13], 0); if ( v6 || (LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 10, *((_WORD *)v5 + 7), 0), v6) ) return v6; v7 = v9; } if ( (signed int)v7 >= 6 ) { LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 11, v5[16], 0); if ( v6 || (LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 12, *(_WORD *)(v5 + 17), 0), v6) ) return v6; v7 = v9; } if ( (signed int)v7 >= 7 ) { LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 13, v5[19], 0); if ( v6 || (LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 14, *((_WORD *)v5 + 10), 0), v6) ) return v6; v7 = v9; } if ( (signed int)v7 < 8 || (LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 15, v5[22], 0), !v6) && (LOWORD(v6) = sub_4600E0(a1, rgbValue, a3, a4 + 16, *(_WORD *)(v5 + 23), 0), !v6) ) LOWORD(v6) = 0; } return v6; } //----- (004684C0) -------------------------------------------------------- signed int __stdcall sub_4684C0(int a1, int a2, int a3, unsigned __int16 a4, int a5, int a6, int a7) { int v7; // ecx@2 int v8; // eax@4 signed int result; // eax@8 int v10; // ecx@9 char *v11; // [sp-10h] [bp-120h]@6 char v12; // [sp+Ch] [bp-104h]@6 unsigned int v13; // [sp+10Ch] [bp-4h]@1 int v14; // [sp+110h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; if ( a4 >= (unsigned int)dword_6EA3EC || (v7 = dword_6EACDC + 40 * a4) == 0 || !*(_DWORD *)v7 ) goto LABEL_6; v8 = **(_WORD **)v7; if ( (_WORD)v8 != a4 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v8 + 10000 * a4); LABEL_6: sprintf(&v12, "ERROR - ItemDataBox::ItemDataBoxIndex = NULL (nItemID=%d)", a4); v11 = &v12; goto LABEL_7; } v10 = *(_DWORD *)v7; if ( !v10 ) { sprintf(&v12, "ERROR - pidbi->data = NULL (nItemID=%d)", a4); v11 = &v12; LABEL_7: sub_446350(1, "Msg", "%s", v11); return 1; } *(_DWORD *)a6 = 65535; *(_BYTE *)a7 = -1; switch ( *(_DWORD *)(v10 + 102) ) { case 4: *(_DWORD *)a6 = 427; *(_BYTE *)a7 = *(_BYTE *)(a5 + 36); result = 0; break; case 5: *(_DWORD *)a6 = 525; *(_BYTE *)a7 = *(_BYTE *)(a5 + 63); result = 0; break; case 6: *(_DWORD *)a6 = 622; *(_BYTE *)a7 = *(_BYTE *)(a5 + 11); result = 0; break; case 7: *(_DWORD *)a6 = 722; *(_BYTE *)a7 = *(_BYTE *)(a5 + 11); result = 0; break; case 8: *(_DWORD *)a6 = 822; *(_BYTE *)a7 = *(_BYTE *)(a5 + 11); result = 0; break; default: return 1; } return result; } // 4DE38C: using guessed type int __security_cookie; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (00468680) -------------------------------------------------------- signed int __stdcall sub_468680(int a1, char rgbValue, char a3, int a4, int a5, int a6) { signed int result; // eax@2 *(_DWORD *)a5 = 0; if ( (unsigned __int8)a3 < 0x11u ) { if ( sub_45FEC0(a1, rgbValue, a3) ) { while ( sub_44E4A0(a1) ) { if ( *(_DWORD *)a5 >= a4 ) break; *(_BYTE *)(a6 + 40 * *(_DWORD *)a5 + 10) = a3; sub_44E5D0(a1, (SQLPOINTER)(a6 + 40 * *(_DWORD *)a5)); sub_44E540(a1, (SQLPOINTER)(a6 + 40 * *(_DWORD *)a5 + 8)); sub_44E570(a1, (SQLPOINTER)(a6 + 40 * *(_DWORD *)a5 + 12)); sub_44E570(a1, (SQLPOINTER)(a6 + 40 * *(_DWORD *)a5 + 16)); sub_44E6B0(a1, (SQLPOINTER)(a6 + 40 * (*(_DWORD *)a5)++ + 20)); } sub_44E4D0(a1); result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (00468750) -------------------------------------------------------- signed int __stdcall sub_468750(int a1, char rgbValue, char a3, int a4, int a5, int a6, signed int a7, signed int a8) { int v8; // esi@1 signed int result; // eax@2 char v10; // [sp+10h] [bp-2Ch]@6 unsigned __int16 TargetValue; // [sp+18h] [bp-24h]@6 char v12; // [sp+1Ah] [bp-22h]@6 char v13; // [sp+1Ch] [bp-20h]@6 char v14; // [sp+20h] [bp-1Ch]@6 char v15; // [sp+24h] [bp-18h]@6 unsigned int v16; // [sp+38h] [bp-4h]@1 int v17; // [sp+3Ch] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v8 = a5; *(_DWORD *)a5 = 0; if ( (unsigned __int8)a3 < 0x11u && sub_45FEC0(a1, rgbValue, a3) ) { if ( sub_44E4A0(a1) ) { while ( *(_DWORD *)v8 < a4 ) { v12 = a3; sub_44E5D0(a1, &v10); sub_44E540(a1, &TargetValue); sub_44E570(a1, &v13); sub_44E570(a1, &v14); sub_44E6B0(a1, &v15); if ( TargetValue >= a7 ) { if ( TargetValue <= a8 ) { memcpy((void *)(a6 + 40 * *(_DWORD *)v8), &v10, 0x28u); ++*(_DWORD *)a5; v8 = a5; } } if ( !sub_44E4A0(a1) ) goto LABEL_10; } sub_44E4D0(a1); result = 0; } else { LABEL_10: sub_44E4D0(a1); result = 1; } } else { result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00468870) -------------------------------------------------------- signed int __stdcall sub_468870(int a1, char rgbValue, char a3, int a4, int a5, int a6, int a7, int a8) { int v8; // esi@1 signed int result; // eax@2 int v10; // edi@4 int v11; // [sp+10h] [bp-30h]@4 char v12; // [sp+14h] [bp-2Ch]@6 char TargetValue; // [sp+1Ch] [bp-24h]@6 char v14; // [sp+1Eh] [bp-22h]@6 char v15; // [sp+20h] [bp-20h]@6 char v16; // [sp+24h] [bp-1Ch]@6 char v17; // [sp+28h] [bp-18h]@6 unsigned int v18; // [sp+3Ch] [bp-4h]@1 int v19; // [sp+40h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; v8 = a5; *(_DWORD *)a5 = 0; if ( (unsigned __int8)a3 < 0x11u && sub_45FEC0(a1, rgbValue, a3) ) { v10 = 0; v11 = 0; if ( sub_44E4A0(a1) ) { while ( *(_DWORD *)v8 < a4 ) { v14 = a3; sub_44E5D0(a1, &v12); sub_44E540(a1, &TargetValue); sub_44E570(a1, &v15); sub_44E570(a1, &v16); sub_44E6B0(a1, &v17); if ( v10 >= a7 ) { if ( v10 <= a8 ) { memcpy((void *)(a6 + 40 * *(_DWORD *)v8), &v12, 0x28u); ++*(_DWORD *)a5; v10 = v11; v8 = a5; } } ++v10; v11 = v10; if ( !sub_44E4A0(a1) ) goto LABEL_10; } sub_44E4D0(a1); result = 0; } else { LABEL_10: sub_44E4D0(a1); result = 1; } } else { result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (004689A0) -------------------------------------------------------- int __stdcall sub_4689A0(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 9, 144, a3, a3 + 8); } //----- (004689D0) -------------------------------------------------------- int __stdcall sub_4689D0(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 8, 30, a3, a3 + 8); } //----- (004689F0) -------------------------------------------------------- int __stdcall sub_4689F0(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 7, 5, a3, a3 + 8); } //----- (00468A10) -------------------------------------------------------- int __stdcall sub_468A10(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 6, 576, a3, a3 + 8); } //----- (00468A40) -------------------------------------------------------- int __stdcall sub_468A40(int a1, char rgbValue, int a3, int a4, int a5) { return sub_468750(a1, rgbValue, 6, 576, a3, a3 + 8, a4, a5); } //----- (00468A70) -------------------------------------------------------- int __stdcall sub_468A70(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 5, 42, a3, a3 + 8); } //----- (00468A90) -------------------------------------------------------- int __stdcall sub_468A90(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 4, 36, a3, a3 + 8); } //----- (00468AB0) -------------------------------------------------------- int __stdcall sub_468AB0(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 2, 1024, a3, a3 + 8); } //----- (00468AE0) -------------------------------------------------------- int __stdcall sub_468AE0(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 1, 80, a3, a3 + 8); } //----- (00468B00) -------------------------------------------------------- int __stdcall sub_468B00(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 0, 100, a3, a3 + 8); } //----- (00468B20) -------------------------------------------------------- int __stdcall sub_468B20(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 12, 35, a3, a3 + 8); } //----- (00468B40) -------------------------------------------------------- int __stdcall sub_468B40(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 3, 98, a3, a3 + 8); } //----- (00468B60) -------------------------------------------------------- int __stdcall sub_468B60(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 13, 98, a3, a3 + 8); } //----- (00468B80) -------------------------------------------------------- int __stdcall sub_468B80(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 14, 98, a3, a3 + 8); } //----- (00468BA0) -------------------------------------------------------- int __stdcall sub_468BA0(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 16, 98, a3, a3 + 8); } //----- (00468BC0) -------------------------------------------------------- int __stdcall sub_468BC0(int a1, char rgbValue, int a3) { return sub_468680(a1, rgbValue, 15, 42, a3, a3 + 8); } //----- (00468BE0) -------------------------------------------------------- int __stdcall sub_468BE0(int a1, char rgbValue, int a3, int a4, int a5) { return sub_468870(a1, rgbValue, 2, 1024, a3, a3 + 8, a4, a5); } //----- (00468C10) -------------------------------------------------------- signed int __stdcall sub_468C10(int a1, char rgbValue, char a3, int a4, unsigned __int16 a5) { signed int result; // eax@1 int v6; // eax@7 result = 0; if ( a4 ) { *(_WORD *)a4 = 0; if ( (unsigned __int8)a3 < 0x11u ) { if ( sub_45FF40(a1, rgbValue, a3) ) { if ( sub_44E4A0(a1) ) { while ( 1 ) { v6 = *(_WORD *)a4; if ( (unsigned __int16)v6 >= a5 ) break; sub_44E540(a1, (SQLPOINTER)(a4 + 2 * v6 + 2)); ++*(_WORD *)a4; if ( !sub_44E4A0(a1) ) goto LABEL_9; } sub_44E4D0(a1); result = 0; } else { LABEL_9: sub_44E4D0(a1); result = 1; } } else { result = 0; } } else { result = 0; } } return result; } //----- (00468CB0) -------------------------------------------------------- signed int __stdcall sub_468CB0(int a1, char rgbValue, int a3, int a4, int a5, int a6) { int v6; // esi@1 bool v7; // zf@1 signed int result; // eax@3 signed int v9; // ebx@4 int v10; // esi@5 int v11; // eax@7 int v12; // edx@10 int v13; // ecx@10 char v14; // al@10 int v15; // ecx@10 int v16; // [sp+10h] [bp-48h]@4 int TargetValue; // [sp+14h] [bp-44h]@10 int v18; // [sp+24h] [bp-34h]@10 int v19; // [sp+28h] [bp-30h]@10 char v20; // [sp+2Ch] [bp-2Ch]@10 int v21; // [sp+2Eh] [bp-2Ah]@10 int v22; // [sp+32h] [bp-26h]@10 unsigned int v23; // [sp+54h] [bp-4h]@1 int v24; // [sp+58h] [bp+0h]@1 v23 = (unsigned int)&v24 ^ __security_cookie; v6 = a3; v7 = (*(_BYTE *)(a3 + 8) & 1) == 0; *(_WORD *)(a3 + 9) = 0; if ( !v7 && !sub_4624F0(a1, rgbValue) ) { *(_BYTE *)(a3 + 8) |= 2u; return 0; } v9 = 16; v16 = 0; if ( !sub_44E4A0(a1) ) { LABEL_13: *(_BYTE *)(v6 + 8) |= 2u; *(_WORD *)(v6 + 9) = v16; sub_44E4D0(a1); return 1; } v10 = a3 + 23; while ( 1 ) { if ( a4 ) { v11 = *(_DWORD *)a4; if ( *(_DWORD *)a4 < a5 || v11 > a6 ) { *(_DWORD *)a4 = v11 + 1; goto LABEL_11; } *(_DWORD *)a4 = v11 + 1; } sub_44E4E0(a1, &TargetValue); sub_44E4E0(a1, &v18); sub_44E4E0(a1, &v19); sub_44E6B0(a1, &v20); v12 = TargetValue; v13 = v19; *(_DWORD *)(v10 - 8) = v18; v14 = v22; *(_DWORD *)(v10 - 12) = v12; LOBYTE(v12) = v20; *(_DWORD *)(v10 - 4) = v13; v15 = HIWORD(v22); *(_BYTE *)v10 = v12 + 48; *(_DWORD *)v10 = *(_BYTE *)v10 | ((v21 & 0x1F | 32 * (BYTE2(v21) & 0x3F | (((v15 << 6) | v14 & 0x3F) << 6))) << 8); result = 1; ++v16; v9 += 16; v10 += 16; if ( v9 >= 8192 ) break; LABEL_11: if ( !sub_44E4A0(a1) ) { v6 = a3; goto LABEL_13; } } *(_WORD *)(a3 + 9) = v16; return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00468E30) -------------------------------------------------------- bool __stdcall sub_468E30(int a1, char a2, char rgbValue) { return sub_462550(a1, a2, rgbValue); } //----- (00468E40) -------------------------------------------------------- __int16 __stdcall sub_468E40(int a1, int rgbValue, int a3, unsigned __int16 a4, int a5) { int v5; // eax@1 int v6; // ecx@2 int v7; // ecx@3 int v8; // ecx@4 int v9; // eax@34 int v10; // eax@36 char v11; // cl@37 int v12; // ecx@111 int v13; // eax@150 char v15; // [sp-14h] [bp-160h]@11 char v16; // [sp-14h] [bp-160h]@14 int v17; // [sp-10h] [bp-15Ch]@11 int v18; // [sp-10h] [bp-15Ch]@14 char v19; // [sp-Ch] [bp-158h]@10 char v20; // [sp-Ch] [bp-158h]@13 __int64 v21; // [sp-8h] [bp-154h]@10 __int64 v22; // [sp-8h] [bp-154h]@13 signed int v23; // [sp+Ch] [bp-140h]@32 int v24; // [sp+10h] [bp-13Ch]@2 int v25; // [sp+14h] [bp-138h]@32 int v26; // [sp+14h] [bp-138h]@111 int v27; // [sp+18h] [bp-134h]@39 int v28; // [sp+1Ch] [bp-130h]@39 __int16 v29; // [sp+20h] [bp-12Ch]@39 int v30; // [sp+24h] [bp-128h]@39 unsigned __int8 v31; // [sp+28h] [bp-124h]@39 int v32; // [sp+2Ch] [bp-120h]@163 char v33; // [sp+30h] [bp-11Ch]@163 char v34; // [sp+40h] [bp-10Ch]@163 char v35; // [sp+48h] [bp-104h]@6 unsigned int v36; // [sp+148h] [bp-4h]@1 int v37; // [sp+14Ch] [bp+0h]@1 v36 = (unsigned int)&v37 ^ __security_cookie; LOWORD(v5) = 0; if ( a4 >= (unsigned int)dword_6EA3EC || (v6 = dword_6EACDC + 40 * a4, (v24 = v6) == 0) || (v7 = *(_DWORD *)v6) == 0 ) goto LABEL_6; v8 = *(_WORD *)v7; if ( (_WORD)v8 != a4 ) { sub_44B580(&unk_4DCB00, (int)"ItemDataBox::operator [] :Invalid Item index", v8 + 10000 * a4); LABEL_6: sprintf(&v35, "ERROR - ItemDataBox::ItemDataBoxIndex = NULL (nItemID=%d)", a4); sub_446350(1, "Msg", "%s", &v35); LOWORD(v5) = 1; return v5; } if ( *(_DWORD *)v24 ) { switch ( *(_DWORD *)(*(_DWORD *)v24 + 102) ) { case 0: case 0xC: case 0xE: case 0x13: case 0x14: case 0x16: case 0x19: v21 = *(_BYTE *)a5; v19 = 1; goto LABEL_11; case 1: case 0x15: v22 = *(_WORD *)a5; v20 = 2; goto LABEL_14; case 2: v22 = *(_DWORD *)a5; v20 = 3; goto LABEL_14; case 0x18: v22 = *(_DWORD *)a5; v20 = 4; LABEL_14: v18 = a3; v16 = rgbValue; goto LABEL_15; case 3: HIDWORD(v22) = 0; LOWORD(v22) = *(_WORD *)a5; v20 = 44; v18 = a3; v16 = rgbValue; LABEL_15: LOWORD(v5) = sub_4600E0(a1, v16, v18, v20, v22, SHIDWORD(v22)); return v5; case 4: LOWORD(v5) = sub_4681E0(a1, rgbValue, a3, -112, (char *)(a5 + 37)); if ( !v5 ) { LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -95, *(_DWORD *)a5, 0); if ( !v5 ) { LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -94, *(_BYTE *)(a5 + 8), 0); if ( !v5 ) { LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -93, *(_BYTE *)(a5 + 9), 0); if ( !v5 ) { LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -92, *(_BYTE *)(a5 + 10), 0); if ( !v5 ) { LOWORD(v5) = sub_4600E0( a1, rgbValue, a3, -86, *(_DWORD *)(a5 + 4), (unsigned __int64)*(_DWORD *)(a5 + 4) >> 32); if ( !v5 ) { LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -85, *(_BYTE *)(a5 + 36), 0); if ( !v5 ) LOWORD(v5) = sub_4681E0(a1, rgbValue, a3, -84, (char *)(a5 + 11)); } } } } } } return v5; case 5: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -12, *(_BYTE *)a5, 0); if ( v5 || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -11, *(_BYTE *)(a5 + 1), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -10, *(_BYTE *)(a5 + 2), 0), v5) || (LOWORD(v5) = sub_4681E0(a1, rgbValue, a3, -9, (char *)(a5 + 64)), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 8, *(_WORD *)(a5 + 25), 0), v5) ) return v5; v23 = 0; v25 = a5 + 7; do { if ( *(_WORD *)v25 != -1 ) { LOWORD(v9) = sub_4602A0(a1, rgbValue, a3, *(_WORD *)v25, *(_DWORD *)(v25 + 2) >> 28, *(_DWORD *)(v25 + 2)); if ( v9 ) break; } v25 += 6; ++v23; } while ( v23 < 3 ); v10 = a5 + 27; do v11 = *(_BYTE *)v10++; while ( v11 ); if ( v10 != a5 + 28 ) { v28 = a3; v27 = rgbValue; v29 = 0; v30 = 0; _mbsnbcpy(&v31, (const unsigned __int8 *)(a5 + 27), 0x18u); v5 = sub_4603D0(a1, &v27); if ( v5 ) return v5; } LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 9, *(_DWORD *)(a5 + 59), 0); if ( v5 || (LOWORD(v5) = sub_4600E0( a1, rgbValue, a3, 10, *(_DWORD *)(a5 + 3), (unsigned __int64)*(_DWORD *)(a5 + 3) >> 32), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 11, *(_BYTE *)(a5 + 57), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 12, *(_BYTE *)(a5 + 58), 0), v5) ) return v5; v21 = *(_BYTE *)(a5 + 63); v19 = 13; goto LABEL_11; case 6: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 88, *(_BYTE *)a5, 0); if ( v5 || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 89, *(_BYTE *)(a5 + 1), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 90, *(_BYTE *)(a5 + 2), 0), v5) || (LOWORD(v5) = sub_4681E0(a1, rgbValue, a3, 91, (char *)(a5 + 12)), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 108, *(_DWORD *)(a5 + 7), 0), v5) || (LOWORD(v5) = sub_4600E0( a1, rgbValue, a3, 109, *(_DWORD *)(a5 + 3), (unsigned __int64)*(_DWORD *)(a5 + 3) >> 32), v5) ) return v5; HIDWORD(v21) = 0; LOBYTE(v21) = *(_BYTE *)(a5 + 11); v19 = 110; v17 = a3; v15 = rgbValue; goto LABEL_12; case 7: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -68, *(_BYTE *)a5, 0); if ( v5 || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -67, *(_BYTE *)(a5 + 1), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -66, *(_BYTE *)(a5 + 2), 0), v5) || (LOWORD(v5) = sub_4681E0(a1, rgbValue, a3, -65, (char *)(a5 + 12)), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -48, *(_DWORD *)(a5 + 7), 0), v5) || (LOWORD(v5) = sub_4600E0( a1, rgbValue, a3, -47, *(_DWORD *)(a5 + 3), (unsigned __int64)*(_DWORD *)(a5 + 3) >> 32), v5) ) return v5; HIDWORD(v21) = 0; LOBYTE(v21) = *(_BYTE *)(a5 + 11); v19 = -46; v17 = a3; v15 = rgbValue; goto LABEL_12; case 8: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 32, *(_BYTE *)a5, 0); if ( v5 || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 33, *(_BYTE *)(a5 + 1), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 34, *(_BYTE *)(a5 + 2), 0), v5) || (LOWORD(v5) = sub_4681E0(a1, rgbValue, a3, 35, (char *)(a5 + 12)), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 52, *(_DWORD *)(a5 + 7), 0), v5) || (LOWORD(v5) = sub_4600E0( a1, rgbValue, a3, 53, *(_DWORD *)(a5 + 3), (unsigned __int64)*(_DWORD *)(a5 + 3) >> 32), v5) ) return v5; v21 = *(_BYTE *)(a5 + 11); v19 = 54; goto LABEL_11; case 9: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -124, *(_DWORD *)(a5 + 7), 0); if ( v5 || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -123, *(_DWORD *)(a5 + 11), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -122, *(_DWORD *)(a5 + 19), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -121, *(_DWORD *)(a5 + 15), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -120, *(_BYTE *)a5 & 1, 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -119, *(_WORD *)(a5 + 1), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -118, *(_DWORD *)(a5 + 3), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -117, *(_DWORD *)(a5 + 23), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -116, *(_BYTE *)(a5 + 27), 0), v5) ) return v5; v21 = *(_QWORD *)(a5 + 28); v19 = -115; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0xA: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -23, *(_DWORD *)a5, 0); if ( v5 ) return v5; v21 = *(_DWORD *)(a5 + 4); v19 = -22; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0xD: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 76, *(_BYTE *)a5, 0); if ( v5 || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 86, *(_WORD *)(a5 + 1), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 87, *(_DWORD *)(a5 + 3), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 88, *(_DWORD *)(a5 + 7), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 96, *(_WORD *)(a5 + 11), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 97, *(_DWORD *)(a5 + 13), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 98, *(_DWORD *)(a5 + 17), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 106, *(_WORD *)(a5 + 21), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 107, *(_DWORD *)(a5 + 23), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 108, *(_DWORD *)(a5 + 27), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 116, *(_WORD *)(a5 + 31), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 117, *(_DWORD *)(a5 + 33), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 118, *(_DWORD *)(a5 + 37), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 126, *(_WORD *)(a5 + 41), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 127, *(_DWORD *)(a5 + 43), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -128, *(_DWORD *)(a5 + 47), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -120, *(_WORD *)(a5 + 51), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -119, *(_DWORD *)(a5 + 53), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -118, *(_DWORD *)(a5 + 57), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -110, *(_WORD *)(a5 + 61), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -109, *(_DWORD *)(a5 + 63), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -108, *(_DWORD *)(a5 + 67), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -100, *(_WORD *)(a5 + 71), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -99, *(_DWORD *)(a5 + 73), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -98, *(_DWORD *)(a5 + 77), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -90, *(_WORD *)(a5 + 81), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -89, *(_DWORD *)(a5 + 83), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -88, *(_DWORD *)(a5 + 87), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -80, *(_WORD *)(a5 + 91), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -79, *(_DWORD *)(a5 + 93), 0), v5) ) return v5; v21 = *(_DWORD *)(a5 + 97); v19 = -78; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0xF: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 120, *(_BYTE *)a5 & 0xF, 0); if ( v5 || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 121, *(_BYTE *)a5 >> 4, 0), v5) ) return v5; v12 = *(_BYTE *)a5 & 0xF; v26 = v12; if ( v12 < 1 ) goto LABEL_114; LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 122, *(_DWORD *)(a5 + 1), *(_DWORD *)(a5 + 5)); if ( v5 ) return v5; v12 = v26; LABEL_114: if ( v12 < 2 ) goto LABEL_117; LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 123, *(_DWORD *)(a5 + 9), *(_DWORD *)(a5 + 13)); if ( v5 ) return v5; v12 = v26; LABEL_117: if ( v12 < 3 ) goto LABEL_120; LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 124, *(_DWORD *)(a5 + 17), *(_DWORD *)(a5 + 21)); if ( v5 ) return v5; v12 = v26; LABEL_120: if ( v12 < 4 ) goto LABEL_123; LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 125, *(_DWORD *)(a5 + 25), *(_DWORD *)(a5 + 29)); if ( v5 ) return v5; v12 = v26; LABEL_123: if ( v12 < 5 ) goto LABEL_126; LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 126, *(_DWORD *)(a5 + 33), *(_DWORD *)(a5 + 37)); if ( v5 ) return v5; v12 = v26; LABEL_126: if ( v12 < 6 ) goto LABEL_129; LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 127, *(_DWORD *)(a5 + 41), *(_DWORD *)(a5 + 45)); if ( v5 ) return v5; v12 = v26; LABEL_129: if ( v12 < 7 ) goto LABEL_132; LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -128, *(_DWORD *)(a5 + 49), *(_DWORD *)(a5 + 53)); if ( v5 ) return v5; v12 = v26; LABEL_132: if ( v12 < 8 ) return v5; v21 = *(_QWORD *)(a5 + 57); v19 = -127; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x12: v21 = *(_DWORD *)a5; v19 = -36; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x17: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 64, *(_WORD *)a5, 0); if ( v5 || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 65, *(_DWORD *)(a5 + 2), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 66, *(_BYTE *)(a5 + 6), 0), v5) || (LOWORD(v5) = sub_4600E0( a1, rgbValue, a3, 67, *(_DWORD *)(a5 + 8), (unsigned __int64)*(_DWORD *)(a5 + 8) >> 32), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 68, *(_DWORD *)(a5 + 12), 0), v5) || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 69, *(_BYTE *)(a5 + 16), 0), v5) ) return v5; HIDWORD(v21) = 0; LOWORD(v21) = *(_WORD *)(a5 + 17); v19 = 70; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x1A: v21 = *(_DWORD *)a5; v19 = 8; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x25: v21 = *(_DWORD *)a5; v19 = 58; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x1B: v21 = *(_DWORD *)a5; v19 = 108; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x22: v21 = *(_BYTE *)a5; v19 = -48; goto LABEL_11; case 0x1D: LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, 52, *(_DWORD *)a5, *(_DWORD *)(a5 + 4)); if ( v5 ) return v5; v21 = *(_DWORD *)(a5 + 8); v19 = 53; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x1E: if ( *(_WORD *)(a5 + 4) == -1 || *(_DWORD *)a5 ) return v5; v13 = sub_46CE10(&stru_A42914, *(_WORD *)(a5 + 4)); *(_DWORD *)a5 = v13; if ( v13 ) { LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -104, v13, 0); if ( !v5 ) { LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -103, *(_WORD *)(a5 + 4), 0); if ( !v5 ) { LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -102, *(_BYTE *)(a5 + 6), 0); if ( !v5 ) { HIDWORD(v21) = 0; LOWORD(v21) = *(_WORD *)(a5 + 7); v19 = -101; v17 = a3; v15 = rgbValue; LABEL_12: LOWORD(v5) = sub_4600E0(a1, v15, v17, v19, v21, SHIDWORD(v21)); } } } } else { LOWORD(v5) = 10; } break; case 0x1F: if ( !*(_DWORD *)a5 || (LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -4, *(_DWORD *)a5, 0), v5) ) return v5; HIDWORD(v21) = 0; LOBYTE(v21) = *(_BYTE *)(a5 + 4); v19 = -2; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x21: HIDWORD(v21) = 0; LOBYTE(v21) = *(_BYTE *)a5; v19 = -60; v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x23: v21 = *(_WORD *)a5; v19 = 40; LABEL_11: v17 = a3; v15 = rgbValue; goto LABEL_12; case 0x24: if ( *(_DWORD *)a5 != -1 ) { LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, -116, *(_DWORD *)a5, 0); if ( !v5 ) { v32 = *(_DWORD *)a5; strncpy(&v33, (const char *)(a5 + 8), 0x10u); v34 = 0; LOWORD(v5) = (sub_465CD0(a1, &v32) != 0) - 1; } } break; default: return v5; } } else { sprintf(&v35, "ERROR - pidbi->data = NULL (nItemID=%d)", a4); sub_446350(1, "Msg", "%s", &v35); LOWORD(v5) = 1; } return v5; } // 4DE38C: using guessed type int __security_cookie; // 6EA3EC: using guessed type int dword_6EA3EC; // 6EACDC: using guessed type int dword_6EACDC; //----- (0046A1C0) -------------------------------------------------------- __int16 __stdcall sub_46A1C0(int a1, int rgbValue, int a3, unsigned __int16 a4, int a5) { signed int v5; // eax@1 char v7[4]; // [sp+8h] [bp-8h]@1 char v8; // [sp+Fh] [bp-1h]@1 *(_DWORD *)v7 = 65535; v8 = -1; v5 = sub_4684C0(a1, rgbValue, a3, a4, a5, (int)v7, (int)&v8); if ( !v5 ) LOWORD(v5) = sub_4600E0(a1, rgbValue, a3, v7[0], v8, 0); return v5; } //----- (0046A220) -------------------------------------------------------- int __stdcall sub_46A220(int a1, SQLPOINTER rgbValue, int a3, char a4, int a5, char a6, char a7) { int result; // eax@1 int v8; // eax@2 int v9; // eax@3 int v10; // [sp+Ch] [bp-10Ch]@2 int v11; // [sp+10h] [bp-108h]@3 char v12; // [sp+14h] [bp-104h]@4 unsigned int v13; // [sp+114h] [bp-4h]@1 int v14; // [sp+118h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; result = sub_460C50(a1, rgbValue, a4, a5, a6, a7); if ( !result ) { LOWORD(v8) = sub_468E40(a1, *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_WORD *)rgbValue + 8), a3); v10 = v8; if ( v8 ) { LOWORD(v9) = sub_45FE40(a1, *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1)); v11 = v9; if ( v9 ) { sprintf( &v12, "¾ÆÀÌÅÛ ±¸ÀÔ »", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_DWORD *)rgbValue + 4), *((_DWORD *)rgbValue + 2), v9); sub_446350(1, "Msg", "%s", &v12); } if ( !sub_457D20(a1, *((_DWORD *)rgbValue + 2), a4, a5) ) { sprintf( &v12, "¾ÆÀÌÅÛ ±¸ÀÔ »", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_DWORD *)rgbValue + 4), *((_DWORD *)rgbValue + 2), v11); sub_446350(1, "Msg", "%s", &v12); } } result = v10; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046A360) -------------------------------------------------------- __int16 __stdcall sub_46A360(int a1, SQLPOINTER rgbValue, int a3, char a4, int a5, int a6) { int v6; // eax@1 int v7; // eax@3 __int16 v9; // [sp+10h] [bp-108h]@2 char v10; // [sp+14h] [bp-104h]@4 unsigned int v11; // [sp+114h] [bp-4h]@1 int v12; // [sp+118h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v6 = sub_462A80(a1, rgbValue, a4, a5); if ( !v6 ) { LOWORD(v6) = sub_468E40(a1, *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_WORD *)rgbValue + 8), a3); v9 = v6; if ( v6 ) { *(_DWORD *)a6 = v6; LOWORD(v7) = sub_45FE40(a1, *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1)); if ( v7 ) { sprintf( &v10, "¾ÆÀÌÅÛ ±¸ÀÔ »", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_DWORD *)rgbValue + 4), *((_DWORD *)rgbValue + 2), v7); sub_446350(1, "Msg", "%s", &v10); } LOWORD(v6) = v9; } } return v6; } // 4DE38C: using guessed type int __security_cookie; //----- (0046A440) -------------------------------------------------------- __int16 __stdcall sub_46A440(int a1, SQLPOINTER rgbValue, int a3, int a4) { int v4; // eax@1 int v5; // eax@3 int v6; // eax@4 char *v8; // [sp-28h] [bp-240h]@2 __int16 v9; // [sp+10h] [bp-208h]@1 char v10; // [sp+14h] [bp-204h]@5 char v11; // [sp+114h] [bp-104h]@2 unsigned int v12; // [sp+214h] [bp-4h]@1 int v13; // [sp+218h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v4 = sub_45FB50(a1, rgbValue, a4); v9 = v4; if ( v4 ) { sprintf( &v11, "ERROR - CreateItem's p_Item_Create( Key=%I64d, id=%d, Owner=%d, Inven=%d,%d, Error=%d )", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_DWORD *)rgbValue + 4), *((_DWORD *)rgbValue + 2), *((_BYTE *)rgbValue + 12), *((_WORD *)rgbValue + 7), v4); v8 = &v11; goto LABEL_6; } LOWORD(v5) = sub_468E40(a1, *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_WORD *)rgbValue + 8), a3); v9 = v5; if ( v5 ) { sprintf( &v11, "ERROR - CreateItem's SetItemOptions( Key=%I64d, id=%d, Owner=%d, Inven=%d,%d, Error=%d )", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_DWORD *)rgbValue + 4), *((_DWORD *)rgbValue + 2), *((_BYTE *)rgbValue + 12), *((_WORD *)rgbValue + 7), v5); sub_446350(1, "Msg", "%s", &v11); LOWORD(v6) = sub_45FE40(a1, *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1)); if ( !v6 ) { LABEL_7: LOWORD(v5) = v9; return v5; } sprintf( &v10, "ERROR - CreateItem's p_Item_Delete(»", *(_DWORD *)rgbValue, *((_DWORD *)rgbValue + 1), *((_DWORD *)rgbValue + 4), *((_DWORD *)rgbValue + 2), *((_BYTE *)rgbValue + 12), *((_WORD *)rgbValue + 7), v6); v8 = &v10; LABEL_6: sub_446350(1, "Msg", "%s", v8); goto LABEL_7; } return v5; } // 4DE38C: using guessed type int __security_cookie; //----- (0046A5A0) -------------------------------------------------------- int __cdecl sub_46A5A0(int a1, int a2, unsigned int a3) { int v3; // ecx@1 int v4; // edx@1 unsigned int v5; // esi@1 signed int v6; // eax@5 v3 = a2; v4 = a1; v5 = a3; if ( a3 < 4 ) { LABEL_4: if ( !v5 ) return 0; } else { while ( *(_DWORD *)v4 == *(_DWORD *)v3 ) { v5 -= 4; v3 += 4; v4 += 4; if ( v5 < 4 ) goto LABEL_4; } } v6 = *(_BYTE *)v4 - *(_BYTE *)v3; if ( *(_BYTE *)v4 != *(_BYTE *)v3 ) return (v6 >> 31) | 1; if ( v5 <= 1 ) return 0; v6 = *(_BYTE *)(v4 + 1) - *(_BYTE *)(v3 + 1); if ( *(_BYTE *)(v4 + 1) != *(_BYTE *)(v3 + 1) ) return (v6 >> 31) | 1; if ( v5 <= 2 ) return 0; v6 = *(_BYTE *)(v4 + 2) - *(_BYTE *)(v3 + 2); if ( *(_BYTE *)(v4 + 2) != *(_BYTE *)(v3 + 2) ) return (v6 >> 31) | 1; if ( v5 > 3 ) { v6 = *(_BYTE *)(v4 + 3) - *(_BYTE *)(v3 + 3); return (v6 >> 31) | 1; } return 0; } //----- (0046A620) -------------------------------------------------------- signed int __thiscall sub_46A620(int this, int rgbValue, int a3) { int v3; // edi@1 int v4; // ebx@2 char v5; // al@4 char v6; // cl@4 char v7; // dl@4 char v8; // al@4 char *v9; // ebx@7 __int16 v10; // ax@8 int v11; // ST14_4@10 int v12; // ST14_4@14 int v13; // ST14_4@17 int v14; // ST14_4@22 int v15; // ST14_4@25 int v16; // eax@36 int v17; // edx@38 signed int result; // eax@38 char v19; // [sp+Ch] [bp-75Ch]@5 int v20; // [sp+10h] [bp-758h]@36 int v21; // [sp+14h] [bp-754h]@36 int TargetValue; // [sp+18h] [bp-750h]@5 int v23; // [sp+1Ch] [bp-74Ch]@6 unsigned __int8 v24; // [sp+20h] [bp-748h]@38 char v25; // [sp+21h] [bp-747h]@2 char v26; // [sp+22h] [bp-746h]@38 char v27; // [sp+23h] [bp-745h]@5 int v28; // [sp+24h] [bp-744h]@5 char v29; // [sp+2Ch] [bp-73Ch]@7 char v30; // [sp+4DCh] [bp-28Ch]@10 char v31; // [sp+544h] [bp-224h]@2 char v32; // [sp+546h] [bp-222h]@4 char v33; // [sp+548h] [bp-220h]@4 char v34; // [sp+54Ah] [bp-21Eh]@4 char v35; // [sp+54Ch] [bp-21Ch]@4 int v36; // [sp+554h] [bp-214h]@5 char v37; // [sp+558h] [bp-210h]@5 int v38; // [sp+55Ah] [bp-20Eh]@5 int v39; // [sp+55Eh] [bp-20Ah]@5 char v40; // [sp+564h] [bp-204h]@40 char v41; // [sp+664h] [bp-104h]@2 unsigned int v42; // [sp+764h] [bp-4h]@1 int v43; // [sp+768h] [bp+0h]@1 v42 = (unsigned int)&v43 ^ __security_cookie; v3 = this; if ( !sub_456DD0(this, rgbValue) || ((*(_DWORD *)a3 = rgbValue, sub_44E600(v3, &v41), v4 = 0, *(_DWORD *)(a3 + 20) = 0, *(_DWORD *)(a3 + 16) = 0, *(_DWORD *)(a3 + 12) = 0, *(_DWORD *)(a3 + 8) = 0, *(_DWORD *)(a3 + 4) = 0, strncpy((char *)(a3 + 4), &v41, 0x14u), sub_44E540(v3, (SQLPOINTER)(a3 + 24)), sub_44E510(v3, (SQLPOINTER)(a3 + 26)), sub_44E600(v3, &v41), *(_DWORD *)(a3 + 35) = 0, *(_DWORD *)(a3 + 31) = 0, *(_DWORD *)(a3 + 27) = 0, strncpy((char *)(a3 + 27), &v41, 0xCu), sub_44E510(v3, &v25), sub_44E6B0(v3, &v31), v25) ? (v5 = v32, v6 = v33, *(_BYTE *)(a3 + 39) = v31 + 48, v7 = v34, *(_BYTE *)(a3 + 40) = v5, v8 = v35, *(_BYTE *)(a3 + 41) = v6, *(_BYTE *)(a3 + 42) = v7, *(_BYTE *)(a3 + 43) = v8) : (*(_BYTE *)(a3 + 39) = 0), sub_44E510(v3, &v27), *(_BYTE *)(a3 + 44) ^= (v27 ^ *(_BYTE *)(a3 + 44)) & 3, sub_44E510(v3, &v27), *(_BYTE *)(a3 + 44) ^= (*(_BYTE *)(a3 + 44) ^ 4 * v27) & 0x7C, sub_44E510(v3, &v27), *(_BYTE *)(a3 + 44) = (v27 << 7) | *(_BYTE *)(a3 + 44) & 0x7F, sub_44E510(v3, &v27), *(_BYTE *)(a3 + 45) = v27, sub_44E510(v3, &v27), *(_BYTE *)(a3 + 46) = v27, sub_44E510(v3, &v27), *(_BYTE *)(a3 + 47) = v27, sub_44E4E0(v3, &TargetValue), *(_DWORD *)(a3 + 91) = TargetValue, sub_44E600(v3, &v41), *(_DWORD *)(a3 + 103) = 0, *(_DWORD *)(a3 + 99) = 0, *(_DWORD *)(a3 + 95) = 0, strncpy((char *)(a3 + 95), &v41, 0xCu), sub_44E570(v3, (SQLPOINTER)(a3 + 107)), sub_44E570(v3, (SQLPOINTER)(a3 + 111)), sub_44E570(v3, &v19), sub_44E6B0(v3, &v36), *(_DWORD *)(a3 + 115) = *(_DWORD *)(a3 + 115) & 0xC0000000 | v36 & 0xF | 16 * (BYTE2(v36) & 0xF | 16 * (v37 & 0x1F | 32 * (v38 & 0x1F | 32 * (BYTE2(v38) & 0x3F | ((v39 & 0x3F) << 6))))), !sub_4689D0(v3, rgbValue, (int)&v28)) ) return 0; memset((void *)(a3 + 48), 65535, 0x2Bu); *(_BYTE *)(a3 + 90) &= 0xF0u; *(_WORD *)(a3 + 88) = 0; *(_WORD *)(a3 + 119) = 0; *(_DWORD *)(a3 + 121) = 0; v23 = 0; if ( v28 > 0 ) { v9 = &v29; do { v10 = *((_WORD *)v9 + 6); switch ( *((_WORD *)v9 + 4) ) { case 0x1B: *(_WORD *)(a3 + 68) = v10; break; case 7: v11 = *((_DWORD *)v9 + 1); *(_WORD *)(a3 + 54) = v10; if ( sub_4669C0((void *)(v3 + 36), v3, *(_DWORD *)v9, v11, &v30) ) *(_BYTE *)(a3 + 89) ^= (v30 ^ *(_BYTE *)(a3 + 89)) & 0xF; break; case 8: *(_WORD *)(a3 + 66) = v10; break; case 9: *(_WORD *)(a3 + 78) = v10; break; case 0xA: v12 = *((_DWORD *)v9 + 1); *(_WORD *)(a3 + 56) = v10; if ( sub_4669C0((void *)(v3 + 36), v3, *(_DWORD *)v9, v12, &v30) ) *(_BYTE *)(a3 + 88) ^= (v30 ^ *(_BYTE *)(a3 + 88)) & 0xF; break; case 0xB: *(_WORD *)(a3 + 74) = v10; break; case 0xC: v13 = *((_DWORD *)v9 + 1); *(_WORD *)(a3 + 52) = v10; if ( sub_4669C0((void *)(v3 + 36), v3, *(_DWORD *)v9, v13, &v30) ) *(_BYTE *)(a3 + 88) = 16 * v30 | *(_BYTE *)(a3 + 88) & 0xF; break; case 0xD: *(_WORD *)(a3 + 76) = v10; break; case 0x11: *(_WORD *)(a3 + 80) = v10; break; case 0x12: *(_WORD *)(a3 + 82) = v10; break; case 0x13: v14 = *((_DWORD *)v9 + 1); *(_WORD *)(a3 + 58) = v10; if ( sub_4669C0((void *)(v3 + 36), v3, *(_DWORD *)v9, v14, &v30) ) *(_BYTE *)(a3 + 89) = 16 * v30 | *(_BYTE *)(a3 + 89) & 0xF; break; case 0x14: *(_WORD *)(a3 + 64) = v10; break; case 0x15: v15 = *((_DWORD *)v9 + 1); *(_WORD *)(a3 + 60) = v10; if ( sub_4669C0((void *)(v3 + 36), v3, *(_DWORD *)v9, v15, &v30) ) *(_BYTE *)(a3 + 90) ^= (v30 ^ *(_BYTE *)(a3 + 90)) & 0xF; break; case 0x16: *(_WORD *)(a3 + 62) = v10; break; case 0x18: *(_WORD *)(a3 + 50) = v10; break; case 0x1C: *(_WORD *)(a3 + 70) = v10; break; case 0x1A: *(_WORD *)(a3 + 72) = v10; break; case 0x19: *(_WORD *)(a3 + 84) = v10; break; case 1: *(_WORD *)(a3 + 48) = v10; break; case 0x1D: *(_WORD *)(a3 + 86) = v10; break; default: break; } v9 += 40; ++v23; } while ( v23 < v28 ); v4 = 0; } v20 = rgbValue; v21 = v4; LOBYTE(v16) = sub_45E360(v3, &v20); if ( v16 != 1 ) { sprintf(&v40, "CGameDB_Character::GetAvatarInfo - usp_Tutorial_getCharInfo, nCharNo=%d", rgbValue); sub_446350(1, "Msg", "%s", &v40); return 0; } if ( sub_44E4A0(v3) == 1 ) { sub_44E510(v3, &v24); sub_44E510(v3, &v26); v17 = v24; *(_BYTE *)(a3 + 129) = v26; *(_DWORD *)(a3 + 125) = v17; result = 1; } else { *(_DWORD *)(a3 + 125) = 3; *(_BYTE *)(a3 + 129) = 0; result = 1; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046AC00) -------------------------------------------------------- signed int __thiscall sub_46AC00(int pcbValue, int TargetValue, int a3) { int v3; // edi@1 signed int result; // eax@2 int v5; // esi@3 v3 = pcbValue; if ( sub_4570F0(pcbValue, TargetValue) ) { sub_44E510(v3, (char *)&TargetValue + 3); v5 = a3; *(_BYTE *)v5 ^= (BYTE3(TargetValue) ^ *(_BYTE *)a3) & 3; sub_44E510(v3, (char *)&TargetValue + 3); *(_BYTE *)v5 ^= (*(_BYTE *)v5 ^ 4 * BYTE3(TargetValue)) & 0x7C; sub_44E510(v3, (char *)&TargetValue + 3); *(_BYTE *)v5 = (BYTE3(TargetValue) << 7) | *(_BYTE *)v5 & 0x7F; sub_44E510(v3, (char *)&TargetValue + 3); *(_BYTE *)(v5 + 1) = BYTE3(TargetValue); sub_44E510(v3, (char *)&TargetValue + 3); *(_BYTE *)(v5 + 2) = BYTE3(TargetValue); sub_44E510(v3, (char *)&TargetValue + 3); *(_BYTE *)(v5 + 3) = BYTE3(TargetValue); result = 1; } else { result = 0; } return result; } //----- (0046ACB0) -------------------------------------------------------- bool __thiscall sub_46ACB0(void *this, char rgbValue, int a3) { unsigned __int8 v3; // al@1 int v4; // esi@1 char v5; // cl@1 char v6; // al@1 char v7; // cl@1 char v8; // dl@1 int v11; // [sp+4h] [bp-8h]@1 char v12; // [sp+8h] [bp-4h]@1 char v13; // [sp+9h] [bp-3h]@1 v3 = *(_BYTE *)a3; v4 = (int)this; LOBYTE(v11) = *(_BYTE *)a3 & 3; v5 = (v3 >> 2) & 0x1F; BYTE2(v11) = v3 >> 7; v6 = *(_BYTE *)(a3 + 1); BYTE1(v11) = v5; v7 = *(_BYTE *)(a3 + 2); v8 = *(_BYTE *)(a3 + 3); BYTE3(v11) = v6; v12 = v7; v13 = v8; return sub_457160(v4, rgbValue, &v11); } //----- (0046AD10) -------------------------------------------------------- signed int __thiscall sub_46AD10(int this, int rgbValue, int a3) { int v3; // edi@1 int v4; // esi@1 signed int result; // eax@2 int v6; // ebx@3 int v7; // edi@4 char v8; // al@5 int v9; // ecx@5 __int16 v10; // ax@5 int v11; // edx@5 __int16 v12; // ax@5 __int16 v13; // ax@5 int v14; // ecx@5 __int16 v15; // [sp+10h] [bp-2Ch]@5 char v16; // [sp+12h] [bp-2Ah]@5 int v17; // [sp+14h] [bp-28h]@5 int v18; // [sp+18h] [bp-24h]@5 __int16 v19; // [sp+1Ch] [bp-20h]@5 char TargetValue; // [sp+1Eh] [bp-1Eh]@5 char v21; // [sp+1Fh] [bp-1Dh]@5 char v22; // [sp+20h] [bp-1Ch]@5 unsigned __int8 v23; // [sp+21h] [bp-1Bh]@5 __int16 v24; // [sp+22h] [bp-1Ah]@5 __int16 v25; // [sp+24h] [bp-18h]@5 __int16 v26; // [sp+26h] [bp-16h]@5 __int16 v27; // [sp+28h] [bp-14h]@5 __int16 v28; // [sp+2Ah] [bp-12h]@5 __int16 v29; // [sp+2Ch] [bp-10h]@5 __int16 v30; // [sp+2Eh] [bp-Eh]@5 __int16 v31; // [sp+30h] [bp-Ch]@5 char v32; // [sp+32h] [bp-Ah]@5 unsigned __int16 v33; // [sp+34h] [bp-8h]@5 unsigned int v34; // [sp+38h] [bp-4h]@1 int v35; // [sp+3Ch] [bp+0h]@1 v34 = (unsigned int)&v35 ^ __security_cookie; v3 = a3; v4 = this; if ( sub_457C20(this, rgbValue) ) { v6 = 0; if ( sub_44E4A0(v4) ) { v7 = a3 + 8; do { sub_44E540(v4, &v15); sub_44E540(v4, &v16); sub_44E570(v4, &v17); sub_44E570(v4, &v18); sub_44E540(v4, &v19); sub_44E510(v4, &TargetValue); sub_44E510(v4, &v21); sub_44E510(v4, &v22); sub_44E510(v4, &v23); sub_44E540(v4, &v24); sub_44E540(v4, &v25); sub_44E540(v4, &v26); sub_44E540(v4, &v27); sub_44E540(v4, &v28); sub_44E540(v4, &v29); sub_44E540(v4, &v30); sub_44E540(v4, &v31); sub_44E540(v4, &v32); sub_44E540(v4, &v33); v8 = v16; v9 = v17; *(_WORD *)(v7 - 2) = v15; *(_BYTE *)v7 = v8; v10 = v19; v11 = v18; *(_DWORD *)(v7 + 1) = v9; LOBYTE(v9) = v22; *(_WORD *)(v7 + 9) = v10; LOBYTE(v10) = v21; *(_DWORD *)(v7 + 5) = v11; LOBYTE(v10) = v10 & 0xF; ++v6; v7 += 36; LOWORD(v11) = TargetValue & 0xF | 16 * ((v23 << 8) | (v10 | 16 * (v9 & 0xF)) & 0xFF); v12 = v26; *(_WORD *)(v7 - 18) = v24; LOWORD(v9) = v27; *(_WORD *)(v7 - 25) = v11; LOWORD(v11) = v25; *(_WORD *)(v7 - 12) = v9; LOWORD(v9) = v30; *(_WORD *)(v7 - 16) = v11; LOWORD(v11) = v28; *(_WORD *)(v7 - 14) = v12; v13 = v29; *(_WORD *)(v7 - 6) = v9; v14 = v33; *(_WORD *)(v7 - 10) = v11; LOWORD(v11) = v31; *(_WORD *)(v7 - 8) = v13; LOBYTE(v13) = v32; *(_DWORD *)(v7 - 22) = v14; *(_WORD *)(v7 - 4) = v11; *(_BYTE *)(v7 - 23) = v13; } while ( sub_44E4A0(v4) ); v3 = a3; } sub_44E4D0(v4); *(_WORD *)(v3 + 4) = v6; *(_DWORD *)v3 = rgbValue; result = 1; } else { result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046AF30) -------------------------------------------------------- char __thiscall sub_46AF30(int this, char rgbValue, int a3, int a4, int a5, int a6) { int v6; // edi@1 int v7; // eax@1 signed int v8; // ebx@2 int v9; // esi@3 __int16 v10; // ax@4 int v11; // edx@8 char v12; // cl@8 int v13; // eax@8 char v14; // cl@8 signed int v16; // [sp+14h] [bp-28h]@2 int v17; // [sp+1Ch] [bp-20h]@4 int TargetValue; // [sp+20h] [bp-1Ch]@4 int v19; // [sp+28h] [bp-14h]@4 int v20; // [sp+30h] [bp-Ch]@4 char v21; // [sp+34h] [bp-8h]@4 char v22; // [sp+35h] [bp-7h]@4 char v23; // [sp+36h] [bp-6h]@4 char v24; // [sp+37h] [bp-5h]@4 unsigned int v25; // [sp+38h] [bp-4h]@1 int v26; // [sp+3Ch] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v6 = this; LOBYTE(v7) = sub_451830(this, rgbValue); if ( v7 ) { v8 = 0; v16 = 0; if ( sub_44E4A0(v6) ) { v9 = a4 + 12; do { sub_44E540(v6, &v17); sub_44E510(v6, (char *)&v17 + 2); sub_44E4E0(v6, &TargetValue); sub_44E5D0(v6, &v19); sub_44E4E0(v6, &v20); sub_44E510(v6, &v21); sub_44E510(v6, &v22); sub_44E510(v6, &v23); sub_44E510(v6, &v24); v10 = v17; if ( (unsigned __int16)v17 < 0x7530u ) { if ( v16 >= 3000 ) { sub_446350(1, "Msg", "%s", &unk_4B7DC0); LOBYTE(v7) = 0; return v7; } v11 = TargetValue; ++v16; *(_DWORD *)(v9 - 12) = v19; v12 = v22; *(_DWORD *)v9 = v11; LOBYTE(v11) = v21; *(_WORD *)(v9 - 8) = v10; v13 = v20; *(_BYTE *)(v9 - 2) = v11 & 0xF | 16 * v12; v14 = v23; *(_DWORD *)(v9 - 6) = v13; *(_BYTE *)(v9 - 1) = v14 & 0xF | 16 * v24; v9 += 16; } else { if ( v8 >= 1000 ) { sub_446350(1, "Msg", "%s", &unk_4B7E40); LOBYTE(v7) = 0; return v7; } *(_WORD *)(a6 + 2 * v8++) = v17 - 30000; } } while ( sub_44E4A0(v6) ); } sub_44E4D0(v6); *(_WORD *)a3 = v16; *(_WORD *)a5 = v8; LOBYTE(v7) = 1; } return v7; } // 4DE38C: using guessed type int __security_cookie; //----- (0046B110) -------------------------------------------------------- int __cdecl sub_46B110(int a1, int a2) { int result; // eax@3 if ( a1 && a2 ) result = *(_WORD *)a1 - *(_WORD *)a2; else result = 0; return result; } //----- (0046B130) -------------------------------------------------------- signed int __thiscall sub_46B130(int this, int rgbValue, int a3) { int v3; // esi@1 int v4; // ebx@1 int v5; // eax@1 signed int result; // eax@2 int v7; // edi@4 int v8; // eax@6 __int16 v9; // dx@6 int v10; // eax@8 unsigned int v11; // edi@11 int v12; // eax@13 int v13; // eax@15 unsigned int v14; // edi@18 int v15; // eax@20 __int16 v16; // dx@20 char v17; // bl@22 __int16 TargetValue; // [sp+Ch] [bp-410h]@6 size_t v19; // [sp+10h] [bp-40Ch]@1 int i; // [sp+14h] [bp-408h]@4 char v21; // [sp+18h] [bp-404h]@6 char v22; // [sp+34h] [bp-3E8h]@6 unsigned int v23; // [sp+418h] [bp-4h]@1 int v24; // [sp+41Ch] [bp+0h]@1 v23 = (unsigned int)&v24 ^ __security_cookie; v3 = a3; v4 = this; v19 = 0; LOBYTE(v5) = sub_451B50(this, rgbValue, 6); if ( v5 ) { if ( sub_44E4A0(v4) ) { v7 = a3 + 9; for ( i = a3 + 9; ; v7 = i ) { memset(&v21, 0, 0x400u); sub_44E4E0(v4, &TargetValue); sub_44E510(v4, (SQLPOINTER)(v7 - 1)); sub_44E650(v4, &v21); v8 = i; v9 = TargetValue; ++v19; memcpy((void *)v7, &v21, 0x1Cu); *(_WORD *)(v8 - 3) = v9; *(_BYTE *)(v7 + 28) = v22; i = v8 + 32; if ( !sub_44E4A0(v4) ) break; } v3 = a3; } sub_44E4D0(v4); LOBYTE(v10) = sub_451B50(v4, rgbValue, 7); if ( v10 ) { if ( sub_44E4A0(v4) ) { v11 = 32 * v19 + v3 + 9; for ( i = 32 * v19 + v3 + 9; ; v11 = i ) { memset(&v21, 0, 0x400u); sub_44E4E0(v4, &TargetValue); sub_44E510(v4, (SQLPOINTER)(v11 - 1)); sub_44E650(v4, &v21); v12 = i; ++v19; memcpy((void *)v11, &v21, 0x1Cu); *(_WORD *)(v12 - 3) = TargetValue; *(_BYTE *)(v11 + 28) = v22; i = v12 + 32; if ( !sub_44E4A0(v4) ) break; } v3 = a3; } sub_44E4D0(v4); LOBYTE(v13) = sub_451B50(v4, rgbValue, 8); if ( v13 ) { if ( sub_44E4A0(v4) ) { v14 = 32 * v19 + v3 + 9; for ( i = 32 * v19 + v3 + 9; ; v14 = i ) { memset(&v21, 0, 0x400u); sub_44E4E0(v4, &TargetValue); sub_44E510(v4, (SQLPOINTER)(v14 - 1)); sub_44E650(v4, &v21); v15 = i; v16 = TargetValue; ++v19; memcpy((void *)v14, &v21, 0x1Cu); *(_WORD *)(v15 - 3) = v16; *(_BYTE *)(v14 + 28) = v22; i = v15 + 32; if ( !sub_44E4A0(v4) ) break; } v3 = a3; } sub_44E4D0(v4); v17 = v19; qsort((void *)(v3 + 6), v19, 0x20u, (int (__cdecl *)(const void *, const void *))sub_46B110); *(_DWORD *)v3 = rgbValue; *(_BYTE *)(v3 + 5) = v17; *(_BYTE *)(v3 + 4) = 1; result = 1; } else { sub_446350(1, "Msg", "%s", "PQS_REWARD ·Îµå ½ÇÆÐ"); result = 0; } } else { sub_446350(1, "Msg", "%s", "PQS_FAILED ·Îµå ½ÇÆÐ"); result = 0; } } else { sub_446350(1, "Msg", "%s", "PQS_ING ·Îµå ½ÇÆÐ"); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046B460) -------------------------------------------------------- bool __thiscall sub_46B460(int this, char rgbValue) { int v2; // eax@1 LOBYTE(v2) = sub_451B50(this, rgbValue, 2); return v2 != 0; } //----- (0046B480) -------------------------------------------------------- char __thiscall sub_46B480(int this, int rgbValue, int a3) { int v3; // esi@1 int v4; // eax@1 int v5; // ebx@2 int v6; // edi@3 __int16 TargetValue; // [sp+4h] [bp-4h]@4 v3 = this; LOBYTE(v4) = sub_451B50(this, rgbValue, 20); if ( v4 ) { v5 = 0; if ( sub_44E4A0(v3) ) { v6 = a3 + 6; do { sub_44E4E0(v3, &TargetValue); *(_WORD *)v6 = TargetValue; ++v5; v6 += 2; } while ( sub_44E4A0(v3) ); } sub_44E4D0(v3); *(_WORD *)(a3 + 4) = v5; *(_DWORD *)a3 = rgbValue; LOBYTE(v4) = 1; } return v4; } //----- (0046B500) -------------------------------------------------------- signed int __thiscall sub_46B500(int this, int rgbValue, int a3) { int v3; // esi@1 int v4; // ebx@1 int v5; // eax@1 signed int result; // eax@2 int v7; // edi@4 int v8; // eax@6 __int16 TargetValue; // [sp+Ch] [bp-410h]@6 int i; // [sp+10h] [bp-40Ch]@4 int v11; // [sp+14h] [bp-408h]@3 char v12; // [sp+18h] [bp-404h]@6 unsigned int v13; // [sp+418h] [bp-4h]@1 int v14; // [sp+41Ch] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = a3; v4 = this; LOBYTE(v5) = sub_451B50(this, rgbValue, 4); if ( v5 ) { v11 = 0; if ( sub_44E4A0(v4) ) { v7 = a3 + 9; for ( i = a3 + 9; ; v7 = i ) { memset(&v12, 0, 0x400u); sub_44E4E0(v4, &TargetValue); sub_44E510(v4, (SQLPOINTER)(v7 - 1)); sub_44E650(v4, &v12); v8 = i; ++v11; *(_WORD *)(i - 3) = TargetValue; memcpy((void *)v7, &v12, 0x20u); i = v8 + 32; if ( !sub_44E4A0(v4) ) break; } v3 = a3; } sub_44E4D0(v4); *(_WORD *)(v3 + 4) = v11; *(_DWORD *)v3 = rgbValue; result = 1; } else { sub_446350(1, "Msg", "%s", "PQS_REPEAT ·Îµå ½ÇÆÐ"); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046B640) -------------------------------------------------------- signed int __thiscall sub_46B640(int this, char rgbValue, int a3) { int v3; // edi@1 int v4; // eax@1 int v5; // esi@1 int v6; // eax@1 int v7; // ebx@3 int v8; // esi@4 signed int result; // eax@7 int v10; // [sp+Ch] [bp-34h]@1 int v11; // [sp+10h] [bp-30h]@1 char TargetValue; // [sp+14h] [bp-2Ch]@5 unsigned int v13; // [sp+3Ch] [bp-4h]@1 int v14; // [sp+40h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = this; v11 = a3; LOBYTE(v4) = sub_451ED0(this, rgbValue, &v10); v5 = v4; LOBYTE(v6) = sub_451E70(v3, rgbValue); if ( v5 && v6 ) { v7 = 0; if ( sub_44E4A0(v3) ) { v8 = v11 + 18; do { sub_44E570(v3, (SQLPOINTER)(v8 - 16)); sub_44E510(v3, (SQLPOINTER)(v8 + 8)); sub_44E600(v3, &TargetValue); *(_DWORD *)(v8 + 4) = 0; *(_DWORD *)v8 = 0; *(_DWORD *)(v8 - 4) = 0; *(_DWORD *)(v8 - 8) = 0; *(_DWORD *)(v8 - 12) = 0; strncpy((char *)(v8 - 12), &TargetValue, 0x14u); ++v7; v8 += 25; } while ( v7 < v10 && sub_44E4A0(v3) ); } sub_44E4D0(v3); *(_WORD *)v11 = v7; result = 1; } else { result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046B730) -------------------------------------------------------- bool __thiscall sub_46B730(int this, char rgbValue, void *a3) { return sub_457280(this, rgbValue, a3); } //----- (0046B750) -------------------------------------------------------- bool __thiscall sub_46B750(int this, char rgbValue, void *a3) { return sub_457330(this, rgbValue, a3); } //----- (0046B770) -------------------------------------------------------- bool __thiscall sub_46B770(int this, char rgbValue, void *a3) { return sub_4573E0(this, rgbValue, a3); } //----- (0046B790) -------------------------------------------------------- bool __thiscall sub_46B790(int this, char rgbValue, void *a3) { return sub_457490(this, rgbValue, a3); } //----- (0046B7B0) -------------------------------------------------------- bool __thiscall sub_46B7B0(int this, char rgbValue, void *a3) { return sub_457540(this, rgbValue, a3); } //----- (0046B7D0) -------------------------------------------------------- bool __thiscall sub_46B7D0(int this, char rgbValue, void *a3) { return sub_4575F0(this, rgbValue, a3); } //----- (0046B7F0) -------------------------------------------------------- bool __thiscall sub_46B7F0(int this, char rgbValue, void *a3) { return sub_4576A0(this, rgbValue, a3); } //----- (0046B810) -------------------------------------------------------- bool __thiscall sub_46B810(SQLINTEGER cbValueMax, char rgbValue, void *a3) { return sub_457750(cbValueMax, rgbValue, a3); } //----- (0046B830) -------------------------------------------------------- bool __thiscall sub_46B830(SQLINTEGER cbValueMax, char rgbValue, void *a3) { return sub_4577F0(cbValueMax, rgbValue, a3); } //----- (0046B850) -------------------------------------------------------- bool __thiscall sub_46B850(SQLINTEGER cbValueMax, char rgbValue, void *a3) { return sub_457890(cbValueMax, rgbValue, a3); } //----- (0046B870) -------------------------------------------------------- bool __thiscall sub_46B870(SQLINTEGER cbValueMax, char rgbValue, void *a3) { return sub_457930(cbValueMax, rgbValue, a3); } //----- (0046B890) -------------------------------------------------------- bool __thiscall sub_46B890(SQLINTEGER cbValueMax, char rgbValue, void *a3) { return sub_4579D0(cbValueMax, rgbValue, a3); } //----- (0046B8B0) -------------------------------------------------------- bool __thiscall sub_46B8B0(SQLINTEGER cbValueMax, char rgbValue, void *a3) { return sub_457A70(cbValueMax, rgbValue, a3); } //----- (0046B8D0) -------------------------------------------------------- bool __thiscall sub_46B8D0(SQLINTEGER cbValueMax, char rgbValue, void *a3) { return sub_457B10(cbValueMax, rgbValue, a3); } //----- (0046B8F0) -------------------------------------------------------- signed int __thiscall sub_46B8F0(int this, unsigned int TargetValue, int a3) { int v3; // ebx@1 signed int result; // eax@2 int v5; // esi@3 void *v6; // ST00_4@3 int v7; // edi@4 unsigned __int8 v8; // al@6 int v9; // eax@16 int v10; // [sp+4h] [bp-Ch]@5 int v11; // [sp+8h] [bp-8h]@16 unsigned __int8 v12; // [sp+Fh] [bp-1h]@5 v3 = this; if ( sub_458100(this, TargetValue) ) { v5 = a3; v6 = (void *)(a3 + 5); *(_WORD *)a3 = 0; *(_BYTE *)(v5 + 2) = 0; *(_WORD *)(v5 + 3) = 0; memset(v6, 0, 0x400u); a3 = 0; if ( sub_44E4A0(v3) ) { v7 = v5 + 1032; do { sub_44E510(v3, (char *)&TargetValue + 3); sub_44E510(v3, &v12); sub_44E5D0(v3, &v10); if ( BYTE3(TargetValue) < 0x80u ) { v8 = v12; if ( v12 < 4u || v12 == -1 ) { if ( BYTE3(TargetValue) ) { if ( v12 == -1 ) { v9 = BYTE3(TargetValue); *(_DWORD *)(v5 + 8 * BYTE3(TargetValue) + 5) = v10; *(_DWORD *)(v5 + 8 * v9 + 9) = v11; } else { ++a3; *(_BYTE *)(v7 - 1) = BYTE3(TargetValue); *(_BYTE *)v7 = v8 & 0x3F | ((_BYTE)v10 << 6); v7 += 2; } } else { if ( v12 ) { if ( v12 == 1 ) { *(_BYTE *)(v5 + 2) = v10; } else { if ( v12 == 2 ) *(_WORD *)(v5 + 3) = v10; } } else { *(_BYTE *)(v5 + 1) = v10; } } } } } while ( sub_44E4A0(v3) ); } sub_44E4D0(v3); *(_WORD *)(v5 + 1029) = a3; result = 1; } else { result = 0; } return result; } //----- (0046BA10) -------------------------------------------------------- bool __thiscall sub_46BA10(void *this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // esi@2 unsigned __int8 v6; // cl@3 int v7; // eax@3 int v9; // [sp+4h] [bp-124h]@2 signed int v10; // [sp+8h] [bp-120h]@1 int rgbValue; // [sp+Ch] [bp-11Ch]@3 unsigned __int8 v12; // [sp+10h] [bp-118h]@3 unsigned __int8 v13; // [sp+11h] [bp-117h]@3 __int64 v14; // [sp+14h] [bp-114h]@3 unsigned __int8 v15; // [sp+1Ch] [bp-10Ch]@4 char v16; // [sp+24h] [bp-104h]@4 unsigned int v17; // [sp+124h] [bp-4h]@1 int v18; // [sp+128h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v4 = (int)this; v10 = 0; if ( a3 > 0 ) { v5 = a4 + 1; v9 = a3; do { v6 = *(_BYTE *)(v5 - 1); rgbValue = a2; v7 = (unsigned __int8)(*(_BYTE *)v5 >> 6); v13 = *(_BYTE *)v5 & 0x3F; v14 = v7; v12 = v6; if ( !sub_458160(v4, &rgbValue) ) { v10 = 1; sprintf( &v16, "ERROR - SetCharTitles's CPFsCharacter::fc_NC_CT_DB_SET_CMD, nCharNo=%d, (%d,%d,%I64d), nRet=%d", rgbValue, v12, v13, v14, v15); sub_446350(1, "Msg", "%s", &v16); } v5 += 2; --v9; } while ( v9 ); } return v10 == 0; } // 4DE38C: using guessed type int __security_cookie; //----- (0046BB30) -------------------------------------------------------- bool __thiscall sub_46BB30(int this, int a2, __int16 a3) { int rgbValue; // [sp+0h] [bp-1Ch]@1 __int16 v5; // [sp+4h] [bp-18h]@1 __int64 v6; // [sp+8h] [bp-14h]@1 unsigned int v7; // [sp+18h] [bp-4h]@1 int v8; // [sp+1Ch] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; rgbValue = a2; v5 = a3 & 0x3FFF; v6 = (unsigned __int8)(HIBYTE(a3) >> 6); return sub_458160(this, &rgbValue) != 0; } // 4DE38C: using guessed type int __security_cookie; //----- (0046BB90) -------------------------------------------------------- bool __thiscall sub_46BB90(int this, int a2, char a3, int a4, int a5) { int rgbValue; // [sp+0h] [bp-1Ch]@1 char v7; // [sp+4h] [bp-18h]@1 char v8; // [sp+5h] [bp-17h]@1 int v9; // [sp+8h] [bp-14h]@1 int v10; // [sp+Ch] [bp-10h]@1 unsigned int v11; // [sp+18h] [bp-4h]@1 int v12; // [sp+1Ch] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; rgbValue = a2; v9 = a4; v7 = a3; v8 = -1; v10 = a5; return sub_458160(this, &rgbValue) != 0; } // 4DE38C: using guessed type int __security_cookie; //----- (0046BBF0) -------------------------------------------------------- bool __thiscall sub_46BBF0(int this, int a2, unsigned __int8 a3, unsigned __int8 a4, unsigned __int16 a5) { int v5; // esi@1 int v6; // ST14_4@1 int v7; // ST14_4@1 int rgbValue; // [sp+10h] [bp-1Ch]@1 __int16 v10; // [sp+14h] [bp-18h]@1 __int64 v11; // [sp+18h] [bp-14h]@1 unsigned int v12; // [sp+28h] [bp-4h]@1 int v13; // [sp+2Ch] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v11 = a3; v5 = this; rgbValue = a2; v10 = 0; v6 = sub_458160(this, &rgbValue) == 0; rgbValue = a2; v10 = 256; v11 = a4; v7 = sub_458160(v5, &rgbValue) == 0 | v6; rgbValue = a2; v10 = 512; v11 = a5; return (v7 | sub_458160(v5, &rgbValue) == 0) == 0; } // 4DE38C: using guessed type int __security_cookie; //----- (0046BCB0) -------------------------------------------------------- signed int __thiscall sub_46BCB0(int this, char rgbValue, int a3) { int v3; // esi@1 int v4; // edi@1 signed int result; // eax@2 int v6; // ebx@3 int v7; // edi@4 int v8; // eax@5 int v9; // ecx@5 __int16 v10; // dx@5 int v11; // [sp+10h] [bp-30h]@5 __int16 TargetValue; // [sp+14h] [bp-2Ch]@5 int v13; // [sp+18h] [bp-28h]@5 int v14; // [sp+1Ch] [bp-24h]@5 unsigned __int16 v15; // [sp+20h] [bp-20h]@5 int v16; // [sp+28h] [bp-18h]@5 char v17; // [sp+2Ch] [bp-14h]@5 int v18; // [sp+2Eh] [bp-12h]@5 unsigned int v19; // [sp+3Ch] [bp-4h]@1 int v20; // [sp+40h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v3 = this; v4 = a3; *(_WORD *)a3 = 0; if ( sub_459320(this, rgbValue) ) { v6 = 0; if ( sub_44E4A0(v3) ) { v7 = a3 + 6; do { sub_44E570(v3, &v11); sub_44E540(v3, &TargetValue); sub_44E6B0(v3, &v13); sub_44E6B0(v3, &v16); v8 = (unsigned __int8)(v13 + 48) | ((BYTE2(v13) & 0x1F | 32 * (v14 & 0x3F | (((v15 << 6) | BYTE2(v14) & 0x3F) << 6))) << 8); v9 = (unsigned __int8)(v16 + 48) | ((BYTE2(v16) & 0x1F | 32 * (v17 & 0x3F | (((HIWORD(v18) << 6) | v18 & 0x3F) << 6))) << 8); *(_DWORD *)(v7 - 4) = v11; v10 = TargetValue; *(_DWORD *)(v7 + 6) = v9; *(_WORD *)v7 = v10; *(_DWORD *)(v7 + 2) = v8; ++v6; v7 += 14; } while ( sub_44E4A0(v3) ); v4 = a3; } *(_WORD *)v4 = v6; sub_44E4D0(v3); result = 1; } else { result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046BE00) -------------------------------------------------------- signed int __thiscall sub_46BE00(int this, char *TargetValue) { char *v2; // edi@1 int v3; // esi@1 signed int result; // eax@2 void *v5; // ebx@4 void *v6; // edi@4 void *v7; // [sp+8h] [bp-10h]@4 void *v8; // [sp+Ch] [bp-Ch]@4 void *v9; // [sp+10h] [bp-8h]@4 void *v10; // [sp+14h] [bp-4h]@4 void *TargetValuea; // [sp+20h] [bp+8h]@4 v2 = TargetValue; v3 = this; if ( sub_4598D0(this, *(_DWORD *)TargetValue) ) { if ( sub_44E4A0(v3) ) { TargetValuea = TargetValue + 8; v10 = v2 + 9; v5 = v2 + 4; v9 = v2 + 12; v8 = v2 + 28; v7 = v2 + 44; v6 = v2 + 45; do { sub_44E570(v3, v5); sub_44E510(v3, TargetValuea); sub_44E510(v3, v10); sub_44E6B0(v3, v9); sub_44E6B0(v3, v8); sub_44E510(v3, v7); sub_44E510(v3, v6); } while ( sub_44E4A0(v3) ); } sub_44E4D0(v3); result = 1; } else { result = 0; } return result; } //----- (0046BEC0) -------------------------------------------------------- bool __thiscall sub_46BEC0(int this, SQLPOINTER rgbValue) { return sub_459930(this, rgbValue) != 0; } //----- (0046BEE0) -------------------------------------------------------- bool __thiscall sub_46BEE0(int this, char rgbValue, char a3) { return sub_459A50(this, rgbValue, a3) != 0; } //----- (0046BF10) -------------------------------------------------------- bool __thiscall sub_46BF10(int this, char rgbValue, char a3) { return sub_459AF0(this, rgbValue, a3) != 0; } //----- (0046BF40) -------------------------------------------------------- bool __thiscall sub_46BF40(int this, char rgbValue, char a3) { return sub_459C10(this, rgbValue, a3) != 0; } //----- (0046BF70) -------------------------------------------------------- bool __thiscall sub_46BF70(int this, char rgbValue, char a3) { return sub_459CB0(this, rgbValue, a3) != 0; } //----- (0046BFA0) -------------------------------------------------------- bool __thiscall sub_46BFA0(int this, char rgbValue, char a3, char a4) { return sub_459D50(this, rgbValue, a3, a4) != 0; } //----- (0046BFD0) -------------------------------------------------------- bool __thiscall sub_46BFD0(int this, char rgbValue, char a3, char a4, void *a5, void *a6) { return sub_459E00(this, rgbValue, a3, a4, a5, a6) != 0; } //----- (0046C000) -------------------------------------------------------- bool __thiscall sub_46C000(int this, char rgbValue, char a3) { return sub_459EF0(this, rgbValue, a3) != 0; } //----- (0046C030) -------------------------------------------------------- bool __thiscall sub_46C030(int this, char rgbValue) { return sub_459B90(this, rgbValue) != 0; } //----- (0046C050) -------------------------------------------------------- signed int __thiscall sub_46C050(int this, char rgbValue, int a3) { int v3; // esi@1 signed int result; // eax@2 int v5; // ecx@4 int v6; // eax@4 char TargetValue; // [sp+8h] [bp-14h]@4 char v8; // [sp+Ah] [bp-12h]@4 char v9; // [sp+Ch] [bp-10h]@4 char v10; // [sp+Eh] [bp-Eh]@4 unsigned __int8 v11; // [sp+10h] [bp-Ch]@4 unsigned int v12; // [sp+18h] [bp-4h]@1 int v13; // [sp+1Ch] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v3 = this; if ( sub_459F90(this, rgbValue) ) { for ( ; sub_44E4A0(v3); *(_DWORD *)(a3 + 8) = *(_BYTE *)(a3 + 8) | ((v8 & 0x1F | 32 * (v9 & 0x3F | (((v5 << 6) | v6) << 6))) << 8) ) { sub_44E510(v3, (SQLPOINTER)(a3 + 6)); sub_44E6B0(v3, &TargetValue); v5 = v11; v6 = v10 & 0x3F; *(_BYTE *)(a3 + 8) = TargetValue + 48; } result = 1; } else { result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046C120) -------------------------------------------------------- signed int __thiscall sub_46C120(int this, char rgbValue, int a3) { int v3; // esi@1 int v4; // edi@1 signed int result; // eax@2 int v6; // esi@4 int v7; // ebx@5 int v8; // [sp+10h] [bp-34h]@1 int v9; // [sp+14h] [bp-30h]@3 char TargetValue; // [sp+18h] [bp-2Ch]@5 unsigned int v11; // [sp+40h] [bp-4h]@1 int v12; // [sp+44h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v3 = a3; v4 = this; v8 = 0; *(_WORD *)a3 = 0; if ( (unsigned __int8)sub_45A240(this, rgbValue, &v8) ) { v9 = 0; if ( sub_44E4A0(v4) ) { v6 = a3 + 18; do { sub_44E570(v4, (SQLPOINTER)(v6 - 16)); sub_44E600(v4, &TargetValue); v7 = v6 + 8; sub_44E510(v4, (SQLPOINTER)(v6 + 8)); sub_44E510(v4, (SQLPOINTER)(v6 + 9)); if ( *(_BYTE *)(v6 + 9) == 1 ) sub_441490((unsigned __int8 *)&TargetValue, (const unsigned __int8 *)&TargetValue); *(_DWORD *)(v6 + 4) = 0; *(_DWORD *)v6 = 0; *(_DWORD *)(v6 - 4) = 0; *(_DWORD *)(v6 - 8) = 0; *(_DWORD *)(v6 - 12) = 0; strncpy((char *)(v6 - 12), &TargetValue, 0x14u); if ( *(_BYTE *)v7 ) *(_BYTE *)v7 = 1; ++v9; v6 += 26; } while ( sub_44E4A0(v4) ); v3 = a3; } *(_WORD *)v3 = v9; sub_44E4D0(v4); result = 1; } else { result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046C230) -------------------------------------------------------- signed int __thiscall sub_46C230(int this, char rgbValue, int a3) { int v3; // esi@1 signed int result; // eax@2 int v5; // [sp+Ch] [bp-3Ch]@1 __int16 TargetValue; // [sp+10h] [bp-38h]@4 unsigned __int16 v7; // [sp+12h] [bp-36h]@5 unsigned __int16 v8; // [sp+14h] [bp-34h]@5 unsigned __int16 v9; // [sp+16h] [bp-32h]@5 unsigned __int16 v10; // [sp+18h] [bp-30h]@5 unsigned __int16 v11; // [sp+1Ah] [bp-2Eh]@5 int v12; // [sp+20h] [bp-28h]@5 int v13; // [sp+24h] [bp-24h]@5 int v14; // [sp+28h] [bp-20h]@5 int v15; // [sp+2Ch] [bp-1Ch]@5 int v16; // [sp+30h] [bp-18h]@5 int v17; // [sp+34h] [bp-14h]@5 int v18; // [sp+38h] [bp-10h]@5 int v19; // [sp+3Ch] [bp-Ch]@5 int v20; // [sp+40h] [bp-8h]@5 unsigned int v21; // [sp+44h] [bp-4h]@1 int v22; // [sp+48h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v3 = this; v5 = 0; *(_BYTE *)(a3 + 8) = 0; *(_BYTE *)(a3 + 9) = 0; *(_DWORD *)(a3 + 4) = 0; if ( (unsigned __int8)sub_45A9C0(this, rgbValue, &v5) ) { while ( sub_44E4A0(v3) ) { sub_44E510(v3, (SQLPOINTER)(a3 + 9)); sub_44E510(v3, (SQLPOINTER)(a3 + 8)); sub_44E6B0(v3, &TargetValue); sub_44E570(v3, (SQLPOINTER)(a3 + 10)); } sub_44E4D0(v3); v18 = 0; v19 = 0; v20 = 0; v12 = v11; v13 = v10; v14 = v9; v15 = v8; v16 = v7 - 1; v17 = TargetValue - 1900; *(_DWORD *)(a3 + 4) = _LN52(&v12); *(_BYTE *)(a3 + 14) = 1; result = 1; } else { result = 0; } return result; } // 48D027: using guessed type _DWORD __cdecl $LN52(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (0046C350) -------------------------------------------------------- bool __thiscall sub_46C350(int this, SQLPOINTER rgbValue) { return (unsigned __int8)sub_45AB90(this, rgbValue) != 0; } //----- (0046C370) -------------------------------------------------------- signed int __thiscall sub_46C370(int this, int a2, int a3) { int v3; // edi@1 int v4; // eax@3 int v5; // ecx@3 int v6; // edx@3 char TargetValue; // [sp+Ch] [bp-144h]@3 int rgbValue; // [sp+10h] [bp-140h]@1 int v10; // [sp+14h] [bp-13Ch]@1 int v11; // [sp+18h] [bp-138h]@3 int v12; // [sp+1Ch] [bp-134h]@3 int v13; // [sp+20h] [bp-130h]@3 int v14; // [sp+24h] [bp-12Ch]@3 int v15; // [sp+28h] [bp-128h]@3 int v16; // [sp+2Ch] [bp-124h]@3 __int16 v17; // [sp+3Ch] [bp-114h]@3 unsigned __int16 v18; // [sp+3Eh] [bp-112h]@3 unsigned __int16 v19; // [sp+40h] [bp-110h]@3 unsigned __int16 v20; // [sp+42h] [bp-10Eh]@3 unsigned __int16 v21; // [sp+44h] [bp-10Ch]@3 unsigned __int16 v22; // [sp+46h] [bp-10Ah]@3 char v23; // [sp+4Ch] [bp-104h]@5 unsigned int v24; // [sp+14Ch] [bp-4h]@1 int v25; // [sp+150h] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v3 = this; rgbValue = a2; v10 = 0; *(_WORD *)a3 = 0; if ( !sub_45D110(this, &rgbValue) ) return 0; for ( ; sub_44E4A0(v3); ++*(_WORD *)a3 ) { sub_44E4E0(v3, &TargetValue); sub_44E540(v3, (SQLPOINTER)(a3 + 10 * *(_WORD *)a3 + 2)); sub_44E6B0(v3, &v17); v11 = v22; v12 = v21; v13 = v20; v14 = v19; v15 = v18 - 1; v16 = v17 - 1900; v4 = _LN34(&v11); v5 = 5 * *(_WORD *)a3; *(_DWORD *)(a3 + 10 * *(_WORD *)a3 + 4) = v4; *(_DWORD *)(a3 + 2 * v5 + 8) = v6; } sub_44E4D0(v3); if ( v10 ) { sprintf(&v23, "ERROR - ij¸¯ÀÇ Ä", a2, v10); sub_446350(1, "Msg", "%s", &v23); return 0; } return 1; } // 49145A: using guessed type _DWORD __cdecl $LN34(_DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (0046C4F0) -------------------------------------------------------- signed int __thiscall sub_46C4F0(int this, int a2, int a3) { int v3; // edi@1 const char *v5; // [sp-Ch] [bp-120h]@2 int v6; // [sp-8h] [bp-11Ch]@2 int v7; // [sp-4h] [bp-118h]@2 int rgbValue; // [sp+8h] [bp-10Ch]@1 int v9; // [sp+Ch] [bp-108h]@1 char v10; // [sp+10h] [bp-104h]@3 unsigned int v11; // [sp+110h] [bp-4h]@1 int v12; // [sp+114h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v3 = this; rgbValue = a2; v9 = 0; *(_BYTE *)a3 = 0; if ( !(unsigned __int8)sub_45D340(this, &rgbValue) ) { v7 = v9; v6 = rgbValue; v5 = "ERROR - CGameDB_Character::GetCharNewbieGuide - 1, nCharNo=%d, nRet = %d"; LABEL_3: sprintf(&v10, v5, v6, v7); sub_446350(1, "Msg", "%s", &v10); return 0; } if ( v9 != -1111 && v9 ) { v7 = v9; v6 = rgbValue; v5 = "ERROR - CGameDB_Character::GetCharNewbieGuide - 2, nCharNo=%d, nRet = %d"; goto LABEL_3; } for ( ; sub_44E4A0(v3); ++*(_BYTE *)a3 ) sub_44E510(v3, (SQLPOINTER)(*(_BYTE *)a3 + a3 + 1)); sub_44E4D0(v3); return 1; } // 4DE38C: using guessed type int __security_cookie; //----- (0046C5F0) -------------------------------------------------------- int __thiscall sub_46C5F0(int this, SQLPOINTER rgbValue) { int v2; // esi@1 int result; // eax@1 v2 = this; result = sub_464AC0(this, rgbValue); if ( result ) { if ( sub_44E4A0(v2) ) { sub_44E5A0(v2, (char *)rgbValue + 8); sub_44E4D0(v2); result = 1; } else { *((_DWORD *)rgbValue + 2) = 0; *((_DWORD *)rgbValue + 3) = 0; result = 1; } } return result; } //----- (0046C650) -------------------------------------------------------- signed int __thiscall sub_46C650(int this, SQLPOINTER rgbValue) { int v2; // esi@1 signed int result; // eax@2 char v4; // [sp+8h] [bp-104h]@2 unsigned int v5; // [sp+108h] [bp-4h]@1 int v6; // [sp+10Ch] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v2 = this; if ( sub_464C90(this, rgbValue) ) { if ( sub_44E4A0(v2) ) { sub_44E570(v2, (char *)rgbValue + 20); sub_44E4D0(v2); } else { *((_DWORD *)rgbValue + 5) = 0; } result = 1; } else { sprintf( &v4, "ERROR - CGameDB_Character::GambleSystem_GetExchangedCoin - DB Error : nCharNo = %d ", *(_DWORD *)rgbValue); sub_446350(1, "Msg", "%s", &v4); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046C700) -------------------------------------------------------- int __thiscall sub_46C700(int this) { int v1; // esi@1 v1 = this; sub_44E3B0(this); sub_464260((void *)(v1 + 28)); sub_4661C0(v1 + 36, v1 + 20, v1 + 21, v1 + 33); *(_DWORD *)(v1 + 48) = v1 + 22; *(_DWORD *)(v1 + 52) = v1 + 23; *(_DWORD *)(v1 + 56) = v1 + 24; *(_DWORD *)(v1 + 60) = v1 + 25; *(_DWORD *)(v1 + 64) = v1 + 26; *(_DWORD *)(v1 + 68) = v1 + 27; *(_DWORD *)(v1 + 72) = v1 + 32; sub_46D370((void *)(v1 + 76), v1 + 33); return v1; } //----- (0046C7A0) -------------------------------------------------------- int __stdcall sub_46C7A0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0xFFFFFFF || (result = operator new(16 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_4B8A50; _CxxThrowException(&v2, &unk_4D145C); } } return result; } // 48DFE9: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 4B8A50: using guessed type int (__thiscall *off_4B8A50)(void *, char); //----- (0046C800) -------------------------------------------------------- int __cdecl sub_46C800(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 16 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 12); } v3 += 16; } return result; } //----- (0046C840) -------------------------------------------------------- int __thiscall sub_46C840(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@1 int v4; // ebx@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 int v7; // edi@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@4 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; result = a2; if ( a2 > 0xFFFFFFF ) sub_48B49E((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 4 < a2 ) { v4 = sub_46C7A0(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v9 = v4; v11 = 0; sub_46C800((int)v6, v5, v4); v7 = *(_DWORD *)(v2 + 4) - *(_DWORD *)v2; if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v4 + 16 * a2; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v4 + (v7 & 0xFFFFFFF0); *(_DWORD *)v2 = v4; } return result; } //----- (0046C8F8) -------------------------------------------------------- void __usercall sub_46C8F8(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0046C910) -------------------------------------------------------- signed int __thiscall sub_46C910(int this, int rgbValue, int a3, int a4) { int v4; // esi@1 signed int result; // eax@2 int v6; // eax@5 int v7; // eax@5 int v8; // eax@5 char *v9; // eax@5 char v10; // cl@6 void *v11; // eax@7 int v12; // ecx@11 int v13; // eax@11 char *v14; // eax@11 int v15; // edx@11 signed int v16; // eax@11 int v17; // esi@14 char v18; // [sp+Ch] [bp-120h]@5 char v19; // [sp+10h] [bp-11Ch]@5 char v20; // [sp+14h] [bp-118h]@5 int v21; // [sp+18h] [bp-114h]@5 int v22; // [sp+1Ch] [bp-110h]@5 int v23; // [sp+20h] [bp-10Ch]@5 int v24; // [sp+24h] [bp-108h]@5 int v25; // [sp+28h] [bp-104h]@5 int v26; // [sp+2Ch] [bp-100h]@5 int TargetValue; // [sp+30h] [bp-FCh]@3 int v28; // [sp+34h] [bp-F8h]@1 char v29; // [sp+3Ah] [bp-F2h]@5 char v30; // [sp+3Bh] [bp-F1h]@5 unsigned __int16 v31; // [sp+3Ch] [bp-F0h]@5 unsigned __int16 v32; // [sp+40h] [bp-ECh]@5 char v33; // [sp+47h] [bp-E5h]@5 char v34; // [sp+48h] [bp-E4h]@5 char v35; // [sp+58h] [bp-D4h]@5 char v36; // [sp+68h] [bp-C4h]@5 void *v37; // [sp+78h] [bp-B4h]@5 int v38; // [sp+88h] [bp-A4h]@5 unsigned int v39; // [sp+8Ch] [bp-A0h]@5 char v40[4]; // [sp+94h] [bp-98h]@11 int v41; // [sp+98h] [bp-94h]@11 int v42; // [sp+9Ch] [bp-90h]@11 char v43; // [sp+A0h] [bp-8Ch]@5 char v44; // [sp+F4h] [bp-38h]@5 char v45; // [sp+108h] [bp-24h]@5 int v46; // [sp+109h] [bp-23h]@5 int v47; // [sp+10Dh] [bp-1Fh]@5 int v48; // [sp+111h] [bp-1Bh]@5 int v49; // [sp+115h] [bp-17h]@5 char v50; // [sp+119h] [bp-13h]@5 unsigned int v51; // [sp+11Ch] [bp-10h]@1 int v52; // [sp+128h] [bp-4h]@7 int v53; // [sp+12Ch] [bp+0h]@1 v51 = (unsigned int)&v53 ^ __security_cookie; v4 = this; v28 = a4; if ( sub_456F60(this, rgbValue) ) { *(_DWORD *)a3 = rgbValue; sub_44E4E0(v4, &TargetValue); if ( v28 ) *(_DWORD *)v28 = TargetValue; sub_44E510(v4, (SQLPOINTER)(a3 + 24)); sub_44E600(v4, &v43); *(_DWORD *)(a3 + 20) = 0; *(_DWORD *)(a3 + 16) = 0; *(_DWORD *)(a3 + 12) = 0; *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 4) = 0; strncpy((char *)(a3 + 4), &v43, 0x14u); sub_44E510(v4, (SQLPOINTER)(a3 + 25)); sub_44E5A0(v4, &v23); v6 = v24; *(_DWORD *)(a3 + 26) = v23; *(_DWORD *)(a3 + 30) = v6; sub_44E540(v4, &v32); sub_44E540(v4, &v31); v7 = v32; *(_DWORD *)(a3 + 46) = v31; *(_DWORD *)(a3 + 42) = v7; *(_DWORD *)(a3 + 50) = 0; sub_44E570(v4, &v19); sub_44E540(v4, (SQLPOINTER)(a3 + 38)); sub_44E540(v4, (SQLPOINTER)(a3 + 40)); sub_44E540(v4, (SQLPOINTER)(a3 + 34)); sub_44E540(v4, (SQLPOINTER)(a3 + 36)); sub_44E5A0(v4, &v21); v8 = v22; *(_DWORD *)(a3 + 58) = v21; *(_DWORD *)(a3 + 62) = v8; sub_44E570(v4, (SQLPOINTER)(a3 + 54)); sub_44E570(v4, (SQLPOINTER)(a3 + 101)); sub_44E510(v4, (SQLPOINTER)(a3 + 100)); sub_44E600(v4, &v44); *(_DWORD *)(a3 + 74) = 0; *(_DWORD *)(a3 + 70) = 0; *(_DWORD *)(a3 + 66) = 0; strncpy((char *)(a3 + 66), &v44, 0xCu); sub_44E570(v4, &v25); *(_DWORD *)(a3 + 78) = v25; sub_44E570(v4, &v26); *(_DWORD *)(a3 + 82) = v26; sub_44E510(v4, &v33); *(_BYTE *)(a3 + 86) = v33; sub_44E540(v4, (SQLPOINTER)(a3 + 98)); sub_44E570(v4, (SQLPOINTER)(a3 + 94)); sub_44E510(v4, (SQLPOINTER)(a3 + 93)); sub_44E510(v4, (SQLPOINTER)(a3 + 87)); sub_44E510(v4, (SQLPOINTER)(a3 + 88)); sub_44E510(v4, (SQLPOINTER)(a3 + 89)); sub_44E510(v4, (SQLPOINTER)(a3 + 90)); sub_44E510(v4, (SQLPOINTER)(a3 + 91)); sub_44E510(v4, (SQLPOINTER)(a3 + 92)); sub_44E4E0(v4, &v20); sub_44E4E0(v4, &v18); sub_44E6B0(v4, &v36); sub_44E6B0(v4, &v35); sub_44E510(v4, &v30); sub_44E510(v4, &v29); sub_44E6B0(v4, &v34); v45 = 0; v46 = 0; v47 = 0; v48 = 0; v49 = 0; v50 = 0; sub_44E600(v4, &v45); v9 = &v45; v39 = 15; v38 = 0; LOBYTE(v37) = 0; do v10 = *v9++; while ( v10 ); sub_43DEA0((int)&v37, &v45, v9 - (char *)&v46); v11 = v37; v52 = 0; if ( v39 < 0x10 ) v11 = &v37; if ( sub_46A5A0((int)v11, (int)&byte_4B4667, 0) || v38 != 0 ) { v42 = 0; v41 = 0; *(_DWORD *)v40 = 0; strncpy(v40, &v45, 0xCu); v12 = v41; v13 = dword_4DC00C & (dword_4DC008 + 1); dword_4DC008 = v13; v14 = (char *)&unk_4D4008 + 256 * v13; *(_DWORD *)v14 = *(_DWORD *)v40; v15 = v42; *((_DWORD *)v14 + 1) = v12; *((_DWORD *)v14 + 2) = v15; v14[12] = 0; v16 = sub_44B780(&unk_6E9F5C, (unsigned __int8 *)v14); if ( v16 == -1 ) LOWORD(v16) = -1; v16 = (unsigned __int16)v16; if ( (unsigned __int16)v16 < dword_6E9F58 ) { v17 = *(_DWORD *)(dword_6E9F54 + 4 * v16); if ( v17 ) { *(_DWORD *)(a3 + 74) = 0; *(_DWORD *)(a3 + 70) = 0; *(_DWORD *)(a3 + 66) = 0; strncpy((char *)(a3 + 66), &v45, 0xCu); *(_DWORD *)(a3 + 78) = *(_DWORD *)(v17 + 50); *(_DWORD *)(a3 + 82) = *(_DWORD *)(v17 + 54); } } } if ( v39 >= 0x10 ) operator delete(v37); result = 1; } else { result = 0; } return result; } // 4DC008: using guessed type int dword_4DC008; // 4DC00C: using guessed type int dword_4DC00C; // 4DE38C: using guessed type int __security_cookie; // 6E9F54: using guessed type int dword_6E9F54; // 6E9F58: using guessed type int dword_6E9F58; //----- (0046CD50) -------------------------------------------------------- void *__thiscall sub_46CD50(void *lpCriticalSection) { void *v1; // esi@1 PRTL_CRITICAL_SECTION_DEBUG v2; // ecx@1 v1 = lpCriticalSection; *((_DWORD *)lpCriticalSection + 6) = 0; *((_DWORD *)lpCriticalSection + 7) = 0; *((_DWORD *)lpCriticalSection + 8) = 0; *((_DWORD *)lpCriticalSection + 11) = 0; v2 = (PRTL_CRITICAL_SECTION_DEBUG)*((_DWORD *)lpCriticalSection + 6); if ( v2 != *((PRTL_CRITICAL_SECTION_DEBUG *)v1 + 7) ) *((_DWORD *)v1 + 7) = v2; InitializeCriticalSection((LPCRITICAL_SECTION)v1); return v1; } // 46CD50: could not find valid save-restore pair for edi //----- (0046CE10) -------------------------------------------------------- int __thiscall sub_46CE10(LPCRITICAL_SECTION lpCriticalSection, int a2) { LPCRITICAL_SECTION v2; // ebx@1 int result; // eax@2 PRTL_CRITICAL_SECTION_DEBUG v4; // edx@3 int v5; // esi@3 int v6; // eax@3 unsigned int v7; // ecx@3 unsigned int v8; // eax@6 int v9; // edx@7 LONG v10; // ecx@8 char *v11; // edi@8 int v12; // eax@9 int v13; // eax@11 int v14; // ecx@11 unsigned __int8 v15; // cf@11 int v16; // esi@11 signed int v17; // edi@11 int v18; // esi@11 int v19; // eax@12 int v20; // ecx@12 unsigned int v21; // ecx@14 int v22; // eax@19 int v23; // edi@19 LONG v24; // ecx@21 int v25; // eax@22 int v26; // eax@24 int v27; // ecx@24 unsigned int v28; // ecx@26 int v29; // eax@31 int v30; // edx@32 int v31; // ecx@32 int v32; // edx@32 int v33; // ST2C_4@34 LPCRITICAL_SECTION v34; // [sp+Ch] [bp-130h]@1 int rgbValue; // [sp+10h] [bp-12Ch]@34 int v36; // [sp+18h] [bp-124h]@34 int v37; // [sp+1Ch] [bp-120h]@34 int v38; // [sp+20h] [bp-11Ch]@34 int v39; // [sp+28h] [bp-114h]@6 int v40; // [sp+2Ch] [bp-110h]@32 int v41; // [sp+30h] [bp-10Ch]@6 int v42; // [sp+34h] [bp-108h]@6 char v43; // [sp+38h] [bp-104h]@35 unsigned int v44; // [sp+138h] [bp-4h]@1 int v45; // [sp+13Ch] [bp+0h]@1 v44 = (unsigned int)&v45 ^ __security_cookie; v2 = lpCriticalSection; v34 = lpCriticalSection; if ( lpCriticalSection[1].SpinCount ) { EnterCriticalSection(lpCriticalSection); v4 = v2[1].DebugInfo; v5 = (int)&v2[1]; v6 = (v2[1].LockCount - (signed int)v4) >> 4; v7 = 0; if ( v6 ) { while ( *(_DWORD *)&v4->Type != a2 ) { ++v7; v4 = (PRTL_CRITICAL_SECTION_DEBUG)((char *)v4 + 16); if ( v7 >= v6 ) goto LABEL_6; } v13 = *(_DWORD *)v5; v14 = 2 * v7; v15 = __CFADD__(*(_DWORD *)(*(_DWORD *)v5 + 8 * v14 + 8), 1); ++*(_DWORD *)(v13 + 8 * v14 + 8); *(_DWORD *)(v13 + 8 * v14 + 12) += v15; v16 = *(_DWORD *)v5; v17 = *(_DWORD *)(v16 + 8 * v14 + 8); v18 = *(_DWORD *)(v16 + 8 * v14 + 12); } else { LABEL_6: v8 = v2[1].LockCount; v39 = a2; v41 = 1; v42 = 0; if ( (unsigned int)&v39 >= v8 || (v9 = *(_DWORD *)v5, *(_DWORD *)v5 > (unsigned int)&v39) ) { v24 = v2[1].RecursionCount; if ( v8 == v24 ) { v25 = (signed int)(v8 - *(_DWORD *)v5) >> 4; if ( (unsigned int)v25 > 0xFFFFFFE ) sub_48B49E((int)"vector too long"); v26 = v25 + 1; v27 = (v24 - *(_DWORD *)v5) >> 4; if ( v26 > (unsigned int)v27 ) { if ( 268435455 - ((unsigned int)v27 >> 1) >= v27 ) v28 = ((unsigned int)v27 >> 1) + v27; else v28 = 0; if ( v28 < v26 ) v28 = v26; sub_46C840(v5, v28); v2 = v34; } } v29 = *(_DWORD *)(v5 + 4); if ( v29 ) { v30 = v40; v31 = v41; *(_DWORD *)v29 = a2; *(_DWORD *)(v29 + 4) = v30; v32 = v42; *(_DWORD *)(v29 + 8) = v31; *(_DWORD *)(v29 + 12) = v32; } } else { v10 = v2[1].RecursionCount; v11 = (char *)&v39 - v9; if ( v8 == v10 ) { v12 = (signed int)(v8 - v9) >> 4; if ( (unsigned int)v12 > 0xFFFFFFE ) sub_48B49E((int)"vector too long"); v19 = v12 + 1; v20 = (v10 - v9) >> 4; if ( v19 > (unsigned int)v20 ) { if ( 268435455 - ((unsigned int)v20 >> 1) >= v20 ) v21 = ((unsigned int)v20 >> 1) + v20; else v21 = 0; if ( v21 < v19 ) v21 = v19; sub_46C840(v5, v21); v2 = v34; } } v22 = *(_DWORD *)(v5 + 4); v23 = *(_DWORD *)v5 + ((unsigned int)v11 & 0xFFFFFFF0); if ( v22 ) { *(_DWORD *)v22 = *(_DWORD *)v23; *(_DWORD *)(v22 + 4) = *(_DWORD *)(v23 + 4); *(_DWORD *)(v22 + 8) = *(_DWORD *)(v23 + 8); *(_DWORD *)(v22 + 12) = *(_DWORD *)(v23 + 12); } } *(_DWORD *)(v5 + 4) += 16; v17 = 1; v18 = 0; } v33 = v2[1].SpinCount; rgbValue = a2; v36 = v17; v37 = v18; v38 = 0; if ( !sub_4658F0(v33, &rgbValue) ) { sprintf( &v43, "ERROR - CollectionCardSerial::GetCollectionCardSerial - DB Error : CardID = %d / %d, Count = %I64d / %I64d, Ret = %d", a2, rgbValue, v17, v18, v36, v37, v38); sub_446350(1, "Msg", "%s", &v43); } LeaveCriticalSection(v2); result = v17 + 1010000; } else { sub_446350(1, "Msg", "%s", "ERROR - CollectionCardSerial::GetCollectionCardSerial - DB NULL"); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046D0A0) -------------------------------------------------------- signed int __thiscall sub_46D0A0(int this, int a2) { int v2; // esi@1 int v3; // ebx@1 signed int result; // eax@2 int v5; // edi@6 int v6; // ecx@8 unsigned int v7; // eax@8 int v8; // esi@8 int v9; // edx@9 int v10; // ecx@10 char *v11; // esi@10 int v12; // eax@11 int v13; // eax@12 int v14; // ecx@12 unsigned int v15; // ecx@14 int v16; // eax@19 int v17; // esi@19 int v18; // ecx@21 int v19; // eax@22 int v20; // eax@23 int v21; // ecx@23 unsigned int v22; // ecx@25 int v23; // eax@30 int v24; // edx@31 int v25; // ecx@31 int v26; // edx@31 int v27; // [sp+8h] [bp-128h]@8 int v28; // [sp+Ch] [bp-124h]@8 int rgbValue; // [sp+10h] [bp-120h]@3 int TargetValue; // [sp+14h] [bp-11Ch]@8 int v31; // [sp+18h] [bp-118h]@1 int v32; // [sp+1Ch] [bp-114h]@8 int v33; // [sp+20h] [bp-110h]@31 int v34; // [sp+24h] [bp-10Ch]@8 int v35; // [sp+28h] [bp-108h]@8 char v36; // [sp+2Ch] [bp-104h]@4 unsigned int v37; // [sp+12Ch] [bp-4h]@1 int v38; // [sp+130h] [bp+0h]@1 v37 = (unsigned int)&v38 ^ __security_cookie; v2 = 0; v3 = this; v31 = this; if ( a2 ) { *(_DWORD *)(this + 44) = a2; rgbValue = 0; if ( sub_465A10(a2, &rgbValue) ) { if ( sub_44E4A0(*(_DWORD *)(v3 + 44)) ) { v5 = v3 + 24; while ( 1 ) { v6 = *(_DWORD *)(v3 + 44); TargetValue = v2; v27 = v2; v28 = v2; sub_44E4E0(v6, &TargetValue); sub_44E5D0(*(_DWORD *)(v3 + 44), &v27); v7 = *(_DWORD *)(v5 + 4); v8 = TargetValue; v34 = v27; v32 = TargetValue; v35 = v28; if ( (unsigned int)&v32 >= v7 || (v9 = *(_DWORD *)v5, *(_DWORD *)v5 > (unsigned int)&v32) ) { v18 = *(_DWORD *)(v5 + 8); if ( v7 == v18 ) { v19 = (signed int)(v7 - *(_DWORD *)v5) >> 4; if ( (unsigned int)v19 > 0xFFFFFFE ) LABEL_34: sub_48B49E((int)"vector too long"); v20 = v19 + 1; v21 = (v18 - *(_DWORD *)v5) >> 4; if ( v20 > (unsigned int)v21 ) { if ( 268435455 - ((unsigned int)v21 >> 1) >= v21 ) v22 = ((unsigned int)v21 >> 1) + v21; else v22 = 0; if ( v22 < v20 ) v22 = v20; sub_46C840(v5, v22); v3 = v31; } } v23 = *(_DWORD *)(v5 + 4); if ( v23 ) { v24 = v33; v25 = v34; *(_DWORD *)v23 = v8; *(_DWORD *)(v23 + 4) = v24; v26 = v35; *(_DWORD *)(v23 + 8) = v25; *(_DWORD *)(v23 + 12) = v26; } } else { v10 = *(_DWORD *)(v5 + 8); v11 = (char *)&v32 - v9; if ( v7 == v10 ) { v12 = (signed int)(v7 - v9) >> 4; if ( (unsigned int)v12 > 0xFFFFFFE ) goto LABEL_34; v13 = v12 + 1; v14 = (v10 - v9) >> 4; if ( v13 > (unsigned int)v14 ) { if ( 268435455 - ((unsigned int)v14 >> 1) >= v14 ) v15 = ((unsigned int)v14 >> 1) + v14; else v15 = 0; if ( v15 < v13 ) v15 = v13; sub_46C840(v5, v15); v3 = v31; } } v16 = *(_DWORD *)(v5 + 4); v17 = *(_DWORD *)v5 + ((unsigned int)v11 & 0xFFFFFFF0); if ( v16 ) { *(_DWORD *)v16 = *(_DWORD *)v17; *(_DWORD *)(v16 + 4) = *(_DWORD *)(v17 + 4); *(_DWORD *)(v16 + 8) = *(_DWORD *)(v17 + 8); *(_DWORD *)(v16 + 12) = *(_DWORD *)(v17 + 12); } } *(_DWORD *)(v5 + 4) += 16; if ( !sub_44E4A0(*(_DWORD *)(v3 + 44)) ) break; v2 = 0; } } sub_44E4D0(*(_DWORD *)(v3 + 44)); result = 1; } else { sprintf(&v36, "ERROR - CollectionCardSerial::GetDBCollectionCardCount - DB Error : Ret = %d", rgbValue); sub_446350(1, "Msg", "%s", &v36); result = 0; } } else { sub_446350(1, "Msg", "%s", "ERROR - CollectionCardSerial::GetDBCollectionCardCount - DB NULL"); result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0046D300) -------------------------------------------------------- signed int __thiscall sub_46D300(void *this, int a2, const char *a3) { int v3; // edi@1 signed int result; // eax@2 char *v5; // eax@4 char v6; // cl@5 v3 = (int)this; if ( (unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)this + 4))(a2) ) { if ( !a3 ) goto LABEL_12; v5 = (char *)a3; do v6 = *v5++; while ( v6 ); if ( v5 == a3 + 1 || sub_44E410(v3, a3) ) LABEL_12: result = 0; else result = 2; } else { result = 1; } return result; } //----- (0046D370) -------------------------------------------------------- void *__thiscall sub_46D370(void *this, int a2) { void *result; // eax@1 result = this; *(_DWORD *)this = a2; return result; } //----- (0046D380) -------------------------------------------------------- void __thiscall sub_46D380(void *this) { *(_DWORD *)this = &off_4C6378; } // 4C6378: using guessed type int (*off_4C6378)(); //----- (0046D390) -------------------------------------------------------- signed int __cdecl sub_46D390() { return 8; } //----- (0046D3A0) -------------------------------------------------------- void __thiscall sub_46D3A0(void *this) { *(_DWORD *)this = &off_4C639C; } // 4C639C: using guessed type int (*off_4C639C)(); //----- (0046D3B0) -------------------------------------------------------- signed int __cdecl sub_46D3B0() { return 24; } //----- (0046D3C0) -------------------------------------------------------- signed int __cdecl sub_46D3C0(int a1) { signed int result; // eax@4 int (__cdecl *v2)(_DWORD, _DWORD); // eax@11 char v3; // [sp+8h] [bp-4h]@10 if ( !sub_484110(a1) ) { if ( *(_WORD *)(a1 + 99662) && !*(_WORD *)(a1 + 99584) ) { result = 8; *(_DWORD *)(a1 + 102824) = 8; return result; } if ( *(_DWORD *)(a1 + 8) & 0x1000 && *(_WORD *)(a1 + 99668) != 3 || !sub_47C8A0(a1, (const char *)(a1 + 92416), "SOAP-ENV:") ) { *(_DWORD *)(a1 + 102824) = 3; return 3; } if ( !*(_BYTE *)(a1 + 93440) || !sub_479340(a1, (int)&v3) ) { v2 = *(int (__cdecl **)(_DWORD, _DWORD))(a1 + 24652); *(_WORD *)(a1 + 99678) = 0; if ( v2 ) *(_DWORD *)(a1 + 102824) = v2(a1, a1 + 92416); else *(_DWORD *)(a1 + 102824) = 0; if ( !*(_DWORD *)(a1 + 102824) && *(_WORD *)(a1 + 24806) ) { ++*(_DWORD *)(a1 + 24808); while ( !sub_46D3C0(a1) ) ; if ( *(_DWORD *)(a1 + 102824) == 6 ) *(_DWORD *)(a1 + 102824) = sub_483EA0(a1, 0); } } } return *(_DWORD *)(a1 + 102824); } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (0046D4E0) -------------------------------------------------------- int __cdecl sub_46D4E0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { return sub_489BF0(a1, a2, a3, a4, a5, 3); } //----- (0046D510) -------------------------------------------------------- int __cdecl sub_46D510(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { return sub_489B60(a1, a2, a3, a4, a5, 34); } //----- (0046D540) -------------------------------------------------------- void *__cdecl sub_46D540(int a1, const char *a2, int a3, const char *a4) { void *result; // eax@1 result = sub_487C20(a1, a2, a3, a4, 34); if ( result && (*(_DWORD *)result < 0x80000000u || *(_DWORD *)result > 2147483647) ) { result = 0; *(_DWORD *)(a1 + 102824) = 45; } return result; } //----- (0046D590) -------------------------------------------------------- int __cdecl sub_46D590(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { return sub_489B60(a1, a2, a3, a4, a5, 1); } //----- (0046D5C0) -------------------------------------------------------- int __cdecl sub_46D5C0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int v6; // eax@2 int result; // eax@3 v5 = sub_47D170(a1, a3, a4, 43); if ( sub_4899E0(a1, a2, v5, a5) || (v6 = sub_47C290((int)&unk_4C635C, *(_BYTE *)a4 != 0), sub_486D90(a1, (const void *)v6)) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046D630) -------------------------------------------------------- signed int __cdecl sub_46D630(int a1, const char *a2, int a3) { const char *v3; // esi@1 signed int result; // eax@2 int v5; // eax@3 v3 = a2; if ( a2 ) { v5 = sub_47C230((int)&unk_4C635C, a2); if ( v5 ) { *(_BYTE *)a3 = *(_DWORD *)v5 != 0; result = 0; } else { if ( sub_47E370(a1, v3, (int)&a2) || (unsigned int)a2 > 1 ) { result = 4; *(_DWORD *)(a1 + 102824) = 4; } else { *(_BYTE *)a3 = a2 != 0; result = 0; } } } else { result = *(_DWORD *)(a1 + 102824); } return result; } //----- (0046D6B0) -------------------------------------------------------- void *__cdecl sub_46D6B0(int a1, const char *a2, int a3, const char *a4) { int v5; // eax@7 void *v6; // edi@7 int v7; // ST20_4@10 int v8; // eax@10 if ( sub_487800(a1, a2, 0, 0) ) return 0; if ( *(_BYTE *)(a1 + 95488) && sub_47C8A0(a1, (const char *)(a1 + 95488), a4) && sub_47C8A0(a1, (const char *)(a1 + 95488), ":boolean") ) { *(_DWORD *)(a1 + 102824) = 4; return 0; } v5 = sub_47D7E0(a1, a1 + 93440, a3, 43, 1u, 0, 0, 0, 0); v6 = (void *)v5; if ( !v5 ) return 0; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v5, 0, 43, 0, 1u, 0, 0); if ( !*(_WORD *)(a1 + 24806) ) return v6; } else { v7 = v5; v8 = sub_485B90(a1); if ( sub_46D630(a1, (const char *)v8, v7) ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; return v6; } //----- (0046D7B0) -------------------------------------------------------- int __thiscall sub_46D7B0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 8) = a2; *(_DWORD *)(this + 4) = 0; return result; } //----- (0046D7D0) -------------------------------------------------------- int __thiscall sub_46D7D0(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0xCu, *((_DWORD *)this - 1), sub_46D3A0); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C639C; if ( a2 & 1 ) operator delete(this); result = (int)v2; } return result; } // 4C639C: using guessed type int (*off_4C639C)(); //----- (0046D840) -------------------------------------------------------- int __thiscall sub_46D840(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 4) = a2; return result; } //----- (0046D850) -------------------------------------------------------- int __thiscall sub_46D850(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 8u, *((_DWORD *)this - 1), sub_46D380); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C6378; if ( a2 & 1 ) operator delete(this); result = (int)v2; } return result; } // 4C6378: using guessed type int (*off_4C6378)(); //----- (0046D8B0) -------------------------------------------------------- void *__cdecl sub_46D8B0(int a1, const char *a2, int a3, const char *a4) { int v5; // eax@3 void *v6; // edi@3 int v7; // eax@6 const char *v8; // [sp-8h] [bp-10h]@9 if ( sub_487800(a1, a2, 0, a4) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 65, 1u, 0, 0, 0, 0); v6 = (void *)v5; if ( !v5 ) return 0; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v5, 0, 65, 0, 1u, 0, 0); if ( !*(_WORD *)(a1 + 24806) ) return v6; v8 = a2; } else { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; v7 = sub_46D3C0(a1); *(_DWORD *)(a1 + 102824) = v7; if ( v7 == 6 ) break; if ( v7 ) return 0; } v8 = a2; } if ( sub_483EA0(a1, v8) ) return 0; return v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (0046D990) -------------------------------------------------------- int __cdecl sub_46D990(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 16); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046D9E0) -------------------------------------------------------- int __cdecl sub_46D9E0(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 17); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DA30) -------------------------------------------------------- int __cdecl sub_46DA30(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 15); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DA80) -------------------------------------------------------- int __cdecl sub_46DA80(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 14); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DAD0) -------------------------------------------------------- int __cdecl sub_46DAD0(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 13); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DB20) -------------------------------------------------------- int __cdecl sub_46DB20(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 28); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DB70) -------------------------------------------------------- int __cdecl sub_46DB70(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 27); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DBC0) -------------------------------------------------------- int __cdecl sub_46DBC0(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 26); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DC10) -------------------------------------------------------- int __cdecl sub_46DC10(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 19); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DC60) -------------------------------------------------------- int __cdecl sub_46DC60(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 18); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DCB0) -------------------------------------------------------- int __cdecl sub_46DCB0(int a1, const char *a2, int a3, unsigned int *a4, const char *a5) { signed int v5; // eax@1 int result; // eax@2 v5 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, 12); if ( v5 >= 0 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*a4 + 16))(a1, a2, v5, a5); else result = *(_DWORD *)(a1 + 102824); return result; } //----- (0046DD00) -------------------------------------------------------- void *__cdecl sub_46DD00(int a1, const char *a2, void *a3, int a4) { return sub_487E50(a1, a2, a3, a4, 5, 2, 0, -1); } //----- (0046DD30) -------------------------------------------------------- void *__cdecl sub_46DD30(int a1, const char *a2, void *a3, int a4) { return sub_487E50(a1, a2, a3, a4, 4, 1, 0, -1); } //----- (0046DDA0) -------------------------------------------------------- int __cdecl sub_46DDA0(int a1) { unsigned int v1; // eax@1 int v2; // eax@2 int v3; // eax@3 v1 = *(_DWORD *)(a1 + 24500); if ( v1 ) { *(_WORD *)(a1 + 99668) = 3; v2 = sub_47D170(a1, 0, v1, 65); if ( sub_4899E0(a1, "SOAP-ENV:Header", v2, 0) ) v3 = *(_DWORD *)(a1 + 102824); else v3 = sub_487710(a1, "SOAP-ENV:Header"); if ( v3 ) return *(_DWORD *)(a1 + 102824); *(_WORD *)(a1 + 99668) = 4; } return 0; } //----- (0046DE20) -------------------------------------------------------- bool __cdecl sub_46DE20(int a1) { void *v1; // eax@1 *(_WORD *)(a1 + 99668) = 3; v1 = sub_46D8B0(a1, "SOAP-ENV:Header", 0, 0); *(_DWORD *)(a1 + 24500) = v1; *(_WORD *)(a1 + 99668) = 4; return v1 == 0; } //----- (0046DE70) -------------------------------------------------------- int __cdecl sub_46DE70(int a1, int a2, int a3, int a4, int a5, int a6) { int result; // eax@2 if ( a3 == 45 ) { result = *(_DWORD *)a6; *(_DWORD *)(*(_DWORD *)a4 + 4 * a5) = *(_DWORD *)a6; } return result; } //----- (0046DE90) -------------------------------------------------------- int __thiscall sub_46DE90(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 24); if ( sub_4899E0(a2, a3, v6, a5) || sub_489B60(a2, "ns1:amount", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667, 34) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (0046DF00) -------------------------------------------------------- int __cdecl sub_46DF00(int a1, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 *(_DWORD *)(a4 + 4) = *(_DWORD *)(a6 + 4); result = *(_DWORD *)(a6 + 8); *(_DWORD *)(a4 + 8) = result; return result; } //----- (0046DF20) -------------------------------------------------------- int __thiscall sub_46DF20(void *this, int a2, const char *a3, int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a2, a4, (unsigned int)this, 8); if ( sub_4899E0(a2, a3, v5, a5) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (0046DF70) -------------------------------------------------------- int __cdecl sub_46DF70(int a1, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 result = a6; *(_DWORD *)(a4 + 4) = *(_DWORD *)(a6 + 4); return result; } //----- (0046DF90) -------------------------------------------------------- void *__cdecl sub_46DF90(int a1, const char *a2, int a3, const char *a4) { signed int v4; // ebx@1 void *result; // eax@2 void *v6; // eax@3 void *v7; // edi@3 int v8; // eax@11 const char *v9; // [sp-8h] [bp-10h]@14 v4 = 1; if ( sub_487800(a1, a2, 0, a4) ) return 0; v6 = (void *)sub_47D7E0(a1, a1 + 93440, a3, 68, 4u, 0, 0, 0, 0); v7 = v6; if ( !v6 ) goto LABEL_22; *(_DWORD *)v6 = 0; if ( *(_WORD *)(a1 + 24806) && !*(_BYTE *)(a1 + 94464) ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( v4 ) break; LABEL_10: *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_11: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) { v9 = a2; goto LABEL_17; } if ( v8 ) return 0; } if ( !sub_487E50(a1, "SOAP-ENV:Text", v7, (int)"xsd:string", 4, 1, 0, -1) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_11; goto LABEL_10; } --v4; } } v7 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 68, 0, 4u, 0, 0); if ( !*(_WORD *)(a1 + 24806) ) goto LABEL_23; v9 = a2; LABEL_17: if ( sub_483EA0(a1, v9) ) LABEL_22: result = 0; else LABEL_23: result = v7; return result; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (0046E0B0) -------------------------------------------------------- void *__cdecl sub_46E0B0(int a1, const char *a2, int a3, const char *a4) { void *result; // eax@2 int v5; // eax@3 void *v6; // edi@3 int v7; // eax@15 const char *v8; // [sp-8h] [bp-18h]@18 signed int v9; // [sp+8h] [bp-8h]@1 signed int v10; // [sp+Ch] [bp-4h]@1 v10 = 1; v9 = 1; if ( sub_487800(a1, a2, 0, a4) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 66, 8u, 0, 0, 0, 0); v6 = (void *)v5; if ( !v5 ) goto LABEL_26; *(_DWORD *)v5 = 0; *(_DWORD *)(v5 + 4) = 0; if ( *(_WORD *)(a1 + 24806) && !*(_BYTE *)(a1 + 94464) ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v10 ) break; if ( !sub_487E50(a1, "SOAP-ENV:Value", v6, (int)&byte_4B4667, 5, 2, 0, -1) ) break; --v10; } if ( !v9 ) goto LABEL_27; if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_15; if ( sub_46E4A0(a1, "SOAP-ENV:Subcode", (char *)v6 + 4, &byte_4B4667) ) { --v9; } else { LABEL_27: if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_15: v7 = *(_DWORD *)(a1 + 102824); if ( v7 == 6 ) { v8 = a2; goto LABEL_21; } if ( v7 ) return 0; } } } v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v5, 0, 66, 0, 8u, 0, 0); if ( !*(_WORD *)(a1 + 24806) ) goto LABEL_28; v8 = a2; LABEL_21: if ( sub_483EA0(a1, v8) ) LABEL_26: result = 0; else LABEL_28: result = v6; return result; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (0046E230) -------------------------------------------------------- signed int __cdecl sub_46E230(int a1, unsigned int *a2) { signed int result; // eax@1 result = sub_47D0E0(a1, *a2, 16); if ( !result ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)*a2 + 8))(a1); return result; } //----- (0046E260) -------------------------------------------------------- int __cdecl sub_46E260(int a1, unsigned int *a2) { signed int v2; // eax@1 int v3; // eax@2 int result; // eax@5 v2 = sub_48B090(a1, "ns1:getCashShopUrl", -1, *a2, 0, 0, &byte_4B4667, 16); if ( v2 >= 0 ) v3 = (*(int (__stdcall **)(int, _DWORD, signed int, char *))(*(_DWORD *)*a2 + 16))( a1, "ns1:getCashShopUrl", v2, &byte_4B4667); else v3 = *(_DWORD *)(a1 + 102824); if ( !v3 || (result = *(_DWORD *)(a1 + 102824)) == 0 ) result = 0; return result; } //----- (0046E2C0) -------------------------------------------------------- signed int __cdecl sub_46E2C0(int a1, unsigned int *a2) { signed int result; // eax@1 result = sub_47D0E0(a1, *a2, 15); if ( !result ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)*a2 + 8))(a1); return result; } //----- (0046E2F0) -------------------------------------------------------- int __cdecl sub_46E2F0(int a1, unsigned int *a2) { signed int v2; // eax@1 int v3; // eax@2 int result; // eax@5 v2 = sub_48B090(a1, "ns1:getItemShopUrl", -1, *a2, 0, 0, &byte_4B4667, 15); if ( v2 >= 0 ) v3 = (*(int (__stdcall **)(int, _DWORD, signed int, char *))(*(_DWORD *)*a2 + 16))( a1, "ns1:getItemShopUrl", v2, &byte_4B4667); else v3 = *(_DWORD *)(a1 + 102824); if ( !v3 || (result = *(_DWORD *)(a1 + 102824)) == 0 ) result = 0; return result; } //----- (0046E350) -------------------------------------------------------- signed int __cdecl sub_46E350(int a1, unsigned int *a2) { signed int result; // eax@1 result = sub_47D0E0(a1, *a2, 13); if ( !result ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)*a2 + 8))(a1); return result; } //----- (0046E380) -------------------------------------------------------- int __cdecl sub_46E380(int a1, unsigned int *a2) { signed int v2; // eax@1 int v3; // eax@2 int result; // eax@5 v2 = sub_48B090(a1, "ns1:getAccountForToken", -1, *a2, 0, 0, &byte_4B4667, 13); if ( v2 >= 0 ) v3 = (*(int (__stdcall **)(int, _DWORD, signed int, char *))(*(_DWORD *)*a2 + 16))( a1, "ns1:getAccountForToken", v2, &byte_4B4667); else v3 = *(_DWORD *)(a1 + 102824); if ( !v3 || (result = *(_DWORD *)(a1 + 102824)) == 0 ) result = 0; return result; } //----- (0046E3E0) -------------------------------------------------------- void *__cdecl sub_46E3E0(int a1, const char *a2, void *a3, const char *a4) { void *v5; // edi@3 void *v6; // eax@7 if ( sub_487800(a1, a2, 1, 0) ) return 0; v5 = a3; if ( !a3 ) { v5 = sub_47D480(a1, 4u); if ( !v5 ) return 0; } *(_DWORD *)v5 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v5 = sub_47D630(a1, a1 + 94464, v5, 68, 4, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { sub_47E2D0(a1); v6 = sub_46DF90(a1, a2, *(_DWORD *)v5, a4); *(_DWORD *)v5 = v6; if ( !v6 ) return 0; } return v5; } //----- (0046E4A0) -------------------------------------------------------- void *__cdecl sub_46E4A0(int a1, const char *a2, void *a3, const char *a4) { void *v5; // edi@3 void *v6; // eax@7 if ( sub_487800(a1, a2, 1, 0) ) return 0; v5 = a3; if ( !a3 ) { v5 = sub_47D480(a1, 4u); if ( !v5 ) return 0; } *(_DWORD *)v5 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v5 = sub_47D630(a1, a1 + 94464, v5, 66, 8, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { sub_47E2D0(a1); v6 = sub_46E0B0(a1, a2, *(_DWORD *)v5, a4); *(_DWORD *)v5 = v6; if ( !v6 ) return 0; } return v5; } //----- (0046E560) -------------------------------------------------------- int __stdcall sub_46E560(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x3FFFFFFF || (result = operator new(4 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_4B8A50; _CxxThrowException(&v2, &unk_4D145C); } } return result; } // 48DFE9: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 4B8A50: using guessed type int (__thiscall *off_4B8A50)(void *, char); //----- (0046E5C0) -------------------------------------------------------- int __cdecl sub_46E5C0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 41); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046E650) -------------------------------------------------------- int __cdecl sub_46E650(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 40); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046E6E0) -------------------------------------------------------- int __cdecl sub_46E6E0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 39); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046E770) -------------------------------------------------------- int __cdecl sub_46E770(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 38); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046E800) -------------------------------------------------------- int __cdecl sub_46E800(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 37); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046E890) -------------------------------------------------------- int __cdecl sub_46E890(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 36); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046E920) -------------------------------------------------------- int __cdecl sub_46E920(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 35); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046E9B0) -------------------------------------------------------- int __cdecl sub_46E9B0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 33); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046EA40) -------------------------------------------------------- int __cdecl sub_46EA40(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 32); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046EAD0) -------------------------------------------------------- int __cdecl sub_46EAD0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 31); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046EB60) -------------------------------------------------------- int __cdecl sub_46EB60(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // edi@1 int result; // eax@3 int v7; // eax@4 LOWORD(v5) = a4; if ( !(*(_DWORD *)(a1 + 8) & 0x8000000) || *(_DWORD *)(a4 + 16) ) { v7 = sub_47D170(a1, a3, a4, 30); if ( sub_4899E0(a1, a2, v7, a5) ) goto LABEL_12; if ( *(_DWORD *)(a4 + 20) >= 0x10u ) v5 = *(_DWORD *)a4; if ( sub_487910(a1, v5, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_12: result = *(_DWORD *)(a1 + 102824); } else { result = sub_489A20(a1, a2, a3, a5); } return result; } //----- (0046EBF0) -------------------------------------------------------- int __cdecl sub_46EBF0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a1, a3, a4, 23); if ( sub_4899E0(a1, a2, v5, a5) || sub_46E9B0(a1, "ns1:accountId", -1, a4 + 4, &byte_4B4667) || sub_489B60(a1, "ns1:requestedAmount", -1, a4 + 32, &byte_4B4667, 34) || sub_489B60(a1, "ns1:currentBalance", -1, a4 + 36, &byte_4B4667, 34) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046ECA0) -------------------------------------------------------- int __cdecl sub_46ECA0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a1, a3, a4, 22); if ( sub_4899E0(a1, a2, v5, a5) || sub_46E9B0(a1, "ns1:accountId", -1, a4 + 4, &byte_4B4667) || sub_46E800(a1, "ns1:template", -1, a4 + 32, &byte_4B4667) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046ED30) -------------------------------------------------------- int __cdecl sub_46ED30(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a1, a3, a4, 21); if ( sub_4899E0(a1, a2, v5, a5) || sub_46E800(a1, "ns1:template", -1, a4 + 4, &byte_4B4667) || sub_46E770(a1, "ns1:parameter", -1, a4 + 32, &byte_4B4667) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046EDC0) -------------------------------------------------------- int __cdecl sub_46EDC0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a1, a3, a4, 17); if ( sub_4899E0(a1, a2, v5, a5) || (sub_489AD0(a1, (unsigned int)"ns1:url"), sub_46EB60(a1, "ns1:url", -1, a4 + 4, &byte_4B4667)) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046EE40) -------------------------------------------------------- int __cdecl sub_46EE40(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a1, a3, a4, 14); if ( sub_4899E0(a1, a2, v5, a5) || (sub_489AD0(a1, (unsigned int)"ns1:accountId"), sub_46E9B0(a1, "ns1:accountId", -1, a4 + 4, &byte_4B4667)) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046EEC0) -------------------------------------------------------- int __cdecl sub_46EEC0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a1, a3, a4, 13); if ( sub_4899E0(a1, a2, v5, a5) || sub_46EAD0(a1, "ns1:ssoToken", -1, a4 + 4, &byte_4B4667) || sub_46EA40(a1, "ns1:clientIp", -1, a4 + 32, &byte_4B4667) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046EF50) -------------------------------------------------------- int __cdecl sub_46EF50(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a1, a3, a4, 12); if ( sub_4899E0(a1, a2, v5, a5) || sub_46E770(a1, "ns1:key", -1, a4 + 4, &byte_4B4667) || sub_46EB60(a1, "ns1:value", -1, a4 + 32, &byte_4B4667) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046EFE0) -------------------------------------------------------- int __cdecl sub_46EFE0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a1, a3, a4, 10); if ( sub_4899E0(a1, a2, v5, a5) || sub_46E920(a1, "ns1:itemId", -1, a4 + 4, &byte_4B4667) || sub_489B60(a1, "ns1:price", -1, a4 + 32, &byte_4B4667, 34) || sub_46EB60(a1, "ns1:description", -1, a4 + 36, &byte_4B4667) || sub_46D5C0(a1, "ns1:purchasable", -1, a4 + 64, &byte_4B4667) || sub_46D5C0(a1, "ns1:visible", -1, a4 + 65, &byte_4B4667) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046F0D0) -------------------------------------------------------- int __cdecl sub_46F0D0(int a1, const char *a2, int a3, unsigned int a4, const char *a5) { int v5; // eax@1 int result; // eax@2 v5 = sub_47D170(a1, a3, a4, 9); if ( sub_4899E0(a1, a2, v5, a5) || sub_489B60(a1, "ns1:quantity", -1, a4 + 4, &byte_4B4667, 1) || sub_46E920(a1, "ns1:itemId", -1, a4 + 8, &byte_4B4667) || sub_46EB60(a1, "ns1:name", -1, a4 + 36, &byte_4B4667) || sub_489B60(a1, "ns1:total", -1, a4 + 64, &byte_4B4667, 34) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (0046F1B0) -------------------------------------------------------- char __thiscall sub_46F1B0(int this, unsigned int a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@5 v2 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( a2 ) { if ( a2 > 0x3FFFFFFF ) sub_48B49E((int)"vector too long"); v4 = sub_46E560(a2); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 4 * a2; result = 1; } else { result = 0; } return result; } //----- (0046F200) -------------------------------------------------------- char *__stdcall sub_46F200(const void *a1, int a2, void *a3) { return (char *)memmove_0(a3, a1, 4 * ((a2 - (signed int)a1) >> 2)) + 4 * ((a2 - (signed int)a1) >> 2); } //----- (0046F230) -------------------------------------------------------- void __thiscall sub_46F230(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4C65A0; if ( *(_DWORD *)(this + 56) >= 0x10u ) operator delete(*(void **)(this + 36)); *(_DWORD *)(v1 + 56) = 15; *(_DWORD *)(v1 + 52) = 0; *(_BYTE *)(v1 + 36) = 0; if ( *(_DWORD *)(v1 + 28) >= 0x10u ) operator delete(*(void **)(v1 + 8)); *(_DWORD *)(v1 + 24) = 0; *(_DWORD *)(v1 + 28) = 15; *(_BYTE *)(v1 + 8) = 0; } // 4C65A0: using guessed type int (*off_4C65A0)(); //----- (0046F280) -------------------------------------------------------- void __thiscall sub_46F280(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4C65C4; if ( *(_DWORD *)(this + 56) >= 0x10u ) operator delete(*(void **)(this + 36)); *(_DWORD *)(v1 + 56) = 15; *(_DWORD *)(v1 + 52) = 0; *(_BYTE *)(v1 + 36) = 0; if ( *(_DWORD *)(v1 + 24) >= 0x10u ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 15; *(_BYTE *)(v1 + 4) = 0; } // 4C65C4: using guessed type int (*off_4C65C4)(); //----- (0046F2D0) -------------------------------------------------------- void __thiscall sub_46F2D0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4C65E8; if ( *(_DWORD *)(this + 52) >= 0x10u ) operator delete(*(void **)(this + 32)); *(_DWORD *)(v1 + 52) = 15; *(_DWORD *)(v1 + 48) = 0; *(_BYTE *)(v1 + 32) = 0; if ( *(_DWORD *)(v1 + 24) >= 0x10u ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 15; *(_BYTE *)(v1 + 4) = 0; } // 4C65E8: using guessed type int (*off_4C65E8)(); //----- (0046F320) -------------------------------------------------------- signed int __cdecl sub_46F320() { return 12; } //----- (0046F330) -------------------------------------------------------- void __thiscall sub_46F330(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4C660C; if ( *(_DWORD *)(this + 52) >= 0x10u ) operator delete(*(void **)(this + 32)); *(_DWORD *)(v1 + 52) = 15; *(_DWORD *)(v1 + 48) = 0; *(_BYTE *)(v1 + 32) = 0; if ( *(_DWORD *)(v1 + 24) >= 0x10u ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 15; *(_BYTE *)(v1 + 4) = 0; } // 4C660C: using guessed type int (*off_4C660C)(); //----- (0046F380) -------------------------------------------------------- signed int __cdecl sub_46F380() { return 13; } //----- (0046F390) -------------------------------------------------------- int __thiscall sub_46F390(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C6630; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C6630: using guessed type int (*off_4C6630)(); //----- (0046F3C0) -------------------------------------------------------- int __thiscall sub_46F3C0(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C6654; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C6654: using guessed type int (*off_4C6654)(); //----- (0046F3F0) -------------------------------------------------------- signed int __cdecl sub_46F3F0() { return 16; } //----- (0046F400) -------------------------------------------------------- int __thiscall sub_46F400(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C6678; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C6678: using guessed type int (*off_4C6678)(); //----- (0046F430) -------------------------------------------------------- int __thiscall sub_46F430(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C669C; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C669C: using guessed type int (*off_4C669C)(); //----- (0046F460) -------------------------------------------------------- signed int __cdecl sub_46F460() { return 19; } //----- (0046F470) -------------------------------------------------------- int __thiscall sub_46F470(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C66C0; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C66C0: using guessed type int (*off_4C66C0)(); //----- (0046F4A0) -------------------------------------------------------- signed int __cdecl sub_46F4A0() { return 20; } //----- (0046F4B0) -------------------------------------------------------- void __thiscall sub_46F4B0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4C66E4; if ( *(_DWORD *)(this + 52) >= 0x10u ) operator delete(*(void **)(this + 32)); *(_DWORD *)(v1 + 52) = 15; *(_DWORD *)(v1 + 48) = 0; *(_BYTE *)(v1 + 32) = 0; if ( *(_DWORD *)(v1 + 24) >= 0x10u ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 15; *(_BYTE *)(v1 + 4) = 0; } // 4C66E4: using guessed type int (*off_4C66E4)(); //----- (0046F500) -------------------------------------------------------- void __thiscall sub_46F500(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4C6708; if ( *(_DWORD *)(this + 52) >= 0x10u ) operator delete(*(void **)(this + 32)); *(_DWORD *)(v1 + 52) = 15; *(_DWORD *)(v1 + 48) = 0; *(_BYTE *)(v1 + 32) = 0; if ( *(_DWORD *)(v1 + 24) >= 0x10u ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 15; *(_BYTE *)(v1 + 4) = 0; } // 4C6708: using guessed type int (*off_4C6708)(); //----- (0046F550) -------------------------------------------------------- signed int __cdecl sub_46F550() { return 22; } //----- (0046F560) -------------------------------------------------------- int __thiscall sub_46F560(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C672C; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C672C: using guessed type int (*off_4C672C)(); //----- (0046F590) -------------------------------------------------------- int __thiscall sub_46F590(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C6750; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C6750: using guessed type int (*off_4C6750)(); //----- (0046F5C0) -------------------------------------------------------- int __thiscall sub_46F5C0(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C6774; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C6774: using guessed type int (*off_4C6774)(); //----- (0046F5F0) -------------------------------------------------------- int __thiscall sub_46F5F0(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C6798; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C6798: using guessed type int (*off_4C6798)(); //----- (0046F620) -------------------------------------------------------- int __thiscall sub_46F620(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C67BC; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C67BC: using guessed type int (*off_4C67BC)(); //----- (0046F650) -------------------------------------------------------- signed int __cdecl sub_46F650() { return 28; } //----- (0046F660) -------------------------------------------------------- int __thiscall sub_46F660(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_4C67E0; if ( *(_DWORD *)(this + 24) >= 0x10u ) operator delete(*(void **)(this + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4C67E0: using guessed type int (*off_4C67E0)(); //----- (0046F690) -------------------------------------------------------- signed int __cdecl sub_46F690() { return 29; } //----- (0046F6A0) -------------------------------------------------------- int __cdecl sub_46F6A0(int a1, unsigned int *a2, const char *a3, int a4, int a5) { int result; // eax@2 int v6; // [sp-4h] [bp-4h]@29 int v7; // [sp-4h] [bp-4h]@31 switch ( a5 ) { case 3: return sub_46D4E0(a1, a3, a4, (unsigned int)a2, "xsd:byte"); case 34: return sub_46D510(a1, a3, a4, (unsigned int)a2, "ns1:cashCurrencyAmountType"); case 1: return sub_46D590(a1, a3, a4, (unsigned int)a2, "xsd:int"); case 43: return sub_46D5C0(a1, a3, a4, (unsigned int)a2, "xsd:boolean"); case 41: return sub_46E5C0(a1, a3, a4, (unsigned int)a2, "ns1:realmName"); case 40: return sub_46E650(a1, a3, a4, (unsigned int)a2, "ns1:characterName"); case 39: return sub_46E6E0(a1, a3, a4, (unsigned int)a2, "ns1:errorMessageType"); case 38: return sub_46E770(a1, a3, a4, (unsigned int)a2, "ns1:templateParameterType"); case 37: return sub_46E800(a1, a3, a4, (unsigned int)a2, "ns1:templateType"); case 36: return sub_46E890(a1, a3, a4, (unsigned int)a2, "ns1:voucherCodeType"); case 35: return sub_46E920(a1, a3, a4, (unsigned int)a2, "ns1:itemIdType"); case 33: return sub_46E9B0(a1, a3, a4, (unsigned int)a2, "ns1:accountIdType"); case 32: return sub_46EA40(a1, a3, a4, (unsigned int)a2, "ns1:ipAddressType"); case 31: return sub_46EAD0(a1, a3, a4, (unsigned int)a2, "ns1:ssoTokenType"); case 30: return sub_46EB60(a1, a3, a4, (unsigned int)a2, "xsd:string"); case 29: return (*(int (__stdcall **)(int, _DWORD, int, _DWORD))(*a2 + 16))(a1, "ns1:VoucherCodeInvalid", a4, 0); case 28: return (*(int (__stdcall **)(int, _DWORD, int, _DWORD))(*a2 + 16))(a1, "ns1:TokenInvalid", a4, 0); case 27: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))(a1, "ns1:TokenExpired", a4, 0); case 26: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))(a1, "ns1:IpCountryBlacklisted", a4, 0); case 25: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))(a1, "ns1:IllegalItem", a4, 0); case 24: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))(a1, "ns1:IllegalAmount", a4, 0); case 23: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))(a1, "ns1:InsufficentCash", a4, 0); case 22: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))(a1, "ns1:SendFailed", a4, 0); case 21: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))( a1, "ns1:TemplateParameterMissing", a4, 0); case 20: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))(a1, "ns1:TemplateNotFound", a4, 0); case 19: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))( a1, "ns1:InfrastructureServiceError", a4, 0); case 18: return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*a2 + 16))(a1, "ns1:AccountNotFound", a4, 0); case 17: v6 = (int)"ns1:getShopUrlResponse"; goto LABEL_30; case 16: v7 = (int)"ns1:getCashShopUrlRequest"; goto LABEL_32; case 15: v6 = (int)"ns1:getItemShopUrlRequest"; goto LABEL_30; case 14: v7 = (int)"ns1:getAccountForTokenResponse"; goto LABEL_32; case 13: v6 = (int)"ns1:getAccountForTokenRequest"; goto LABEL_30; case 12: v7 = (int)"ns1:property"; goto LABEL_32; case 11: v6 = (int)"ns1:propertyList"; goto LABEL_30; case 10: v7 = (int)"ns1:itemInformationType"; goto LABEL_32; case 9: v6 = (int)"ns1:shoppingCartItem"; LABEL_30: result = (*(int (__stdcall **)(int, const char *, int, int))(*a2 + 16))(a1, a3, a4, v6); break; case 8: v7 = (int)"ns1:noContent"; LABEL_32: result = (*(int (__stdcall **)(int, const char *, int, int))(*a2 + 16))(a1, a3, a4, v7); break; case 62: result = sub_46D990(a1, a3, a4, a2, "ns1:getCashShopUrlRequest"); break; case 59: result = sub_46D9E0(a1, a3, a4, a2, "ns1:getShopUrlResponse"); break; case 58: result = sub_46DA30(a1, a3, a4, a2, "ns1:getItemShopUrlRequest"); break; case 55: result = sub_46DA80(a1, a3, a4, a2, "ns1:getAccountForTokenResponse"); break; case 54: result = sub_46DAD0(a1, a3, a4, a2, "ns1:getAccountForTokenRequest"); break; case 51: result = sub_46DB20(a1, a3, a4, a2, "ns1:TokenInvalid"); break; case 50: result = sub_46DB70(a1, a3, a4, a2, "ns1:TokenExpired"); break; case 49: result = sub_46DBC0(a1, a3, a4, a2, "ns1:IpCountryBlacklisted"); break; case 48: result = sub_46DC10(a1, a3, a4, a2, "ns1:InfrastructureServiceError"); break; case 47: result = sub_46DC60(a1, a3, a4, a2, "ns1:AccountNotFound"); break; case 44: result = sub_46DCB0(a1, a3, a4, a2, "ns1:property"); break; case 5: result = sub_48B160(a1, a3, a4, (unsigned int *)&a2, "xsd:QName", 4); break; case 4: result = sub_48B160(a1, a3, a4, (unsigned int *)&a2, "xsd:string", 4); break; default: result = 0; break; } return result; } //----- (0046FCE0) -------------------------------------------------------- int __thiscall sub_46FCE0(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 29); if ( sub_4899E0(a2, a3, v6, a5) || sub_46E890(a2, "ns1:code", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (0046FD50) -------------------------------------------------------- int __thiscall sub_46FD50(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F660); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C67E0; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C67E0: using guessed type int (*off_4C67E0)(); //----- (0046FDD0) -------------------------------------------------------- int __thiscall sub_46FDD0(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 28); if ( sub_4899E0(a2, a3, v6, a5) || sub_46EAD0(a2, "ns1:token", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (0046FE40) -------------------------------------------------------- int __thiscall sub_46FE40(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F620); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C67BC; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C67BC: using guessed type int (*off_4C67BC)(); //----- (0046FEC0) -------------------------------------------------------- int __thiscall sub_46FEC0(int this, int a2) { *(_DWORD *)(this + 32) = a2; return sub_43D950(this + 4, 0, 0xFFFFFFFFu); } //----- (0046FEE0) -------------------------------------------------------- int __thiscall sub_46FEE0(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 27); if ( sub_4899E0(a2, a3, v6, a5) || sub_46EAD0(a2, "ns1:token", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (0046FF50) -------------------------------------------------------- int __thiscall sub_46FF50(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F5F0); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C6798; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C6798: using guessed type int (*off_4C6798)(); //----- (0046FFD0) -------------------------------------------------------- int __thiscall sub_46FFD0(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 26); if ( sub_4899E0(a2, a3, v6, a5) || sub_46EA40(a2, "ns1:ip", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (00470040) -------------------------------------------------------- int __thiscall sub_470040(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F5C0); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C6774; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C6774: using guessed type int (*off_4C6774)(); //----- (004700C0) -------------------------------------------------------- int __thiscall sub_4700C0(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 25); if ( sub_4899E0(a2, a3, v6, a5) || sub_46E920(a2, "ns1:itemId", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (00470130) -------------------------------------------------------- int __thiscall sub_470130(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F590); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C6750; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C6750: using guessed type int (*off_4C6750)(); //----- (004701B0) -------------------------------------------------------- int __thiscall sub_4701B0(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = this; *(_DWORD *)(this + 40) = a2; result = sub_43D950(this + 4, 0, 0xFFFFFFFFu); *(_DWORD *)(v2 + 32) = 0; *(_DWORD *)(v2 + 36) = 0; return result; } //----- (004701E0) -------------------------------------------------------- int __thiscall sub_4701E0(void *this, int a2, const char *a3, int a4, const char *a5) { return sub_46EBF0(a2, a3, a4, (unsigned int)this, a5); } //----- (00470200) -------------------------------------------------------- int __thiscall sub_470200(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x2Cu, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F560); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C672C; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C672C: using guessed type int (*off_4C672C)(); //----- (00470280) -------------------------------------------------------- int __thiscall sub_470280(void *this, int a2, const char *a3, int a4, const char *a5) { return sub_46ECA0(a2, a3, a4, (unsigned int)this, a5); } //----- (004702A0) -------------------------------------------------------- int __thiscall sub_4702A0(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x40u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F500); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C6708; if ( *((_DWORD *)this + 13) >= 0x10u ) operator delete(*((void **)this + 8)); *((_DWORD *)v2 + 13) = 15; *((_DWORD *)v2 + 12) = 0; *((_BYTE *)v2 + 32) = 0; if ( *((_DWORD *)v2 + 6) >= 0x10u ) operator delete(*((void **)v2 + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C6708: using guessed type int (*off_4C6708)(); //----- (00470340) -------------------------------------------------------- int __thiscall sub_470340(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)(this + 60) = a2; sub_43D950(this + 4, 0, 0xFFFFFFFFu); return sub_43D950(v2 + 32, 0, 0xFFFFFFFFu); } //----- (00470370) -------------------------------------------------------- int __thiscall sub_470370(void *this, int a2, const char *a3, int a4, const char *a5) { return sub_46ED30(a2, a3, a4, (unsigned int)this, a5); } //----- (00470390) -------------------------------------------------------- int __thiscall sub_470390(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x40u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F4B0); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C66E4; if ( *((_DWORD *)this + 13) >= 0x10u ) operator delete(*((void **)this + 8)); *((_DWORD *)v2 + 13) = 15; *((_DWORD *)v2 + 12) = 0; *((_BYTE *)v2 + 32) = 0; if ( *((_DWORD *)v2 + 6) >= 0x10u ) operator delete(*((void **)v2 + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C66E4: using guessed type int (*off_4C66E4)(); //----- (00470430) -------------------------------------------------------- int __thiscall sub_470430(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 20); if ( sub_4899E0(a2, a3, v6, a5) || sub_46E800(a2, "ns1:template", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (004704A0) -------------------------------------------------------- int __thiscall sub_4704A0(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F470); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C66C0; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C66C0: using guessed type int (*off_4C66C0)(); //----- (00470520) -------------------------------------------------------- int __thiscall sub_470520(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 19); if ( sub_4899E0(a2, a3, v6, a5) || sub_46E6E0(a2, "ns1:message", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (00470590) -------------------------------------------------------- int __thiscall sub_470590(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F430); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C669C; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C669C: using guessed type int (*off_4C669C)(); //----- (00470610) -------------------------------------------------------- int __thiscall sub_470610(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 18); if ( sub_4899E0(a2, a3, v6, a5) || sub_46E9B0(a2, "ns1:accountId", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (00470680) -------------------------------------------------------- int __thiscall sub_470680(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F400); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C6678; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C6678: using guessed type int (*off_4C6678)(); //----- (00470700) -------------------------------------------------------- int __thiscall sub_470700(void *this, int a2, const char *a3, int a4, const char *a5) { return sub_46EDC0(a2, a3, a4, (unsigned int)this, a5); } //----- (00470720) -------------------------------------------------------- int __thiscall sub_470720(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), loc_43DE10); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4B8ABC; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4B8ABC: using guessed type int (*off_4B8ABC)(); //----- (004707A0) -------------------------------------------------------- int __thiscall sub_4707A0(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 16); if ( sub_4899E0(a2, a3, v6, a5) || sub_46E9B0(a2, "ns1:accountId", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (00470810) -------------------------------------------------------- int __thiscall sub_470810(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F3C0); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C6654; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C6654: using guessed type int (*off_4C6654)(); //----- (00470890) -------------------------------------------------------- int __thiscall sub_470890(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 15); if ( sub_4899E0(a2, a3, v6, a5) || sub_46E9B0(a2, "ns1:accountId", -1, (unsigned int)((char *)v5 + 4), &byte_4B4667) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (00470900) -------------------------------------------------------- int __thiscall sub_470900(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), loc_43DD80); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4B8A98; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4B8A98: using guessed type int (*off_4B8A98)(); //----- (00470980) -------------------------------------------------------- int __thiscall sub_470980(void *this, int a2, const char *a3, int a4, const char *a5) { return sub_46EE40(a2, a3, a4, (unsigned int)this, a5); } //----- (004709A0) -------------------------------------------------------- int __thiscall sub_4709A0(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x24u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F390); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C6630; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C6630: using guessed type int (*off_4C6630)(); //----- (00470A20) -------------------------------------------------------- int __thiscall sub_470A20(void *this, int a2, const char *a3, int a4, const char *a5) { return sub_46EEC0(a2, a3, a4, (unsigned int)this, a5); } //----- (00470A40) -------------------------------------------------------- int __thiscall sub_470A40(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x40u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F330); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C660C; if ( *((_DWORD *)this + 13) >= 0x10u ) operator delete(*((void **)this + 8)); *((_DWORD *)v2 + 13) = 15; *((_DWORD *)v2 + 12) = 0; *((_BYTE *)v2 + 32) = 0; if ( *((_DWORD *)v2 + 6) >= 0x10u ) operator delete(*((void **)v2 + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C660C: using guessed type int (*off_4C660C)(); //----- (00470AE0) -------------------------------------------------------- int __thiscall sub_470AE0(void *this, int a2, const char *a3, int a4, const char *a5) { return sub_46EF50(a2, a3, a4, (unsigned int)this, a5); } //----- (00470B00) -------------------------------------------------------- int __thiscall sub_470B00(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x40u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F2D0); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C65E8; if ( *((_DWORD *)this + 13) >= 0x10u ) operator delete(*((void **)this + 8)); *((_DWORD *)v2 + 13) = 15; *((_DWORD *)v2 + 12) = 0; *((_BYTE *)v2 + 32) = 0; if ( *((_DWORD *)v2 + 6) >= 0x10u ) operator delete(*((void **)v2 + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C65E8: using guessed type int (*off_4C65E8)(); //----- (00470BA0) -------------------------------------------------------- int __thiscall sub_470BA0(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = this; *(_DWORD *)(this + 68) = a2; sub_43D950(this + 4, 0, 0xFFFFFFFFu); *(_DWORD *)(v2 + 32) = 0; result = sub_43D950(v2 + 36, 0, 0xFFFFFFFFu); *(_WORD *)(v2 + 64) = 0; return result; } //----- (00470BE0) -------------------------------------------------------- int __thiscall sub_470BE0(void *this, int a2, const char *a3, int a4, const char *a5) { return sub_46EFE0(a2, a3, a4, (unsigned int)this, a5); } //----- (00470C00) -------------------------------------------------------- int __thiscall sub_470C00(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x48u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F280); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C65C4; if ( *((_DWORD *)this + 14) >= 0x10u ) operator delete(*((void **)this + 9)); *((_DWORD *)v2 + 14) = 15; *((_DWORD *)v2 + 13) = 0; *((_BYTE *)v2 + 36) = 0; if ( *((_DWORD *)v2 + 6) >= 0x10u ) operator delete(*((void **)v2 + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C65C4: using guessed type int (*off_4C65C4)(); //----- (00470CA0) -------------------------------------------------------- int __thiscall sub_470CA0(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = this; *(_DWORD *)(this + 68) = a2; *(_DWORD *)(this + 4) = 0; sub_43D950(this + 8, 0, 0xFFFFFFFFu); result = sub_43D950(v2 + 36, 0, 0xFFFFFFFFu); *(_DWORD *)(v2 + 64) = 0; return result; } //----- (00470CE0) -------------------------------------------------------- int __thiscall sub_470CE0(void *this, int a2, const char *a3, int a4, const char *a5) { return sub_46F0D0(a2, a3, a4, (unsigned int)this, a5); } //----- (00470D00) -------------------------------------------------------- int __thiscall sub_470D00(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x48u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_46F230); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C65A0; if ( *((_DWORD *)this + 14) >= 0x10u ) operator delete(*((void **)this + 9)); *((_DWORD *)v2 + 14) = 15; *((_DWORD *)v2 + 13) = 0; *((_BYTE *)v2 + 36) = 0; if ( *((_DWORD *)v2 + 7) >= 0x10u ) operator delete(*((void **)v2 + 2)); *((_DWORD *)v2 + 7) = 15; *((_DWORD *)v2 + 6) = 0; *((_BYTE *)v2 + 8) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C65A0: using guessed type int (*off_4C65A0)(); //----- (00470DA0) -------------------------------------------------------- void __cdecl sub_470DA0(int a1, int a2) { unsigned int *i; // esi@1 for ( i = *(unsigned int **)a2; i != *(unsigned int **)(a2 + 4); ++i ) { if ( !sub_47D0E0(a1, *i, 12) ) (*(void (__stdcall **)(int))(*(_DWORD *)*i + 8))(a1); } } //----- (00470DE0) -------------------------------------------------------- int __cdecl sub_470DE0(int a1, const char *a2, int a3, int a4) { unsigned int *v4; // esi@1 signed int v5; // eax@2 int v6; // eax@3 int result; // eax@7 v4 = *(unsigned int **)a4; if ( *(_DWORD *)a4 == *(_DWORD *)(a4 + 4) ) { LABEL_7: result = 0; } else { while ( 1 ) { v5 = sub_48B090(a1, a2, a3, *v4, 0, 0, &byte_4B4667, 12); v6 = v5 >= 0 ? (*(int (__stdcall **)(int, const char *, signed int, char *))(*(_DWORD *)*v4 + 16))( a1, a2, v5, &byte_4B4667) : *(_DWORD *)(a1 + 102824); if ( v6 ) break; ++v4; if ( v4 == *(unsigned int **)(a4 + 4) ) goto LABEL_7; } result = *(_DWORD *)(a1 + 102824); } return result; } //----- (00470E50) -------------------------------------------------------- void __thiscall sub_470E50(void **this) { void **v1; // esi@1 v1 = this; if ( *this ) operator delete(*this); *v1 = 0; v1[1] = 0; v1[2] = 0; } //----- (00470E80) -------------------------------------------------------- void *__thiscall sub_470E80(void *this) { void *v1; // esi@1 void *v2; // ST18_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 8); *(_DWORD *)v2 = &off_4C65A0; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 14) = 15; *((_DWORD *)v1 + 13) = 0; *((_BYTE *)v1 + 36) = 0; *((_DWORD *)v1 + 17) = 0; *((_DWORD *)v1 + 1) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); sub_43D950((int)((char *)v1 + 36), 0, 0xFFFFFFFFu); *((_DWORD *)v1 + 16) = 0; return v1; } // 4C65A0: using guessed type int (*off_4C65A0)(); //----- (00470F10) -------------------------------------------------------- void *__thiscall sub_470F10(void *this) { void *v1; // esi@1 void *v2; // ST18_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C65C4; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 14) = 15; *((_DWORD *)v1 + 13) = 0; *((_BYTE *)v1 + 36) = 0; *((_DWORD *)v1 + 17) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); *((_DWORD *)v1 + 8) = 0; sub_43D950((int)((char *)v1 + 36), 0, 0xFFFFFFFFu); *((_WORD *)v1 + 32) = 0; return v1; } // 4C65C4: using guessed type int (*off_4C65C4)(); //----- (00470FA0) -------------------------------------------------------- void __thiscall sub_470FA0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4C6B24; if ( *(_DWORD *)(this + 4) ) operator delete(*(void **)(this + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; } // 4C6B24: using guessed type int (*off_4C6B24)(); //----- (00470FD0) -------------------------------------------------------- void *__thiscall sub_470FD0(void *this) { void *v1; // esi@1 void *v2; // ST18_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C65E8; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 13) = 15; *((_DWORD *)v1 + 12) = 0; *((_BYTE *)v1 + 32) = 0; *((_DWORD *)v1 + 15) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); sub_43D950((int)((char *)v1 + 32), 0, 0xFFFFFFFFu); return v1; } // 4C65E8: using guessed type int (*off_4C65E8)(); //----- (00471050) -------------------------------------------------------- void *__thiscall sub_471050(void *this) { void *v1; // esi@1 void *v2; // ST18_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C660C; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 13) = 15; *((_DWORD *)v1 + 12) = 0; *((_BYTE *)v1 + 32) = 0; *((_DWORD *)v1 + 15) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); sub_43D950((int)((char *)v1 + 32), 0, 0xFFFFFFFFu); return v1; } // 4C660C: using guessed type int (*off_4C660C)(); //----- (004710D0) -------------------------------------------------------- void *__thiscall sub_4710D0(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C6630; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C6630: using guessed type int (*off_4C6630)(); //----- (00471130) -------------------------------------------------------- void *__thiscall sub_471130(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C6654; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C6654: using guessed type int (*off_4C6654)(); //----- (00471190) -------------------------------------------------------- void *__thiscall sub_471190(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C6678; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C6678: using guessed type int (*off_4C6678)(); //----- (004711F0) -------------------------------------------------------- void *__thiscall sub_4711F0(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C669C; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C669C: using guessed type int (*off_4C669C)(); //----- (00471250) -------------------------------------------------------- void *__thiscall sub_471250(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C66C0; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C66C0: using guessed type int (*off_4C66C0)(); //----- (004712B0) -------------------------------------------------------- void *__thiscall sub_4712B0(void *this) { void *v1; // esi@1 void *v2; // ST18_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C66E4; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 13) = 15; *((_DWORD *)v1 + 12) = 0; *((_BYTE *)v1 + 32) = 0; *((_DWORD *)v1 + 15) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); sub_43D950((int)((char *)v1 + 32), 0, 0xFFFFFFFFu); return v1; } // 4C66E4: using guessed type int (*off_4C66E4)(); //----- (00471330) -------------------------------------------------------- void *__thiscall sub_471330(void *this) { void *v1; // esi@1 void *v2; // ST18_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C6708; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 13) = 15; *((_DWORD *)v1 + 12) = 0; *((_BYTE *)v1 + 32) = 0; *((_DWORD *)v1 + 15) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); sub_43D950((int)((char *)v1 + 32), 0, 0xFFFFFFFFu); return v1; } // 4C6708: using guessed type int (*off_4C6708)(); //----- (004713B0) -------------------------------------------------------- void *__thiscall sub_4713B0(void *this) { void *v1; // esi@1 void *v2; // ST14_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C672C; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 10) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); *((_DWORD *)v1 + 8) = 0; *((_DWORD *)v1 + 9) = 0; return v1; } // 4C672C: using guessed type int (*off_4C672C)(); //----- (00471420) -------------------------------------------------------- void *__thiscall sub_471420(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C6750; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C6750: using guessed type int (*off_4C6750)(); //----- (00471480) -------------------------------------------------------- void *__thiscall sub_471480(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C6774; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C6774: using guessed type int (*off_4C6774)(); //----- (004714E0) -------------------------------------------------------- void *__thiscall sub_4714E0(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C6798; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C6798: using guessed type int (*off_4C6798)(); //----- (00471540) -------------------------------------------------------- void *__thiscall sub_471540(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C67BC; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C67BC: using guessed type int (*off_4C67BC)(); //----- (004715A0) -------------------------------------------------------- void *__thiscall sub_4715A0(void *this) { void *v1; // esi@1 void *v2; // ST10_4@1 int v3; // ecx@1 v1 = this; v2 = this; v3 = (int)((char *)this + 4); *(_DWORD *)v2 = &off_4C67E0; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; *((_DWORD *)v1 + 8) = 0; sub_43D950(v3, 0, 0xFFFFFFFFu); return v1; } // 4C67E0: using guessed type int (*off_4C67E0)(); //----- (00471600) -------------------------------------------------------- int __cdecl sub_471600(int a1) { int v1; // eax@1 signed int v2; // edi@4 int v3; // ebx@4 int v4; // esi@5 v1 = a1; if ( *(_WORD *)(a1 + 6) != 1 || !*(_DWORD *)(a1 + 40) || *(_DWORD *)(a1 + 8) & 0x20020000 ) return 0; v2 = 0; v3 = a1 + 8108; while ( 1 ) { v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 ) break; LABEL_11: ++v2; v3 += 4; if ( v2 >= 4096 ) return 0; } while ( 1 ) { if ( *(_BYTE *)(v4 + 20) != 2 && *(_BYTE *)(v4 + 21) != 2 ) goto LABEL_10; if ( sub_46F6A0(v1, *(unsigned int **)(v4 + 4), "id", *(_DWORD *)(v4 + 16), *(_DWORD *)(v4 + 12)) ) return *(_DWORD *)(a1 + 102824); v1 = a1; LABEL_10: v4 = *(_DWORD *)v4; if ( !v4 ) goto LABEL_11; } } //----- (00471690) -------------------------------------------------------- int __thiscall sub_471690(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 29); if ( !a3 ) v4 = (int)"ns1:VoucherCodeInvalid"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (004716F0) -------------------------------------------------------- int __thiscall sub_4716F0(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 28); if ( !a3 ) v4 = (int)"ns1:TokenInvalid"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471750) -------------------------------------------------------- int __thiscall sub_471750(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 27); if ( !a3 ) v4 = (int)"ns1:TokenExpired"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (004717B0) -------------------------------------------------------- int __thiscall sub_4717B0(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 26); if ( !a3 ) v4 = (int)"ns1:IpCountryBlacklisted"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471810) -------------------------------------------------------- int __thiscall sub_471810(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 25); if ( !a3 ) v4 = (int)"ns1:IllegalItem"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471870) -------------------------------------------------------- int __thiscall sub_471870(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 24); if ( !a3 ) v4 = (int)"ns1:IllegalAmount"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (004718D0) -------------------------------------------------------- int __thiscall sub_4718D0(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 23); if ( !a3 ) v4 = (int)"ns1:InsufficentCash"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471930) -------------------------------------------------------- int __thiscall sub_471930(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 22); if ( !a3 ) v4 = (int)"ns1:SendFailed"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471990) -------------------------------------------------------- int __thiscall sub_471990(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 21); if ( !a3 ) v4 = (int)"ns1:TemplateParameterMissing"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (004719F0) -------------------------------------------------------- int __thiscall sub_4719F0(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 20); if ( !a3 ) v4 = (int)"ns1:TemplateNotFound"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471A50) -------------------------------------------------------- int __thiscall sub_471A50(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 19); if ( !a3 ) v4 = (int)"ns1:InfrastructureServiceError"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471AB0) -------------------------------------------------------- int __thiscall sub_471AB0(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 18); if ( !a3 ) v4 = (int)"ns1:AccountNotFound"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471B10) -------------------------------------------------------- int __thiscall sub_471B10(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 17); if ( !a3 ) v4 = (int)"ns1:getShopUrlResponse"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471B70) -------------------------------------------------------- int __thiscall sub_471B70(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 16); if ( !a3 ) v4 = (int)"ns1:getCashShopUrlRequest"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471BD0) -------------------------------------------------------- int __thiscall sub_471BD0(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 15); if ( !a3 ) v4 = (int)"ns1:getItemShopUrlRequest"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471C30) -------------------------------------------------------- int __thiscall sub_471C30(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 14); if ( !a3 ) v4 = (int)"ns1:getAccountForTokenResponse"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471C90) -------------------------------------------------------- int __thiscall sub_471C90(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 13); if ( !a3 ) v4 = (int)"ns1:getAccountForTokenRequest"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471CF0) -------------------------------------------------------- int __thiscall sub_471CF0(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 12); if ( !a3 ) v4 = (int)"ns1:property"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471D50) -------------------------------------------------------- void __thiscall sub_471D50(void *this, int a2) { sub_470DA0(a2, (int)((char *)this + 4)); } //----- (00471D70) -------------------------------------------------------- int __thiscall sub_471D70(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 11); if ( !a3 ) v4 = (int)"ns1:propertyList"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471DD0) -------------------------------------------------------- int __thiscall sub_471DD0(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x18u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_470FA0); if ( a2 & 1 ) sub_48DB99((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_4C6B24; if ( *((_DWORD *)this + 1) ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 1) = 0; *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 3) = 0; if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 4C6B24: using guessed type int (*off_4C6B24)(); //----- (00471E50) -------------------------------------------------------- int __thiscall sub_471E50(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 10); if ( !a3 ) v4 = (int)"ns1:itemInformationType"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471EB0) -------------------------------------------------------- int __thiscall sub_471EB0(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 9); if ( !a3 ) v4 = (int)"ns1:shoppingCartItem"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471F10) -------------------------------------------------------- int __thiscall sub_471F10(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 int result; // eax@4 v4 = a3; v5 = this; v6 = sub_481250(a2, (unsigned int)this, 0, 0, a3, 8); if ( !a3 ) v4 = (int)"ns1:noContent"; if ( (*(int (__thiscall **)(void *, int, int, int, int))(*(_DWORD *)v5 + 16))(v5, a2, v4, v6, a4) ) result = *(_DWORD *)(a2 + 102824); else result = sub_471600(a2); return result; } //----- (00471F70) -------------------------------------------------------- signed int __cdecl sub_471F70(int a1) { int v1; // esi@3 signed int result; // eax@6 void *v3; // eax@7 void *v4; // esi@8 int v5; // eax@9 void *v6; // ecx@13 int v7; // esi@26 unsigned int v8; // [sp-Ch] [bp-10h]@8 int v9; // [sp-8h] [bp-Ch]@8 void (__thiscall *v10)(void **); // [sp-4h] [bp-8h]@8 switch ( *(_DWORD *)(a1 + 8) ) { case 0x1E: case 0x1F: case 0x20: case 0x21: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: case 0x28: case 0x29: if ( *(_DWORD *)(a1 + 12) >= 0 ) { v3 = *(void **)(a1 + 4); if ( !v3 ) return 0; v4 = (char *)v3 - 4; v10 = (void (__thiscall *)(void **))loc_43DB70; v9 = *((_DWORD *)v3 - 1); v8 = 28; goto LABEL_32; } v1 = *(_DWORD *)(a1 + 4); if ( !v1 ) return 0; if ( *(_DWORD *)(v1 + 20) >= 0x10u ) operator delete(*(void **)v1); *(_DWORD *)(v1 + 20) = 15; *(_DWORD *)(v1 + 16) = 0; *(_BYTE *)v1 = 0; operator delete((void *)v1); return 0; case 8: case 9: case 0xA: case 0xB: case 0xC: case 0xD: case 0xE: case 0xF: case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1A: case 0x1B: case 0x1C: case 0x1D: v5 = *(_DWORD *)(a1 + 4); if ( *(_DWORD *)(a1 + 12) >= 0 ) { if ( !v5 ) return 0; v6 = (void *)(v5 - 4); if ( !*(_DWORD *)(v5 - 4) ) goto LABEL_21; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 28))(v5, 3); result = 0; } else { if ( !v5 ) return 0; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 28))(v5, 1); result = 0; } return result; case 0x2E: case 0x40: case 0x44: if ( *(_DWORD *)(a1 + 12) >= 0 ) { sub_48DB99(*(void **)(a1 + 4)); result = 0; } else { operator delete(*(void **)(a1 + 4)); result = 0; } return result; case 0x39: case 0x41: case 0x45: if ( *(_DWORD *)(a1 + 12) >= 0 ) { v6 = *(void **)(a1 + 4); LABEL_21: sub_48DB99(v6); result = 0; } else { operator delete(*(void **)(a1 + 4)); result = 0; } return result; case 0x3D: case 0x42: if ( *(_DWORD *)(a1 + 12) >= 0 ) { sub_48DB99(*(void **)(a1 + 4)); result = 0; } else { operator delete(*(void **)(a1 + 4)); result = 0; } return result; case 0x2D: if ( *(_DWORD *)(a1 + 12) >= 0 ) { v3 = *(void **)(a1 + 4); if ( v3 ) { v4 = (char *)v3 - 4; v10 = sub_470E50; v9 = *((_DWORD *)v3 - 1); v8 = 16; LABEL_32: _LN21(v3, v8, v9, (void (__thiscall *)(void *))v10); sub_48DB99(v4); } return 0; } v7 = *(_DWORD *)(a1 + 4); if ( !v7 ) return 0; if ( *(_DWORD *)v7 ) operator delete(*(void **)v7); *(_DWORD *)v7 = 0; *(_DWORD *)(v7 + 4) = 0; *(_DWORD *)(v7 + 8) = 0; operator delete((void *)v7); return 0; default: return -1; } } //----- (00472180) -------------------------------------------------------- int __cdecl sub_472180(int a1, int a2, int a3, int a4, int a5) { void *v5; // ebx@1 int v6; // eax@3 int v7; // ecx@8 int v8; // eax@8 int v9; // edi@8 v5 = sub_47D5C0(a1, 0, 30, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 >= 0 ) { v7 = 28 * a2 | -((unsigned __int8)(28 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v8 = unknown_libname_17((v7 + 4) | -__CFADD__(v7, 4)); v9 = 0; if ( v8 ) { v9 = v8 + 4; *(_DWORD *)v8 = a2; _eh_vector_constructor_iterator_((void *)(v8 + 4), 0x1Cu, a2, (int)sub_43DB50, loc_43DB70); } *((_DWORD *)v5 + 1) = v9; if ( v9 ) { if ( a5 ) *(_DWORD *)a5 = 28 * a2; return *((_DWORD *)v5 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v6 = operator new(0x1Cu); if ( v6 ) { *(_DWORD *)(v6 + 20) = 15; *(_DWORD *)(v6 + 16) = 0; *(_BYTE *)v6 = 0; } else { v6 = 0; } *((_DWORD *)v5 + 1) = v6; if ( a5 ) *(_DWORD *)a5 = 28; return *((_DWORD *)v5 + 1); } // 43DB50: using guessed type int sub_43DB50(); // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (004722B0) -------------------------------------------------------- int __cdecl sub_4722B0(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 29, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_4715A0, (void (__thiscall *)(void *))sub_46F660); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C67E0; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C67E0: using guessed type int (*off_4C67E0)(); //----- (00472420) -------------------------------------------------------- int __cdecl sub_472420(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 28, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_471540, (void (__thiscall *)(void *))sub_46F620); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C67BC; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C67BC: using guessed type int (*off_4C67BC)(); //----- (00472590) -------------------------------------------------------- int __cdecl sub_472590(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 27, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_4714E0, (void (__thiscall *)(void *))sub_46F5F0); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C6798; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C6798: using guessed type int (*off_4C6798)(); //----- (00472700) -------------------------------------------------------- int __cdecl sub_472700(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 26, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_471480, (void (__thiscall *)(void *))sub_46F5C0); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C6774; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C6774: using guessed type int (*off_4C6774)(); //----- (00472870) -------------------------------------------------------- int __cdecl sub_472870(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 25, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_471420, (void (__thiscall *)(void *))sub_46F590); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C6750; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C6750: using guessed type int (*off_4C6750)(); //----- (004729E0) -------------------------------------------------------- int __cdecl sub_4729E0(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // ecx@9 int v9; // eax@9 int v10; // edi@9 int v12; // eax@17 v5 = a2; v6 = sub_47D5C0(a1, 0, 24, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v8 = 12 * a2 | -((unsigned __int8)(12 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v9 = unknown_libname_17((v8 + 4) | -__CFADD__(v8, 4)); v10 = 0; if ( v9 ) { v10 = v9 + 4; *(_DWORD *)v9 = a2; _eh_vector_constructor_iterator_((void *)(v9 + 4), 0xCu, a2, (int)sub_46DD70, sub_46D3A0); } *((_DWORD *)v6 + 1) = v10; if ( v10 ) { if ( a5 ) *(_DWORD *)a5 = 12 * a2; if ( a2 > 0 ) { v12 = 0; do { *(_DWORD *)(v12 + *((_DWORD *)v6 + 1) + 8) = a1; v12 += 12; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0xCu); if ( v7 ) { *(_DWORD *)v7 = &off_4C639C; *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)(v7 + 4) = 0; } else { v7 = 0; } *((_DWORD *)v6 + 1) = v7; if ( a5 ) *(_DWORD *)a5 = 12; *(_DWORD *)(*((_DWORD *)v6 + 1) + 8) = a1; return *((_DWORD *)v6 + 1); } // 46DD70: using guessed type int sub_46DD70(); // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C639C: using guessed type int (*off_4C639C)(); //----- (00472B20) -------------------------------------------------------- int __cdecl sub_472B20(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 void *v7; // eax@3 void *v8; // eax@4 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 23, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 44 * a2 | -((unsigned __int8)(44 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x2Cu, a2, (int)sub_4713B0, (void (__thiscall *)(void *))sub_46F560); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 44 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(*((_DWORD *)v6 + 1) + v13 + 40) = a1; v13 += 44; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = (void *)operator new(0x2Cu); if ( v7 ) v8 = sub_4713B0(v7); else v8 = 0; *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 44; *(_DWORD *)(*((_DWORD *)v6 + 1) + 40) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00472C70) -------------------------------------------------------- int __cdecl sub_472C70(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 void *v7; // eax@3 void *v8; // eax@4 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 22, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = (a2 << 6) | -((unsigned __int64)(unsigned int)a2 >> 26 != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x40u, a2, (int)sub_471330, (void (__thiscall *)(void *))sub_46F500); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = a2 << 6; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(*((_DWORD *)v6 + 1) + v13 + 60) = a1; v13 += 64; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = (void *)operator new(0x40u); if ( v7 ) v8 = sub_471330(v7); else v8 = 0; *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 64; *(_DWORD *)(*((_DWORD *)v6 + 1) + 60) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00472DC0) -------------------------------------------------------- int __cdecl sub_472DC0(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 void *v7; // eax@3 void *v8; // eax@4 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 21, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = (a2 << 6) | -((unsigned __int64)(unsigned int)a2 >> 26 != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x40u, a2, (int)sub_4712B0, (void (__thiscall *)(void *))sub_46F4B0); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = a2 << 6; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(*((_DWORD *)v6 + 1) + v13 + 60) = a1; v13 += 64; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = (void *)operator new(0x40u); if ( v7 ) v8 = sub_4712B0(v7); else v8 = 0; *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 64; *(_DWORD *)(*((_DWORD *)v6 + 1) + 60) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00472F10) -------------------------------------------------------- int __cdecl sub_472F10(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 20, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_471250, (void (__thiscall *)(void *))sub_46F470); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C66C0; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C66C0: using guessed type int (*off_4C66C0)(); //----- (00473080) -------------------------------------------------------- int __cdecl sub_473080(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 19, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_4711F0, (void (__thiscall *)(void *))sub_46F430); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C669C; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C669C: using guessed type int (*off_4C669C)(); //----- (004731F0) -------------------------------------------------------- int __cdecl sub_4731F0(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 18, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_471190, (void (__thiscall *)(void *))sub_46F400); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C6678; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C6678: using guessed type int (*off_4C6678)(); //----- (00473360) -------------------------------------------------------- int __cdecl sub_473360(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 17, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_((void *)(v10 + 4), 0x24u, a2, (int)sub_43DDB0, loc_43DE10); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4B8ABC; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4B8ABC: using guessed type int (*off_4B8ABC)(); //----- (004734D0) -------------------------------------------------------- int __cdecl sub_4734D0(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 16, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_471130, (void (__thiscall *)(void *))sub_46F3C0); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C6654; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C6654: using guessed type int (*off_4C6654)(); //----- (00473640) -------------------------------------------------------- int __cdecl sub_473640(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 15, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_((void *)(v10 + 4), 0x24u, a2, (int)sub_43DD10, loc_43DD80); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4B8A98; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4B8A98: using guessed type int (*off_4B8A98)(); //----- (004737B0) -------------------------------------------------------- int __cdecl sub_4737B0(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 14, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x24u, a2, (int)sub_4710D0, (void (__thiscall *)(void *))sub_46F390); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 36 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(v13 + *((_DWORD *)v6 + 1) + 32) = a1; v13 += 36; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x24u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_4C6630; *(_DWORD *)(v7 + 24) = 15; *(_DWORD *)(v7 + 20) = 0; *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 32) = 0; sub_43D950(v7 + 4, 0, 0xFFFFFFFFu); } else { v8 = 0; } *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 36; *(_DWORD *)(*((_DWORD *)v6 + 1) + 32) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C6630: using guessed type int (*off_4C6630)(); //----- (00473920) -------------------------------------------------------- int __cdecl sub_473920(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 void *v7; // eax@3 void *v8; // eax@4 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 13, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = (a2 << 6) | -((unsigned __int64)(unsigned int)a2 >> 26 != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x40u, a2, (int)sub_471050, (void (__thiscall *)(void *))sub_46F330); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = a2 << 6; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(*((_DWORD *)v6 + 1) + v13 + 60) = a1; v13 += 64; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = (void *)operator new(0x40u); if ( v7 ) v8 = sub_471050(v7); else v8 = 0; *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 64; *(_DWORD *)(*((_DWORD *)v6 + 1) + 60) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00473A70) -------------------------------------------------------- int __cdecl sub_473A70(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 void *v7; // eax@3 void *v8; // eax@4 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 12, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = (a2 << 6) | -((unsigned __int64)(unsigned int)a2 >> 26 != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x40u, a2, (int)sub_470FD0, (void (__thiscall *)(void *))sub_46F2D0); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = a2 << 6; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(*((_DWORD *)v6 + 1) + v13 + 60) = a1; v13 += 64; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = (void *)operator new(0x40u); if ( v7 ) v8 = sub_470FD0(v7); else v8 = 0; *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 64; *(_DWORD *)(*((_DWORD *)v6 + 1) + 60) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00473BC0) -------------------------------------------------------- int __thiscall sub_473BC0(void *this, int a2, const char *a3, int a4, const char *a5) { void *v5; // edi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = sub_47D170(a2, a4, (unsigned int)this, 11); if ( sub_4899E0(a2, a3, v6, a5) || sub_470DE0(a2, "ns1:property", -1, (int)((char *)v5 + 4)) ) result = *(_DWORD *)(a2 + 102824); else result = sub_487710(a2, a3); return result; } //----- (00473C30) -------------------------------------------------------- int __cdecl sub_473C30(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 void *v7; // eax@3 void *v8; // eax@4 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 10, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 72 * a2 | -((unsigned __int8)(72 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x48u, a2, (int)sub_470F10, (void (__thiscall *)(void *))sub_46F280); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 72 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(*((_DWORD *)v6 + 1) + v13 + 68) = a1; v13 += 72; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = (void *)operator new(0x48u); if ( v7 ) v8 = sub_470F10(v7); else v8 = 0; *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 72; *(_DWORD *)(*((_DWORD *)v6 + 1) + 68) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00473D80) -------------------------------------------------------- int __cdecl sub_473D80(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 void *v7; // eax@3 void *v8; // eax@4 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@10 int v13; // eax@18 v5 = a2; v6 = sub_47D5C0(a1, 0, 9, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 72 * a2 | -((unsigned __int8)(72 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x48u, a2, (int)sub_470E80, (void (__thiscall *)(void *))sub_46F230); } else { v11 = 0; } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 72 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(*((_DWORD *)v6 + 1) + v13 + 68) = a1; v13 += 72; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = (void *)operator new(0x48u); if ( v7 ) v8 = sub_470E80(v7); else v8 = 0; *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 72; *(_DWORD *)(*((_DWORD *)v6 + 1) + 68) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00473ED0) -------------------------------------------------------- int __cdecl sub_473ED0(int a1, int a2, int a3, int a4, int a5) { void *v5; // ebx@1 int v6; // eax@3 int v7; // ecx@9 int v8; // eax@9 int v9; // edi@9 int i; // eax@16 v5 = sub_47D5C0(a1, 0, 8, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 >= 0 ) { v7 = 8 * a2 | -((unsigned __int64)(unsigned int)a2 >> 29 != 0); v8 = unknown_libname_17((v7 + 4) | -__CFADD__(v7, 4)); v9 = 0; if ( v8 ) { v9 = v8 + 4; *(_DWORD *)v8 = a2; _eh_vector_constructor_iterator_((void *)(v8 + 4), 8u, a2, (int)DNameNode::DNameNode, sub_46D380); } *((_DWORD *)v5 + 1) = v9; if ( v9 ) { if ( a5 ) *(_DWORD *)a5 = 8 * a2; for ( i = 0; i < a2; ++i ) *(_DWORD *)(*((_DWORD *)v5 + 1) + 8 * i + 4) = a1; return *((_DWORD *)v5 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v6 = operator new(8u); if ( v6 ) { *(_DWORD *)v6 = &off_4C6378; *(_DWORD *)(v6 + 4) = 0; } else { v6 = 0; } *((_DWORD *)v5 + 1) = v6; if ( a5 ) *(_DWORD *)a5 = 8; *(_DWORD *)(*((_DWORD *)v5 + 1) + 4) = a1; return *((_DWORD *)v5 + 1); } // 46DD60: using guessed type int DNameNode__DNameNode(); // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); // 4C6378: using guessed type int (*off_4C6378)(); //----- (00474010) -------------------------------------------------------- int __cdecl sub_474010(int a1, int a2, int a3, int a4, int a5) { void *v5; // edi@1 int v7; // eax@5 v5 = sub_47D5C0(a1, 0, 69, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 < 0 ) { *((_DWORD *)v5 + 1) = operator new(0x24u); if ( a5 ) { *(_DWORD *)a5 = 36; return *((_DWORD *)v5 + 1); } return *((_DWORD *)v5 + 1); } v7 = unknown_libname_17(36 * a2 | -((unsigned __int8)(36 * (unsigned __int64)(unsigned int)a2 >> 32) != 0)); *((_DWORD *)v5 + 1) = v7; if ( !v7 ) { *(_DWORD *)(a1 + 102824) = 20; return 0; } if ( a5 ) *(_DWORD *)a5 = 36 * a2; return *((_DWORD *)v5 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (004740B0) -------------------------------------------------------- int __cdecl sub_4740B0(int a1, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v7; // eax@5 v5 = sub_47D5C0(a1, 0, 68, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 < 0 ) { *((_DWORD *)v5 + 1) = operator new(4u); if ( a5 ) { *(_DWORD *)a5 = 4; return *((_DWORD *)v5 + 1); } return *((_DWORD *)v5 + 1); } v7 = unknown_libname_17(4 * a2 | -((unsigned __int64)(unsigned int)a2 >> 30 != 0)); *((_DWORD *)v5 + 1) = v7; if ( !v7 ) { *(_DWORD *)(a1 + 102824) = 20; return 0; } if ( a5 ) *(_DWORD *)a5 = 4 * a2; return *((_DWORD *)v5 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00474150) -------------------------------------------------------- int __cdecl sub_474150(int a1, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v7; // eax@5 v5 = sub_47D5C0(a1, 0, 66, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 < 0 ) { *((_DWORD *)v5 + 1) = operator new(8u); if ( a5 ) { *(_DWORD *)a5 = 8; return *((_DWORD *)v5 + 1); } return *((_DWORD *)v5 + 1); } v7 = unknown_libname_17(8 * a2 | -((unsigned __int64)(unsigned int)a2 >> 29 != 0)); *((_DWORD *)v5 + 1) = v7; if ( !v7 ) { *(_DWORD *)(a1 + 102824) = 20; return 0; } if ( a5 ) *(_DWORD *)a5 = 8 * a2; return *((_DWORD *)v5 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (004741F0) -------------------------------------------------------- int __cdecl sub_4741F0(int a1, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v7; // eax@5 v5 = sub_47D5C0(a1, 0, 65, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 < 0 ) { *((_DWORD *)v5 + 1) = operator new(1u); if ( a5 ) { *(_DWORD *)a5 = 1; return *((_DWORD *)v5 + 1); } return *((_DWORD *)v5 + 1); } v7 = unknown_libname_17(a2); *((_DWORD *)v5 + 1) = v7; if ( !v7 ) { *(_DWORD *)(a1 + 102824) = 20; return 0; } if ( a5 ) *(_DWORD *)a5 = a2; return *((_DWORD *)v5 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00474270) -------------------------------------------------------- int __cdecl sub_474270(int a1, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v7; // eax@5 v5 = sub_47D5C0(a1, 0, 64, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 < 0 ) { *((_DWORD *)v5 + 1) = operator new(4u); if ( a5 ) { *(_DWORD *)a5 = 4; return *((_DWORD *)v5 + 1); } return *((_DWORD *)v5 + 1); } v7 = unknown_libname_17(4 * a2 | -((unsigned __int64)(unsigned int)a2 >> 30 != 0)); *((_DWORD *)v5 + 1) = v7; if ( !v7 ) { *(_DWORD *)(a1 + 102824) = 20; return 0; } if ( a5 ) *(_DWORD *)a5 = 4 * a2; return *((_DWORD *)v5 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00474310) -------------------------------------------------------- int __cdecl sub_474310(int a1, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v7; // eax@5 v5 = sub_47D5C0(a1, 0, 61, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 < 0 ) { *((_DWORD *)v5 + 1) = operator new(4u); if ( a5 ) { *(_DWORD *)a5 = 4; return *((_DWORD *)v5 + 1); } return *((_DWORD *)v5 + 1); } v7 = unknown_libname_17(4 * a2 | -((unsigned __int64)(unsigned int)a2 >> 30 != 0)); *((_DWORD *)v5 + 1) = v7; if ( !v7 ) { *(_DWORD *)(a1 + 102824) = 20; return 0; } if ( a5 ) *(_DWORD *)a5 = 4 * a2; return *((_DWORD *)v5 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (004743B0) -------------------------------------------------------- int __cdecl sub_4743B0(int a1, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v7; // eax@5 v5 = sub_47D5C0(a1, 0, 57, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 < 0 ) { *((_DWORD *)v5 + 1) = operator new(4u); if ( a5 ) { *(_DWORD *)a5 = 4; return *((_DWORD *)v5 + 1); } return *((_DWORD *)v5 + 1); } v7 = unknown_libname_17(4 * a2 | -((unsigned __int64)(unsigned int)a2 >> 30 != 0)); *((_DWORD *)v5 + 1) = v7; if ( !v7 ) { *(_DWORD *)(a1 + 102824) = 20; return 0; } if ( a5 ) *(_DWORD *)a5 = 4 * a2; return *((_DWORD *)v5 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00474450) -------------------------------------------------------- int __cdecl sub_474450(int a1, int a2, int a3, int a4, int a5) { void *v5; // edi@1 int v7; // eax@5 v5 = sub_47D5C0(a1, 0, 46, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 < 0 ) { *((_DWORD *)v5 + 1) = operator new(0x20u); if ( a5 ) { *(_DWORD *)a5 = 32; return *((_DWORD *)v5 + 1); } return *((_DWORD *)v5 + 1); } v7 = unknown_libname_17(32 * a2 | -((unsigned __int64)(unsigned int)a2 >> 27 != 0)); *((_DWORD *)v5 + 1) = v7; if ( !v7 ) { *(_DWORD *)(a1 + 102824) = 20; return 0; } if ( a5 ) *(_DWORD *)a5 = 32 * a2; return *((_DWORD *)v5 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (004744F0) -------------------------------------------------------- void *__cdecl sub_4744F0(int a1, const char *a2, void *a3) { void *v4; // edi@3 int v5; // eax@7 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = sub_47D480(a1, 4u); if ( !v4 ) return 0; } *(_DWORD *)v4 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v4 = sub_47D630(a1, a1 + 94464, v4, 28, 36, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { sub_47E2D0(a1); v5 = sub_472420(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v4 = v5; if ( !v5 || ((*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 4))(v5, a1), !(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)v4 + 24))(a1, a2, 0)) ) return 0; } return v4; } //----- (004745D0) -------------------------------------------------------- void *__cdecl sub_4745D0(int a1, const char *a2, void *a3) { void *v4; // edi@3 int v5; // eax@7 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = sub_47D480(a1, 4u); if ( !v4 ) return 0; } *(_DWORD *)v4 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v4 = sub_47D630(a1, a1 + 94464, v4, 27, 36, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { sub_47E2D0(a1); v5 = sub_472590(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v4 = v5; if ( !v5 || ((*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 4))(v5, a1), !(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)v4 + 24))(a1, a2, 0)) ) return 0; } return v4; } //----- (004746B0) -------------------------------------------------------- void *__cdecl sub_4746B0(int a1, const char *a2, void *a3) { void *v4; // edi@3 int v5; // eax@7 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = sub_47D480(a1, 4u); if ( !v4 ) return 0; } *(_DWORD *)v4 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v4 = sub_47D630(a1, a1 + 94464, v4, 26, 36, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { sub_47E2D0(a1); v5 = sub_472700(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v4 = v5; if ( !v5 || ((*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 4))(v5, a1), !(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)v4 + 24))(a1, a2, 0)) ) return 0; } return v4; } //----- (00474790) -------------------------------------------------------- void *__cdecl sub_474790(int a1, const char *a2, void *a3) { void *v4; // edi@3 int v5; // eax@7 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = sub_47D480(a1, 4u); if ( !v4 ) return 0; } *(_DWORD *)v4 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v4 = sub_47D630(a1, a1 + 94464, v4, 19, 36, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { sub_47E2D0(a1); v5 = sub_473080(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v4 = v5; if ( !v5 || ((*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 4))(v5, a1), !(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)v4 + 24))(a1, a2, 0)) ) return 0; } return v4; } //----- (00474870) -------------------------------------------------------- void *__cdecl sub_474870(int a1, const char *a2, void *a3) { void *v4; // edi@3 int v5; // eax@7 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = sub_47D480(a1, 4u); if ( !v4 ) return 0; } *(_DWORD *)v4 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v4 = sub_47D630(a1, a1 + 94464, v4, 18, 36, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { sub_47E2D0(a1); v5 = sub_4731F0(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v4 = v5; if ( !v5 || ((*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 4))(v5, a1), !(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)v4 + 24))(a1, a2, 0)) ) return 0; } return v4; } //----- (00474950) -------------------------------------------------------- void *__cdecl sub_474950(int a1, const char *a2, void *a3) { void *v4; // edi@3 int v5; // eax@7 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = sub_47D480(a1, 4u); if ( !v4 ) return 0; } *(_DWORD *)v4 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v4 = sub_47D630(a1, a1 + 94464, v4, 12, 64, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { sub_47E2D0(a1); v5 = sub_473A70(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v4 = v5; if ( !v5 || ((*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 4))(v5, a1), !(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)v4 + 24))(a1, a2, 0)) ) return 0; } return v4; } //----- (00474A30) -------------------------------------------------------- int __cdecl sub_474A30(int a1, int a2, int a3, int a4, int a5) { void *v5; // ebx@1 int v6; // eax@3 int v7; // ecx@8 int v8; // eax@8 int v9; // edi@8 v5 = sub_47D5C0(a1, 0, 45, a2, (int)sub_471F70); if ( !v5 ) return 0; if ( a2 >= 0 ) { v7 = 16 * a2 | -((unsigned __int64)(unsigned int)a2 >> 28 != 0); v8 = unknown_libname_17((v7 + 4) | -__CFADD__(v7, 4)); v9 = 0; if ( v8 ) { v9 = v8 + 4; *(_DWORD *)v8 = a2; _eh_vector_constructor_iterator_( (void *)(v8 + 4), 0x10u, a2, (int)unknown_libname_1, (void (__thiscall *)(void *))sub_470E50); } *((_DWORD *)v5 + 1) = v9; if ( v9 ) { if ( a5 ) *(_DWORD *)a5 = 16 * a2; return *((_DWORD *)v5 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v6 = operator new(0x10u); if ( v6 ) { *(_DWORD *)v6 = 0; *(_DWORD *)(v6 + 4) = 0; *(_DWORD *)(v6 + 8) = 0; } else { v6 = 0; } *((_DWORD *)v5 + 1) = v6; if ( a5 ) *(_DWORD *)a5 = 16; return *((_DWORD *)v5 + 1); } // 46F1A0: using guessed type int unknown_libname_1(); // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00474B50) -------------------------------------------------------- int __thiscall sub_474B50(void *this, int a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // ecx@2 const void *v5; // eax@2 void *v6; // edi@2 const void *v7; // ecx@3 int v9; // edx@5 const void *v10; // edi@8 size_t v11; // ebx@8 int v12; // [sp+10h] [bp+8h]@2 v2 = a2; v3 = (int)this; if ( this != (void *)a2 ) { v4 = *(_DWORD *)(a2 + 4); v5 = *(const void **)a2; v6 = *(void **)v3; v12 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) >> 2; if ( v12 ) { v9 = (*(_DWORD *)(v3 + 4) - (signed int)v6) >> 2; if ( v12 <= (unsigned int)v9 ) { memmove_0(v6, v5, 4 * ((v4 - (signed int)v5) >> 2)); *(_DWORD *)(v3 + 4) = *(_DWORD *)v3 + 4 * ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2); return v3; } if ( v12 <= (unsigned int)((*(_DWORD *)(v3 + 8) - (signed int)v6) >> 2) ) { v10 = (char *)v5 + 4 * v9; memmove_0(*(void **)v3, v5, 4 * (4 * v9 >> 2)); v11 = 4 * ((*(_DWORD *)(v2 + 4) - (signed int)v10) >> 2); *(_DWORD *)(v3 + 4) = (char *)memmove_0(*(void **)(v3 + 4), v10, v11) + v11; return v3; } if ( v6 ) operator delete(v6); if ( sub_46F1B0(v3, (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2) ) *(_DWORD *)(v3 + 4) = sub_46F200(*(const void **)v2, *(_DWORD *)(v2 + 4), *(void **)v3); } else { v7 = *(const void **)(v3 + 4); if ( v6 != v7 ) { memmove_0(v6, v7, 0); *(_DWORD *)(v3 + 4) = v6; return v3; } } } return v3; } //----- (00474C80) -------------------------------------------------------- void __cdecl sub_474C80(int a1) { void *v1; // edi@2 int v2; // eax@3 void *v3; // edi@9 int v4; // eax@10 int v5; // eax@12 void *v6; // edi@15 int v7; // eax@16 if ( !*(_DWORD *)(a1 + 24504) ) { v1 = sub_47D5C0(a1, 0, 69, -1, (int)sub_471F70); if ( v1 ) { v2 = operator new(0x24u); *((_DWORD *)v1 + 1) = v2; } else { v2 = 0; } *(_DWORD *)(a1 + 24504) = v2; if ( !v2 ) return; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)(v2 + 8) = 0; *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 16) = 0; *(_DWORD *)(v2 + 20) = 0; *(_DWORD *)(v2 + 24) = 0; *(_DWORD *)(v2 + 28) = 0; *(_DWORD *)(v2 + 32) = 0; } if ( *(_WORD *)(a1 + 6) == 2 ) { if ( !*(_DWORD *)(*(_DWORD *)(a1 + 24504) + 16) ) { v3 = sub_47D5C0(a1, 0, 66, -1, (int)sub_471F70); if ( v3 ) { v4 = operator new(8u); *((_DWORD *)v3 + 1) = v4; } else { v4 = 0; } *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 16) = v4; v5 = *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 16); *(_DWORD *)v5 = 0; *(_DWORD *)(v5 + 4) = 0; } if ( *(_WORD *)(a1 + 6) == 2 && !*(_DWORD *)(*(_DWORD *)(a1 + 24504) + 20) ) { v6 = sub_47D5C0(a1, 0, 68, -1, (int)sub_471F70); if ( v6 ) { v7 = operator new(4u); *((_DWORD *)v6 + 1) = v7; } else { v7 = 0; } *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 20) = v7; **(_DWORD **)(*(_DWORD *)(a1 + 24504) + 20) = 0; } } } //----- (00474DA0) -------------------------------------------------------- int __cdecl sub_474DA0(int a1) { int result; // eax@2 sub_474C80(a1); if ( *(_WORD *)(a1 + 6) != 2 || (result = *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 16)) == 0 ) result = *(_DWORD *)(a1 + 24504); return result; } //----- (00474DD0) -------------------------------------------------------- int __cdecl sub_474DD0(int a1) { int result; // eax@1 void *v2; // eax@3 void *v3; // edi@3 int v4; // eax@5 sub_474C80(a1); result = *(_DWORD *)(a1 + 24504); if ( *(_WORD *)(a1 + 6) == 2 ) { if ( !*(_DWORD *)(*(_DWORD *)(result + 16) + 4) ) { v2 = sub_47D5C0(a1, 0, 66, -1, (int)sub_471F70); v3 = v2; if ( v2 ) { v2 = (void *)operator new(8u); *((_DWORD *)v3 + 1) = v2; } *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 24504) + 16) + 4) = v2; v4 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 24504) + 16) + 4); *(_DWORD *)v4 = 0; *(_DWORD *)(v4 + 4) = 0; } result = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 24504) + 16) + 4); } return result; } //----- (00474E60) -------------------------------------------------------- int __cdecl sub_474E60(int a1) { int v1; // eax@2 int v2; // eax@3 int result; // eax@4 sub_474C80(a1); if ( *(_WORD *)(a1 + 6) == 2 ) { v1 = *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 16); if ( v1 && (v2 = *(_DWORD *)(v1 + 4)) != 0 ) result = *(_DWORD *)v2; else result = 0; } else { result = **(_DWORD **)(a1 + 24504); } return result; } //----- (00474EA0) -------------------------------------------------------- int __cdecl sub_474EA0(int a1) { int v1; // eax@1 int result; // eax@2 sub_474C80(a1); v1 = *(_DWORD *)(a1 + 24504); if ( *(_WORD *)(a1 + 6) == 2 ) result = *(_DWORD *)(v1 + 20); else result = v1 + 4; return result; } //----- (00474ED0) -------------------------------------------------------- int __cdecl sub_474ED0(int a1) { int v1; // eax@3 int result; // eax@4 void *v3; // ebx@6 int v4; // eax@7 int v5; // eax@9 sub_474C80(a1); if ( *(_WORD *)(a1 + 6) == 1 ) { if ( !*(_DWORD *)(*(_DWORD *)(a1 + 24504) + 12) ) { *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 12) = sub_47D480(a1, 0x20u); v1 = *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 12); *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 0; *(_DWORD *)(v1 + 28) = 0; } result = *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 12); } else { if ( !*(_DWORD *)(*(_DWORD *)(a1 + 24504) + 32) ) { v3 = sub_47D5C0(a1, 0, 46, -1, (int)sub_471F70); if ( v3 ) { v4 = operator new(0x20u); *((_DWORD *)v3 + 1) = v4; } else { v4 = 0; } *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 32) = v4; v5 = *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 32); *(_DWORD *)v5 = 0; *(_DWORD *)(v5 + 4) = 0; *(_DWORD *)(v5 + 8) = 0; *(_DWORD *)(v5 + 12) = 0; *(_DWORD *)(v5 + 16) = 0; *(_DWORD *)(v5 + 20) = 0; *(_DWORD *)(v5 + 24) = 0; *(_DWORD *)(v5 + 28) = 0; } result = *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 32); } return result; } //----- (00474FB0) -------------------------------------------------------- int __cdecl sub_474FB0(int a1) { int result; // eax@2 sub_474C80(a1); if ( *(_WORD *)(a1 + 6) == 2 && (result = *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 32)) != 0 || (result = *(_DWORD *)(*(_DWORD *)(a1 + 24504) + 12)) != 0 ) result = *(_DWORD *)result; return result; } //----- (00474FF0) -------------------------------------------------------- void *__thiscall sub_474FF0(int this, void *a2) { void *result; // eax@1 int v3; // esi@1 const void *v4; // ecx@1 void *v5; // edi@1 result = a2; v3 = this; *(_DWORD *)(this + 20) = a2; v4 = *(const void **)(this + 8); v5 = *(void **)(v3 + 4); if ( v5 != v4 ) { result = memmove_0(v5, v4, 0); *(_DWORD *)(v3 + 8) = v5; } return result; } //----- (00475030) -------------------------------------------------------- int __cdecl sub_475030(int a1, const char *a2, int a3) { const char *v3; // edi@1 int v4; // ebx@2 void *v5; // ebx@3 int v6; // eax@4 bool v7; // zf@13 int v8; // ecx@13 void *v9; // eax@19 void *v10; // edi@19 void *v11; // ebx@22 int v12; // ecx@23 void *v13; // eax@24 void *v14; // eax@25 unsigned int v15; // eax@35 int v16; // edx@36 int v17; // ecx@37 signed int v18; // edi@37 int v19; // eax@38 int v20; // eax@39 int v21; // ecx@39 unsigned int v22; // ecx@41 int v23; // eax@46 int v24; // ecx@49 int v25; // eax@50 int v26; // eax@51 int v27; // ecx@51 unsigned int v28; // ecx@53 int v29; // eax@58 int v30; // eax@67 signed __int16 v32; // [sp+14h] [bp-14h]@9 signed int v33; // [sp+14h] [bp-14h]@37 int v34; // [sp+18h] [bp-10h]@13 int v35; // [sp+24h] [bp-4h]@24 v3 = a2; if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v5 = sub_47D5C0(a1, a3, 45, -1, (int)sub_471F70); if ( !v5 || ((v6 = operator new(0x10u)) == 0 ? (v6 = 0) : (*(_DWORD *)v6 = 0, *(_DWORD *)(v6 + 4) = 0, *(_DWORD *)(v6 + 8) = 0), *((_DWORD *)v5 + 1) = v6, (a3 = v6) == 0) ) return 0; v4 = v6; } v32 = 0; while ( 1 ) { if ( v3 && *v3 != 45 ) sub_47E2D0(a1); v7 = *(_BYTE *)(a1 + 93440) == 0; v8 = a1 + 93440; v34 = 0; if ( !v7 ) break; v8 = a1 + 94464; if ( *(_BYTE *)(a1 + 94464) ) break; if ( !sub_474950(a1, v3, &v34) ) goto LABEL_66; LABEL_35: v15 = *(_DWORD *)(v4 + 4); if ( (unsigned int)&v34 >= v15 || (v16 = *(_DWORD *)v4, *(_DWORD *)v4 > (unsigned int)&v34) ) { v24 = *(_DWORD *)(v4 + 8); if ( v15 == v24 ) { v25 = (signed int)(v15 - *(_DWORD *)v4) >> 2; if ( (unsigned int)v25 > 0x3FFFFFFE ) LABEL_64: sub_48B49E((int)"vector too long"); v26 = v25 + 1; v27 = (v24 - *(_DWORD *)v4) >> 2; if ( v26 > (unsigned int)v27 ) { if ( 1073741823 - ((unsigned int)v27 >> 1) >= v27 ) v28 = ((unsigned int)v27 >> 1) + v27; else v28 = 0; if ( v28 < v26 ) v28 = v26; sub_43DBA0(v4, v28); v3 = a2; } } v29 = *(_DWORD *)(v4 + 4); if ( v29 ) *(_DWORD *)v29 = v34; } else { v17 = *(_DWORD *)(v4 + 8); v18 = (signed int)((char *)&v34 - v16) >> 2; v33 = (signed int)((char *)&v34 - v16) >> 2; if ( v15 == v17 ) { v19 = (signed int)(v15 - v16) >> 2; if ( (unsigned int)v19 > 0x3FFFFFFE ) goto LABEL_64; v20 = v19 + 1; v21 = (v17 - v16) >> 2; if ( v20 > (unsigned int)v21 ) { if ( 1073741823 - ((unsigned int)v21 >> 1) >= v21 ) v22 = ((unsigned int)v21 >> 1) + v21; else v22 = 0; if ( v22 < v20 ) v22 = v20; sub_43DBA0(v4, v22); v18 = v33; } } v23 = *(_DWORD *)(v4 + 4); if ( v23 ) *(_DWORD *)v23 = *(_DWORD *)(*(_DWORD *)v4 + 4 * v18); v3 = a2; } *(_DWORD *)(v4 + 4) += 4; v32 = 1; if ( !v3 || *v3 == 45 || sub_487800(a1, v3, 1, 0) ) goto LABEL_67; } if ( !sub_481410( a1, (const char *)v8, (void *)v4, (*(_DWORD *)(v4 + 4) - *(_DWORD *)v4) >> 2, 12, 45, 0x40u, 1, (int)sub_46DE70) || sub_487800(a1, v3, 1, 0) || (v9 = sub_47D480(a1, 4u), (v10 = v9) == 0) ) goto LABEL_66; *(_DWORD *)v9 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v10 = sub_47D630(a1, a1 + 94464, v9, 12, 64, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) goto LABEL_66; goto LABEL_33; } sub_47E2D0(a1); v11 = sub_47D5C0(a1, 0, 12, -1, (int)sub_471F70); if ( v11 ) { v13 = (void *)operator new(0x40u); v35 = 1; if ( v13 ) v14 = sub_470FD0(v13); else v14 = 0; *((_DWORD *)v11 + 1) = v14; *((_DWORD *)v14 + 15) = a1; v12 = *((_DWORD *)v11 + 1); v35 = -1; } else { v12 = 0; } *(_DWORD *)v10 = v12; if ( v12 ) { (*(void (__stdcall **)(int))(*(_DWORD *)v12 + 4))(a1); if ( (*(int (__stdcall **)(int, const char *, _DWORD))(**(_DWORD **)v10 + 24))(a1, a2, 0) ) { v4 = a3; LABEL_33: if ( !v10 ) goto LABEL_66; v3 = a2; goto LABEL_35; } } v4 = a3; LABEL_66: if ( !v32 ) return 0; LABEL_67: v30 = *(_DWORD *)(a1 + 102824); if ( v30 == 3 || v30 == 6 ) { *(_DWORD *)(a1 + 102824) = 0; return v4; } return 0; } //----- (004753B0) -------------------------------------------------------- int __thiscall sub_4753B0(int this) { int v1; // esi@1 const void *v2; // ecx@1 void *v3; // edi@1 v1 = this; *(_DWORD *)this = &off_4C6B24; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 20) = 0; v2 = *(const void **)(this + 8); v3 = *(void **)(v1 + 4); if ( v3 != v2 ) { memmove_0(v3, v2, 0); *(_DWORD *)(v1 + 8) = v3; } return v1; } // 4C6B24: using guessed type int (*off_4C6B24)(); //----- (00475400) -------------------------------------------------------- int __cdecl sub_475400(int a1, int a2, int a3, void *a4, int a5, int a6) { return sub_43DC20(a4, a6, 0, 0xFFFFFFFFu); } //----- (00475420) -------------------------------------------------------- int __cdecl sub_475420(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 int v8; // eax@4 int v9; // ecx@9 int v10; // eax@9 int v11; // edi@9 int v13; // eax@17 v5 = a2; v6 = sub_47D5C0(a1, 0, 11, a2, (int)sub_471F70); if ( !v6 ) return 0; if ( a2 >= 0 ) { v9 = 24 * a2 | -((unsigned __int8)(24 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v10 = unknown_libname_17((v9 + 4) | -__CFADD__(v9, 4)); v11 = 0; if ( v10 ) { v11 = v10 + 4; *(_DWORD *)v10 = a2; _eh_vector_constructor_iterator_( (void *)(v10 + 4), 0x18u, a2, (int)sub_4753B0, (void (__thiscall *)(void *))sub_470FA0); } *((_DWORD *)v6 + 1) = v11; if ( v11 ) { if ( a5 ) *(_DWORD *)a5 = 24 * a2; if ( a2 > 0 ) { v13 = 0; do { *(_DWORD *)(*((_DWORD *)v6 + 1) + v13 + 20) = a1; v13 += 24; --v5; } while ( v5 ); } return *((_DWORD *)v6 + 1); } *(_DWORD *)(a1 + 102824) = 20; return 0; } v7 = operator new(0x18u); if ( v7 ) v8 = sub_4753B0(v7); else v8 = 0; *((_DWORD *)v6 + 1) = v8; if ( a5 ) *(_DWORD *)a5 = 24; *(_DWORD *)(*((_DWORD *)v6 + 1) + 20) = a1; return *((_DWORD *)v6 + 1); } // 48B471: using guessed type int __cdecl unknown_libname_17(_DWORD); //----- (00475560) -------------------------------------------------------- int __cdecl sub_475560(int a1, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 result = sub_474B50((void *)(a4 + 4), a6 + 4); *(_DWORD *)(a4 + 20) = *(_DWORD *)(a6 + 20); return result; } //----- (00475590) -------------------------------------------------------- int __cdecl sub_475590(int a1, int a2, int a3, int a4, int a5) { int result; // eax@2 switch ( a2 ) { case 30: case 33: case 37: case 40: result = sub_472180(a1, -1, a3, a4, a5); break; case 8: result = sub_473ED0(a1, -1, a3, a4, a5); break; case 9: result = sub_473D80(a1, -1, a3, a4, a5); break; case 10: result = sub_473C30(a1, -1, a3, a4, a5); break; case 11: result = sub_475420(a1, -1, a3, a4, a5); break; case 12: result = sub_473A70(a1, -1, a3, a4, a5); break; case 13: result = sub_473920(a1, -1, a3, a4, a5); break; case 14: result = sub_4737B0(a1, -1, a3, a4, a5); break; case 15: result = sub_473640(a1, -1, a3, a4, a5); break; case 16: result = sub_4734D0(a1, -1, a3, a4, a5); break; case 17: result = sub_473360(a1, -1, a3, a4, a5); break; case 18: result = sub_4731F0(a1, -1, a3, a4, a5); break; case 19: result = sub_473080(a1, -1, a3, a4, a5); break; case 20: result = sub_472F10(a1, -1, a3, a4, a5); break; case 21: result = sub_472DC0(a1, -1, a3, a4, a5); break; case 22: result = sub_472C70(a1, -1, a3, a4, a5); break; case 23: result = sub_472B20(a1, -1, a3, a4, a5); break; case 24: result = sub_4729E0(a1, -1, a3, a4, a5); break; case 25: result = sub_472870(a1, -1, a3, a4, a5); break; case 26: result = sub_472700(a1, -1, a3, a4, a5); break; case 27: result = sub_472590(a1, -1, a3, a4, a5); break; case 28: result = sub_472420(a1, -1, a3, a4, a5); break; case 29: result = sub_4722B0(a1, -1, a3, a4, a5); break; case 46: result = sub_474450(a1, -1, a3, a4, a5); break; case 57: result = sub_4743B0(a1, -1, a3, a4, a5); break; case 61: result = sub_474310(a1, -1, a3, a4, a5); break; case 64: result = sub_474270(a1, -1, a3, a4, a5); break; case 65: result = sub_4741F0(a1, -1, a3, a4, a5); break; case 66: result = sub_474150(a1, -1, a3, a4, a5); break; case 68: result = sub_4740B0(a1, -1, a3, a4, a5); break; case 69: result = sub_474010(a1, -1, a3, a4, a5); break; case 31: case 35: case 38: case 41: result = sub_472180(a1, -1, a3, a4, a5); break; case 32: case 36: case 39: result = sub_472180(a1, -1, a3, a4, a5); break; case 45: result = sub_474A30(a1, -1, a3, a4, a5); break; default: result = 0; break; } return result; } //----- (00475A40) -------------------------------------------------------- void *__cdecl sub_475A40(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 41, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 41, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 41, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 1, 50); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00475BD0) -------------------------------------------------------- void *__cdecl sub_475BD0(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 40, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 40, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 40, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 1, 50); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00475D60) -------------------------------------------------------- void *__cdecl sub_475D60(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 39, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 39, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 39, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 1, 1000); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00475F00) -------------------------------------------------------- void *__cdecl sub_475F00(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 38, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 38, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 38, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 0, -1); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00476090) -------------------------------------------------------- void *__cdecl sub_476090(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 37, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 37, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 37, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 1, 50); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00476220) -------------------------------------------------------- void *__cdecl sub_476220(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 36, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 36, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 36, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 1, 36); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (004763B0) -------------------------------------------------------- void *__cdecl sub_4763B0(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 35, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 35, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 35, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 1, 36); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00476540) -------------------------------------------------------- void *__cdecl sub_476540(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 33, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 33, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 33, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 1, 36); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (004766D0) -------------------------------------------------------- void *__cdecl sub_4766D0(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 32, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 32, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 32, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 0, -1); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00476860) -------------------------------------------------------- void *__cdecl sub_476860(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 31, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 31, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 31, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 1, 100); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (004769F0) -------------------------------------------------------- void *__cdecl sub_4769F0(int a1, const char *a2, int a3) { int v4; // edi@3 int v5; // eax@5 void *v6; // edi@14 int v7; // eax@15 int v8; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) return 0; v4 = a3; if ( !a3 ) { v4 = (int)sub_47D5C0(a1, a3, 30, -1, (int)sub_471F70); if ( v4 ) { v5 = operator new(0x1Cu); if ( v5 ) { *(_DWORD *)(v5 + 20) = 15; *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)v5 = 0; } else { v5 = 0; } *(_DWORD *)(v4 + 4) = v5; v4 = v5; } } if ( *(_WORD *)(a1 + 99664) && v4 ) sub_43D950(v4, 0, 0xFFFFFFFFu); if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v8 = sub_47D7E0(a1, a1 + 93440, v4, 30, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = sub_481410(a1, (const char *)(a1 + 94464), (void *)v8, 0, 30, 0, 0x1Cu, 0, (int)sub_475400); } else { v6 = (void *)sub_47D7E0(a1, a1 + 93440, v4, 30, 0x1Cu, 0, a1 + 95488, a1 + 96512, sub_475590); if ( v6 ) { v7 = sub_4850A0(a1, 1, 0, -1); if ( !v7 ) return 0; sub_43E050((int)v6, (char *)v7); } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00476B80) -------------------------------------------------------- int __cdecl sub_476B80(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 void *v8; // eax@10 signed int v9; // eax@11 int v10; // eax@16 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 24, 0xCu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 24 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 24, 0, 0xCu, 0, (int)sub_46DF00); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_24; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; v8 = sub_487C20(a1, "ns1:amount", (int)((char *)v6 + 4), "ns1:cashCurrencyAmountType", 34); if ( !v8 ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_16; break; } v9 = *(_DWORD *)v8; if ( (unsigned int)v9 < 0x80000000 || v9 > 2147483647 ) { *(_DWORD *)(a1 + 102824) = 45; return 0; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_16: v10 = *(_DWORD *)(a1 + 102824); if ( v10 == 6 ) break; if ( v10 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_24: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00476D40) -------------------------------------------------------- int __cdecl sub_476D40(int a1, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 sub_43DC20((void *)(a4 + 4), a6 + 4, 0, 0xFFFFFFFFu); *(_DWORD *)(a4 + 32) = *(_DWORD *)(a6 + 32); *(_DWORD *)(a4 + 36) = *(_DWORD *)(a6 + 36); result = *(_DWORD *)(a6 + 40); *(_DWORD *)(a4 + 40) = result; return result; } //----- (00476D80) -------------------------------------------------------- int __cdecl sub_476D80(int a1, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 result = sub_43DC20((void *)(a4 + 4), a6 + 4, 0, 0xFFFFFFFFu); *(_DWORD *)(a4 + 32) = *(_DWORD *)(a6 + 32); return result; } //----- (00476DB0) -------------------------------------------------------- int __cdecl sub_476DB0(int a1, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 sub_43DC20((void *)(a4 + 4), a6 + 4, 0, 0xFFFFFFFFu); result = sub_43DC20((void *)(a4 + 32), a6 + 32, 0, 0xFFFFFFFFu); *(_DWORD *)(a4 + 60) = *(_DWORD *)(a6 + 60); return result; } //----- (00476DF0) -------------------------------------------------------- int __cdecl sub_476DF0(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 int v7; // eax@12 const char *v8; // [sp-Ch] [bp-10h]@15 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 11, 0x18u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 11 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 11, 0, 0x18u, 0, (int)sub_475560); if ( !*(_WORD *)(a1 + 24806) ) return (int)v6; v8 = a2; } else { while ( 1 ) { do *(_DWORD *)(a1 + 102824) = 3; while ( sub_475030(a1, "ns1:property", (int)((char *)v6 + 4)) ); if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); v7 = *(_DWORD *)(a1 + 102824); if ( v7 == 6 ) break; if ( v7 ) return 0; } v8 = a2; } if ( sub_483EA0(a1, v8) ) return 0; return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00476F50) -------------------------------------------------------- int __cdecl sub_476F50(int a1, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 sub_43DC20((void *)(a4 + 4), a6 + 4, 0, 0xFFFFFFFFu); *(_DWORD *)(a4 + 32) = *(_DWORD *)(a6 + 32); result = sub_43DC20((void *)(a4 + 36), a6 + 36, 0, 0xFFFFFFFFu); LOBYTE(result) = *(_BYTE *)(a6 + 64); *(_BYTE *)(a4 + 64) = result; *(_BYTE *)(a4 + 65) = *(_BYTE *)(a6 + 65); *(_DWORD *)(a4 + 68) = *(_DWORD *)(a6 + 68); return result; } //----- (00476FA0) -------------------------------------------------------- int __cdecl sub_476FA0(int a1, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 *(_DWORD *)(a4 + 4) = *(_DWORD *)(a6 + 4); sub_43DC20((void *)(a4 + 8), a6 + 8, 0, 0xFFFFFFFFu); sub_43DC20((void *)(a4 + 36), a6 + 36, 0, 0xFFFFFFFFu); result = *(_DWORD *)(a6 + 64); *(_DWORD *)(a4 + 64) = result; *(_DWORD *)(a4 + 68) = *(_DWORD *)(a6 + 68); return result; } //----- (00476FF0) -------------------------------------------------------- int __cdecl sub_476FF0(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 int v7; // eax@9 const char *v8; // [sp-Ch] [bp-10h]@12 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 8, 8u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 8 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 8, 0, 8u, 0, (int)sub_46DF70); if ( !*(_WORD *)(a1 + 24806) ) return (int)v6; v8 = a2; } else { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; v7 = sub_46D3C0(a1); *(_DWORD *)(a1 + 102824) = v7; if ( v7 == 6 ) break; if ( v7 ) return 0; } v8 = a2; } if ( sub_483EA0(a1, v8) ) return 0; return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00477120) -------------------------------------------------------- int __cdecl sub_477120(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 29, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 29 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 29, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476220(a1, "ns1:code", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (004772B0) -------------------------------------------------------- int __cdecl sub_4772B0(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 28, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 28 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 28, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476860(a1, "ns1:token", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00477440) -------------------------------------------------------- int __cdecl sub_477440(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 27, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 27 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 27, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476860(a1, "ns1:token", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (004775D0) -------------------------------------------------------- int __cdecl sub_4775D0(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 26, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 26 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 26, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_4766D0(a1, "ns1:ip", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00477760) -------------------------------------------------------- int __cdecl sub_477760(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 25, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 25 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 25, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_4763B0(a1, "ns1:itemId", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (004778F0) -------------------------------------------------------- int __thiscall sub_4778F0(int this, int a2, const char *a3, int a4) { return sub_476B80(a2, a3, this, a4); } //----- (00477910) -------------------------------------------------------- int __cdecl sub_477910(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 int v7; // eax@22 signed int v8; // [sp+4h] [bp-Ch]@7 signed int v9; // [sp+8h] [bp-8h]@7 signed int v10; // [sp+Ch] [bp-4h]@7 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 23, 0x2Cu, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 23 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v10 = 1; v9 = 1; v8 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 23, 0, 0x2Cu, 0, (int)sub_476D40); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_29; return 0; } while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v10 ) break; if ( !sub_476540(a1, "ns1:accountId", (int)((char *)v6 + 4)) ) break; --v10; } if ( !v9 || *(_DWORD *)(a1 + 102824) != 3 || !sub_46D540(a1, "ns1:requestedAmount", (int)((char *)v6 + 32), "ns1:cashCurrencyAmountType") ) break; --v9; } if ( !v8 ) break; if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_22; if ( !sub_46D540(a1, "ns1:currentBalance", (int)((char *)v6 + 36), "ns1:cashCurrencyAmountType") ) break; --v8; } if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_22: v7 = *(_DWORD *)(a1 + 102824); if ( v7 == 6 ) break; if ( v7 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_29: if ( *(_DWORD *)(a1 + 8) & 0x1000 && (v10 || v9 || v8) ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00477B30) -------------------------------------------------------- int __cdecl sub_477B30(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@13 int v9; // eax@19 signed int v10; // [sp+4h] [bp-4h]@7 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 22, 0x40u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 22 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; v10 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 22, 0, 0x40u, 0, (int)sub_476DB0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { while ( 1 ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476540(a1, "ns1:accountId", (int)((char *)v6 + 4)) ) break; --v7; } if ( !v10 ) break; v8 = *(_DWORD *)(a1 + 102824); if ( v8 != 3 ) { if ( v8 != 6 ) break; } if ( !sub_476090(a1, "ns1:template", (int)((char *)v6 + 32)) ) break; --v10; } if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); v9 = *(_DWORD *)(a1 + 102824); if ( v9 == 6 ) break; if ( v9 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; } if ( *(_DWORD *)(a1 + 8) & 0x1000 && (v7 || (unsigned int)v10 > 0) ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00477D10) -------------------------------------------------------- int __cdecl sub_477D10(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@13 int v9; // eax@19 signed int v10; // [sp+4h] [bp-4h]@7 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 21, 0x40u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 21 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; v10 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 21, 0, 0x40u, 0, (int)sub_476DB0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { while ( 1 ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476090(a1, "ns1:template", (int)((char *)v6 + 4)) ) break; --v7; } if ( !v10 ) break; v8 = *(_DWORD *)(a1 + 102824); if ( v8 != 3 ) { if ( v8 != 6 ) break; } if ( !sub_475F00(a1, "ns1:parameter", (int)((char *)v6 + 32)) ) break; --v10; } if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); v9 = *(_DWORD *)(a1 + 102824); if ( v9 == 6 ) break; if ( v9 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; } if ( *(_DWORD *)(a1 + 8) & 0x1000 && (v7 || (unsigned int)v10 > 0) ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00477EF0) -------------------------------------------------------- int __cdecl sub_477EF0(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 20, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 20 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 20, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476090(a1, "ns1:template", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00478080) -------------------------------------------------------- int __cdecl sub_478080(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 19, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 19 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 19, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_475D60(a1, "ns1:message", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00478210) -------------------------------------------------------- int __cdecl sub_478210(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 18, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 18 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 18, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476540(a1, "ns1:accountId", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (004783A0) -------------------------------------------------------- int __cdecl sub_4783A0(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 17, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 17 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 17, 0, 0x24u, 0, (int)sub_476D80); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_4769F0(a1, "ns1:url", (int)((char *)v6 + 4)) ) break; --v7; } sub_488FD0(a1); if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; } if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00478550) -------------------------------------------------------- int __cdecl sub_478550(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 16, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 16 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 16, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476540(a1, "ns1:accountId", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (004786E0) -------------------------------------------------------- int __cdecl sub_4786E0(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 15, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 15 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 15, 0, 0x24u, 0, (int)sub_476D80); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_21; return 0; } while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476540(a1, "ns1:accountId", (int)((char *)v6 + 4)) ) { if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_14; break; } --v7; } *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_14: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_21: if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00478870) -------------------------------------------------------- int __cdecl sub_478870(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@14 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 14, 0x24u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 14 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 14, 0, 0x24u, 0, (int)sub_476D80); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476540(a1, "ns1:accountId", (int)((char *)v6 + 4)) ) break; --v7; } sub_488FD0(a1); if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; } if ( *(_DWORD *)(a1 + 8) & 0x1000 && v7 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00478A20) -------------------------------------------------------- int __cdecl sub_478A20(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@13 int v9; // eax@19 signed int v10; // [sp+4h] [bp-4h]@7 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 13, 0x40u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 13 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; v10 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 13, 0, 0x40u, 0, (int)sub_476DB0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { while ( 1 ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_476860(a1, "ns1:ssoToken", (int)((char *)v6 + 4)) ) break; --v7; } if ( !v10 ) break; v8 = *(_DWORD *)(a1 + 102824); if ( v8 != 3 ) { if ( v8 != 6 ) break; } if ( !sub_4766D0(a1, "ns1:clientIp", (int)((char *)v6 + 32)) ) break; --v10; } if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); v9 = *(_DWORD *)(a1 + 102824); if ( v9 == 6 ) break; if ( v9 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; } if ( *(_DWORD *)(a1 + 8) & 0x1000 && (v7 || (unsigned int)v10 > 0) ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00478C00) -------------------------------------------------------- int __cdecl sub_478C00(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 signed int v7; // ebx@7 int v8; // eax@13 int v9; // eax@19 signed int v10; // [sp+4h] [bp-4h]@7 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 12, 0x40u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 12 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v7 = 1; v10 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 12, 0, 0x40u, 0, (int)sub_476DB0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { while ( 1 ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v7 ) break; if ( !sub_475F00(a1, "ns1:key", (int)((char *)v6 + 4)) ) break; --v7; } if ( !v10 ) break; v8 = *(_DWORD *)(a1 + 102824); if ( v8 != 3 ) { if ( v8 != 6 ) break; } if ( !sub_4769F0(a1, "ns1:value", (int)((char *)v6 + 32)) ) break; --v10; } if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); v9 = *(_DWORD *)(a1 + 102824); if ( v9 == 6 ) break; if ( v9 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; } if ( *(_DWORD *)(a1 + 8) & 0x1000 && (v7 || (unsigned int)v10 > 0) ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00478DE0) -------------------------------------------------------- int __thiscall sub_478DE0(int this, int a2, const char *a3, int a4) { return sub_476DF0(a2, a3, this, a4); } //----- (00478E00) -------------------------------------------------------- int __cdecl sub_478E00(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 int v7; // eax@17 int v8; // eax@31 signed int v9; // [sp+4h] [bp-14h]@7 signed int v10; // [sp+8h] [bp-10h]@7 signed int v11; // [sp+Ch] [bp-Ch]@7 signed int v12; // [sp+10h] [bp-8h]@7 signed int v13; // [sp+14h] [bp-4h]@7 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 10, 0x48u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 10 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v13 = 1; v12 = 1; v11 = 1; v10 = 1; v9 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 10, 0, 0x48u, 0, (int)sub_476F50); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_38; return 0; } while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v13 ) break; if ( !sub_4763B0(a1, "ns1:itemId", (int)((char *)v6 + 4)) ) break; --v13; } if ( !v12 || *(_DWORD *)(a1 + 102824) != 3 || !sub_46D540(a1, "ns1:price", (int)((char *)v6 + 32), "ns1:cashCurrencyAmountType") ) break; --v12; } if ( !v11 ) break; v7 = *(_DWORD *)(a1 + 102824); if ( v7 != 3 ) { if ( v7 != 6 ) break; } if ( !sub_4769F0(a1, "ns1:description", (int)((char *)v6 + 36)) ) break; --v11; } if ( !v10 || *(_DWORD *)(a1 + 102824) != 3 || !sub_46D6B0(a1, "ns1:purchasable", (int)((char *)v6 + 64), "xsd:boolean") ) break; --v10; } if ( !v9 ) break; if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_31; if ( !sub_46D6B0(a1, "ns1:visible", (int)((char *)v6 + 65), "xsd:boolean") ) break; --v9; } if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_31: v8 = *(_DWORD *)(a1 + 102824); if ( v8 == 6 ) break; if ( v8 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_38: if ( *(_DWORD *)(a1 + 8) & 0x1000 && (v13 || v12 || v11 || v10 || v9) ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (004790B0) -------------------------------------------------------- int __cdecl sub_4790B0(int a1, const char *a2, int a3, int a4) { int v5; // eax@3 void *v6; // edi@3 int v7; // eax@13 int v8; // eax@18 int v9; // eax@28 signed int v10; // [sp+4h] [bp-10h]@7 signed int v11; // [sp+8h] [bp-Ch]@7 signed int v12; // [sp+Ch] [bp-8h]@7 signed int v13; // [sp+10h] [bp-4h]@7 if ( sub_487800(a1, a2, 0, 0) ) return 0; v5 = sub_47D7E0(a1, a1 + 93440, a3, 9, 0x48u, 0, a1 + 95488, a1 + 96512, sub_475590); v6 = (void *)v5; if ( !v5 ) return 0; if ( *(_WORD *)(a1 + 99676) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 4))(v5, a1); if ( *(_DWORD *)(*(_DWORD *)(a1 + 104) + 8) != 9 ) { sub_47E2D0(a1); *(_BYTE *)(a1 + 93440) = 0; return (*(int (__thiscall **)(void *, int, const char *, int))(*(_DWORD *)v6 + 24))(v6, a1, a2, a4); } } v13 = 1; v12 = 1; v11 = 1; v10 = 1; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 9, 0, 0x48u, 0, (int)sub_476FA0); if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) goto LABEL_35; return 0; } while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v13 ) break; if ( !sub_487C20(a1, "ns1:quantity", (int)((char *)v6 + 4), "xsd:int", 1) ) break; --v13; } if ( !v12 ) break; v7 = *(_DWORD *)(a1 + 102824); if ( v7 != 3 ) { if ( v7 != 6 ) break; } if ( !sub_4763B0(a1, "ns1:itemId", (int)((char *)v6 + 8)) ) break; --v12; } if ( !v11 ) break; v8 = *(_DWORD *)(a1 + 102824); if ( v8 != 3 ) { if ( v8 != 6 ) break; } if ( !sub_4769F0(a1, "ns1:name", (int)((char *)v6 + 36)) ) break; --v11; } if ( !v10 ) break; if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_28; if ( !sub_46D540(a1, "ns1:total", (int)((char *)v6 + 64), "ns1:cashCurrencyAmountType") ) break; --v10; } if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_28: v9 = *(_DWORD *)(a1 + 102824); if ( v9 == 6 ) break; if ( v9 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; LABEL_35: if ( *(_DWORD *)(a1 + 8) & 0x1000 && (v13 || v12 || v11 || v10) ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return (int)v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (00479320) -------------------------------------------------------- int __thiscall sub_479320(int this, int a2, const char *a3, int a4) { return sub_476FF0(a2, a3, this, a4); } //----- (00479340) -------------------------------------------------------- void *__cdecl sub_479340(int a1, int a2) { void *result; // eax@2 int v3; // eax@4 void *v4; // eax@33 void *v5; // edi@33 void *v6; // eax@44 void *v7; // eax@51 void *v8; // eax@58 void *v9; // eax@65 void *v10; // eax@72 void *v11; // eax@79 void *v12; // eax@86 void *v13; // eax@93 void *v14; // eax@100 void *v15; // eax@107 void *v16; // eax@115 void *v17; // eax@117 int v18; // ebx@119 void *v19; // eax@172 void *v20; // eax@175 int v21; // [sp-10h] [bp-14h]@39 int v22; // [sp-Ch] [bp-10h]@39 unsigned int v23; // [sp-8h] [bp-Ch]@39 if ( sub_484110(a1) ) return 0; if ( !*(_BYTE *)(a1 + 93440) || (v3 = sub_47D600(a1, (const char *)(a1 + 93440)), (*(_DWORD *)a2 = v3) == 0) ) *(_DWORD *)a2 = sub_47D600(a1, (const char *)(a1 + 94464)); switch ( *(_DWORD *)a2 ) { case 3: return sub_487D50(a1, 0, 0, "xsd:byte", 3); case 0x22: return sub_46D540(a1, 0, 0, "ns1:cashCurrencyAmountType"); case 1: return sub_487C20(a1, 0, 0, "xsd:int", 1); case 0x2B: return sub_46D6B0(a1, 0, 0, "xsd:boolean"); case 0x29: return sub_475A40(a1, 0, 0); case 0x28: return sub_475BD0(a1, 0, 0); case 0x27: return sub_475D60(a1, 0, 0); case 0x26: return sub_475F00(a1, 0, 0); case 0x25: return sub_476090(a1, 0, 0); case 0x24: return sub_476220(a1, 0, 0); case 0x23: return sub_4763B0(a1, 0, 0); case 0x21: return sub_476540(a1, 0, 0); case 0x20: return sub_4766D0(a1, 0, 0); case 0x1F: return sub_476860(a1, 0, 0); case 0x1E: return sub_4769F0(a1, 0, 0); case 0x11: return (void *)sub_4783A0(a1, 0, 0, (int)"ns1:getShopUrlResponse"); case 0x10: return (void *)sub_478550(a1, 0, 0, (int)"ns1:getCashShopUrlRequest"); case 0xF: return (void *)sub_4786E0(a1, 0, 0, (int)"ns1:getItemShopUrlRequest"); case 0xE: return (void *)sub_478870(a1, 0, 0, (int)"ns1:getAccountForTokenResponse"); case 0xD: return (void *)sub_478A20(a1, 0, 0, (int)"ns1:getAccountForTokenRequest"); case 0xC: return (void *)sub_478C00(a1, 0, 0, (int)"ns1:property"); case 0xB: return (void *)sub_476DF0(a1, 0, 0, (int)"ns1:propertyList"); case 0xA: return (void *)sub_478E00(a1, 0, 0, (int)"ns1:itemInformationType"); case 9: return (void *)sub_4790B0(a1, 0, 0, (int)"ns1:shoppingCartItem"); case 8: return (void *)sub_476FF0(a1, 0, 0, (int)"ns1:noContent"); case 0x3E: if ( sub_487800(a1, 0, 1, 0) || (v4 = sub_47D480(a1, 4u), (v5 = v4) == 0) ) return 0; *(_DWORD *)v4 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 36; v21 = 16; goto LABEL_40; } sub_47E2D0(a1); result = (void *)sub_4734D0(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( !result ) return 0; goto LABEL_37; case 0x3B: if ( sub_487800(a1, 0, 1, 0) || (v6 = sub_47D480(a1, 4u), (v5 = v6) == 0) ) return 0; *(_DWORD *)v6 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 36; v21 = 17; goto LABEL_40; } sub_47E2D0(a1); result = (void *)sub_473360(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) goto LABEL_37; return result; case 0x3A: if ( sub_487800(a1, 0, 1, 0) || (v7 = sub_47D480(a1, 4u), (v5 = v7) == 0) ) return 0; *(_DWORD *)v7 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 36; v21 = 15; goto LABEL_40; } sub_47E2D0(a1); result = (void *)sub_473640(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) goto LABEL_37; return result; case 0x37: if ( sub_487800(a1, 0, 1, 0) || (v8 = sub_47D480(a1, 4u), (v5 = v8) == 0) ) return 0; *(_DWORD *)v8 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 36; v21 = 14; goto LABEL_40; } sub_47E2D0(a1); result = (void *)sub_4737B0(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) goto LABEL_37; return result; case 0x36: if ( sub_487800(a1, 0, 1, 0) || (v9 = sub_47D480(a1, 4u), (v5 = v9) == 0) ) return 0; *(_DWORD *)v9 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 64; v21 = 13; goto LABEL_40; } sub_47E2D0(a1); result = (void *)sub_473920(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) goto LABEL_37; return result; case 0x33: if ( sub_487800(a1, 0, 1, 0) || (v10 = sub_47D480(a1, 4u), (v5 = v10) == 0) ) return 0; *(_DWORD *)v10 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 36; v21 = 28; goto LABEL_40; } sub_47E2D0(a1); result = (void *)sub_472420(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) goto LABEL_37; return result; case 0x32: if ( sub_487800(a1, 0, 1, 0) || (v11 = sub_47D480(a1, 4u), (v5 = v11) == 0) ) return 0; *(_DWORD *)v11 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 36; v21 = 27; goto LABEL_40; } sub_47E2D0(a1); result = (void *)sub_472590(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) goto LABEL_37; return result; case 0x31: if ( sub_487800(a1, 0, 1, 0) || (v12 = sub_47D480(a1, 4u), (v5 = v12) == 0) ) return 0; *(_DWORD *)v12 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 36; v21 = 26; goto LABEL_40; } sub_47E2D0(a1); result = (void *)sub_472700(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) goto LABEL_37; return result; case 0x30: if ( sub_487800(a1, 0, 1, 0) || (v13 = sub_47D480(a1, 4u), (v5 = v13) == 0) ) return 0; *(_DWORD *)v13 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 36; v21 = 19; goto LABEL_40; } sub_47E2D0(a1); result = (void *)sub_473080(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) goto LABEL_37; return result; case 0x2F: if ( sub_487800(a1, 0, 1, 0) || (v14 = sub_47D480(a1, 4u), (v5 = v14) == 0) ) return 0; *(_DWORD *)v14 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v23 = 0; v22 = 36; v21 = 18; LABEL_40: v5 = sub_47D630(a1, a1 + 94464, v5, v21, v22, v23); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, 0) ) return 0; goto LABEL_114; } sub_47E2D0(a1); result = (void *)sub_4731F0(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) goto LABEL_37; return result; case 0x2C: if ( sub_487800(a1, 0, 1, 0) || (v15 = sub_47D480(a1, 4u), (v5 = v15) == 0) ) return 0; *(_DWORD *)v15 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v5 = sub_47D630(a1, a1 + 94464, v15, 12, 64, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, 0) ) return 0; goto LABEL_114; } sub_47E2D0(a1); result = (void *)sub_473A70(a1, -1, a1 + 95488, a1 + 96512, 0); *(_DWORD *)v5 = result; if ( result ) { LABEL_37: (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)result + 4))(result, a1); if ( !(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)v5 + 24))(a1, 0, 0) ) return 0; LABEL_114: result = v5; } return result; case 5: v16 = sub_46DD00(a1, 0, 0, (int)"xsd:QName"); if ( !v16 ) return 0; return *(void **)v16; case 4: v17 = sub_46DD30(a1, 0, 0, (int)"xsd:string"); if ( !v17 ) return 0; return *(void **)v17; default: v18 = a1 + 95488; if ( !*(_BYTE *)(a1 + 95488) ) v18 = a1 + 92416; if ( !sub_47C8A0(a1, (const char *)v18, "ns1:realmName") ) { *(_DWORD *)a2 = 41; return sub_475A40(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:characterName") ) { *(_DWORD *)a2 = 40; return sub_475BD0(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:errorMessageType") ) { *(_DWORD *)a2 = 39; return sub_475D60(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:templateParameterType") ) { *(_DWORD *)a2 = 38; return sub_475F00(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:templateType") ) { *(_DWORD *)a2 = 37; return sub_476090(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:voucherCodeType") ) { *(_DWORD *)a2 = 36; return sub_476220(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:itemIdType") ) { *(_DWORD *)a2 = 35; return sub_4763B0(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:accountIdType") ) { *(_DWORD *)a2 = 33; return sub_476540(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:ipAddressType") ) { *(_DWORD *)a2 = 32; return sub_4766D0(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:ssoTokenType") ) { *(_DWORD *)a2 = 31; return sub_476860(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "xsd:string") ) { *(_DWORD *)a2 = 30; return sub_4769F0(a1, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:getShopUrlResponse") ) { *(_DWORD *)a2 = 17; return (void *)sub_4783A0(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:getCashShopUrlRequest") ) { *(_DWORD *)a2 = 16; return (void *)sub_478550(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:getItemShopUrlRequest") ) { *(_DWORD *)a2 = 15; return (void *)sub_4786E0(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:getAccountForTokenResponse") ) { *(_DWORD *)a2 = 14; return (void *)sub_478870(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:getAccountForTokenRequest") ) { *(_DWORD *)a2 = 13; return (void *)sub_478A20(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:property") ) { *(_DWORD *)a2 = 12; return (void *)sub_478C00(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:propertyList") ) { *(_DWORD *)a2 = 11; return (void *)sub_476DF0(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:itemInformationType") ) { *(_DWORD *)a2 = 10; return (void *)sub_478E00(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:shoppingCartItem") ) { *(_DWORD *)a2 = 9; return (void *)sub_4790B0(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:noContent") ) { *(_DWORD *)a2 = 8; return (void *)sub_476FF0(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "xsd:byte") ) { *(_DWORD *)a2 = 3; return sub_487D50(a1, 0, 0, 0, 3); } if ( !sub_47C8A0(a1, (const char *)v18, "ns1:cashCurrencyAmountType") ) { *(_DWORD *)a2 = 34; return sub_46D540(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)v18, "xsd:int") ) { *(_DWORD *)a2 = 1; return sub_487C20(a1, 0, 0, 0, 1); } if ( !sub_47C8A0(a1, (const char *)v18, "xsd:boolean") ) { *(_DWORD *)a2 = 43; return sub_46D6B0(a1, 0, 0, 0); } if ( sub_47C8A0(a1, (const char *)v18, "xsd:QName") ) { if ( sub_47C8A0(a1, (const char *)v18, "xsd:string") ) { if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:VoucherCodeInvalid") ) { *(_DWORD *)a2 = 29; return (void *)sub_477120(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:TokenInvalid") ) { *(_DWORD *)a2 = 28; return (void *)sub_4772B0(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:TokenExpired") ) { *(_DWORD *)a2 = 27; return (void *)sub_477440(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:IpCountryBlacklisted") ) { *(_DWORD *)a2 = 26; return (void *)sub_4775D0(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:IllegalItem") ) { *(_DWORD *)a2 = 25; return (void *)sub_477760(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:IllegalAmount") ) { *(_DWORD *)a2 = 24; return (void *)sub_476B80(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:InsufficentCash") ) { *(_DWORD *)a2 = 23; return (void *)sub_477910(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:SendFailed") ) { *(_DWORD *)a2 = 22; return (void *)sub_477B30(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:TemplateParameterMissing") ) { *(_DWORD *)a2 = 21; return (void *)sub_477D10(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:TemplateNotFound") ) { *(_DWORD *)a2 = 20; return (void *)sub_477EF0(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:InfrastructureServiceError") ) { *(_DWORD *)a2 = 19; return (void *)sub_478080(a1, 0, 0, 0); } if ( !sub_47C8A0(a1, (const char *)(a1 + 92416), "ns1:AccountNotFound") ) { *(_DWORD *)a2 = 18; return (void *)sub_478210(a1, 0, 0, 0); } *(_DWORD *)(a1 + 102824) = 3; } else { *(_DWORD *)a2 = 4; v20 = sub_46DD30(a1, 0, 0, 0); if ( v20 ) return *(void **)v20; } } else { *(_DWORD *)a2 = 5; v19 = sub_46DD00(a1, 0, 0, 0); if ( v19 ) return *(void **)v19; } return 0; } } //----- (0047A390) -------------------------------------------------------- int __thiscall sub_47A390(int this, int a2, const char *a3, int a4) { return sub_477120(a2, a3, this, a4); } //----- (0047A3B0) -------------------------------------------------------- int __thiscall sub_47A3B0(int this, int a2, const char *a3, int a4) { return sub_4772B0(a2, a3, this, a4); } //----- (0047A3D0) -------------------------------------------------------- int __thiscall sub_47A3D0(int this, int a2, const char *a3, int a4) { return sub_477440(a2, a3, this, a4); } //----- (0047A3F0) -------------------------------------------------------- int __thiscall sub_47A3F0(int this, int a2, const char *a3, int a4) { return sub_4775D0(a2, a3, this, a4); } //----- (0047A410) -------------------------------------------------------- int __thiscall sub_47A410(int this, int a2, const char *a3, int a4) { return sub_477760(a2, a3, this, a4); } //----- (0047A430) -------------------------------------------------------- int __thiscall sub_47A430(int this, int a2, const char *a3, int a4) { return sub_477910(a2, a3, this, a4); } //----- (0047A450) -------------------------------------------------------- int __thiscall sub_47A450(int this, int a2, const char *a3, int a4) { return sub_477B30(a2, a3, this, a4); } //----- (0047A470) -------------------------------------------------------- int __thiscall sub_47A470(int this, int a2, const char *a3, int a4) { return sub_477D10(a2, a3, this, a4); } //----- (0047A490) -------------------------------------------------------- int __thiscall sub_47A490(int this, int a2, const char *a3, int a4) { return sub_477EF0(a2, a3, this, a4); } //----- (0047A4B0) -------------------------------------------------------- int __thiscall sub_47A4B0(int this, int a2, const char *a3, int a4) { return sub_478080(a2, a3, this, a4); } //----- (0047A4D0) -------------------------------------------------------- int __thiscall sub_47A4D0(int this, int a2, const char *a3, int a4) { return sub_478210(a2, a3, this, a4); } //----- (0047A4F0) -------------------------------------------------------- int __thiscall sub_47A4F0(int this, int a2, const char *a3, int a4) { return sub_4783A0(a2, a3, this, a4); } //----- (0047A510) -------------------------------------------------------- int __thiscall sub_47A510(int this, int a2, const char *a3, int a4) { return sub_478550(a2, a3, this, a4); } //----- (0047A530) -------------------------------------------------------- int __thiscall sub_47A530(int this, int a2, const char *a3, int a4) { return sub_4786E0(a2, a3, this, a4); } //----- (0047A550) -------------------------------------------------------- int __thiscall sub_47A550(int this, int a2, const char *a3, int a4) { return sub_478870(a2, a3, this, a4); } //----- (0047A570) -------------------------------------------------------- int __thiscall sub_47A570(int this, int a2, const char *a3, int a4) { return sub_478A20(a2, a3, this, a4); } //----- (0047A590) -------------------------------------------------------- int __thiscall sub_47A590(int this, int a2, const char *a3, int a4) { return sub_478C00(a2, a3, this, a4); } //----- (0047A5B0) -------------------------------------------------------- int __thiscall sub_47A5B0(int this, int a2, const char *a3, int a4) { return sub_478E00(a2, a3, this, a4); } //----- (0047A5D0) -------------------------------------------------------- int __thiscall sub_47A5D0(int this, int a2, const char *a3, int a4) { return sub_4790B0(a2, a3, this, a4); } //----- (0047A5F0) -------------------------------------------------------- void *__cdecl sub_47A5F0(int a1, const char *a2, int a3, const char *a4) { signed int v4; // ebx@1 void *v6; // edi@3 void *v7; // eax@27 int v8; // eax@30 int v9; // eax@36 signed int v10; // [sp+8h] [bp-1Ch]@1 signed int v11; // [sp+Ch] [bp-18h]@1 signed int v12; // [sp+10h] [bp-14h]@1 signed int v13; // [sp+14h] [bp-10h]@1 signed int v14; // [sp+18h] [bp-Ch]@1 signed int v15; // [sp+1Ch] [bp-8h]@1 signed int v16; // [sp+20h] [bp-4h]@1 v4 = 1; v11 = 1; v16 = 1; v15 = 1; v14 = 1; v13 = 1; v12 = 1; v10 = 1; if ( sub_487800(a1, a2, 0, a4) ) return 0; v6 = (void *)sub_47D7E0(a1, a1 + 93440, a3, 46, 0x20u, 0, 0, 0, 0); if ( !v6 ) return 0; *(_DWORD *)v6 = 0; *((_DWORD *)v6 + 1) = 0; *((_DWORD *)v6 + 2) = 0; *((_DWORD *)v6 + 3) = 0; *((_DWORD *)v6 + 4) = 0; *((_DWORD *)v6 + 5) = 0; *((_DWORD *)v6 + 6) = 0; *((_DWORD *)v6 + 7) = 0; if ( !*(_WORD *)(a1 + 24806) || *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, 46, 0, 0x20u, 0, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v16 ) break; if ( !sub_474870(a1, "ns1:AccountNotFound", (char *)v6 + 4) ) break; --v16; } if ( !v15 || *(_DWORD *)(a1 + 102824) != 3 || !sub_474790(a1, "ns1:InfrastructureServiceError", (char *)v6 + 8) ) break; --v15; } if ( !v14 || *(_DWORD *)(a1 + 102824) != 3 || !sub_4746B0(a1, "ns1:IpCountryBlacklisted", (char *)v6 + 12) ) break; --v14; } if ( !v13 || *(_DWORD *)(a1 + 102824) != 3 || !sub_4745D0(a1, "ns1:TokenExpired", (char *)v6 + 16) ) break; --v13; } if ( !v12 || *(_DWORD *)(a1 + 102824) != 3 || !sub_4744F0(a1, "ns1:TokenInvalid", (char *)v6 + 20) ) break; --v12; } if ( !v10 ) break; if ( *(_DWORD *)(a1 + 102824) != 3 ) break; v7 = sub_479340(a1, (int)((char *)v6 + 24)); *((_DWORD *)v6 + 7) = v7; if ( !v7 ) break; v10 = 0; } if ( !v11 ) break; v8 = *(_DWORD *)(a1 + 102824); if ( v8 != 3 ) { if ( v8 != 6 ) break; } if ( !sub_487FB0(a1, "-any", v6) ) break; --v11; } if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); v9 = *(_DWORD *)(a1 + 102824); if ( v9 == 6 ) break; if ( v9 ) return 0; } if ( sub_483EA0(a1, a2) ) return 0; v4 = 1; } if ( *(_DWORD *)(a1 + 8) & 0x1000 && v10 > (unsigned int)v4 ) { *(_DWORD *)(a1 + 102824) = 44; return 0; } return v6; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (0047A8B0) -------------------------------------------------------- void *__cdecl sub_47A8B0(int a1, const char *a2, void *a3, const char *a4) { void *v5; // edi@3 void *v6; // eax@7 if ( sub_487800(a1, a2, 1, 0) ) return 0; v5 = a3; if ( !a3 ) { v5 = sub_47D480(a1, 4u); if ( !v5 ) return 0; } *(_DWORD *)v5 = 0; if ( *(_WORD *)(a1 + 99664) || *(_BYTE *)(a1 + 94464) == 35 ) { v5 = sub_47D630(a1, a1 + 94464, v5, 46, 32, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; } else { sub_47E2D0(a1); v6 = sub_47A5F0(a1, a2, *(_DWORD *)v5, a4); *(_DWORD *)v5 = v6; if ( !v6 ) return 0; } return v5; } //----- (0047A970) -------------------------------------------------------- int __cdecl sub_47A970(int a1) { int v1; // esi@1 int result; // eax@5 v1 = a1; if ( *(_WORD *)(a1 + 6) == 1 ) { do { while ( sub_479340(v1, (int)&a1) ) ; } while ( !*(_DWORD *)(v1 + 102824) && !sub_46D3C0(v1) ); } result = *(_DWORD *)(v1 + 102824); if ( result == 6 || result == -1 ) { *(_DWORD *)(v1 + 102824) = 0; result = *(_DWORD *)(v1 + 102824); } return result; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (0047A9D0) -------------------------------------------------------- void *__cdecl sub_47A9D0(int a1, const char *a2, int a3, const char *a4) { void *result; // eax@2 void *v5; // edi@3 int v6; // eax@10 int v7; // eax@15 int v8; // eax@32 int v9; // eax@37 int v10; // eax@47 const char *v11; // [sp-8h] [bp-34h]@50 signed int v12; // [sp+8h] [bp-24h]@1 signed int v13; // [sp+Ch] [bp-20h]@1 signed int v14; // [sp+10h] [bp-1Ch]@1 signed int v15; // [sp+14h] [bp-18h]@1 signed int v16; // [sp+18h] [bp-14h]@1 signed int v17; // [sp+1Ch] [bp-10h]@1 signed int v18; // [sp+20h] [bp-Ch]@1 signed int v19; // [sp+24h] [bp-8h]@1 signed int v20; // [sp+28h] [bp-4h]@1 v20 = 1; v19 = 1; v18 = 1; v17 = 1; v16 = 1; v15 = 1; v14 = 1; v13 = 1; v12 = 1; if ( sub_487800(a1, a2, 0, a4) ) return 0; v5 = (void *)sub_47D7E0(a1, a1 + 93440, a3, 69, 0x24u, 0, 0, 0, 0); if ( !v5 ) goto LABEL_58; *(_DWORD *)v5 = 0; *((_DWORD *)v5 + 1) = 0; *((_DWORD *)v5 + 2) = 0; *((_DWORD *)v5 + 3) = 0; *((_DWORD *)v5 + 4) = 0; *((_DWORD *)v5 + 5) = 0; *((_DWORD *)v5 + 6) = 0; *((_DWORD *)v5 + 7) = 0; *((_DWORD *)v5 + 8) = 0; if ( *(_WORD *)(a1 + 24806) && !*(_BYTE *)(a1 + 94464) ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { *(_DWORD *)(a1 + 102824) = 3; if ( !v20 ) break; if ( !sub_487E50(a1, "faultcode", v5, (int)&byte_4B4667, 5, 2, 0, -1) ) break; --v20; } if ( !v19 ) break; v6 = *(_DWORD *)(a1 + 102824); if ( v6 != 3 ) { if ( v6 != 6 ) break; } if ( !sub_487E50(a1, "faultstring", (char *)v5 + 4, (int)"xsd:string", 4, 1, 0, -1) ) break; --v19; } if ( !v18 ) break; v7 = *(_DWORD *)(a1 + 102824); if ( v7 != 3 ) { if ( v7 != 6 ) break; } if ( !sub_487E50(a1, "faultactor", (char *)v5 + 8, (int)"xsd:string", 4, 1, 0, -1) ) break; --v18; } if ( !v17 || *(_DWORD *)(a1 + 102824) != 3 || !sub_47A8B0(a1, "detail", (char *)v5 + 12, &byte_4B4667) ) break; --v17; } if ( !v16 || *(_DWORD *)(a1 + 102824) != 3 || !sub_46E4A0(a1, "SOAP-ENV:Code", (char *)v5 + 16, &byte_4B4667) ) break; --v16; } if ( !v15 || *(_DWORD *)(a1 + 102824) != 3 || !sub_46E3E0(a1, "SOAP-ENV:Reason", (char *)v5 + 20, &byte_4B4667) ) break; --v15; } if ( !v14 ) break; v8 = *(_DWORD *)(a1 + 102824); if ( v8 != 3 ) { if ( v8 != 6 ) break; } if ( !sub_487E50(a1, "SOAP-ENV:Node", (char *)v5 + 24, (int)"xsd:string", 4, 1, 0, -1) ) break; --v14; } if ( !v13 ) break; v9 = *(_DWORD *)(a1 + 102824); if ( v9 != 3 ) { if ( v9 != 6 ) break; } if ( !sub_487E50(a1, "SOAP-ENV:Role", (char *)v5 + 28, (int)"xsd:string", 4, 1, 0, -1) ) break; --v13; } if ( !v12 ) goto LABEL_59; if ( *(_DWORD *)(a1 + 102824) != 3 ) goto LABEL_47; if ( sub_47A8B0(a1, "SOAP-ENV:Detail", (char *)v5 + 32, &byte_4B4667) ) { --v12; } else { LABEL_59: if ( *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = sub_46D3C0(a1); LABEL_47: v10 = *(_DWORD *)(a1 + 102824); if ( v10 == 6 ) { v11 = a2; goto LABEL_53; } if ( v10 ) return 0; } } } v5 = sub_481410(a1, (const char *)(a1 + 94464), v5, 0, 69, 0, 0x24u, 0, 0); if ( !*(_WORD *)(a1 + 24806) ) goto LABEL_60; v11 = a2; LABEL_53: if ( sub_483EA0(a1, v11) ) LABEL_58: result = 0; else LABEL_60: result = v5; return result; } // 46D3C0: using guessed type _DWORD __cdecl sub_46D3C0(_DWORD); //----- (0047ACF0) -------------------------------------------------------- signed int __cdecl sub_47ACF0(int a1) { void *v1; // esi@1 signed int result; // eax@3 v1 = sub_47A9D0(a1, "SOAP-ENV:Fault", 0, 0); if ( v1 && sub_47A970(a1) ) { *(_DWORD *)(a1 + 24504) = 0; result = 1; } else { *(_DWORD *)(a1 + 24504) = v1; result = v1 == 0; } return result; } //----- (0047AD50) -------------------------------------------------------- int __thiscall sub_47AD50(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_477120(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047AD90) -------------------------------------------------------- int __thiscall sub_47AD90(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_4772B0(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047ADD0) -------------------------------------------------------- int __thiscall sub_47ADD0(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_477440(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047AE10) -------------------------------------------------------- int __thiscall sub_47AE10(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_4775D0(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047AE50) -------------------------------------------------------- int __thiscall sub_47AE50(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_477760(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047AE90) -------------------------------------------------------- int __thiscall sub_47AE90(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_476B80(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047AED0) -------------------------------------------------------- int __thiscall sub_47AED0(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_477910(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047AF10) -------------------------------------------------------- int __thiscall sub_47AF10(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_477B30(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047AF50) -------------------------------------------------------- int __thiscall sub_47AF50(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_477D10(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047AF90) -------------------------------------------------------- int __thiscall sub_47AF90(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_477EF0(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047AFD0) -------------------------------------------------------- int __thiscall sub_47AFD0(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_478080(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B010) -------------------------------------------------------- int __thiscall sub_47B010(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_478210(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B050) -------------------------------------------------------- int __thiscall sub_47B050(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_4783A0(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B090) -------------------------------------------------------- int __thiscall sub_47B090(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_478550(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B0D0) -------------------------------------------------------- int __thiscall sub_47B0D0(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_4786E0(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B110) -------------------------------------------------------- int __thiscall sub_47B110(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_478870(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B150) -------------------------------------------------------- int __thiscall sub_47B150(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_478A20(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B190) -------------------------------------------------------- int __thiscall sub_47B190(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_478C00(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B1D0) -------------------------------------------------------- int __thiscall sub_47B1D0(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_476DF0(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B210) -------------------------------------------------------- int __thiscall sub_47B210(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_478E00(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B250) -------------------------------------------------------- int __thiscall sub_47B250(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_4790B0(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B290) -------------------------------------------------------- int __thiscall sub_47B290(int this, int a2, const char *a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = sub_476FF0(a2, a3, this, a4); if ( v4 && sub_47A970(a2) ) result = 0; else result = v4; return result; } //----- (0047B2D0) -------------------------------------------------------- int __thiscall sub_47B2D0(void *this, int a2, int a3) { return (*(int (__stdcall **)(_DWORD, _DWORD, int, int))(*(_DWORD *)this + 56))(0, 0, a2, a3); } //----- (0047B2F0) -------------------------------------------------------- int __thiscall sub_47B2F0(void *this, int a2, int a3) { return (*(int (__stdcall **)(_DWORD, _DWORD, int, int))(*(_DWORD *)this + 64))(0, 0, a2, a3); } //----- (0047B310) -------------------------------------------------------- int __thiscall sub_47B310(void *this, int a2, int a3) { return (*(int (__stdcall **)(_DWORD, _DWORD, int, int))(*(_DWORD *)this + 72))(0, 0, a2, a3); } //----- (0047B330) -------------------------------------------------------- int __thiscall sub_47B330(int this, int a2, int a3) { *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 16) = a3; *(_DWORD *)(this + 120508) = 0; return sub_481820(this, (int)off_4C6C30); } // 4C6C30: using guessed type char *off_4C6C30[3]; //----- (0047B360) -------------------------------------------------------- void __thiscall sub_47B360(int this) { int v1; // esi@1 v1 = this; sub_47D520(this, 0); sub_4817C0(v1); } //----- (0047B380) -------------------------------------------------------- int __thiscall sub_47B380(void *this) { int v1; // esi@1 v1 = (int)this; (*(void (**)(void))(*(_DWORD *)this + 8))(); sub_48A9C0(v1); sub_48ABC0(v1, 0, 0); return (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 4))(v1, 0, 0); } //----- (0047B3B0) -------------------------------------------------------- void __thiscall sub_47B3B0(int this) { *(_DWORD *)(this + 24500) = 0; } //----- (0047B3C0) -------------------------------------------------------- int __thiscall sub_47B3C0(int this) { return *(_DWORD *)(this + 24500); } //----- (0047B3D0) -------------------------------------------------------- int __thiscall sub_47B3D0(int this) { return *(_DWORD *)(this + 24504); } //----- (0047B3E0) -------------------------------------------------------- int __thiscall sub_47B3E0(int this) { return *(_DWORD *)sub_474EA0(this); } //----- (0047B3F0) -------------------------------------------------------- int __thiscall sub_47B3F0(int this) { return *(_DWORD *)sub_474ED0(this); } //----- (0047B400) -------------------------------------------------------- int __thiscall sub_47B400(int this) { return sub_47CCB0(this); } //----- (0047B410) -------------------------------------------------------- int __thiscall sub_47B410(int this) { return sub_47CD40(this); } //----- (0047B420) -------------------------------------------------------- int __thiscall sub_47B420(int this, FILE *a2) { return sub_482A00(this, a2); } //----- (0047B440) -------------------------------------------------------- void *__thiscall sub_47B440(int this, void *a2) { return sub_48B240(this, a2); } //----- (0047B460) -------------------------------------------------------- char *__thiscall sub_47B460(int this, char *a2, size_t a3) { return sub_482AF0(this, a2, a3); } //----- (0047B480) -------------------------------------------------------- int __thiscall sub_47B480(int this, int a2, const char *a3, int a4, int a5) { int v5; // esi@1 const char *v6; // edi@5 int v7; // eax@7 void *v8; // ecx@7 int v10; // edi@25 int v11; // [sp-4h] [bp-Ch]@25 v5 = this; if ( a2 ) *(_DWORD *)(this + 120508) = a2; if ( !*(_DWORD *)(this + 120508) ) *(_DWORD *)(this + 120508) = "http://localhost:8080/sso"; v6 = a3; if ( !a3 ) v6 = "getAccountForToken"; v7 = a4; *(_DWORD *)(this + 40) = 0; a2 = v7; sub_4816F0(this); nullsub_1(v8); sub_46E350(v5, (unsigned int *)&a2); if ( sub_4839F0(v5) || *(_BYTE *)(v5 + 8) & 8 && (sub_489C90(v5) || sub_46DDA0(v5) || sub_489DE0(v5) || sub_46E380(v5, (unsigned int *)&a2) || sub_488AB0(v5) || sub_4887E0(v5)) || sub_47D0B0(v5) ) return *(_DWORD *)(v5 + 102824); if ( sub_48B220(v5, *(const char **)(v5 + 120508), v6) || sub_489C90(v5) || sub_46DDA0(v5) || sub_489DE0(v5) || sub_46E380(v5, (unsigned int *)&a2) || sub_488AB0(v5) || sub_4887E0(v5) || sub_488B40(v5) ) { LABEL_35: v11 = v5; return sub_47CCB0(v11); } v10 = a5; v11 = v5; if ( a5 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)a5 + 4))(a5, v5); if ( !sub_486340(v5) && !sub_488930(v5) && !sub_47ED00(v5) && !sub_488AF0(v5) ) { (*(void (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v10 + 20))( v10, v5, "ns1:getAccountForTokenResponse", "ns1:getAccountForTokenResponse"); if ( *(_DWORD *)(v5 + 102824) ) return sub_486AC0(v5, 0); if ( !sub_486A80(v5) ) { if ( !sub_486A50(v5) ) sub_483CF0(v5); } } goto LABEL_35; } return sub_47CCB0(v11); } // 483CF0: using guessed type _DWORD __cdecl sub_483CF0(_DWORD); //----- (0047B6A0) -------------------------------------------------------- int __thiscall sub_47B6A0(int this, int a2, const char *a3, int a4, int a5) { int v5; // esi@1 const char *v6; // edi@5 int v7; // eax@7 void *v8; // ecx@7 int v10; // edi@25 int v11; // [sp-4h] [bp-Ch]@25 v5 = this; if ( a2 ) *(_DWORD *)(this + 120508) = a2; if ( !*(_DWORD *)(this + 120508) ) *(_DWORD *)(this + 120508) = "http://localhost:8080/sso"; v6 = a3; if ( !a3 ) v6 = "getItemShopUrl"; v7 = a4; *(_DWORD *)(this + 40) = 0; a2 = v7; sub_4816F0(this); nullsub_1(v8); sub_46E2C0(v5, (unsigned int *)&a2); if ( sub_4839F0(v5) || *(_BYTE *)(v5 + 8) & 8 && (sub_489C90(v5) || sub_46DDA0(v5) || sub_489DE0(v5) || sub_46E2F0(v5, (unsigned int *)&a2) || sub_488AB0(v5) || sub_4887E0(v5)) || sub_47D0B0(v5) ) return *(_DWORD *)(v5 + 102824); if ( sub_48B220(v5, *(const char **)(v5 + 120508), v6) || sub_489C90(v5) || sub_46DDA0(v5) || sub_489DE0(v5) || sub_46E2F0(v5, (unsigned int *)&a2) || sub_488AB0(v5) || sub_4887E0(v5) || sub_488B40(v5) ) { LABEL_35: v11 = v5; return sub_47CCB0(v11); } v10 = a5; v11 = v5; if ( a5 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)a5 + 4))(a5, v5); if ( !sub_486340(v5) && !sub_488930(v5) && !sub_47ED00(v5) && !sub_488AF0(v5) ) { (*(void (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v10 + 20))( v10, v5, "ns1:getItemShopUrlResponse", "ns1:getShopUrlResponse"); if ( *(_DWORD *)(v5 + 102824) ) return sub_486AC0(v5, 0); if ( !sub_486A80(v5) ) { if ( !sub_486A50(v5) ) sub_483CF0(v5); } } goto LABEL_35; } return sub_47CCB0(v11); } // 483CF0: using guessed type _DWORD __cdecl sub_483CF0(_DWORD); //----- (0047B8C0) -------------------------------------------------------- int __thiscall sub_47B8C0(int this, int a2, const char *a3, int a4, int a5) { int v5; // esi@1 const char *v6; // edi@5 int v7; // eax@7 void *v8; // ecx@7 int v10; // edi@25 int v11; // [sp-4h] [bp-Ch]@25 v5 = this; if ( a2 ) *(_DWORD *)(this + 120508) = a2; if ( !*(_DWORD *)(this + 120508) ) *(_DWORD *)(this + 120508) = "http://localhost:8080/sso"; v6 = a3; if ( !a3 ) v6 = "getCashShopUrl"; v7 = a4; *(_DWORD *)(this + 40) = 0; a2 = v7; sub_4816F0(this); nullsub_1(v8); sub_46E230(v5, (unsigned int *)&a2); if ( sub_4839F0(v5) || *(_BYTE *)(v5 + 8) & 8 && (sub_489C90(v5) || sub_46DDA0(v5) || sub_489DE0(v5) || sub_46E260(v5, (unsigned int *)&a2) || sub_488AB0(v5) || sub_4887E0(v5)) || sub_47D0B0(v5) ) return *(_DWORD *)(v5 + 102824); if ( sub_48B220(v5, *(const char **)(v5 + 120508), v6) || sub_489C90(v5) || sub_46DDA0(v5) || sub_489DE0(v5) || sub_46E260(v5, (unsigned int *)&a2) || sub_488AB0(v5) || sub_4887E0(v5) || sub_488B40(v5) ) { LABEL_35: v11 = v5; return sub_47CCB0(v11); } v10 = a5; v11 = v5; if ( a5 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)a5 + 4))(a5, v5); if ( !sub_486340(v5) && !sub_488930(v5) && !sub_47ED00(v5) && !sub_488AF0(v5) ) { (*(void (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v10 + 20))( v10, v5, "ns1:getCashShopUrlResponse", "ns1:getShopUrlResponse"); if ( *(_DWORD *)(v5 + 102824) ) return sub_486AC0(v5, 0); if ( !sub_486A80(v5) ) { if ( !sub_486A50(v5) ) sub_483CF0(v5); } } goto LABEL_35; } return sub_47CCB0(v11); } // 483CF0: using guessed type _DWORD __cdecl sub_483CF0(_DWORD); //----- (0047BAE0) -------------------------------------------------------- void *__thiscall sub_47BAE0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4C6BDC; sub_48B3E0((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4C6BDC: using guessed type int (__thiscall *off_4C6BDC)(void *, char); //----- (0047BB10) -------------------------------------------------------- int __thiscall sub_47BB10(int this, int a2) { int v2; // esi@1 v2 = this; sub_48B3C0((void *)this); *(_DWORD *)v2 = &off_4C6BDC; *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 16) = 0; *(_DWORD *)(v2 + 120508) = 0; sub_481820(v2, (int)off_4C6C30); *(_DWORD *)(v2 + 120508) = a2; return v2; } // 4C6BDC: using guessed type int (__thiscall *off_4C6BDC)(void *, char); // 4C6C30: using guessed type char *off_4C6C30[3]; //----- (0047BB50) -------------------------------------------------------- signed int __usercall sub_47BB50(int a1) { unsigned int v1; // ecx@1 int (__cdecl *v2)(_DWORD, _DWORD, _DWORD); // ecx@2 int v3; // eax@2 signed int result; // eax@4 v1 = *(_DWORD *)(a1 + 24792); if ( v1 < *(_DWORD *)(a1 + 24796) ) goto LABEL_4; v2 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24640); *(_DWORD *)(a1 + 24792) = 0; v3 = v2(a1, a1 + 24832, 65536); *(_DWORD *)(a1 + 99684) = v3; *(_DWORD *)(a1 + 24796) = v3; if ( v3 ) { v1 = *(_DWORD *)(a1 + 24792); LABEL_4: result = *(_BYTE *)(v1 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v1 + 1; return result; } return -1; } //----- (0047BBB0) -------------------------------------------------------- int __cdecl sub_47BBB0(int a1) { int (__cdecl *v1)(_DWORD, _DWORD, _DWORD); // edi@2 int v2; // eax@4 int result; // eax@5 unsigned int v4; // eax@8 int (__cdecl *v5)(_DWORD, _DWORD, _DWORD); // ecx@9 int v6; // eax@9 signed int v7; // ebx@11 unsigned int v8; // eax@18 int (__cdecl *v9)(_DWORD, _DWORD, _DWORD); // edx@19 int v10; // eax@19 int v11; // eax@21 int (__cdecl *v12)(_DWORD, _DWORD, _DWORD); // eax@30 int v13; // eax@30 unsigned __int32 v14; // eax@34 int v15; // edx@35 unsigned int v16; // ecx@35 int v17; // ebx@39 signed int v18; // eax@41 int (__cdecl *v19)(_DWORD, _DWORD, _DWORD); // ecx@48 int (__cdecl *v20)(_DWORD, _DWORD, _DWORD); // eax@50 char *v21; // [sp+Ch] [bp-1Ch]@3 char v22; // [sp+10h] [bp-18h]@3 unsigned int v23; // [sp+24h] [bp-4h]@1 int v24; // [sp+28h] [bp+0h]@1 v23 = (unsigned int)&v24 ^ __security_cookie; if ( (*(_BYTE *)(a1 + 8) & 3) != 3 ) { v19 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24640); *(_DWORD *)(a1 + 24792) = 0; v17 = v19(a1, a1 + 24832, 65536); v1 = 0; LABEL_49: *(_DWORD *)(a1 + 24796) = v17; goto LABEL_50; } v1 = 0; if ( *(_DWORD *)(a1 + 99680) ) { LABEL_41: v18 = *(_DWORD *)(a1 + 99680); if ( (unsigned int)v18 > 0x10000 ) v18 = 65536; v17 = (*(int (__cdecl **)(int, int, signed int))(a1 + 24640))(a1, a1 + 24832, v18); *(_DWORD *)(a1 + 99680) -= v17; *(_DWORD *)(a1 + 24792) = 0; goto LABEL_49; } while ( 1 ) { v21 = &v22; if ( *(_DWORD *)(a1 + 99684) ) { *(_DWORD *)(a1 + 24792) = *(_DWORD *)(a1 + 24796); } else { v2 = (*(int (__cdecl **)(int, int, signed int))(a1 + 24640))(a1, a1 + 24832, 65536); *(_DWORD *)(a1 + 99684) = v2; *(_DWORD *)(a1 + 24792) = 0; if ( !v2 ) goto LABEL_5; } *(_DWORD *)(a1 + 24796) = *(_DWORD *)(a1 + 99684); while ( 1 ) { v4 = *(_DWORD *)(a1 + 24792); if ( v4 >= *(_DWORD *)(a1 + 24796) ) { v5 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24640); *(_DWORD *)(a1 + 24792) = 0; v6 = v5(a1, a1 + 24832, 65536); *(_DWORD *)(a1 + 99684) = v6; *(_DWORD *)(a1 + 24796) = v6; if ( !v6 ) goto LABEL_5; v4 = *(_DWORD *)(a1 + 24792); } v7 = *(_BYTE *)(v4 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v4 + 1; if ( v7 >= 48 ) { if ( v7 <= 57 ) break; } if ( v7 >= 65 && v7 <= 70 || (unsigned int)(v7 - 97) <= 5 ) break; if ( v7 == -1 ) goto LABEL_5; } do { *v21 = v7; v8 = *(_DWORD *)(a1 + 24792); ++v21; if ( v8 >= *(_DWORD *)(a1 + 24796) ) { v9 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24640); *(_DWORD *)(a1 + 24792) = 0; v10 = v9(a1, a1 + 24832, 65536); *(_DWORD *)(a1 + 99684) = v10; *(_DWORD *)(a1 + 24796) = v10; if ( !v10 ) goto LABEL_5; v8 = *(_DWORD *)(a1 + 24792); } v7 = *(_BYTE *)(v8 + a1 + 24832); v11 = v8 + 1; *(_DWORD *)(a1 + 24792) = v11; } while ( (v7 >= 48 && v7 <= 57 || v7 >= 65 && v7 <= 70 || (unsigned int)(v7 - 97) <= 5) && v21 - &v22 < 0x10 ); if ( v7 == -1 ) { LABEL_5: result = -1; *(_DWORD *)(a1 + 24800) = -1; return result; } while ( v7 != 10 ) { if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 24796) ) { v12 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24640); *(_DWORD *)(a1 + 24792) = 0; v13 = v12(a1, a1 + 24832, 65536); *(_DWORD *)(a1 + 99684) = v13; *(_DWORD *)(a1 + 24796) = v13; if ( !v13 ) goto LABEL_5; v11 = *(_DWORD *)(a1 + 24792); } v7 = *(_BYTE *)(v11++ + a1 + 24832); *(_DWORD *)(a1 + 24792) = v11; if ( v7 == -1 ) goto LABEL_5; } *v21 = 0; v14 = strtoul(&v22, &v21, 16); *(_DWORD *)(a1 + 99680) = v14; if ( !v14 ) break; v15 = *(_DWORD *)(a1 + 24792); v16 = *(_DWORD *)(a1 + 99684); *(_DWORD *)(a1 + 24796) = v15 + v14; if ( v15 + v14 <= v16 ) { if ( v16 ) *(_DWORD *)(a1 + 99680) = 0; } else { *(_DWORD *)(a1 + 24796) = v16; *(_DWORD *)(a1 + 99680) = v14 + v15 - v16; *(_DWORD *)(a1 + 99684) = 0; } v17 = *(_DWORD *)(a1 + 24796) - v15; if ( *(_DWORD *)(a1 + 24796) != v15 ) goto LABEL_50; if ( *(_DWORD *)(a1 + 99680) ) goto LABEL_41; } *(_DWORD *)(a1 + 99684) = 0; *(_DWORD *)(a1 + 24796) = 0; *(_DWORD *)(a1 + 24792) = 0; do { if ( v7 == 10 ) break; v7 = sub_47BB50(a1); } while ( v7 != -1 ); v17 = 0; *(_DWORD *)(a1 + 24800) = -1; LABEL_50: v20 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24696); if ( v20 == v1 || (result = v20(a1, *(_DWORD *)(a1 + 24792) + a1 + 24832, v17), (int (__cdecl *)(_DWORD, _DWORD, _DWORD))result == v1) ) { *(_DWORD *)(a1 + 24812) += v17; result = v17 == (_DWORD)v1; } else { *(_DWORD *)(a1 + 102824) = result; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0047BF30) -------------------------------------------------------- int __cdecl sub_47BF30(int a1) { int v1; // eax@2 int v2; // edi@3 int v3; // edi@3 char *v4; // edi@7 signed int v5; // ebx@7 unsigned int v6; // eax@8 char v7; // dl@8 char v8; // cl@11 int v9; // eax@11 int v10; // ecx@12 int v11; // edx@12 int v12; // edi@12 int result; // eax@14 int v14; // ecx@20 int v15; // edx@20 unsigned int v16; // eax@20 int v17; // edi@24 int v18; // ebx@25 char v19; // [sp+Ch] [bp-10h]@7 unsigned __int8 v20; // [sp+14h] [bp-8h]@11 unsigned __int8 v21; // [sp+15h] [bp-7h]@11 unsigned __int8 v22; // [sp+16h] [bp-6h]@11 unsigned __int8 v23; // [sp+17h] [bp-5h]@11 unsigned int v24; // [sp+18h] [bp-4h]@1 int v25; // [sp+1Ch] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; if ( !(*(_BYTE *)(a1 + 8) & 0x80) ) goto LABEL_38; v1 = *(_DWORD *)(a1 + 102852); if ( v1 ) { v2 = -*(_DWORD *)(a1 + 102844); *(_DWORD *)(a1 + 24812) += v1 - *(_DWORD *)(a1 + 24796); v3 = v2 & 3; *(_DWORD *)(a1 + 24796) = v1; if ( v3 <= 0 ) { LABEL_7: v4 = &v19; v5 = 12; while ( 1 ) { v6 = *(_DWORD *)(a1 + 24792); v7 = *(_BYTE *)(v6++ + a1 + 24832); *v4++ = v7; *(_DWORD *)(a1 + 24792) = v6; if ( v6 >= *(_DWORD *)(a1 + 24796) ) { if ( sub_47BBB0(a1) ) break; } --v5; if ( v5 <= 0 ) { v8 = v19 & 7; v9 = v23 | ((v22 | ((v21 | (v20 << 8)) << 8)) << 8); *(_BYTE *)(a1 + 102856) = v19 & 7; *(_DWORD *)(a1 + 102844) = v9; if ( v8 & 1 ) { v10 = *(_DWORD *)(a1 + 24796); v11 = *(_DWORD *)(a1 + 24792); v12 = *(_DWORD *)(a1 + 24796) - v11; *(_DWORD *)(a1 + 102848) = v9; if ( v12 < (unsigned int)v9 ) { *(_DWORD *)(a1 + 102848) = v11 + v9 - v10; } else { *(_DWORD *)(a1 + 102852) = v10; *(_DWORD *)(a1 + 24796) = v11 + v9; } } else { *(_DWORD *)(a1 + 102852) = 0; *(_DWORD *)(a1 + 102848) = 0; } *(_DWORD *)(a1 + 24812) = *(_DWORD *)(a1 + 24796) - *(_DWORD *)(a1 + 24792); return 0; } } } else { while ( 1 ) { ++*(_DWORD *)(a1 + 24792); if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) ) { if ( sub_47BBB0(a1) ) break; } --v3; if ( v3 <= 0 ) goto LABEL_7; } } return -1; } if ( *(_DWORD *)(a1 + 102848) ) { if ( sub_47BBB0(a1) ) return -1; v14 = *(_DWORD *)(a1 + 24796); v15 = *(_DWORD *)(a1 + 24792); v16 = *(_DWORD *)(a1 + 102848); if ( *(_DWORD *)(a1 + 24796) - v15 < v16 ) { *(_DWORD *)(a1 + 102848) = v15 + v16 - v14; result = 0; } else { *(_DWORD *)(a1 + 24812) += v15 + v16 - v14; *(_DWORD *)(a1 + 24796) = v15 + v16; *(_DWORD *)(a1 + 102852) = v14; result = 0; } } else { LABEL_38: if ( *(_DWORD *)(a1 + 24716) ) { v17 = a1 + 24796; while ( 1 ) { v18 = *(_DWORD *)(a1 + 24708); if ( v18 ) { *(_DWORD *)v17 = 0; *(_DWORD *)(a1 + 24792) = 0; } else { v18 = sub_47BBB0(a1); } result = (*(int (__cdecl **)(int, int, int, signed int))(a1 + 24716))(a1, a1 + 24832, a1 + 24796, 65536); *(_DWORD *)(a1 + 102824) = result; if ( result ) break; if ( *(_DWORD *)v17 ) { *(_DWORD *)(a1 + 24708) = v18; return 0; } if ( v18 ) return v18; if ( !*(_DWORD *)(a1 + 24716) ) goto LABEL_32; } } else { LABEL_32: result = sub_47BBB0(a1); } } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0047C1D0) -------------------------------------------------------- signed int __cdecl sub_47C1D0(int a1) { signed int result; // eax@1 int v2; // ecx@7 result = *(_DWORD *)(a1 + 24800); if ( result ) { if ( result != -1 ) *(_DWORD *)(a1 + 24800) = 0; } else { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { result = -1; } else { v2 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v2 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v2 + 1; } } return result; } //----- (0047C230) -------------------------------------------------------- int __cdecl sub_47C230(int a1, const char *a2) { int result; // eax@1 const char *v3; // edx@3 result = a1; if ( a1 && a2 && (v3 = *(const char **)(a1 + 4)) != 0 ) { while ( strcmp(a2, v3) ) { v3 = *(const char **)(result + 12); result += 8; if ( !v3 ) goto LABEL_6; } } else { LABEL_6: result = 0; } return result; } //----- (0047C290) -------------------------------------------------------- int __cdecl sub_47C290(int a1, int a2) { int result; // eax@1 result = a1; if ( a1 ) { if ( *(_DWORD *)a1 != a2 ) { do { if ( !*(_DWORD *)(result + 4) ) break; result += 8; } while ( *(_DWORD *)result != a2 ); } result = *(_DWORD *)(result + 4); } return result; } //----- (0047C2C0) -------------------------------------------------------- signed int __cdecl sub_47C2C0(int a1, int a2) { int v2; // edi@1 int v3; // eax@2 int v4; // ecx@5 int v5; // eax@8 v2 = a2; if ( a2 <= 0 ) return 0; while ( 1 ) { v3 = *(_DWORD *)(a1 + 24800); if ( !v3 ) break; if ( v3 != -1 ) *(_DWORD *)(a1 + 24800) = 0; v4 = v3; LABEL_9: if ( v4 == -1 ) return -1; --v2; if ( v2 <= 0 ) return 0; } if ( *(_DWORD *)(a1 + 24792) < *(_DWORD *)(a1 + 24796) || !sub_47BF30(a1) ) { v5 = *(_DWORD *)(a1 + 24792); v4 = *(_BYTE *)(v5 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v5 + 1; goto LABEL_9; } return -1; } //----- (0047C340) -------------------------------------------------------- void *__cdecl sub_47C340(int a1) { void *result; // eax@1 result = malloc(0xCu); if ( result ) { *(_DWORD *)result = *(_DWORD *)(a1 + 100); *((_DWORD *)result + 1) = 0; *((_DWORD *)result + 2) = 0; *(_DWORD *)(a1 + 100) = result; } else { *(_DWORD *)(a1 + 102824) = 20; result = 0; } return result; } //----- (0047C380) -------------------------------------------------------- int __cdecl sub_47C380(int a1, unsigned int a2, unsigned int a3, int a4, int a5) { int i; // edi@2 unsigned int v6; // eax@3 int v7; // ecx@7 int v8; // eax@8 int v9; // ecx@13 int v10; // eax@14 int j; // ecx@19 unsigned int v12; // eax@20 int result; // eax@26 unsigned int v14; // ecx@27 signed int v15; // [sp+Ch] [bp-8h]@1 int v16; // [sp+10h] [bp-4h]@1 v16 = a1 + 112; v15 = 1999; do { for ( i = *(_DWORD *)v16; i; i = *(_DWORD *)i ) { v6 = *(_DWORD *)(i + 24); if ( v6 && v6 >= a2 && v6 < a3 ) *(_DWORD *)(i + 24) = a4 + v6 - a5; v7 = i + 12; if ( i != -12 ) { do { v8 = *(_DWORD *)v7; if ( *(_DWORD *)v7 && v8 >= a2 && v8 < a3 ) *(_DWORD *)v7 = a4 + v8 - a5; v7 = v8; } while ( v8 ); } v9 = i + 16; if ( i != -16 ) { do { v10 = *(_DWORD *)v9; if ( *(_DWORD *)v9 && v10 >= a2 && v10 < a3 ) *(_DWORD *)v9 = a4 + v10 - a5; v9 = v10; } while ( v10 ); } for ( j = *(_DWORD *)(i + 20); j; j = *(_DWORD *)j ) { v12 = *(_DWORD *)(j + 8); if ( v12 >= a2 && v12 < a3 ) *(_DWORD *)(j + 8) = a4 + v12 - a5; } } v16 += 4; --v15; } while ( v15 ); for ( result = *(_DWORD *)(a1 + 102908); result; result = *(_DWORD *)result ) { v14 = *(_DWORD *)(result + 4); if ( v14 && v14 >= a2 ) { if ( v14 < a3 ) { *(_DWORD *)(result + 4) = a4 + v14 - a5; *(_DWORD *)(result + 8) += a4 - a5; *(_DWORD *)(result + 16) += a4 - a5; *(_DWORD *)(result + 20) += a4 - a5; } } } return result; } //----- (0047C4A0) -------------------------------------------------------- signed int __usercall sub_47C4A0(int a1, unsigned int a2, unsigned int a3) { signed int v3; // ebx@1 int v4; // edx@2 unsigned int v5; // eax@3 int i; // eax@7 unsigned int v7; // ecx@8 int v9; // [sp+4h] [bp-4h]@1 v3 = 0; v9 = a1 + 112; while ( 1 ) { v4 = *(_DWORD *)v9; if ( *(_DWORD *)v9 ) break; LABEL_12: v9 += 4; ++v3; if ( v3 >= 1999 ) return 0; } while ( 1 ) { v5 = *(_DWORD *)(v4 + 16); if ( v5 ) break; LABEL_7: for ( i = *(_DWORD *)(v4 + 20); i; i = *(_DWORD *)i ) { v7 = *(_DWORD *)(i + 8); if ( v7 >= a3 ) { if ( v7 < a2 ) return -1; } } v4 = *(_DWORD *)v4; if ( !v4 ) goto LABEL_12; } while ( v5 < a3 || v5 >= a2 ) { v5 = *(_DWORD *)v5; if ( !v5 ) goto LABEL_7; } return -1; } //----- (0047C520) -------------------------------------------------------- int __cdecl sub_47C520(int a1, int a2) { int v2; // esi@1 int result; // eax@3 int v4; // edx@4 int v5; // ecx@5 v2 = a2; if ( !a2 ) v2 = *(_DWORD *)(a1 + 100); result = *(_DWORD *)(v2 + 4); if ( result ) { v4 = 0; do { v5 = *(_DWORD *)result; *(_DWORD *)result = v4; v4 = result; result = v5; } while ( v5 ); *(_DWORD *)(v2 + 4) = v4; result = v4 + 8; } return result; } //----- (0047C560) -------------------------------------------------------- int __cdecl sub_47C560(int a1, int a2) { int result; // eax@2 if ( a2 ) result = *(_DWORD *)(*(_DWORD *)(a2 + 4) + 4); else result = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 100) + 4) + 4); return result; } //----- (0047C580) -------------------------------------------------------- void __cdecl sub_47C580(int a1, void *a2) { void *v2; // esi@1 void *v3; // eax@3 void *v4; // edi@4 void *v5; // eax@5 void *v6; // ecx@8 v2 = a2; if ( a2 || (v2 = *(void **)(a1 + 100)) != 0 ) { v3 = (void *)*((_DWORD *)v2 + 1); if ( v3 ) { do { v4 = *(void **)v3; free(v3); v3 = v4; } while ( v4 ); } v5 = *(void **)(a1 + 100); if ( v5 == v2 ) { *(_DWORD *)(a1 + 100) = *(_DWORD *)v2; free(v2); } else { if ( v5 ) { while ( 1 ) { v6 = *(void **)v5; if ( *(void **)v5 == v2 ) break; v5 = *(void **)v5; if ( !v6 ) { free(v2); return; } } *(_DWORD *)v5 = *(_DWORD *)v2; } free(v2); } } } //----- (0047C600) -------------------------------------------------------- signed int __cdecl sub_47C600(int a1, int a2) { int v2; // ebx@1 signed int result; // eax@2 signed int v4; // esi@3 char v5; // al@4 int i; // ecx@4 char v7; // al@11 int v8; // [sp+Ch] [bp+8h]@3 v2 = a1; if ( *(_BYTE *)a1 ) { v8 = 0; v4 = 1; while ( 1 ) { *(_DWORD *)(a2 + 4 * v8) = strtol((const char *)(v4 + v2), 0, 10); v5 = *(_BYTE *)(v4 + v2); for ( i = v8++ + 1; v5; v5 = *(_BYTE *)(v4++ + v2 + 1) ) { if ( v5 == 44 ) break; if ( v5 == 93 ) break; } if ( *(_BYTE *)(v4 + v2) == 44 ) ++v4; if ( i >= 16 ) break; v7 = *(_BYTE *)(v4 + v2); if ( !v7 ) break; if ( v7 == 93 ) { i = v8; break; } } result = i; } else { result = -1; } return result; } //----- (0047C680) -------------------------------------------------------- int __cdecl sub_47C680(int a1) { int result; // eax@1 int v2; // esi@3 result = *(_DWORD *)(a1 + 96); if ( result ) { do { if ( *(_DWORD *)(result + 4) < *(_DWORD *)(a1 + 24808) ) break; v2 = *(_DWORD *)result; free((void *)result); result = v2; } while ( v2 ); } *(_DWORD *)(a1 + 96) = result; return result; } //----- (0047C6C0) -------------------------------------------------------- signed int __cdecl sub_47C6C0(int a1, const char *a2, const char *a3, size_t a4, size_t a5) { int v5; // esi@1 signed int result; // eax@6 __int16 v7; // ax@9 const char *v8; // esi@10 const char v9; // al@12 v5 = *(_DWORD *)(a1 + 96); if ( v5 ) { while ( strncmp((const char *)(v5 + 16), a2, a4) || *(_BYTE *)(v5 + a4 + 16) ) { v5 = *(_DWORD *)v5; if ( !v5 ) goto LABEL_5; } if ( v5 ) { if ( !(*(_DWORD *)(a1 + 8) & 0x4000) ) { v7 = *(_WORD *)(v5 + 8); if ( v7 < 0 || (v8 = *(const char **)(*(_DWORD *)(a1 + 92) + 16 * v7)) != 0 && (strncmp(v8, a3, a5) || (v9 = v8[a5]) != 0 && v9 != 95) ) return 9; } return 0; } } LABEL_5: if ( !a4 ) return (*(_DWORD *)(a1 + 8) & 0x4000) != 0 ? 0 : 9; if ( a4 == 3 && a5 == 3 && !strncmp(a2, "xml", 3u) && !strncmp(a2, a3, 3u) || *(_DWORD *)(a1 + 8) & 0x4000 ) return 0; result = 5; *(_DWORD *)(a1 + 102824) = 5; return result; } //----- (0047C7C0) -------------------------------------------------------- char __cdecl sub_47C7C0(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edi@1 int v5; // ecx@1 char result; // al@13 int v7; // ebx@14 int v8; // eax@18 v2 = a1; v3 = *(_BYTE *)a1; v4 = a2; v5 = *(_BYTE *)a2; if ( *(_BYTE *)a1 ) { while ( v3 != 34 ) { if ( v5 != 45 && v3 != v5 ) { if ( (unsigned int)(v3 - 65) <= 0x19 ) v3 += 32; if ( (unsigned int)(v5 - 65) <= 0x19 ) v5 += 32; if ( v3 != v5 ) { if ( v5 != 42 ) return 1; v7 = *(_BYTE *)(v4++ + 1); if ( v7 ) { if ( (unsigned int)(v7 - 65) <= 0x19 ) v7 += 32; v8 = *(_BYTE *)v2; if ( *(_BYTE *)v2 ) { while ( v8 != 34 ) { if ( (unsigned int)(v8 - 65) <= 0x19 ) v8 += 32; if ( v8 == v7 && !sub_47C7C0(v2 + 1, v4 + 1) ) goto LABEL_15; v8 = *(_BYTE *)(v2++ + 1); if ( !v8 ) goto LABEL_25; } } break; } goto LABEL_15; } } v3 = *(_BYTE *)(v2 + 1); v5 = *(_BYTE *)(v4 + 1); ++v2; ++v4; if ( !v3 ) break; } } LABEL_25: result = *(_BYTE *)v4; if ( *(_BYTE *)v4 == 42 && !*(_BYTE *)(v4 + 1) ) LABEL_15: result = 0; return result; } //----- (0047C8A0) -------------------------------------------------------- signed int __cdecl sub_47C8A0(int a1, const char *a2, const char *a3) { const char *v3; // ebx@2 char *v4; // edi@4 char *v5; // eax@4 char *v6; // esi@4 int v7; // edx@5 int v8; // ecx@7 bool v9; // cf@8 unsigned __int8 v10; // bl@10 bool v11; // zf@11 int v12; // eax@12 const char *v13; // ecx@18 bool v14; // cf@19 const char v15; // bl@21 int v16; // eax@23 signed int result; // eax@29 const char *v18; // ecx@33 int v19; // eax@34 bool v20; // cf@35 unsigned __int8 v21; // dl@37 int v22; // eax@39 const char *v23; // eax@40 unsigned __int8 v24; // dl@43 int v25; // [sp-1Ch] [bp-20h]@17 const char *v26; // [sp-18h] [bp-1Ch]@17 const char *v27; // [sp-14h] [bp-18h]@17 size_t v28; // [sp-10h] [bp-14h]@17 size_t v29; // [sp-Ch] [bp-10h]@17 if ( !a2 || (v3 = a3) == 0 || !*a3 ) return 0; v4 = strchr(a2, 58); v5 = strchr(a3, 58); v6 = v5; if ( v5 ) { v7 = (int)(v5 + 1); if ( v4 ) { if ( !*(_BYTE *)v7 ) goto LABEL_52; v8 = (int)(v4 + 1); while ( 1 ) { v9 = *(_BYTE *)v8 < *(_BYTE *)v7; if ( *(_BYTE *)v8 != *(_BYTE *)v7 ) break; if ( !*(_BYTE *)v8 ) goto LABEL_12; v10 = *(_BYTE *)(v8 + 1); v9 = v10 < *(_BYTE *)(v7 + 1); if ( v10 != *(_BYTE *)(v7 + 1) ) { v3 = a3; break; } v8 += 2; v7 += 2; v11 = v10 == 0; v3 = a3; if ( v11 ) { LABEL_12: v12 = 0; goto LABEL_15; } } v12 = -v9 - (v9 - 1); LABEL_15: if ( !v12 ) { LABEL_52: if ( v6 == v3 ) return 0; v29 = v6 - v3; v28 = v4 - a2; v27 = v3; v26 = a2; v25 = a1; LABEL_29: result = sub_47C6C0(v25, v26, v27, v28, v29); if ( result ) { if ( result != 9 ) return result; return 3; } return 0; } } else { v13 = a2; while ( 1 ) { v14 = (unsigned __int8)*v13 < *(_BYTE *)v7; if ( *v13 != *(_BYTE *)v7 ) break; if ( !*v13 ) goto LABEL_23; v15 = v13[1]; v14 = (unsigned __int8)v15 < *(_BYTE *)(v7 + 1); if ( v15 != *(_BYTE *)(v7 + 1) ) { v3 = a3; break; } v13 += 2; v7 += 2; v11 = v15 == 0; v3 = a3; if ( v11 ) { LABEL_23: v16 = 0; goto LABEL_26; } } v16 = -v14 - (v14 - 1); LABEL_26: if ( !v16 ) { if ( v6 == v3 ) return 0; v29 = v6 - v3; v28 = 0; v27 = v3; v26 = a2; v25 = a1; goto LABEL_29; } } } else { v18 = a3; if ( v4 ) { v19 = (int)(v4 + 1); while ( 1 ) { v20 = *(_BYTE *)v19 < (unsigned __int8)*v18; if ( *(_BYTE *)v19 != *v18 ) break; if ( *(_BYTE *)v19 ) { v21 = *(_BYTE *)(v19 + 1); v20 = v21 < v18[1]; if ( v21 != v18[1] ) break; v19 += 2; v18 += 2; if ( v21 ) continue; } v22 = 0; goto LABEL_47; } } else { v23 = a2; while ( 1 ) { v20 = *v23 < (unsigned __int8)*v18; if ( *v23 != *v18 ) break; if ( *v23 ) { v24 = v23[1]; v20 = v24 < v18[1]; if ( v24 != v18[1] ) break; v23 += 2; v18 += 2; if ( v24 ) continue; } v22 = 0; goto LABEL_47; } } v22 = -v20 - (v20 - 1); LABEL_47: if ( !v22 ) return 0; } return 3; } //----- (0047CA10) -------------------------------------------------------- signed int __cdecl sub_47CA10(int a1, const char *name, void *a3) { unsigned __int32 v3; // eax@1 signed int result; // eax@2 struct hostent *v5; // eax@3 v3 = inet_addr(name); if ( v3 == -1 ) { v5 = gethostbyname(name); if ( v5 ) { memmove(a3, *(const void **)v5->h_addr_list, v5->h_length); result = 0; } else { *(_DWORD *)(a1 + 102832) = WSAGetLastError(); result = -1; } } else { *(_DWORD *)a3 = v3; result = 0; } return result; } //----- (0047CA70) -------------------------------------------------------- int __thiscall sub_47CA70(int this, SOCKET fd, char a3, __int32 a4) { fd_set *v4; // edi@1 int v5; // eax@10 signed int v6; // esi@10 fd_set *v7; // ST10_4@12 SOCKET v8; // edi@12 int v10; // [sp+Ch] [bp-32Ch]@1 struct timeval timeout; // [sp+18h] [bp-320h]@8 fd_set *writefds; // [sp+20h] [bp-318h]@1 fd_set *exceptfds; // [sp+24h] [bp-314h]@1 int v14; // [sp+28h] [bp-310h]@2 SOCKET v15; // [sp+2Ch] [bp-30Ch]@2 int v16; // [sp+12Ch] [bp-20Ch]@4 SOCKET v17; // [sp+130h] [bp-208h]@4 int v18; // [sp+230h] [bp-108h]@6 SOCKET v19; // [sp+234h] [bp-104h]@6 unsigned int v20; // [sp+334h] [bp-4h]@1 int v21; // [sp+338h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v4 = 0; v10 = this; *(_DWORD *)(this + 102832) = 0; exceptfds = 0; writefds = 0; if ( a3 & 1 ) { v4 = (fd_set *)&v14; v15 = fd; v14 = 1; } if ( a3 & 2 ) { writefds = (fd_set *)&v16; v17 = fd; v16 = 1; } if ( a3 & 4 ) { exceptfds = (fd_set *)&v18; v19 = fd; v18 = 1; } if ( a4 < 0 ) { timeout.tv_sec = a4 / -1000000; timeout.tv_usec = -a4 % 1000000; } else { timeout.tv_sec = a4; timeout.tv_usec = 0; } v5 = select(fd + 1, v4, writefds, exceptfds, &timeout); v6 = v5; if ( v5 <= 0 ) { if ( v5 < 0 ) *(_DWORD *)(v10 + 102832) = WSAGetLastError(); } else { v6 = 0; if ( a3 & 1 ) { v7 = v4; v8 = fd; if ( _WSAFDIsSet(fd, v7) ) v6 = 1; } else { v8 = fd; } if ( a3 & 2 && _WSAFDIsSet(v8, writefds) ) v6 |= 2u; if ( a3 & 4 && _WSAFDIsSet(v8, exceptfds) ) return v6 | 4; } return v6; } // 4DE38C: using guessed type int __security_cookie; //----- (0047CC10) -------------------------------------------------------- SOCKET __cdecl sub_47CC10(int a1, SOCKET s, struct sockaddr *addr, int *addrlen) { return accept(s, addr, addrlen); } //----- (0047CC30) -------------------------------------------------------- int __cdecl sub_47CC30(int a1) { int v1; // eax@1 v1 = *(_DWORD *)(a1 + 24772); if ( v1 != -1 && !(*(_BYTE *)(a1 + 16) & 4) ) { (*(void (__cdecl **)(int, int, signed int))(a1 + 24620))(a1, v1, 2); (*(void (__cdecl **)(int, _DWORD))(a1 + 24616))(a1, *(_DWORD *)(a1 + 24772)); *(_DWORD *)(a1 + 24772) = -1; } return 0; } //----- (0047CC80) -------------------------------------------------------- int __cdecl sub_47CC80(int a1, SOCKET s) { return closesocket(s); } //----- (0047CC90) -------------------------------------------------------- int __cdecl sub_47CC90(int a1, SOCKET s, int how) { return shutdown(s, how); } //----- (0047CCB0) -------------------------------------------------------- int __cdecl sub_47CCB0(int a1) { int v1; // edi@1 int (__cdecl *v2)(_DWORD); // eax@3 int result; // eax@4 int (__cdecl *v4)(_DWORD); // eax@9 v1 = *(_DWORD *)(a1 + 102824); if ( v1 ) { *(_DWORD *)(a1 + 102900) = 0; *(_DWORD *)(a1 + 102904) = 0; *(_DWORD *)(a1 + 102880) = 0; *(_DWORD *)(a1 + 102884) = 0; } v2 = *(int (__cdecl **)(_DWORD))(a1 + 24612); if ( !v2 || (result = v2(a1), (*(_DWORD *)(a1 + 102824) = result) == 0) ) { if ( v1 != -1 && v1 != 28 && v1 != 30 && *(_WORD *)(a1 + 102776) ) goto LABEL_12; v4 = *(int (__cdecl **)(_DWORD))(a1 + 24632); if ( !v4 || (result = v4(a1), (*(_DWORD *)(a1 + 102824) = result) == 0) ) { *(_WORD *)(a1 + 102776) = 0; LABEL_12: *(_DWORD *)(a1 + 102824) = v1; return v1; } } return result; } //----- (0047CD40) -------------------------------------------------------- int __cdecl sub_47CD40(int a1) { SOCKET v1; // eax@1 int result; // eax@2 *(_WORD *)(a1 + 102776) = 0; v1 = *(_DWORD *)(a1 + 24772); if ( v1 == -1 ) result = 0; else result = closesocket(v1); return result; } //----- (0047CD70) -------------------------------------------------------- int __usercall sub_47CD70(int a1, int a2, int a3, const char *a4) { int v4; // ebx@1 int v5; // esi@1 int i; // edi@1 char v7; // al@2 char v8; // al@6 char v9; // al@7 char v10; // al@18 char v11; // al@19 char v12; // cl@21 char j; // al@26 v4 = a3; v5 = a1; for ( i = a2; *(_BYTE *)v5; ++v5 ) { v7 = *(_BYTE *)v5; if ( *(_BYTE *)v5 != 32 && v7 != 9 && !strchr(a4, v7) ) break; } v8 = *(_BYTE *)v5; if ( *(_BYTE *)v5 == 34 ) { v9 = *(_BYTE *)(v5++ + 1); if ( v9 ) { do { if ( v9 == 34 ) break; --v4; if ( !v4 ) break; ++v5; *(_BYTE *)i = v9; v9 = *(_BYTE *)v5; ++i; } while ( *(_BYTE *)v5 ); } } else { if ( v8 ) { do { if ( v8 + 1 > 0 && v8 <= 32 ) break; if ( strchr(a4, v8) ) break; --v4; if ( !v4 ) break; if ( *(_BYTE *)v5 == 37 ) { v10 = *(_BYTE *)(v5 + 1); v11 = v10 < 65 ? v10 - 48 : (v10 & 7) + 9; v12 = *(_BYTE *)(v5 + 2); if ( v12 < 65 ) { *(_BYTE *)i++ = v12 - 48 + 16 * v11; v5 += 3; } else { *(_BYTE *)i++ = (v12 & 7) + 9 + 16 * v11; v5 += 3; } } else { *(_BYTE *)i++ = *(_BYTE *)v5++; } v8 = *(_BYTE *)v5; } while ( *(_BYTE *)v5 ); } } *(_BYTE *)i = 0; for ( j = *(_BYTE *)v5; j; j = *(_BYTE *)(v5++ + 1) ) { if ( strchr(a4, j) ) break; } return v5; } //----- (0047CE80) -------------------------------------------------------- int __thiscall sub_47CE80(void *this) { _UNKNOWN *v1; // eax@1 int result; // eax@4 v1 = &unk_4C79A0; if ( this != (void *)200 ) { do { if ( !*((_DWORD *)v1 + 1) ) break; v1 = (char *)v1 + 8; } while ( *(void **)v1 != this ); } result = *((_DWORD *)v1 + 1); if ( !result ) result = (int)byte_4C760C; return result; } //----- (0047CEC0) -------------------------------------------------------- unsigned int __cdecl sub_47CEC0(int a1) { int v1; // edx@1 char v2; // al@1 unsigned int i; // ecx@1 v1 = a1; v2 = *(_BYTE *)a1; for ( i = 0; *(_BYTE *)v1; v2 = *(_BYTE *)v1 ) { ++v1; i = v2 + 65599 * i; } return i % 0x7CF; } //----- (0047CF00) -------------------------------------------------------- int __cdecl sub_47CF00(int a1, unsigned int a2, int a3, int a4) { int v4; // eax@2 int result; // eax@6 *(_DWORD *)a4 = 0; if ( a2 && (v4 = *(_DWORD *)(a1 + 4 * ((a2 >> 3) & 0xFFF) + 8108)) != 0 ) { while ( *(_DWORD *)(v4 + 4) != a2 || *(_DWORD *)(v4 + 12) != a3 ) { v4 = *(_DWORD *)v4; if ( !v4 ) goto LABEL_6; } *(_DWORD *)a4 = v4; result = *(_DWORD *)(v4 + 16); } else { LABEL_6: result = 0; } return result; } //----- (0047CF50) -------------------------------------------------------- void *__cdecl sub_47CF50(int a1, unsigned int a2, unsigned int *a3, int a4, int a5, int a6) { int v6; // edi@1 void *result; // eax@3 int v8; // ecx@6 unsigned int v9; // eax@7 int v10; // eax@9 v6 = *(_DWORD *)(a1 + 24492); if ( !v6 || *(_WORD *)(a1 + 24496) >= 32 ) { result = malloc(0x304u); if ( !result ) { *(_DWORD *)(a1 + 102824) = 20; return result; } *(_DWORD *)result = v6; *(_DWORD *)(a1 + 24492) = result; *(_WORD *)(a1 + 24496) = 0; } v8 = *(_DWORD *)(a1 + 24492) + 24 * *(_WORD *)(a1 + 24496) + 4; *(_DWORD *)a6 = v8; ++*(_WORD *)(a1 + 24496); if ( a3 ) v9 = *a3; else v9 = a2; v10 = (v9 >> 3) & 0xFFF; *(_DWORD *)v8 = *(_DWORD *)(a1 + 4 * v10 + 8108); *(_DWORD *)(v8 + 12) = a5; *(_DWORD *)(v8 + 4) = a2; *(_WORD *)(v8 + 20) = 0; *(_DWORD *)(v8 + 8) = a3; *(_DWORD *)(a1 + 4 * v10 + 8108) = v8; result = (void *)(*(_DWORD *)(a1 + 24508) + 1); *(_DWORD *)(a1 + 24508) = result; *(_DWORD *)(v8 + 16) = result; return result; } //----- (0047D010) -------------------------------------------------------- int __cdecl sub_47D010(int a1, int a2, unsigned int *a3, int a4, int a5, int a6) { unsigned int v6; // edx@2 int v7; // edi@3 int v8; // ecx@5 int v9; // eax@7 int v10; // edx@8 int v11; // ecx@8 int result; // eax@14 *(_DWORD *)a6 = 0; if ( a2 && (v6 = *a3) != 0 ) { v7 = *(_DWORD *)(a1 + 4 * ((v6 >> 3) & 0xFFF) + 8108); if ( v7 ) { while ( 1 ) { if ( *(_DWORD *)(v7 + 12) == a5 ) { v8 = *(_DWORD *)(v7 + 8); if ( v8 ) { if ( *(_DWORD *)v8 == v6 ) { v9 = 0; if ( a4 > 0 ) { v10 = (int)(a3 + 1); v11 = v8 + 4; do { if ( *(_DWORD *)v11 != *(_DWORD *)v10 ) break; ++v9; v11 += 4; v10 += 4; } while ( v9 < a4 ); v6 = *a3; } if ( v9 == a4 ) break; } } } v7 = *(_DWORD *)v7; if ( !v7 ) goto LABEL_14; } *(_DWORD *)a6 = v7; result = *(_DWORD *)(v7 + 16); } else { LABEL_14: result = 0; } } else { result = 0; } return result; } //----- (0047D0B0) -------------------------------------------------------- int __cdecl sub_47D0B0(int a1) { int (__cdecl *v1)(_DWORD); // eax@2 int result; // eax@3 if ( !(*(_BYTE *)(a1 + 8) & 8) || (v1 = *(int (__cdecl **)(_DWORD))(a1 + 24700)) == 0 || (result = v1(a1), (*(_DWORD *)(a1 + 102824) = result) == 0) ) result = 0; return result; } //----- (0047D0E0) -------------------------------------------------------- signed int __cdecl sub_47D0E0(int a1, unsigned int a2, int a3) { unsigned int v3; // esi@1 int v4; // ebx@3 unsigned int v5; // ecx@4 int v6; // eax@4 signed int result; // eax@5 unsigned int v8; // ecx@7 v3 = a2; if ( !a2 || *(_DWORD *)(a1 + 8) & 0x20000 ) { result = 1; } else { v4 = a3; if ( sub_47CF00(a1, a2, a3, (int)&a2) ) { v5 = a2; v6 = a2 + 20; if ( !*(_BYTE *)(a2 + 20) ) { *(_BYTE *)v6 = 2; *(_BYTE *)(v5 + 21) = 2; return *(_BYTE *)v6; } return *(_BYTE *)v6; } if ( sub_47CF50(a1, v3, 0, 0, v4, (int)&a2) ) { v8 = a2; v6 = a2 + 20; *(_BYTE *)(a2 + 20) = 0; *(_BYTE *)(v8 + 21) = 0; return *(_BYTE *)v6; } result = 1; } return result; } //----- (0047D170) -------------------------------------------------------- int __cdecl sub_47D170(int a1, int a2, unsigned int a3, int a4) { int v4; // ebx@1 int result; // eax@2 int v6; // esi@13 int v7; // [sp+4h] [bp-4h]@1 v4 = *(_DWORD *)(a1 + 8); v7 = 0; if ( v4 & 0x20000 ) return a2; if ( *(_WORD *)(a1 + 6) != 1 || !*(_DWORD *)(a1 + 40) || v4 & 0x20000000 || *(_WORD *)(a1 + 99668) == 3 ) { v6 = a2; if ( a2 >= 0 ) { if ( !a2 ) return v6; result = sub_47CF00(a1, a3, a4, (int)&v7); if ( !result ) return result; } else { v6 = sub_47CF00(a1, a3, a4, (int)&v7); } if ( v6 && v7 ) { if ( v4 & 8 ) { *(_BYTE *)(v7 + 20) = 1; return v6; } *(_BYTE *)(v7 + 21) = 1; } return v6; } result = a2; if ( a2 >= 0 ) return result; if ( sub_47CF00(a1, a3, a4, (int)&v7) ) { if ( v4 & 8 ) { *(_BYTE *)(v7 + 20) = 2; return -1; } *(_BYTE *)(v7 + 21) = 2; } return -1; } //----- (0047D260) -------------------------------------------------------- bool __cdecl sub_47D260(int a1, int a2) { bool result; // al@2 int v3; // edx@5 if ( a2 ) { if ( *(_WORD *)(a1 + 6) != 1 || !*(_DWORD *)(a1 + 40) || (v3 = *(_DWORD *)(a1 + 8), v3 & 0x20000000) || *(_WORD *)(a1 + 99668) == 3 ) { if ( *(_BYTE *)(a1 + 8) & 8 ) result = *(_BYTE *)(a2 + 20) == 1; else result = *(_BYTE *)(a2 + 21) == 1; } else { if ( v3 & 8 ) result = *(_BYTE *)(a2 + 20) != 0; else result = *(_BYTE *)(a2 + 21) != 0; } } else { result = 0; } return result; } //----- (0047D2D0) -------------------------------------------------------- signed int __cdecl sub_47D2D0(int a1, signed int a2) { signed int result; // eax@2 if ( *(_WORD *)(a1 + 99668) == 3 ) { result = 1; } else { result = a2; if ( a2 ) { if ( *(_BYTE *)(a1 + 8) & 8 ) result = *(_BYTE *)(a2 + 20) == 0; else result = *(_BYTE *)(a2 + 21) == 0; } } return result; } //----- (0047D310) -------------------------------------------------------- int __cdecl sub_47D310(int a1, int a2) { int result; // eax@1 result = a2; if ( a2 ) { if ( *(_BYTE *)(a1 + 8) & 8 ) *(_BYTE *)(a2 + 20) = 1; else *(_BYTE *)(a2 + 21) = 1; } return result; } //----- (0047D330) -------------------------------------------------------- void __cdecl sub_47D330(int a1) { int v1; // ebx@1 int v2; // edi@2 void *v3; // eax@3 void *v4; // esi@4 int v5; // esi@5 signed int v6; // [sp+Ch] [bp-4h]@1 v1 = a1 + 112; v6 = 1999; do { v2 = *(_DWORD *)v1; if ( *(_DWORD *)v1 ) { do { v3 = *(void **)(v2 + 20); if ( v3 ) { do { v4 = *(void **)v3; free(v3); v3 = v4; } while ( v4 ); } v5 = *(_DWORD *)v2; free((void *)v2); v2 = v5; } while ( v5 ); } *(_DWORD *)v1 = 0; v1 += 4; --v6; } while ( v6 ); } //----- (0047D390) -------------------------------------------------------- int __cdecl sub_47D390(int a1, const char *a2) { const char v2; // al@1 unsigned int v3; // ecx@1 const char *i; // edx@1 int result; // eax@3 v2 = *a2; v3 = 0; for ( i = a2; *i; v2 = *i ) { ++i; v3 = v2 + 65599 * v3; } result = *(_DWORD *)(a1 + 4 * v3 % 0x7CF + 112); if ( result ) { while ( strcmp((const char *)(result + 32), a2) ) { result = *(_DWORD *)result; if ( !result ) goto LABEL_6; } } else { LABEL_6: result = 0; } return result; } //----- (0047D420) -------------------------------------------------------- void *__cdecl sub_47D420(int a1, int a2) { void *v2; // edi@1 unsigned int v3; // eax@2 int v4; // ecx@2 char v5; // dl@3 v2 = malloc(strlen((const char *)a2) + 36); if ( v2 ) { v3 = sub_47CEC0(a2); v4 = a2; do { v5 = *(_BYTE *)v4; *((_BYTE *)v2 + v4 - a2 + 32) = *(_BYTE *)v4; ++v4; } while ( v5 ); *(_DWORD *)v2 = *(_DWORD *)(a1 + 4 * v3 + 112); *(_DWORD *)(a1 + 4 * v3 + 112) = v2; } return v2; } //----- (0047D480) -------------------------------------------------------- void *__cdecl sub_47D480(int a1, size_t a2) { void *result; // eax@2 int (__cdecl *v3)(_DWORD, _DWORD); // eax@5 unsigned int v4; // esi@7 int v5; // edx@9 if ( a2 ) { if ( a1 ) { v3 = *(int (__cdecl **)(_DWORD, _DWORD))(a1 + 24664); if ( v3 ) { result = (void *)v3(a1, a2); *(_WORD *)(a1 + 99676) = 1; } else { v4 = (-(a2 + 2) & 3) + a2 + 2; result = malloc(v4 + 8); if ( result ) { *(_WORD *)((char *)result + v4 - 2) = -16162; v5 = *(_DWORD *)(a1 + 108); *(_DWORD *)((char *)result + v4 + 4) = v4; *(_DWORD *)((char *)result + v4) = v5; *(_DWORD *)(a1 + 108) = (char *)result + v4; *(_WORD *)(a1 + 99676) = 1; } else { *(_DWORD *)(a1 + 102824) = 20; } } } else { result = malloc(a2); } } else { result = byte_4C760C; } return result; } //----- (0047D520) -------------------------------------------------------- void __cdecl sub_47D520(int a1, int a2) { __int16 v2; // ax@2 int v3; // esi@4 int v4; // eax@6 int v5; // edi@9 int v6; // edi@11 if ( !a1 || (v2 = *(_WORD *)(a1 + 4), v2 != 1) && v2 != 2 ) return; v3 = a1 + 104; if ( !a2 ) { while ( *(_DWORD *)v3 ) { v6 = *(_DWORD *)v3; *(_DWORD *)v3 = **(_DWORD **)v3; (*(void (__cdecl **)(int))(v6 + 16))(v6); free((void *)v6); } goto LABEL_12; } if ( !*(_DWORD *)v3 ) { LABEL_12: *(_DWORD *)(a1 + 24504) = 0; *(_DWORD *)(a1 + 24500) = 0; return; } while ( 1 ) { v4 = *(_DWORD *)v3; if ( a2 == *(_DWORD *)(*(_DWORD *)v3 + 4) ) break; v3 = *(_DWORD *)v3; if ( !*(_DWORD *)v4 ) { *(_DWORD *)(a1 + 24504) = 0; *(_DWORD *)(a1 + 24500) = 0; return; } } v5 = *(_DWORD *)v3; *(_DWORD *)v3 = *(_DWORD *)v4; (*(void (__cdecl **)(int))(v5 + 16))(v5); free((void *)v5); } //----- (0047D5C0) -------------------------------------------------------- void *__cdecl sub_47D5C0(int a1, int a2, int a3, int a4, int a5) { void *result; // eax@1 result = malloc(0x14u); if ( result ) { *(_DWORD *)result = *(_DWORD *)(a1 + 104); *((_DWORD *)result + 2) = a3; *((_DWORD *)result + 3) = a4; *((_DWORD *)result + 1) = a2; *((_DWORD *)result + 4) = a5; *(_DWORD *)(a1 + 104) = result; } return result; } //----- (0047D600) -------------------------------------------------------- int __cdecl sub_47D600(int a1, const char *a2) { int v2; // eax@3 int result; // eax@4 if ( a2 && *a2 && (v2 = sub_47D390(a1, a2)) != 0 ) result = *(_DWORD *)(v2 + 4); else result = 0; return result; } //----- (0047D630) -------------------------------------------------------- void *__cdecl sub_47D630(int a1, int a2, void *a3, int a4, int a5, unsigned int a6) { void *v6; // esi@1 int v7; // eax@4 int v8; // edi@4 void *v9; // eax@5 void *result; // eax@6 int v11; // eax@9 char v12; // cl@10 unsigned int v13; // ebx@13 void *v14; // eax@14 unsigned int v15; // eax@17 unsigned int v16; // ecx@17 int v17; // eax@18 int v18; // ebx@19 int v19; // esi@19 void *v20; // eax@20 int v21; // ecx@21 int v22; // edx@24 void *v23; // eax@26 int v24; // eax@28 v6 = a3; if ( a3 && a2 && *(_BYTE *)a2 ) { v7 = sub_47D390(a1, (const char *)a2); v8 = v7; if ( !v7 ) { v9 = sub_47D420(a1, a2); if ( v9 ) { *((_DWORD *)v9 + 1) = a4; *((_DWORD *)v9 + 2) = a5; *((_DWORD *)v9 + 3) = a3; *((_DWORD *)v9 + 4) = 0; *((_DWORD *)v9 + 5) = 0; *((_DWORD *)v9 + 6) = 0; *((_DWORD *)v9 + 7) = a6; *(_DWORD *)a3 = 0; return a3; } return 0; } if ( *(_DWORD *)(v7 + 24) ) { if ( *(_DWORD *)(v7 + 4) != a4 ) { v11 = a2; do { v12 = *(_BYTE *)v11; *(_BYTE *)(a1 - a2 + v11 + 93440) = *(_BYTE *)v11; ++v11; } while ( v12 ); *(_DWORD *)(a1 + 102824) = 26; return 0; } v13 = a6; if ( *(_DWORD *)(v7 + 28) < a6 ) { do { v14 = sub_47D480(a1, 4u); if ( !v14 ) return 0; *(_DWORD *)v6 = v14; --v13; v6 = v14; } while ( *(_DWORD *)(v8 + 28) < v13 ); } *(_DWORD *)v6 = *(_DWORD *)(v8 + 24); result = v6; } else { v15 = *(_DWORD *)(v7 + 28); v16 = a6; if ( v15 > a6 ) { v17 = v8 + 12; while ( 1 ) { v18 = *(_DWORD *)v17; v19 = v17; if ( *(_DWORD *)v17 ) break; LABEL_23: *(_DWORD *)v19 = 0; --*(_DWORD *)(v8 + 28); *(_DWORD *)(v8 + 8) = a5; *(_DWORD *)(v8 + 16) = 0; if ( *(_DWORD *)(v8 + 28) <= v16 ) { v22 = *(_DWORD *)v17; *(_DWORD *)v17 = a3; result = a3; *(_DWORD *)a3 = v22; return result; } } while ( 1 ) { v20 = sub_47D480(a1, 4u); *(_DWORD *)v19 = v20; if ( !v20 ) return 0; v21 = *(_DWORD *)v18; *(_DWORD *)v18 = v20; v19 = *(_DWORD *)v19; v18 = v21; if ( !v21 ) { v16 = a6; v17 = v8 + 12; goto LABEL_23; } } } if ( v15 < a6 ) { do { v23 = sub_47D480(a1, 4u); if ( !v23 ) return 0; *(_DWORD *)v6 = v23; v6 = v23; --a6; } while ( *(_DWORD *)(v8 + 28) < a6 ); } v24 = *(_DWORD *)(v8 + 12); *(_DWORD *)(v8 + 12) = v6; *(_DWORD *)v6 = v24; result = v6; } } else { result = a3; } return result; } //----- (0047D7E0) -------------------------------------------------------- int __cdecl sub_47D7E0(int a1, int a2, int a3, int a4, size_t a5, int a6, int a7, int a8, int (__cdecl *a9)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD)) { int v9; // edi@1 int v10; // eax@3 int v11; // eax@9 void *v12; // eax@10 int v13; // edx@11 int result; // eax@11 int v15; // eax@18 char v16; // cl@19 int v17; // eax@22 char v18; // cl@23 v9 = a3; *(_WORD *)(a1 + 99676) = 0; if ( !a3 ) { v10 = a9 ? a9(a1, a4, a7, a8, &a5) : sub_47D480(a1, a5); v9 = v10; if ( v10 ) *(_WORD *)(a1 + 99676) = 1; } if ( a2 && *(_BYTE *)a2 ) { v11 = sub_47D390(a1, (const char *)a2); if ( !v11 ) { v12 = sub_47D420(a1, a2); if ( v12 ) { *((_DWORD *)v12 + 1) = a4; v13 = a6; *((_DWORD *)v12 + 3) = 0; *((_DWORD *)v12 + 4) = 0; *((_DWORD *)v12 + 5) = 0; *((_DWORD *)v12 + 2) = a5; *((_DWORD *)v12 + 7) = v13; *((_DWORD *)v12 + 6) = v9; return v9; } return 0; } if ( (*(_DWORD *)(v11 + 4) != a4 || *(_DWORD *)(v11 + 28) == a6 && *(_DWORD *)(v11 + 8) != a5) && (*(_DWORD *)(v11 + 16) || *(_DWORD *)(v11 + 20)) ) { v17 = a2; do { v18 = *(_BYTE *)v17; *(_BYTE *)(a1 + 93440 - a2 + v17) = *(_BYTE *)v17; ++v17; } while ( v18 ); *(_DWORD *)(a1 + 102824) = 26; return 0; } if ( *(_DWORD *)(v11 + 24) ) { v15 = a2; do { v16 = *(_BYTE *)v15; *(_BYTE *)(a1 + 93440 - a2 + v15) = *(_BYTE *)v15; ++v15; } while ( v16 ); *(_DWORD *)(a1 + 102824) = 24; result = 0; } else { *(_DWORD *)(v11 + 8) = a5; *(_DWORD *)(v11 + 28) = a6; *(_DWORD *)(v11 + 24) = v9; result = v9; } } else { result = v9; } return result; } //----- (0047D930) -------------------------------------------------------- void *__cdecl sub_47D930(int a1, int a2, int a3, void *a4, int a5, const void *a6, size_t a7) { return memmove(a4, a6, a7); } //----- (0047D950) -------------------------------------------------------- void *__cdecl sub_47D950(int a1) { void *result; // eax@1 const void *v2; // ebx@1 int v3; // eax@3 signed int v4; // ecx@3 size_t v5; // edi@5 void *v6; // esi@5 result = (void *)a1; v2 = *(const void **)(a1 + 88); if ( v2 && !*(_DWORD *)(a1 + 92) ) { v3 = *(_DWORD *)(a1 + 88); v4 = 1; if ( *(_DWORD *)v2 ) { do { v3 += 16; ++v4; } while ( *(_DWORD *)v3 ); } v5 = 16 * v4; result = malloc(16 * v4); v6 = result; if ( result ) { memmove(result, v2, v5); result = (void *)*((_DWORD *)v6 + 1); if ( result ) { if ( strcmp((const char *)result, "http://schemas.xmlsoap.org/soap/envelope/") ) { result = (void *)a1; *(_WORD *)(a1 + 6) = 2; } else { result = (void *)1; *(_WORD *)(a1 + 6) = 1; } } for ( *(_DWORD *)(a1 + 92) = v6; *(_DWORD *)v6; v6 = (char *)v6 + 16 ) *((_DWORD *)v6 + 3) = 0; } } return result; } //----- (0047DA10) -------------------------------------------------------- int __cdecl sub_47DA10(int a1, const char *a2) { unsigned int v2; // esi@2 int v3; // edi@2 unsigned int v4; // ecx@3 const char *v5; // edx@3 char *v6; // eax@11 int result; // eax@13 if ( a2 && (v2 = strlen(a2), (v3 = a1) != 0) ) { while ( 1 ) { v4 = 0; v5 = (const char *)v3; if ( v2 ) { do { if ( *v5 != a2[v4] ) break; ++v4; ++v5; } while ( v4 < v2 ); } if ( (!*v5 || *v5 == 32) && (v4 == v2 || v4 && a2[v4 - 1] == 58) ) break; v6 = strchr(v5, 32); if ( v6 ) { v3 = (int)(v6 + 1); if ( v6 != (char *)-1 ) continue; } goto LABEL_13; } result = v3; } else { LABEL_13: result = 0; } return result; } //----- (0047DA90) -------------------------------------------------------- int __cdecl sub_47DA90(int a1, const char *a2, size_t a3) { int v3; // esi@1 int result; // eax@5 v3 = *(_DWORD *)(a1 + 96); if ( v3 ) { while ( strncmp((const char *)(v3 + 16), a2, a3) || *(_BYTE *)(v3 + a3 + 16) ) { v3 = *(_DWORD *)v3; if ( !v3 ) goto LABEL_5; } result = v3; } else { LABEL_5: result = 0; } return result; } //----- (0047DAE0) -------------------------------------------------------- void *__cdecl sub_47DAE0(int a1, const char *a2, const char *a3, signed int a4) { int v4; // esi@3 const char *v5; // eax@5 unsigned int v6; // edi@13 unsigned int v7; // eax@14 void *result; // eax@16 const char *v9; // ecx@19 const char v10; // dl@20 int v11; // edi@22 const char *v12; // ecx@22 const char v13; // dl@23 if ( sub_47DA10(*(_DWORD *)(a1 + 119324), a2) ) return 0; if ( !(_WORD)a4 ) { v4 = *(_DWORD *)(a1 + 96); if ( v4 ) { while ( 1 ) { if ( !strcmp((const char *)(v4 + 16), a2) ) { v5 = *(const char **)(v4 + 12); if ( !v5 ) break; if ( !strcmp(v5, a3) ) break; } v4 = *(_DWORD *)v4; if ( !v4 ) goto LABEL_13; } if ( *(_DWORD *)(v4 + 4) >= *(_DWORD *)(a1 + 24808) && *(_DWORD *)(v4 + 12) || *(_WORD *)(v4 + 8) != 1 ) return 0; a4 = 1; } } LABEL_13: v6 = strlen(a2); if ( a3 ) v7 = strlen(a3); else v7 = 0; result = malloc(v7 + v6 + 21); if ( !result ) { *(_DWORD *)(a1 + 102824) = 20; return 0; } *(_DWORD *)result = *(_DWORD *)(a1 + 96); *(_DWORD *)(a1 + 96) = result; v9 = a2; do { v10 = *v9; v9[(char *)result + 16 - a2] = *v9; ++v9; } while ( v10 ); if ( a3 ) { v11 = (int)((char *)result + v6 + 17); v12 = a3; do { v13 = *v12; v12[v11 - (_DWORD)a3] = *v12; ++v12; } while ( v13 ); *((_DWORD *)result + 3) = v11; } else { *((_DWORD *)result + 3) = 0; } *((_DWORD *)result + 1) = *(_DWORD *)(a1 + 24808); *((_WORD *)result + 4) = a4; return result; } //----- (0047DC50) -------------------------------------------------------- void *__cdecl sub_47DC50(int a1, const char *a2) { size_t v2; // edi@1 char *v3; // eax@1 int v4; // esi@3 void *result; // eax@4 v2 = 0; v3 = strchr(a2, 58); if ( v3 ) v2 = v3 - a2; v4 = *(_DWORD *)(a1 + 96); if ( !v4 ) goto LABEL_7; while ( 1 ) { result = (void *)strncmp((const char *)(v4 + 16), a2, v2); if ( !result ) { if ( !*(_BYTE *)(v4 + v2 + 16) ) break; } v4 = *(_DWORD *)v4; if ( !v4 ) goto LABEL_7; } if ( v4 ) { if ( !*(_WORD *)(v4 + 8) ) result = sub_47DAE0(a1, (const char *)(v4 + 16), *(const char **)(v4 + 12), 1); } else { LABEL_7: result = (void *)strncmp(a2, "xml", 3u); if ( result ) { strncpy((char *)(a1 + 91392), a2, v2); *(_BYTE *)(v2 + a1 + 91392) = 0; result = sub_47DAE0(a1, (const char *)(a1 + 91392), 0, 1); } } return result; } //----- (0047DD00) -------------------------------------------------------- signed int __cdecl sub_47DD00(int a1, char *a2, const char *a3, __int16 a4) { signed int result; // eax@2 int v5; // ebx@3 void *v6; // edi@3 void *v7; // eax@8 void *v8; // esi@8 int v9; // edi@10 char *v10; // ebx@10 int v11; // eax@11 int v12; // esi@13 int v13; // eax@15 int v14; // edx@15 void *v15; // esi@15 int v16; // eax@17 int v17; // esi@18 int v18; // eax@24 int v19; // edx@24 int v20; // eax@25 int v21; // esi@27 int v22; // eax@34 int v23; // edi@35 const char *v24; // eax@37 const char *v25; // ecx@38 int v26; // eax@39 char *v27; // eax@46 char v28; // cl@47 const char *v29; // ebx@49 unsigned int v30; // kr04_4@52 void *v31; // eax@52 int v32; // edx@59 const char *v33; // ecx@59 const char v34; // al@60 int v35; // [sp+4h] [bp-Ch]@3 void *v36; // [sp+8h] [bp-8h]@8 int v37; // [sp+Ch] [bp-4h]@10 if ( *a2 == 45 ) return 0; v5 = a1 + 99656; v6 = *(void **)(a1 + 99656); v35 = a1 + 99656; if ( !v6 ) goto LABEL_8; while ( strcmp((const char *)v6 + 22, a2) ) { v6 = *(void **)v6; if ( !v6 ) goto LABEL_8; } if ( !v6 ) { LABEL_8: v7 = malloc(strlen(a2) + 24); v8 = v7; v36 = v7; if ( !v7 ) { LABEL_53: result = 20; *(_DWORD *)(a1 + 102824) = 20; return result; } *((_DWORD *)v7 + 4) = 0; if ( *(_DWORD *)(a1 + 8) & 0x10000 ) { v9 = a1 + 99656; v37 = a1 + 99656; v10 = strchr(a2, 58); if ( strncmp(a2, "xmlns", 5u) ) { if ( v10 ) { v20 = sub_47DA90(a1, a2, v10 - a2); if ( v20 ) { *((_DWORD *)v8 + 4) = *(_DWORD *)(v20 + 12); } else { v21 = *(_DWORD *)v35; if ( *(_DWORD *)v35 ) { while ( strncmp((const char *)(v21 + 22), "xmlns:", 6u) || strncmp((const char *)(v21 + 28), a2, v10 - a2) || v10[v21 - (_DWORD)a2 + 28] ) { v21 = *(_DWORD *)v21; if ( !v21 ) goto LABEL_34; } *((_DWORD *)v36 + 4) = *(_DWORD *)(v21 + 16); } } LABEL_34: v22 = *(_DWORD *)v37; if ( *(_DWORD *)v37 ) { v23 = a1 + 99656; do { if ( strncmp((const char *)(v22 + 22), "xmlns", 5u) ) { v24 = *(const char **)(*(_DWORD *)v23 + 16); if ( v24 ) { v25 = (const char *)*((_DWORD *)v36 + 4); if ( v25 ) { v26 = strcmp(v24, v25); if ( v26 > 0 ) break; if ( !v26 && strcmp((const char *)(*(_DWORD *)v23 + 22), a2) > 0 ) break; } } } v23 = *(_DWORD *)v23; v22 = *(_DWORD *)v23; } while ( *(_DWORD *)v23 ); v37 = v23; } } else { v16 = *(_DWORD *)v9; if ( *(_DWORD *)v9 ) { v17 = a1 + 99656; do { if ( strncmp((const char *)(v16 + 22), "xmlns", 5u) ) { if ( *(_DWORD *)(*(_DWORD *)v17 + 16) || strcmp((const char *)(*(_DWORD *)v17 + 22), a2) > 0 ) goto LABEL_44; v17 = v37; } v17 = *(_DWORD *)v17; v16 = *(_DWORD *)v17; v37 = v17; } while ( *(_DWORD *)v17 ); v18 = v17; v19 = *(_DWORD *)v17; v15 = v36; *(_DWORD *)v36 = v19; *(_DWORD *)v18 = v36; goto LABEL_46; } } } else { v11 = *(_DWORD *)v9; if ( *(_DWORD *)v9 ) { while ( !strncmp((const char *)(v11 + 22), "xmlns", 5u) ) { v12 = *(_DWORD *)v37; if ( strcmp((const char *)(*(_DWORD *)v37 + 27), a2 + 5) > 0 ) break; v37 = *(_DWORD *)v37; v11 = *(_DWORD *)v12; if ( !*(_DWORD *)v12 ) { v13 = v12; v14 = *(_DWORD *)v12; v15 = v36; *(_DWORD *)v36 = v14; *(_DWORD *)v13 = v36; goto LABEL_46; } } } } LABEL_44: v15 = v36; *(_DWORD *)v36 = *(_DWORD *)v37; *(_DWORD *)v37 = v36; } else { *(_DWORD *)v7 = *(_DWORD *)v5; *(_DWORD *)v5 = v7; v15 = v7; } LABEL_46: v27 = a2; do { v28 = *v27; v27[(char *)v15 + 22 - a2] = *v27; ++v27; } while ( v28 ); v6 = v36; *((_DWORD *)v15 + 2) = 0; LABEL_49: v29 = a3; goto LABEL_50; } if ( *((_WORD *)v6 + 10) ) return 0; if ( !a3 ) { LABEL_65: *((_WORD *)v6 + 10) = 1; return 0; } if ( !*((_DWORD *)v6 + 2) ) goto LABEL_49; v29 = a3; if ( *((_DWORD *)v6 + 3) <= strlen(a3) ) { free(*((void **)v6 + 2)); *((_DWORD *)v6 + 2) = 0; *((_DWORD *)v6 + 4) = 0; } LABEL_50: if ( !v29 ) goto LABEL_65; if ( !*((_DWORD *)v6 + 2) ) { v30 = strlen(v29); *((_DWORD *)v6 + 3) = v30 + 1; v31 = malloc(v30 + 1); *((_DWORD *)v6 + 2) = v31; if ( !v31 ) goto LABEL_53; } v32 = *((_DWORD *)v6 + 2); v33 = v29; do { v34 = *v33; *(_BYTE *)v32++ = *v33++; } while ( v34 ); if ( !strncmp((const char *)v6 + 22, "xmlns:", 6u) ) *((_DWORD *)v6 + 4) = *((_DWORD *)v6 + 2); *((_WORD *)v6 + 10) = 2; *((_WORD *)v6 + 2) = a4; if ( !strcmp(a2, "wsu:Id") ) { *(_WORD *)(a1 + 99670) = 1; strncpy((char *)(a1 + 93440), v29, 0x400u); *(_BYTE *)(a1 + 94463) = 0; return 0; } return 0; } //----- (0047E190) -------------------------------------------------------- void __cdecl sub_47E190(int a1) { int v1; // eax@3 int v2; // edi@3 void *v3; // eax@3 int i; // esi@7 if ( *(_DWORD *)(a1 + 8) & 0x10000 ) { if ( *(_DWORD *)(a1 + 99656) ) { do { v1 = *(_DWORD *)(a1 + 99656); v2 = *(_DWORD *)v1; v3 = *(void **)(v1 + 8); if ( v3 ) free(v3); free(*(void **)(a1 + 99656)); *(_DWORD *)(a1 + 99656) = v2; } while ( v2 ); } } else { for ( i = *(_DWORD *)(a1 + 99656); i; i = *(_DWORD *)i ) *(_WORD *)(i + 20) = 0; } } //----- (0047E200) -------------------------------------------------------- signed int __cdecl sub_47E200(int a1, const void *a2, size_t a3) { unsigned int v3; // eax@1 unsigned int v4; // ecx@1 void *v5; // ebx@2 unsigned int v6; // eax@4 void *v7; // eax@6 signed int result; // eax@9 v3 = *(_DWORD *)(a1 + 24824); v4 = a3 + *(_DWORD *)(a1 + 24828); if ( v4 >= v3 ) { v5 = *(void **)(a1 + 24820); if ( !v3 ) *(_DWORD *)(a1 + 24824) = 256; v6 = *(_DWORD *)(a1 + 24824); if ( v4 >= v6 ) { do { v6 *= 2; *(_DWORD *)(a1 + 24824) = v6; } while ( a3 + *(_DWORD *)(a1 + 24828) >= v6 ); } v7 = malloc(*(_DWORD *)(a1 + 24824)); *(_DWORD *)(a1 + 24820) = v7; if ( !v7 ) { if ( v5 ) free(v5); result = 20; *(_DWORD *)(a1 + 102824) = 20; return result; } if ( v5 ) { memmove(v7, v5, *(_DWORD *)(a1 + 24828)); free(v5); } } if ( a2 ) { memmove((void *)(*(_DWORD *)(a1 + 24828) + *(_DWORD *)(a1 + 24820)), a2, a3); *(_DWORD *)(a1 + 24828) += a3; } return 0; } //----- (0047E2D0) -------------------------------------------------------- int __cdecl sub_47E2D0(int a1) { int result; // eax@1 bool v2; // zf@2 result = a1; if ( !*(_WORD *)(a1 + 99678) ) { v2 = *(_WORD *)(a1 + 24806) == 0; *(_WORD *)(a1 + 99678) = 1; if ( !v2 ) --*(_DWORD *)(a1 + 24808); } return result; } //----- (0047E300) -------------------------------------------------------- int __cdecl sub_47E300(int a1, const char *a2, int a3) { const char *v3; // esi@1 __int32 v4; // edi@2 int result; // eax@6 v3 = a2; if ( a2 ) { SetLastError(0); v4 = strtol(v3, (char **)&a2, 10); if ( v3 == a2 || *a2 || GetLastError() == 34 ) *(_DWORD *)(a1 + 102824) = 4; *(_DWORD *)a3 = v4; result = *(_DWORD *)(a1 + 102824); } else { result = *(_DWORD *)(a1 + 102824); } return result; } //----- (0047E370) -------------------------------------------------------- int __cdecl sub_47E370(int a1, const char *a2, int a3) { const char *v3; // esi@1 int result; // eax@5 v3 = a2; if ( a2 ) { SetLastError(0); *(_DWORD *)a3 = strtol(v3, (char **)&a2, 10); if ( v3 == a2 || *a2 || GetLastError() == 34 ) { *(_DWORD *)(a1 + 102824) = 4; result = *(_DWORD *)(a1 + 102824); } else { result = *(_DWORD *)(a1 + 102824); } } else { result = *(_DWORD *)(a1 + 102824); } return result; } //----- (0047E3E0) -------------------------------------------------------- int __cdecl sub_47E3E0(int a1, const char *a2, int a3) { char *v3; // esi@1 __int32 v4; // eax@2 int result; // eax@7 v3 = (char *)a2; if ( a2 ) { v4 = strtol(a2, (char **)&a2, 10); if ( v3 == a2 || *a2 || v4 < -128 || v4 > 127 ) *(_DWORD *)(a1 + 102824) = 4; *(_BYTE *)a3 = v4; result = *(_DWORD *)(a1 + 102824); } else { result = *(_DWORD *)(a1 + 102824); } return result; } //----- (0047E440) -------------------------------------------------------- signed int __cdecl sub_47E440(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // edi@1 int v5; // eax@1 int v6; // ecx@8 int v7; // ecx@19 signed int result; // eax@26 v3 = a2; v4 = a3; v5 = 0; while ( 1 ) { --v4; for ( ; v4 > 0; ++v3 ) { v5 = *(_DWORD *)(a1 + 24800); if ( v5 ) { if ( v5 != -1 ) *(_DWORD *)(a1 + 24800) = 0; } else { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) goto LABEL_31; v6 = *(_DWORD *)(a1 + 24792); v5 = *(_BYTE *)(v6 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v6 + 1; } if ( v5 == 13 ) break; if ( v5 == 10 ) goto LABEL_21; if ( v5 == -1 ) goto LABEL_31; *(_BYTE *)v3 = v5; --v4; } if ( v5 == 10 ) goto LABEL_21; v5 = *(_DWORD *)(a1 + 24800); if ( !v5 ) break; if ( v5 != -1 ) *(_DWORD *)(a1 + 24800) = 0; LABEL_20: if ( v5 != 10 ) { if ( v5 == -1 ) goto LABEL_31; goto LABEL_28; } LABEL_21: *(_BYTE *)v3 = 0; if ( v4 + 1 == a3 || *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || (v5 = *(_BYTE *)(a1 + *(_DWORD *)(a1 + 24792) + 24832), v5 != 32) && v5 != 9 ) return 0; LABEL_28: if ( v4 < 0 ) { result = 22; LABEL_30: *(_DWORD *)(a1 + 102824) = result; return result; } } if ( *(_DWORD *)(a1 + 24792) < *(_DWORD *)(a1 + 24796) || !sub_47BF30(a1) ) { v7 = *(_DWORD *)(a1 + 24792); v5 = *(_BYTE *)(v7 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v7 + 1; goto LABEL_20; } LABEL_31: result = *(_DWORD *)(a1 + 102824); if ( result ) goto LABEL_30; result = -1; *(_DWORD *)(a1 + 102824) = -1; return result; } //----- (0047E590) -------------------------------------------------------- int __cdecl sub_47E590(int a1) { int v1; // ecx@1 int result; // eax@1 int i; // esi@3 int v4; // ecx@4 int v5; // edi@5 char v6; // dl@6 int v7; // ecx@8 int v8; // edi@9 char v9; // dl@10 int v10; // ecx@16 int v11; // esi@17 char v12; // dl@18 int v13; // edi@19 int v14; // ecx@19 int v15; // ebx@20 int v16; // ecx@21 int v17; // eax@21 int v18; // esi@22 char v19; // dl@23 int v20; // edx@25 _UNKNOWN *v21; // ecx@25 int v22; // ecx@28 int v23; // esi@29 char v24; // dl@30 int v25; // ecx@32 int v26; // esi@33 char v27; // dl@34 int v28; // ecx@36 int v29; // esi@37 char v30; // dl@38 int v31; // ecx@40 int v32; // esi@41 char v33; // dl@42 int v34; // edx@44 int v35; // [sp+14h] [bp+8h]@19 v1 = *(_DWORD *)(a1 + 8); result = *(_DWORD *)(a1 + 24812); if ( (char)v1 < 0 ) { if ( !(v1 & 0x200) ) { for ( i = *(_DWORD *)(a1 + 102880); i; i = *(_DWORD *)i ) { result += ((*(_DWORD *)(i + 8) + 3) & 0xFFFFFFFC) + 12; v4 = *(_DWORD *)(i + 12); if ( v4 ) { v5 = v4 + 1; do v6 = *(_BYTE *)v4++; while ( v6 ); result += (v4 - v5 + 3) & 0xFFFFFFFC; } v7 = *(_DWORD *)(i + 16); if ( v7 ) { v8 = v7 + 1; do v9 = *(_BYTE *)v7++; while ( v9 ); result += (v7 - v8 + 3) & 0xFFFFFFFC; } if ( *(_DWORD *)(i + 20) ) result += ((*(_BYTE *)(*(_DWORD *)(i + 20) + 3) | (*(_BYTE *)(*(_DWORD *)(i + 20) + 2) << 8)) + 7) & 0xFFFFFFFC; } } } if ( *(_DWORD *)(a1 + 8) & 0x100 ) { v10 = *(_DWORD *)(a1 + 102888); if ( v10 ) { v11 = v10 + 1; do v12 = *(_BYTE *)v10++; while ( v12 ); v13 = *(_DWORD *)(a1 + 102900); v14 = v10 - v11; v35 = v14; if ( v13 ) { v15 = v14 + 6; do { v16 = *(_DWORD *)(v13 + 16); v17 = v15 + result; if ( v16 ) { v18 = v16 + 1; do v19 = *(_BYTE *)v16++; while ( v19 ); v17 += v16 - v18 + 16; } v20 = *(_DWORD *)(v13 + 24); v21 = &unk_4C7AD8; if ( v20 != 1 ) { do { if ( !*((_DWORD *)v21 + 1) ) break; v21 = (char *)v21 + 8; } while ( *(_DWORD *)v21 != v20 ); } v22 = *((_DWORD *)v21 + 1); if ( v22 ) { v23 = v22 + 1; do v24 = *(_BYTE *)v22++; while ( v24 ); v17 += v22 - v23 + 29; } v25 = *(_DWORD *)(v13 + 12); if ( v25 ) { v26 = v25 + 1; do v27 = *(_BYTE *)v25++; while ( v27 ); v17 += v25 - v26 + 14; } v28 = *(_DWORD *)(v13 + 28); if ( v28 ) { v29 = v28 + 1; do v30 = *(_BYTE *)v28++; while ( v30 ); v17 += v28 - v29 + 20; } v31 = *(_DWORD *)(v13 + 32); if ( v31 ) { v32 = v31 + 1; do v33 = *(_BYTE *)v31++; while ( v33 ); v17 += v31 - v32 + 23; } v34 = *(_DWORD *)(v13 + 8); v13 = *(_DWORD *)v13; result = v17 + v34 + 2; } while ( v13 ); v14 = v35; } result += v14 + 6; } } return result; } //----- (0047E720) -------------------------------------------------------- void *__usercall sub_47E720(int a1, int a2) { int v2; // edi@1 void *v3; // eax@2 void *v4; // ebx@3 int v5; // eax@6 int v6; // ecx@6 signed int v7; // eax@8 signed int v9; // eax@10 void *v10; // [sp+8h] [bp-8h]@1 int v11; // [sp+Ch] [bp-4h]@3 v2 = a1; v10 = 0; if ( !a1 ) return v10; v3 = sub_47D480(a2, a1 + 1); v10 = v3; if ( !v3 ) { *(_DWORD *)(a2 + 102824) = 20; return v10; } v4 = v3; v11 = v2; if ( !v2 ) { LABEL_8: *(_BYTE *)v4 = 0; v7 = sub_47C2C0(a2, -v2 & 3); *(_DWORD *)(a2 + 102824) = v7; if ( v7 ) return 0; return v10; } while ( *(_DWORD *)(a2 + 24792) < *(_DWORD *)(a2 + 24796) || !sub_47BF30(a2) ) { v5 = *(_DWORD *)(a2 + 24792); v6 = *(_BYTE *)(v5 + a2 + 24832); *(_DWORD *)(a2 + 24792) = v5 + 1; if ( v6 == -1 ) break; *(_BYTE *)v4 = v6; v4 = (char *)v4 + 1; --v11; if ( !v11 ) goto LABEL_8; } v9 = *(_DWORD *)(a2 + 102824); if ( !v9 ) v9 = -1; *(_DWORD *)(a2 + 102824) = v9; return 0; } //----- (0047E7F0) -------------------------------------------------------- signed int __cdecl sub_47E7F0(int a1) { signed int result; // eax@2 char *v2; // edi@5 signed int v3; // ebx@5 signed int v4; // eax@6 int v5; // edi@14 int v6; // ebx@14 int v7; // ecx@14 int v8; // eax@14 int v9; // edi@14 int v10; // ebx@14 int v11; // eax@14 void *v12; // eax@14 void *v13; // eax@16 void *v14; // eax@18 char v15; // [sp+4h] [bp-10h]@5 char v16; // [sp+5h] [bp-Fh]@14 unsigned __int8 v17; // [sp+6h] [bp-Eh]@14 unsigned __int8 v18; // [sp+7h] [bp-Dh]@14 unsigned __int8 v19; // [sp+8h] [bp-Ch]@14 unsigned __int8 v20; // [sp+9h] [bp-Bh]@14 unsigned __int8 v21; // [sp+Ah] [bp-Ah]@14 unsigned __int8 v22; // [sp+Bh] [bp-9h]@14 unsigned __int8 v23; // [sp+Ch] [bp-8h]@14 unsigned __int8 v24; // [sp+Dh] [bp-7h]@14 unsigned __int8 v25; // [sp+Eh] [bp-6h]@14 unsigned __int8 v26; // [sp+Fh] [bp-5h]@14 unsigned int v27; // [sp+10h] [bp-4h]@1 int v28; // [sp+14h] [bp+0h]@1 v27 = (unsigned int)&v28 ^ __security_cookie; if ( *(_BYTE *)(a1 + 8) & 0x80 ) { if ( *(_DWORD *)(a1 + 102852) || *(_DWORD *)(a1 + 102848) ) { if ( sub_47C2C0( a1, *(_DWORD *)(a1 + 102844) - (*(_DWORD *)(a1 + 24792) + *(_DWORD *)(a1 + 24812) - (*(_DWORD *)(a1 + 24800) != 0) - *(_DWORD *)(a1 + 24796))) ) { result = *(_DWORD *)(a1 + 102824); if ( !result ) result = -1; *(_DWORD *)(a1 + 102824) = result; } else { *(_DWORD *)(a1 + 24800) = sub_47C1D0(a1); result = 0; } } else { v2 = &v15; v3 = 12; do { v4 = sub_47C1D0(a1); if ( v4 == -1 ) { result = *(_DWORD *)(a1 + 102824); if ( !result ) result = -1; goto LABEL_10; } *v2 = v4; --v3; ++v2; } while ( v3 > 0 ); if ( (v15 & 0xF8) != 8 ) { result = 34; LABEL_10: *(_DWORD *)(a1 + 102824) = result; return result; } v5 = v19; v6 = v21; v7 = v22; v8 = v20; *(_BYTE *)(a1 + 102856) = v15 & 7 | v16 & 0xF0; v9 = v8 | (v5 << 8); v10 = v7 | (v6 << 8); v11 = v18 | (v17 << 8); *(_DWORD *)(a1 + 102844) = v26 | ((v25 | ((v24 | (v23 << 8)) << 8)) << 8); v12 = sub_47E720(v11, a1); *(_DWORD *)(a1 + 102872) = v12; if ( v12 || (result = *(_DWORD *)(a1 + 102824)) == 0 ) { v13 = sub_47E720(v9, a1); *(_DWORD *)(a1 + 102864) = v13; if ( v13 || (result = *(_DWORD *)(a1 + 102824)) == 0 ) { v14 = sub_47E720(v10, a1); *(_DWORD *)(a1 + 102868) = v14; if ( v14 || (result = *(_DWORD *)(a1 + 102824)) == 0 ) { if ( *(_BYTE *)(a1 + 102856) & 2 ) *(_DWORD *)(a1 + 8) &= 0xFFFFFF7Fu; result = 0; } } } } } else { result = 35; *(_DWORD *)(a1 + 102824) = 35; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0047E9F0) -------------------------------------------------------- char *__cdecl sub_47E9F0(int a1, const char *a2, const char *a3) { const char *v3; // ebx@1 char *result; // eax@2 const char *v5; // edi@3 unsigned int v6; // eax@6 size_t v7; // esi@6 v3 = a2; if ( a2 ) { v5 = a3; result = (char *)strcmp(a2, a3); if ( result ) { if ( !strncmp(a2, "cid:", 4u) ) { v3 = a2 + 4; a2 += 4; } v6 = strlen(a3); v7 = v6; if ( *a3 == 60 ) { v5 = a3++ + 1; v7 = v6 - 2; } result = (char *)((strncmp(v3, v5, v7) || v3[v7]) && ((sub_47CD70((int)a2, a1 + 91392, 1024, byte_4C760C), strncmp( (const char *)(a1 + 91392), a3, v7)) || *(_BYTE *)(v7 + a1 + 91392))); } } else { result = (char *)(a2 + 1); } return result; } //----- (0047EAE0) -------------------------------------------------------- void __cdecl sub_47EAE0(int a1, int a2) { int v2; // esi@1 int v3; // ecx@2 int v4; // edi@3 const char *v5; // eax@3 const char *v6; // ebx@3 unsigned int v7; // eax@7 size_t v8; // esi@7 int v9; // eax@15 int v10; // [sp+4h] [bp-Ch]@3 int i; // [sp+8h] [bp-8h]@2 int v12; // [sp+Ch] [bp-4h]@3 v2 = a2; if ( *(_DWORD *)(a2 + 12) ) { v3 = a1 + 102908; for ( i = a1 + 102908; *(_DWORD *)i; v3 = i ) { v4 = *(_DWORD *)v3; v5 = *(const char **)(*(_DWORD *)v3 + 12); v6 = *(const char **)(v2 + 12); v10 = *(_DWORD *)v3; v12 = (int)v5; if ( v5 ) { if ( !strcmp(v5, *(const char **)(v2 + 12)) ) goto LABEL_15; if ( !strncmp((const char *)v12, "cid:", 4u) ) v12 += 4; v7 = strlen(v6); v8 = v7; if ( *v6 == 60 ) { ++v6; v8 = v7 - 2; } if ( !strncmp((const char *)v12, v6, v8) && !*(_BYTE *)(v8 + v12) ) goto LABEL_14; sub_47CD70(v12, a1 + 91392, 1024, byte_4C760C); if ( !strncmp((const char *)(a1 + 91392), v6, v8) && !*(_BYTE *)(a1 + 91392 + v8) ) { v4 = v10; LABEL_14: v2 = a2; LABEL_15: *(_DWORD *)i = *(_DWORD *)v4; **(_DWORD **)(v4 + 4) = *(_DWORD *)(v2 + 4); **(_DWORD **)(v4 + 8) = *(_DWORD *)(v2 + 8); **(_DWORD **)(v4 + 16) = *(_DWORD *)(v2 + 16); v9 = *(_DWORD *)(v2 + 20); if ( v9 ) { **(_DWORD **)(v4 + 20) = v9; free((void *)v4); } else { **(_DWORD **)(v4 + 20) = *(_DWORD *)(v2 + 32); free((void *)v4); } continue; } v2 = a2; v3 = i; } i = *(_DWORD *)v3; } } } //----- (0047EC50) -------------------------------------------------------- signed int __cdecl sub_47EC50(int a1) { signed int result; // eax@2 int v2; // esi@3 int v3; // ecx@3 char v4; // al@4 size_t v5; // esi@5 int v6; // ecx@5 const char *v7; // ebx@8 size_t v8; // eax@9 unsigned int v9; // edi@10 int v10; // [sp+0h] [bp-4h]@5 if ( *(_DWORD *)(a1 + 24760) ) { result = 0; } else { v2 = *(_DWORD *)(a1 + 102888); v3 = v2 + 1; do v4 = *(_BYTE *)v2++; while ( v4 ); v5 = v2 - v3; v6 = *(_DWORD *)(a1 + 102900); v10 = v6; if ( v6 ) { while ( 1 ) { v7 = *(const char **)(v6 + 4); if ( v7 ) { v8 = *(_DWORD *)(v6 + 8); if ( v8 >= v5 ) { v9 = 0; if ( v8 != v5 ) break; } } LABEL_14: v10 = *(_DWORD *)v6; if ( !*(_DWORD *)v6 ) return 0; v6 = *(_DWORD *)v6; } while ( strncmp(v7, *(const char **)(a1 + 102888), v5) ) { ++v9; ++v7; if ( v9 >= *(_DWORD *)(v10 + 8) - v5 ) { v6 = v10; goto LABEL_14; } } result = -1; } else { result = 0; } } return result; } //----- (0047ED00) -------------------------------------------------------- int __cdecl sub_47ED00(int a1) { int v1; // eax@1 int (__cdecl *v2)(_DWORD); // eax@5 LOBYTE(v1) = sub_46DE20(a1); if ( v1 && *(_DWORD *)(a1 + 102824) == 3 ) *(_DWORD *)(a1 + 102824) = 0; if ( !*(_DWORD *)(a1 + 102824) ) { v2 = *(int (__cdecl **)(_DWORD))(a1 + 24600); if ( v2 ) *(_DWORD *)(a1 + 102824) = v2(a1); } return *(_DWORD *)(a1 + 102824); } //----- (0047ED50) -------------------------------------------------------- int __cdecl sub_47ED50(int a1, const char *a2) { int v2; // ebx@1 int result; // eax@1 char *v4; // eax@3 const char *v5; // edi@6 unsigned int v6; // esi@10 const char *v7; // esi@21 signed int v8; // [sp+10h] [bp+8h]@8 v2 = a1; result = a1 + 99688; *(_BYTE *)(a1 + 99688) = 0; *(_BYTE *)(a1 + 101736) = 0; *(_WORD *)(a1 + 100712) = 47; *(_DWORD *)(a1 + 102772) = 80; if ( a2 && *a2 ) { strncpy((char *)result, a2, 0x3FFu); *(_BYTE *)(a1 + 100711) = 0; v4 = strchr(a2, 58); if ( v4 && v4[1] == 47 && v4[2] == 47 ) v5 = v4 + 3; else v5 = a2; result = strlen(v5); v8 = result; if ( (unsigned int)result >= 0x400 ) { v8 = 1023; result = 1023; } v6 = 0; if ( result ) { do { *(_BYTE *)(v2 + v6 + 101736) = v5[v6]; if ( v5[v6] == 47 ) break; if ( v5[v6] == 58 ) break; ++v6; } while ( v6 < result ); } *(_BYTE *)(v6 + v2 + 101736) = 0; if ( v5[v6] == 58 ) { result = strtol(&v5[v6++ + 1], 0, 10); *(_DWORD *)(v2 + 102772) = result; if ( v6 >= v8 ) return result; while ( v5[v6] != 47 ) { ++v6; if ( v6 >= v8 ) return result; } result = v8; } if ( v6 < result ) { v7 = &v5[v6]; if ( *v7 ) { result = (int)strncpy((char *)(v2 + 100712), v7, 0x400u); *(_BYTE *)(v2 + 101735) = 0; } } } return result; } //----- (0047EE90) -------------------------------------------------------- void *__cdecl sub_47EE90(int a1, int a2, void *a3, signed int a4) { signed int v4; // ebx@1 void *v5; // esi@1 void *result; // eax@2 int v7; // edi@3 unsigned int v8; // edx@6 int v9; // eax@7 signed int v10; // ecx@7 char v11; // bl@8 int v12; // ecx@12 signed int v13; // eax@12 int v14; // edx@16 int i; // eax@18 char v16; // dl@19 signed int j; // eax@20 void *v18; // [sp+8h] [bp-4h]@3 signed int v19; // [sp+1Ch] [bp+10h]@13 int v20; // [sp+20h] [bp+14h]@6 v4 = a4; v5 = a3; if ( a3 || (result = sub_47D480(a1, 4 * (a4 + 2) / 3 + 1), (v5 = result) != 0) ) { v7 = a2; v18 = v5; *(_BYTE *)v5 = 0; if ( a2 ) { if ( a4 > 2 ) { v8 = (a4 - 3) / 3u + 1; v20 = -3 * v8 + a4; do { v9 = *(_BYTE *)(v7 + 2) | ((*(_BYTE *)(v7 + 1) | (*(_BYTE *)v7 << 8)) << 8); v10 = 4; do { v11 = byte_4C75C8[v9 & 0x3F]; --v10; v9 = (unsigned int)v9 >> 6; *((_BYTE *)v5 + v10) = v11; } while ( v10 > 0 ); v5 = (char *)v5 + 4; v7 += 3; --v8; } while ( v8 ); v4 = v20; } *(_BYTE *)v5 = 0; if ( v4 > 0 ) { v12 = 0; v13 = 0; if ( v4 <= 0 ) goto LABEL_26; v19 = v4; v13 = v4; do { v12 = *(_BYTE *)v7++ | (v12 << 8); --v19; } while ( v19 ); if ( v4 < 3 ) { LABEL_26: v14 = 3 - v13; v13 = 3; do { v12 <<= 8; --v14; } while ( v14 ); } for ( i = v13 + 1; i > 0; *((_BYTE *)v5 + i) = v16 ) { v16 = byte_4C75C8[v12 & 0x3F]; --i; v12 = (unsigned int)v12 >> 6; } for ( j = 3; j > v4; --j ) *((_BYTE *)v5 + j) = 61; *((_BYTE *)v5 + 4) = 0; } result = v18; } else { result = v5; } } return result; } //----- (0047EFD0) -------------------------------------------------------- void *__cdecl sub_47EFD0(int a1, const char *a2, void *a3, size_t a4, int a5) { const char *v5; // ebx@1 void *v6; // esi@3 void *result; // eax@4 unsigned int v8; // edi@7 unsigned int v9; // edx@8 unsigned int v10; // eax@8 int v11; // ecx@9 int v12; // ecx@11 signed int v13; // ecx@12 int v14; // ecx@23 void *v15; // [sp+4h] [bp-4h]@5 v5 = a2; if ( a2 && *a2 ) { v6 = a3; if ( a3 || (a4 = 3 * ((strlen(a2) + 3) >> 2) + 1, result = sub_47D480(a1, a4), (v6 = result) != 0) ) { v15 = v6; if ( a5 ) *(_DWORD *)a5 = 0; LABEL_7: v8 = 0; LABEL_8: v9 = 0; v10 = 0; while ( 1 ) { v11 = *v5++; if ( v11 == 61 ) break; if ( !v11 ) break; v12 = v11 - 43; if ( (unsigned int)v12 > 0x4F ) { if ( v12 + 44 <= 0 || v12 + 43 > 32 ) { *(_DWORD *)(a1 + 102824) = 4; return 0; } } else { v13 = byte_4C7610[v12]; if ( v13 >= 64 ) { *(_DWORD *)(a1 + 102824) = 4; return 0; } v9 = v13 + (v9 << 6); ++v10; } if ( v10 >= 4 ) { if ( a4 >= 3 ) { a4 -= 3; *(_BYTE *)v6 = v9 >> 16; *((_BYTE *)v6 + 1) = BYTE1(v9); *((_BYTE *)v6 + 2) = v9; ++v8; v6 = (char *)v6 + 3; if ( v8 < 0x100 ) goto LABEL_8; if ( a5 ) *(_DWORD *)a5 += 768; goto LABEL_7; } if ( a5 ) { *(_DWORD *)a5 += v8; result = v15; *(_BYTE *)v6 = 0; return result; } LABEL_30: *(_BYTE *)v6 = 0; return v15; } } v14 = 3 * v8; if ( v10 == 2 ) { *(_BYTE *)v6 = v9 >> 4; v6 = (char *)v6 + 1; ++v14; } else { if ( v10 == 3 ) { *(_BYTE *)v6 = v9 >> 10; *((_BYTE *)v6 + 1) = v9 >> 2; v6 = (char *)v6 + 2; v14 += 2; } } if ( a5 ) *(_DWORD *)a5 += v14; if ( a4 >= v10 ) goto LABEL_30; return v15; } } else { if ( a5 ) *(_DWORD *)a5 = 0; result = (void *)(*(_DWORD *)(a1 + 102824) == 0 ? (int)byte_4C760C : 0); } return result; } //----- (0047F180) -------------------------------------------------------- int __cdecl sub_47F180(int a1, int a2, int a3) { int v3; // eax@1 const char *v4; // edi@4 int v5; // esi@7 int v6; // eax@16 int v7; // eax@23 int v8; // edx@24 char v9; // cl@25 char v10[4]; // ecx@26 int v11; // eax@26 int v12; // esi@28 char v13; // dl@29 char *v14; // esi@31 char *v15; // ebx@31 unsigned int v16; // eax@33 const void *v17; // esi@33 void *v18; // edi@33 char v19; // cl@34 int v20; // eax@37 char v21; // cl@38 int v22; // eax@39 char v23; // dl@40 unsigned int v24; // eax@41 void *v25; // edi@41 char v26; // cl@42 int v27; // edi@44 char v28; // al@45 int v29; // eax@47 char v30; // cl@48 unsigned int v31; // eax@49 void *v32; // edi@49 char v33; // cl@50 int v34; // edi@51 char v35; // al@52 const char *v36; // eax@54 const char v37; // cl@55 int v38; // eax@58 int v39; // edx@59 char v40; // cl@60 int result; // eax@63 int v42; // eax@69 const char *v43; // [sp+8h] [bp-4h]@4 int v44; // [sp+8h] [bp-4h]@58 v3 = *(_DWORD *)(a1 + 102820); if ( v3 == 2002 || v3 == 2004 || v3 == 2005 ) goto LABEL_69; v4 = "text/xml; charset=utf-8"; v43 = 0; if ( a2 != 1003 && v3 != 2003 && v3 != 2001 ) { v5 = a1; } else { v5 = a1; if ( *(_DWORD *)(a1 + 36) ) { v4 = *(const char **)(a1 + 36); goto LABEL_16; } } if ( a2 == 1002 ) { v4 = "text/html; charset=utf-8"; } else { if ( (a3 || (*(_BYTE *)(v5 + 16) & 3) == 3) && *(_WORD *)(v5 + 6) == 2 ) v4 = "application/soap+xml; charset=utf-8"; } LABEL_16: v6 = *(_DWORD *)(v5 + 8); if ( v6 & 0x280 ) { if ( v6 & 0x200 ) { v43 = "application/soap+xml"; if ( *(_WORD *)(v5 + 6) != 2 ) v43 = "text/xml"; v4 = "application/xop+xml"; } else { v4 = "application/dime"; } } if ( !(v6 & 0x100) || (v7 = *(_DWORD *)(v5 + 102888)) == 0 ) goto LABEL_74; v8 = v7 + 1; do v9 = *(_BYTE *)v7++; while ( v9 ); *(_DWORD *)v10 = *(_DWORD *)(v5 + 102892); v11 = v7 - v8; if ( !*(_DWORD *)v10 ) *(_DWORD *)v10 = byte_4C760C; v12 = *(_DWORD *)v10 + 1; do { v13 = **(_BYTE **)v10; ++*(_DWORD *)v10; } while ( v13 ); if ( (unsigned int)(v11 + *(_DWORD *)v10 - v12) < 0x3B0 ) { v14 = strchr(v4, 59); v15 = (char *)(a1 + 91392); sprintf( (char *)(a1 + 91392), "multipart/related; charset=utf-8; boundary=\"%s\"; type=\"", *(_DWORD *)(a1 + 102888)); if ( v14 ) { strncat(v15, v4, v14 - v4); *(_BYTE *)(a1 + 92415) = 0; } else { v16 = strlen(v4) + 1; v17 = v4; v18 = (void *)(a1 + 91391); do { v19 = *((_BYTE *)v18 + 1); v18 = (char *)v18 + 1; } while ( v19 ); memcpy(v18, v17, v16); } if ( *(_DWORD *)(a1 + 102892) ) { v20 = a1 + 91391; do v21 = *(_BYTE *)(v20++ + 1); while ( v21 ); *(_DWORD *)v20 = dword_4C7BE4; *(_DWORD *)(v20 + 4) = dword_4C7BE8; *(_WORD *)(v20 + 8) = word_4C7BEC; *(_BYTE *)(v20 + 10) = byte_4C7BEE; v22 = *(_DWORD *)(a1 + 102892); do v23 = *(_BYTE *)v22++; while ( v23 ); v24 = v22 - *(_DWORD *)(a1 + 102892); v25 = (void *)(a1 + 91391); do { v26 = *((_BYTE *)v25 + 1); v25 = (char *)v25 + 1; } while ( v26 ); memcpy(v25, *(const void **)(a1 + 102892), v24); } v27 = a1 + 91391; do v28 = *(_BYTE *)(v27++ + 1); while ( v28 ); *(_WORD *)v27 = *(_WORD *)&word_4B8FF0; if ( v43 ) { v29 = a1 + 91391; do v30 = *(_BYTE *)(v29++ + 1); while ( v30 ); *(_DWORD *)v29 = dword_4C7BD4; *(_DWORD *)(v29 + 4) = dword_4C7BD8; *(_DWORD *)(v29 + 8) = dword_4C7BDC; *(_WORD *)(v29 + 12) = word_4C7BE0; *(_BYTE *)(v29 + 14) = byte_4C7BE2; v31 = strlen(v43) + 1; v32 = (void *)(a1 + 91391); do { v33 = *((_BYTE *)v32 + 1); v32 = (char *)v32 + 1; } while ( v33 ); memcpy(v32, v43, v31); v34 = a1 + 91391; do v35 = *(_BYTE *)(v34++ + 1); while ( v35 ); *(_WORD *)v34 = *(_WORD *)&word_4B8FF0; } } else { LABEL_74: v15 = (char *)(a1 + 91392); v36 = v4; do { v37 = *v36; v36[a1 + 91392 - (_DWORD)v4] = *v36; ++v36; } while ( v37 ); } if ( !a2 ) { if ( *(_WORD *)(a1 + 6) == 2 ) { v38 = *(_DWORD *)(a1 + 102760); v44 = v38; if ( v38 ) { v39 = v38 + 1; do v40 = *(_BYTE *)v38++; while ( v40 ); if ( v38 - v39 + strlen(v15) < 0x3B0 ) sprintf((char *)(strlen(v15) + a1 + 91392), "; action=\"%s\"", v44); } } } result = (*(int (__cdecl **)(int, _DWORD, char *))(a1 + 24584))(a1, "Content-Type", v15); if ( !result ) { if ( (*(_BYTE *)(a1 + 16) & 3) == 3 ) { result = (*(int (__cdecl **)(int, _DWORD, _DWORD))(a1 + 24584))(a1, "Transfer-Encoding", "chunked"); goto LABEL_68; } if ( v15 ) { sprintf(v15, "%lu", a3); result = (*(int (__cdecl **)(_DWORD, _DWORD, char *))(a1 + 24584))(a1, "Content-Length", v15); LABEL_68: if ( result ) return result; } LABEL_69: v42 = (int)"keep-alive"; if ( !*(_WORD *)(a1 + 102776) ) v42 = (int)"close"; result = (*(int (__cdecl **)(int, _DWORD, int))(a1 + 24584))(a1, "Connection", v42); } return result; } // 4C7BD4: using guessed type int dword_4C7BD4; // 4C7BD8: using guessed type int dword_4C7BD8; // 4C7BDC: using guessed type int dword_4C7BDC; // 4C7BE0: using guessed type __int16 word_4C7BE0; // 4C7BE2: using guessed type char byte_4C7BE2; // 4C7BE4: using guessed type int dword_4C7BE4; // 4C7BE8: using guessed type int dword_4C7BE8; // 4C7BEC: using guessed type __int16 word_4C7BEC; // 4C7BEE: using guessed type char byte_4C7BEE; //----- (0047F550) -------------------------------------------------------- int __usercall sub_47F550(int a1, int a2, int a3) { int v3; // esi@4 int result; // eax@4 int v5; // esi@7 if ( *(_BYTE *)(a2 + 92416) ) { if ( !a1 ) a1 = (int)byte_4C760C; v3 = a2 + 90368; sprintf((char *)(a2 + 90368), "Validation constraint violation: %s%s in element '%s'", a3, a1, a2 + 92416); result = v3; } else { if ( !a1 ) a1 = (int)byte_4C760C; v5 = a2 + 90368; sprintf((char *)(a2 + 90368), "Validation constraint violation: %s%s", a3, a1); result = v5; } return result; } //----- (0047F5B0) -------------------------------------------------------- int __usercall sub_47F5B0(int a1) { DWORD v1; // ecx@1 int v2; // esi@2 int result; // eax@2 int v4; // edx@3 int v5; // ebx@3 int v6; // eax@3 bool v7; // zf@9 char v8; // cl@10 signed int v9; // [sp+4h] [bp-Ch]@3 signed int v10; // [sp+8h] [bp-8h]@3 int v11; // [sp+Ch] [bp-4h]@3 v1 = *(_DWORD *)(a1 + 102832); if ( v1 ) { v2 = a1 + 90368; *(_BYTE *)(a1 + 90368) = 0; FormatMessageA(0x1200u, 0, v1, 0x400u, (LPSTR)(a1 + 90368), 0x400u, 0); result = v2; } else { v4 = *(_DWORD *)(a1 + 52); v5 = a1 + 90368; v6 = *(_DWORD *)(a1 + 56); v10 = 32; v9 = 32; memcpy((void *)v5, "Operation interrupted or timed out", 0x22u); v11 = v6; *(_BYTE *)(v5 + 34) = aOperationInter[34]; if ( v4 < 0 ) { v4 = -v4; v10 = 117; } if ( v6 < 0 ) { v6 = -v6; v11 = v6; v9 = 117; } if ( v4 ) { sprintf((char *)(v5 + strlen((const char *)v5)), " (%d%cs receive delay)", v4, v10); v6 = v11; } v7 = v6 == 0; result = v5; if ( !v7 ) { do v8 = *(_BYTE *)result++; while ( v8 ); sprintf((char *)(v5 + result - (v5 + 1)), " (%d%cs send delay)", v11, v9); result = v5; } } return result; } //----- (0047F6A0) -------------------------------------------------------- int __cdecl sub_47F6A0(int a1, int a2, int a3, int a4) { int v4; // edi@1 int v5; // eax@5 int result; // eax@7 v4 = (int)"SOAP-ENV:Sender"; if ( *(_WORD *)(a1 + 6) != 2 ) v4 = (int)"SOAP-ENV:Client"; *(_DWORD *)sub_474DA0(a1) = v4; *(_DWORD *)sub_474EA0(a1) = a2; if ( a3 ) { if ( *(_BYTE *)a3 ) { v5 = sub_474ED0(a1); if ( v5 ) *(_DWORD *)v5 = a3; } } result = a4; *(_DWORD *)(a1 + 102824) = a4; return result; } //----- (0047F700) -------------------------------------------------------- int __cdecl sub_47F700(int a1, int a2, int a3, int a4) { int v4; // edi@1 int v5; // eax@5 int result; // eax@7 v4 = (int)"SOAP-ENV:Receiver"; if ( *(_WORD *)(a1 + 6) != 2 ) v4 = (int)"SOAP-ENV:Server"; *(_DWORD *)sub_474DA0(a1) = v4; *(_DWORD *)sub_474EA0(a1) = a2; if ( a3 ) { if ( *(_BYTE *)a3 ) { v5 = sub_474ED0(a1); if ( v5 ) *(_DWORD *)v5 = a3; } } result = a4; *(_DWORD *)(a1 + 102824) = a4; return result; } //----- (0047F760) -------------------------------------------------------- int __cdecl sub_47F760(int a1, const char *a2) { int v2; // esi@1 const char *v3; // eax@2 int result; // eax@5 v2 = *(_DWORD *)(a1 + 24532); if ( v2 ) { while ( 1 ) { v3 = *(const char **)(v2 + 4); if ( v3 == a2 ) break; if ( !strcmp(v3, a2) ) break; v2 = *(_DWORD *)v2; if ( !v2 ) goto LABEL_5; } result = *(_DWORD *)(v2 + 8); } else { LABEL_5: result = 0; } return result; } //----- (0047F7C0) -------------------------------------------------------- int __cdecl sub_47F7C0(int a1, const void *a2, size_t a3) { int v3; // eax@1 int v4; // ebx@2 void *v5; // eax@2 int result; // eax@3 void *v7; // eax@4 char *v8; // eax@8 char v9; // cl@9 char v10; // [sp+10h] [bp-14h]@8 _BYTE v11[3]; // [sp+11h] [bp-13h]@10 unsigned int v12; // [sp+20h] [bp-4h]@1 int v13; // [sp+24h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v3 = *(_DWORD *)(a1 + 8) & 3; if ( v3 == 2 ) { v4 = *(_DWORD *)(a1 + 100); v5 = malloc(a3 + 8); if ( v5 ) { *(_DWORD *)v5 = *(_DWORD *)(v4 + 4); *((_DWORD *)v5 + 1) = a3; *(_DWORD *)(v4 + 8) += a3; *(_DWORD *)(v4 + 4) = v5; v7 = (char *)v5 + 8; if ( v7 ) { memmove(v7, a2, a3); result = 0; } else { *(_DWORD *)(a1 + 102824) = 20; result = 20; } } else { *(_DWORD *)(a1 + 102824) = 20; *(_DWORD *)(a1 + 102824) = 20; result = 20; } return result; } if ( v3 != 3 ) { LABEL_12: result = (*(int (__cdecl **)(int, const void *, size_t))(a1 + 24636))(a1, a2, a3); *(_DWORD *)(a1 + 102824) = result; return result; } sprintf(&v10, &aLx[*(_DWORD *)(a1 + 99680) != 0 ? 0 : 2], a3); v8 = &v10; do v9 = *v8++; while ( v9 ); result = (*(int (__cdecl **)(int, char *, unsigned int))(a1 + 24636))(a1, &v10, v8 - v11); *(_DWORD *)(a1 + 102824) = result; if ( !result ) { *(_DWORD *)(a1 + 99680) += a3; goto LABEL_12; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0047F8F0) -------------------------------------------------------- int __cdecl sub_47F8F0(int a1, int a2, int a3) { int v3; // edx@1 int v4; // edi@2 int v5; // eax@4 int v6; // esi@4 int v7; // ecx@4 int v8; // ebx@16 int v9; // eax@19 int v10; // eax@24 int result; // eax@31 int v12; // [sp+Ch] [bp-4h]@3 v3 = a1; if ( a1 && (v4 = *(_DWORD *)(a1 + 4)) != 0 ) { v12 = *(_BYTE *)a2; while ( 1 ) { v5 = v12; v6 = a2; v7 = *(_BYTE *)v4; if ( v12 ) { while ( v5 != 34 ) { if ( v7 != 45 && v5 != v7 ) { if ( (unsigned int)(v5 - 65) <= 0x19 ) v5 += 32; if ( (unsigned int)(v7 - 65) <= 0x19 ) v7 += 32; if ( v5 != v7 ) { if ( v7 != 42 ) goto LABEL_30; v8 = *(_BYTE *)(v4++ + 1); if ( v8 ) { if ( (unsigned int)(v8 - 65) <= 0x19 ) v8 += 32; v9 = *(_BYTE *)v6; if ( *(_BYTE *)v6 ) { while ( v9 != 34 ) { if ( (unsigned int)(v9 - 65) <= 0x19 ) v9 += 32; if ( v9 == v8 ) { LOBYTE(v10) = sub_47C7C0(v6 + 1, v4 + 1); if ( !v10 ) goto LABEL_32; } v9 = *(_BYTE *)(v6++ + 1); if ( !v9 ) goto LABEL_26; } } break; } goto LABEL_32; } } v5 = *(_BYTE *)(v6 + 1); v7 = *(_BYTE *)(v4 + 1); ++v6; ++v4; if ( !v5 ) break; } } LABEL_26: if ( *(_BYTE *)v4 == 42 && !*(_BYTE *)(v4 + 1) || !*(_BYTE *)v4 ) break; v3 = a1; LABEL_30: v4 = *(_DWORD *)(v3 + 12); v3 += 8; a1 = v3; if ( !v4 ) goto LABEL_31; } LABEL_32: result = *(_DWORD *)a1; } else { LABEL_31: result = a3; } return result; } //----- (0047FA00) -------------------------------------------------------- signed int __usercall sub_47FA00(int a1) { char *v1; // edi@1 signed int v2; // ebx@1 int v3; // ecx@4 int v4; // eax@4 signed int result; // eax@10 char v6; // [sp+8h] [bp-Ch]@1 char v7; // [sp+9h] [bp-Bh]@8 char v8; // [sp+Ah] [bp-Ah]@11 unsigned int v9; // [sp+10h] [bp-4h]@1 int v10; // [sp+14h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v1 = &v6; v2 = 0; do { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) break; v3 = *(_DWORD *)(a1 + 24792); v4 = *(_BYTE *)(v3 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v3 + 1; if ( v4 == 59 ) break; if ( v4 == -1 ) break; *v1 = v4; ++v2; ++v1; } while ( v2 < 7 ); *v1 = 0; if ( v6 == 35 ) { if ( v7 == 120 || v7 == 88 ) result = strtol(&v8, 0, 16); else result = strtol(&v7, 0, 10); } else { if ( strcmp(&v6, "lt") ) { if ( strcmp(&v6, "gt") ) { if ( strcmp(&v6, "amp") ) { if ( strcmp(&v6, "quot") ) { if ( strcmp(&v6, "apos") ) result = sub_47F8F0((int)&unk_4C7698, (int)&v6, 127); else result = 39; } else { result = 34; } } else { result = 38; } } else { result = 62; } } else { result = 60; } } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0047FC40) -------------------------------------------------------- signed int __usercall sub_47FC40(int a1) { char *v1; // edi@1 signed int v2; // ebx@1 int v3; // eax@13 char *v4; // eax@18 int v5; // edi@20 int v6; // eax@20 int v7; // eax@21 int v8; // eax@22 signed int result; // eax@26 int v10; // [sp+0h] [bp-54h]@0 signed int v11; // [sp+Ch] [bp-48h]@1 char v12; // [sp+10h] [bp-44h]@1 unsigned int v13; // [sp+50h] [bp-4h]@1 int v14; // [sp+54h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v1 = &v12; v11 = 64; v2 = sub_47C1D0(v10); if ( v2 != -1 ) { while ( v2 != 63 ) { --v11; if ( v11 > 0 ) { if ( v2 + 1 > 0 && v2 <= 32 ) LOBYTE(v2) = 32; *v1++ = v2; } v2 = *(_DWORD *)(a1 + 24800); if ( v2 ) { if ( v2 == -1 ) break; *(_DWORD *)(a1 + 24800) = 0; } else { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { v2 = -1; break; } v3 = *(_DWORD *)(a1 + 24792); v2 = *(_BYTE *)(v3 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v3 + 1; } if ( v2 == -1 ) break; } } *v1 = 0; if ( !strncmp(&v12, "xml ", 4u) ) { v4 = strstr(&v12, " encoding="); if ( v4 ) { if ( v4[10] ) { v5 = (int)(v4 + 11); LOBYTE(v6) = sub_47C7C0((int)(v4 + 11), (int)"iso-8859-1*"); if ( v6 && (LOBYTE(v7) = sub_47C7C0(v5, (int)"latin1*"), v7) ) { LOBYTE(v8) = sub_47C7C0(v5, (int)"utf-8*"); if ( !v8 ) *(_DWORD *)(a1 + 8) &= 0xFFFFFFDFu; } else { *(_DWORD *)(a1 + 8) |= 0x20u; } } } } if ( v2 == -1 ) result = -1; else result = sub_47C1D0(a1); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (0047FDA0) -------------------------------------------------------- void *__cdecl sub_47FDA0(int a1, const char *a2) { void *result; // eax@1 const char *v3; // ecx@3 const char v4; // dl@4 result = 0; if ( a2 ) { result = sub_47D480(a1, strlen(a2) + 1); if ( result ) { v3 = a2; do { v4 = *v3; v3[result - a2] = *v3; ++v3; } while ( v4 ); } } return result; } //----- (0047FDF0) -------------------------------------------------------- signed int __cdecl sub_47FDF0(int a1) { signed int v1; // ebx@1 int v2; // eax@1 int i; // esi@2 int v4; // edi@3 int v5; // ecx@4 int v6; // edx@5 int v7; // ecx@10 int v8; // ebx@11 unsigned int v9; // esi@12 void *v10; // eax@14 void *v11; // esi@16 int v12; // edi@18 const void *v13; // ecx@19 int v14; // esi@20 void *v15; // eax@21 int v16; // ecx@22 int v17; // esi@22 char v18; // dl@23 signed int result; // eax@24 int (__cdecl *v20)(_DWORD, _DWORD); // eax@25 void (__cdecl *v21)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // eax@33 int v22; // [sp+Ch] [bp-10h]@10 signed int v23; // [sp+10h] [bp-Ch]@10 unsigned int v24; // [sp+14h] [bp-8h]@19 signed __int16 v25; // [sp+18h] [bp-4h]@10 void *v26; // [sp+18h] [bp-4h]@19 v1 = 0; v2 = a1 + 112; do { for ( i = *(_DWORD *)v2; i; i = *(_DWORD *)i ) { v4 = *(_DWORD *)(i + 24); if ( v4 ) { v5 = *(_DWORD *)(i + 12); *(_DWORD *)(i + 12) = 0; if ( v5 ) { do { v6 = *(_DWORD *)v5; *(_DWORD *)v5 = v4; v5 = v6; } while ( v6 ); } } else { if ( *(_BYTE *)(i + 32) == 35 ) { v16 = i + 33; v17 = a1 - (i + 33); do { v18 = *(_BYTE *)v16; *(_BYTE *)(v17 + v16 + 93440) = *(_BYTE *)v16; ++v16; } while ( v18 ); result = 25; *(_DWORD *)(a1 + 102824) = 25; return result; } } } ++v1; v2 += 4; } while ( v1 < 1999 ); LABEL_10: v7 = a1 + 112; v25 = 0; v23 = 0; v22 = a1 + 112; while ( 1 ) { v8 = *(_DWORD *)v7; if ( *(_DWORD *)v7 ) break; LABEL_39: v7 = v22 + 4; ++v23; v22 += 4; if ( v23 >= 1999 ) { if ( !v25 ) return 0; goto LABEL_10; } } while ( 1 ) { v9 = *(_DWORD *)(v8 + 24); if ( v9 && !sub_47C4A0(a1, v9 + *(_DWORD *)(v8 + 8), v9) ) { v10 = *(void **)(v8 + 16); if ( v10 ) { *(_DWORD *)(v8 + 16) = 0; do { v11 = *(void **)v10; memmove(v10, *(const void **)(v8 + 24), *(_DWORD *)(v8 + 8)); v10 = v11; } while ( v11 ); v25 = 1; } v12 = *(_DWORD *)(v8 + 20); if ( v12 ) break; } LABEL_38: v8 = *(_DWORD *)v8; if ( !v8 ) goto LABEL_39; } while ( 1 ) { v13 = *(const void **)(v8 + 24); v24 = *(_DWORD *)(v12 + 12); v26 = *(void **)(v8 + 24); if ( *(_DWORD *)(v8 + 28) < v24 ) break; v14 = a1; LABEL_33: v21 = *(void (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(v12 + 20); if ( v21 ) v21( v14, *(_DWORD *)(v8 + 4), *(_DWORD *)(v12 + 4), *(_DWORD *)(v12 + 8), *(_DWORD *)(v12 + 16), v13, *(_DWORD *)(v8 + 8)); else memmove(*(void **)(v12 + 8), v13, *(_DWORD *)(v8 + 8)); *(_DWORD *)(v8 + 20) = *(_DWORD *)v12; free((void *)v12); v12 = *(_DWORD *)(v8 + 20); v25 = 1; if ( !v12 ) goto LABEL_38; } while ( 1 ) { v14 = a1; if ( !a1 ) { v15 = malloc(4u); goto LABEL_30; } v20 = *(int (__cdecl **)(_DWORD, _DWORD))(a1 + 24664); if ( !v20 ) break; v15 = (void *)v20(a1, 4); LABEL_29: *(_WORD *)(a1 + 99676) = 1; LABEL_30: if ( !v15 ) return *(_DWORD *)(a1 + 102824); *(_DWORD *)v15 = v26; v26 = v15; --v24; if ( *(_DWORD *)(v8 + 28) >= v24 ) { v13 = v15; goto LABEL_33; } } v15 = malloc(0x10u); if ( v15 ) { *((_WORD *)v15 + 3) = -16162; *((_DWORD *)v15 + 2) = *(_DWORD *)(a1 + 108); *((_DWORD *)v15 + 3) = 8; *(_DWORD *)(a1 + 108) = (char *)v15 + 8; goto LABEL_29; } *(_DWORD *)(a1 + 102824) = 20; return *(_DWORD *)(a1 + 102824); } //----- (00480050) -------------------------------------------------------- void *__cdecl sub_480050(int a1, int a2, void *a3, int a4) { int v4; // ebx@1 int v5; // edi@1 size_t v6; // eax@3 int v7; // esi@6 int v8; // ebx@7 void *v9; // eax@9 int v10; // esi@10 bool v11; // zf@11 int v13; // [sp+14h] [bp+Ch]@6 v4 = a1; v5 = a2; if ( !a2 ) v5 = *(_DWORD *)(a1 + 100); v6 = *(_DWORD *)(v5 + 8); if ( v6 ) { if ( !a3 ) { a3 = sub_47D480(a1, v6); if ( !a3 ) { *(_DWORD *)(a1 + 102824) = 20; sub_47C580(a1, (void *)v5); return 0; } } v13 = (int)a3; v7 = sub_47C520(a1, v5); if ( v7 ) { while ( 1 ) { v8 = sub_47C560(v4, v5); if ( a4 ) sub_47C380(a1, v7, v8 + v7, v13, v7); memmove((void *)v13, (const void *)v7, v8); v9 = *(void **)(v5 + 4); v13 += v8; if ( !v9 ) break; *(_DWORD *)(v5 + 4) = *(_DWORD *)v9; free(v9); v10 = *(_DWORD *)(v5 + 4); if ( !v10 ) break; v11 = v10 == -8; v7 = v10 + 8; v4 = a1; if ( v11 ) { sub_47C580(a1, (void *)v5); return a3; } } v4 = a1; } } sub_47C580(v4, (void *)v5); return a3; } //----- (00480150) -------------------------------------------------------- void *__cdecl sub_480150(int a1, const char *a2, int a3) { int v3; // esi@1 const char *v4; // ecx@3 const char *v5; // ecx@5 int v6; // eax@9 void *v7; // eax@14 int v8; // ecx@15 void *v9; // edx@15 char v10; // al@16 void *result; // eax@21 const char *v12; // ecx@23 const char v13; // dl@24 int v14; // ecx@26 char v15; // dl@27 unsigned int v16; // [sp+Ch] [bp-Ch]@1 size_t v17; // [sp+10h] [bp-8h]@1 int v18; // [sp+14h] [bp-4h]@1 LOWORD(v18) = -1; v16 = strlen(a2); v17 = strlen((const char *)a3) + 1; v3 = *(_DWORD *)(a1 + 92); if ( v3 ) { v18 = 0; if ( !*(_DWORD *)v3 ) goto LABEL_32; while ( 1 ) { v4 = *(const char **)(v3 + 4); if ( v4 ) { if ( !strcmp((const char *)a3, v4) ) break; } v5 = *(const char **)(v3 + 12); if ( v5 ) { if ( !strcmp((const char *)a3, v5) ) goto LABEL_17; } else { if ( *(_DWORD *)(v3 + 8) ) { LOBYTE(v6) = sub_47C7C0(a3, *(_DWORD *)(v3 + 8)); if ( !v6 ) { v7 = malloc(v17); *(_DWORD *)(v3 + 12) = v7; if ( v7 ) { v8 = a3; v9 = v7; do { v10 = *(_BYTE *)v8; *(_BYTE *)v9 = *(_BYTE *)v8++; v9 = (char *)v9 + 1; } while ( v10 ); } goto LABEL_17; } } } ++v18; v3 += 16; if ( !*(_DWORD *)v3 ) goto LABEL_17; } if ( *(_DWORD *)(v3 + 12) ) { free(*(void **)(v3 + 12)); *(_DWORD *)(v3 + 12) = 0; } LABEL_17: if ( *(_DWORD *)v3 ) { if ( (signed __int16)v18 >= 0 ) v17 = 0; } else { LABEL_32: LOWORD(v18) = -1; } } result = malloc(v17 + v16 + 20); if ( result ) { *(_DWORD *)result = *(_DWORD *)(a1 + 96); *(_DWORD *)(a1 + 96) = result; *((_DWORD *)result + 1) = *(_DWORD *)(a1 + 24808); v12 = a2; *((_WORD *)result + 4) = v18; do { v13 = *v12; v12[result - a2 + 16] = *v12; ++v12; } while ( v13 ); if ( (signed __int16)v18 >= 0 ) { *((_DWORD *)result + 3) = 0; } else { v14 = a3; do { v15 = *(_BYTE *)v14; *((_BYTE *)result + v16 - a3 + v14 + 17) = *(_BYTE *)v14; ++v14; } while ( v15 ); *((_DWORD *)result + 3) = (char *)result + v16 + 17; } } else { *(_DWORD *)(a1 + 102824) = 20; result = 0; } return result; } //----- (00480310) -------------------------------------------------------- int __usercall sub_480310(int a1) { int v1; // ecx@1 int v2; // ecx@2 int v3; // edx@4 _UNKNOWN *v4; // ecx@4 int v5; // ecx@7 int v6; // esi@8 int result; // eax@8 v1 = *(_DWORD *)(a1 + 102828); if ( v1 ) { v2 = v1 - 1; if ( v2 ) { if ( v2 == 1 ) { v3 = *(_DWORD *)(a1 + 102832); v4 = &unk_4C7664; if ( v3 != 11001 ) { do { if ( !*((_DWORD *)v4 + 1) ) break; v4 = (char *)v4 + 8; } while ( *(_DWORD *)v4 != v3 ); } v5 = *((_DWORD *)v4 + 1); if ( v5 ) { result = v5; } else { v6 = a1 + 90368; sprintf((char *)(a1 + 90368), "TCP/UDP IP error %d", v3); result = v6; } } else { result = 0; } } else { result = (int)"WSAStartup failed"; } } else { result = sub_47F5B0(a1); } return result; } //----- (00480380) -------------------------------------------------------- signed int __cdecl sub_480380(int a1, int a2, int a3, u_short hostshort) { int v4; // eax@1 int v5; // ebx@9 int v6; // edi@9 int v7; // eax@11 SOCKET v9; // edi@15 int v10; // eax@16 __int16 v11; // dx@17 int v12; // eax@18 int v13; // eax@20 int v14; // ST08_4@20 int v15; // ST0C_4@20 int v16; // ST10_4@20 int v17; // ST14_4@20 const char *v18; // eax@35 int v19; // eax@38 u_short v20; // ax@43 int v21; // eax@49 int v22; // eax@55 int v23; // ebx@55 int v24; // eax@57 int v25; // eax@59 int v26; // eax@60 int v27; // eax@61 int v28; // eax@63 int v29; // eax@64 int v30; // ST08_4@64 int v31; // ST0C_4@64 int v32; // ST10_4@64 int v33; // ST14_4@64 int v34; // eax@66 int v35; // ST08_4@66 int v36; // ST0C_4@66 int v37; // ST10_4@66 int v38; // ST14_4@66 int v39; // eax@71 bool v40; // zf@71 int v41; // eax@74 int v42; // ebx@75 int v43; // eax@79 bool v44; // zf@79 int v45; // ebx@80 int v46; // eax@82 void (__cdecl *v47)(_DWORD, _DWORD); // eax@84 int v48; // ebx@86 int v49; // eax@88 int v50; // eax@89 void (__cdecl *v51)(_DWORD, _DWORD); // edx@91 int v52; // ST10_4@92 int v53; // eax@92 int v54; // [sp-8h] [bp-1C0h]@8 int v55; // [sp-8h] [bp-1C0h]@18 int v56; // [sp-8h] [bp-1C0h]@63 int v57; // [sp-8h] [bp-1C0h]@65 int v58; // [sp-4h] [bp-1BCh]@18 int v59; // [sp-4h] [bp-1BCh]@38 u_short v60; // [sp-4h] [bp-1BCh]@40 char *v61; // [sp-4h] [bp-1BCh]@45 int v62; // [sp-4h] [bp-1BCh]@63 int v63; // [sp-4h] [bp-1BCh]@65 u_long *v64; // [sp-4h] [bp-1BCh]@96 int v65; // [sp+Ch] [bp-1ACh]@1 int optlen; // [sp+10h] [bp-1A8h]@1 int v67; // [sp+14h] [bp-1A4h]@1 int v68; // [sp+18h] [bp-1A0h]@1 char v69; // [sp+1Fh] [bp-199h]@33 char argp[4]; // [sp+20h] [bp-198h]@17 struct WSAData WSAData; // [sp+24h] [bp-194h]@4 unsigned int v72; // [sp+1B4h] [bp-4h]@1 int v73; // [sp+1B8h] [bp+0h]@1 v72 = (unsigned int)&v73 ^ __security_cookie; v68 = a2; v4 = *(_DWORD *)(a1 + 24772); optlen = a3; v65 = 65537; v67 = 1; if ( v4 != -1 ) (*(void (__cdecl **)(int, int))(a1 + 24616))(a1, v4); *(_DWORD *)(a1 + 24772) = -1; *(_DWORD *)(a1 + 102828) = 1; if ( !dword_A42944 ) { if ( WSAStartup(0x101u, &WSAData) ) { *(_DWORD *)(a1 + 102832) = 0; v5 = sub_480310(a1); v6 = (int)"SOAP-ENV:Sender"; if ( *(_WORD *)(a1 + 6) != 2 ) v6 = (int)"SOAP-ENV:Client"; *(_DWORD *)sub_474DA0(a1) = v6; *(_DWORD *)sub_474EA0(a1) = v5; v7 = sub_474ED0(a1); if ( v7 ) *(_DWORD *)v7 = "TCP init failed in tcp_connect()"; *(_DWORD *)(a1 + 102824) = 28; return -1; } dword_A42944 = 1; } *(_DWORD *)(a1 + 102828) = 0; LABEL_7: if ( *(_BYTE *)(a1 + 16) & 4 ) v54 = 2; else v54 = 1; v9 = socket(2, v54, 0); if ( v9 == -1 ) { *(_DWORD *)(a1 + 102832) = WSAGetLastError(); v25 = sub_480310(a1); sub_47F6A0(a1, v25, (int)"socket failed in tcp_connect()", 28); return -1; } v10 = *(_DWORD *)(a1 + 72); if ( v10 == 128 ) { v11 = *(_WORD *)(a1 + 84); strcpy(argp, "\x01"); *(_WORD *)&argp[2] = v11; if ( setsockopt(v9, 65535, 128, argp, 4) ) { v12 = WSAGetLastError(); v58 = 28; v55 = (int)"setsockopt SO_LINGER failed in tcp_connect()"; LABEL_19: *(_DWORD *)(a1 + 102832) = v12; LABEL_20: v13 = sub_480310(a1); sub_47F6A0(a1, v13, v55, v58); (*(void (__stdcall **)(int, SOCKET, int, int, int, int))(a1 + 24616))(a1, v9, v14, v15, v16, v17); return -1; } } else { if ( v10 && setsockopt(v9, 65535, v10, (const char *)&v67, 4) ) { *(_DWORD *)(a1 + 102832) = WSAGetLastError(); v26 = sub_480310(a1); sub_47F6A0(a1, v26, (int)"setsockopt failed in tcp_connect()", 28); (*(void (__cdecl **)(int, SOCKET))(a1 + 24616))(a1, v9); return -1; } } if ( (*(_WORD *)(a1 + 102776) || *(_WORD *)(a1 + 102778)) && setsockopt(v9, 65535, 8, (const char *)&v67, 4) ) { *(_DWORD *)(a1 + 102832) = WSAGetLastError(); v27 = sub_480310(a1); sub_47F6A0(a1, v27, (int)"setsockopt SO_KEEPALIVE failed in tcp_connect()", 28); (*(void (__cdecl **)(int, SOCKET))(a1 + 24616))(a1, v9); return -1; } if ( setsockopt(v9, 65535, 4097, (const char *)&v65, 4) ) { v12 = WSAGetLastError(); v58 = 28; v55 = (int)"setsockopt SO_SNDBUF failed in tcp_connect()"; goto LABEL_19; } if ( setsockopt(v9, 65535, 4098, (const char *)&v65, 4) ) { v28 = WSAGetLastError(); v62 = 28; v56 = (int)"setsockopt SO_RCVBUF failed in tcp_connect()"; LABEL_64: *(_DWORD *)(a1 + 102832) = v28; v29 = sub_480310(a1); sub_47F6A0(a1, v29, v56, v62); (*(void (__stdcall **)(int, SOCKET, int, int, int, int))(a1 + 24616))(a1, v9, v30, v31, v32, v33); return -1; } if ( *(_BYTE *)(a1 + 16) & 4 ) goto LABEL_102; if ( setsockopt(v9, 6, 1, (const char *)&v67, 4) ) { v63 = 28; *(_DWORD *)(a1 + 102832) = WSAGetLastError(); v57 = (int)"setsockopt TCP_NODELAY failed in tcp_connect()"; goto LABEL_66; } if ( *(_BYTE *)(a1 + 16) & 4 ) { LABEL_102: if ( *(_BYTE *)(a1 + 119352) ) { v69 = *(_BYTE *)(a1 + 119352); if ( setsockopt(v9, 0, 10, &v69, 1) ) { v12 = WSAGetLastError(); v58 = 28; v55 = (int)"setsockopt IP_MULTICAST_TTL failed in tcp_connect()"; goto LABEL_19; } } if ( *(_BYTE *)(a1 + 16) & 4 ) { v18 = *(const char **)(a1 + 119348); if ( v18 ) { if ( !*(_DWORD *)(a1 + 119344) && setsockopt(v9, 0, 9, v18, 4) ) { v28 = WSAGetLastError(); v62 = 28; v56 = (int)"setsockopt IP_MULTICAST_IF failed in tcp_connect()"; goto LABEL_64; } } } } *(_DWORD *)(a1 + 119372) = 16; *(_DWORD *)(a1 + 119356) = 0; *(_DWORD *)(a1 + 119360) = 0; *(_DWORD *)(a1 + 119364) = 0; *(_DWORD *)(a1 + 119368) = 0; v19 = *(_DWORD *)(a1 + 102800); *(_WORD *)(a1 + 119356) = 2; *(_DWORD *)(a1 + 102828) = 2; v59 = a1 + 119360; if ( v19 ) { if ( !(*(int (__cdecl **)(int, int, int))(a1 + 24604))(a1, v19, v59) ) { v60 = *(_WORD *)(a1 + 102804); goto LABEL_43; } v63 = 28; v57 = (int)"get proxy host by name failed in tcp_connect()"; LABEL_66: v34 = sub_480310(a1); sub_47F6A0(a1, v34, v57, v63); (*(void (__stdcall **)(_DWORD, _DWORD, int, int, int, int))(a1 + 24616))(a1, v9, v35, v36, v37, v38); return -1; } if ( (*(int (__cdecl **)(int, int, int))(a1 + 24604))(a1, optlen, v59) ) { v58 = 28; v55 = (int)"get host by name failed in tcp_connect()"; goto LABEL_20; } v60 = hostshort; LABEL_43: v20 = htons(v60); v40 = (*(_BYTE *)(a1 + 16) & 4) == 0; *(_WORD *)(a1 + 119358) = v20; *(_DWORD *)(a1 + 102828) = 0; if ( !v40 ) return v9; if ( *(_DWORD *)(a1 + 60) ) { *(_DWORD *)argp = 1; v61 = argp; } else { *(_DWORD *)argp = 0; v61 = argp; } ioctlsocket(v9, -2147195266, (u_long *)v61); while ( 1 ) { if ( !connect(v9, (const struct sockaddr *)(a1 + 119356), 16) ) goto LABEL_92; v21 = WSAGetLastError(); if ( v21 == 10048 ) { (*(void (__cdecl **)(_DWORD, _DWORD))(a1 + 24616))(a1, v9); goto LABEL_7; } if ( *(_DWORD *)(a1 + 60) && (v21 == 10036 || v21 == 10035) ) break; if ( v21 && v21 != 10004 ) { *(_DWORD *)(a1 + 102832) = v21; v22 = sub_480310(a1); v40 = *(_WORD *)(a1 + 6) == 2; v23 = v22; *(_DWORD *)argp = "SOAP-ENV:Sender"; if ( !v40 ) *(_DWORD *)argp = "SOAP-ENV:Client"; v24 = sub_474DA0(a1); *(_DWORD *)v24 = *(_DWORD *)argp; *(_DWORD *)sub_474EA0(a1) = v23; LABEL_89: v50 = sub_474ED0(a1); if ( v50 ) *(_DWORD *)v50 = "connect failed in tcp_connect()"; v51 = *(void (__cdecl **)(_DWORD, _DWORD))(a1 + 24616); *(_DWORD *)(a1 + 102824) = 28; v51(a1, v9); return -1; } } v39 = sub_47CA70(a1, v9, 2, *(_DWORD *)(a1 + 60)); v40 = v39 == 0; if ( v39 > 0 ) { LABEL_75: v42 = a1 + 102832; optlen = 4; if ( getsockopt(v9, 65535, 4103, (char *)(a1 + 102832), &optlen) || *(_DWORD *)v42 ) { if ( !*(_DWORD *)v42 ) *(_DWORD *)v42 = WSAGetLastError(); v43 = sub_480310(a1); v44 = *(_WORD *)(a1 + 6) == 2; LABEL_86: v48 = (int)"SOAP-ENV:Sender"; *(_DWORD *)argp = v43; if ( !v44 ) v48 = (int)"SOAP-ENV:Client"; *(_DWORD *)sub_474DA0(a1) = v48; v49 = sub_474EA0(a1); *(_DWORD *)v49 = *(_DWORD *)argp; goto LABEL_89; } LABEL_92: *(_DWORD *)(a1 + 12) &= 0xFFFFF7FFu; *(_DWORD *)(a1 + 16) &= 0xFFFFF7FFu; v52 = v68; *(_DWORD *)(a1 + 24772) = v9; LOBYTE(v53) = sub_47C7C0(v52, (int)"https:*"); if ( !v53 ) { (*(void (__cdecl **)(_DWORD, _DWORD))(a1 + 24616))(a1, v9); *(_DWORD *)(a1 + 102824) = 30; return -1; } if ( *(_DWORD *)(a1 + 52) || *(_DWORD *)(a1 + 56) ) { v68 = 1; v64 = (u_long *)&v68; } else { v68 = 0; v64 = (u_long *)&v68; } ioctlsocket(v9, -2147195266, v64); return v9; } while ( !v40 ) { if ( *(_DWORD *)(a1 + 102832) != 10004 ) { v43 = sub_480310(a1); v44 = *(_WORD *)(a1 + 6) == 2; goto LABEL_86; } v41 = sub_47CA70(a1, v9, 2, *(_DWORD *)(a1 + 60)); v40 = v41 == 0; if ( v41 > 0 ) goto LABEL_75; } v45 = (int)"SOAP-ENV:Sender"; if ( *(_WORD *)(a1 + 6) != 2 ) v45 = (int)"SOAP-ENV:Client"; *(_DWORD *)sub_474DA0(a1) = v45; *(_DWORD *)sub_474EA0(a1) = "Timeout"; v46 = sub_474ED0(a1); if ( v46 ) *(_DWORD *)v46 = "connect failed in tcp_connect()"; v47 = *(void (__cdecl **)(_DWORD, _DWORD))(a1 + 24616); *(_DWORD *)(a1 + 102824) = 28; v47(a1, v9); return -1; } // 4DE38C: using guessed type int __security_cookie; // A42944: using guessed type int dword_A42944; //----- (00480B00) -------------------------------------------------------- signed int __cdecl sub_480B00(int a1) { SOCKET v1; // eax@1 int v2; // eax@2 bool v3; // sf@2 SOCKET v4; // eax@5 SOCKET v5; // ecx@8 int v7; // eax@17 v1 = *(_DWORD *)(a1 + 24772); if ( v1 == -1 ) { v4 = *(_DWORD *)(a1 + 24768); if ( v4 == -1 ) return 0; v2 = sub_47CA70(a1, v4, 2, 0); goto LABEL_7; } v2 = sub_47CA70(a1, v1, 7, 0); v3 = v2 < 0; if ( v2 <= 0 ) goto LABEL_13; if ( !(v2 & 4) ) { LABEL_7: v3 = v2 < 0; if ( v2 > 0 ) { v5 = *(_DWORD *)(a1 + 24772); if ( v5 != -1 && v2 & 2 && (!(v2 & 1) || recv(v5, (char *)(a1 + 91392), 1, 2) > 0) ) return 0; return -1; } LABEL_13: if ( !v3 ) return -1; } if ( (*(_DWORD *)(a1 + 24768) != -1 || *(_DWORD *)(a1 + 24772) != -1) && WSAGetLastError() != 10004 ) { v7 = sub_480310(a1); sub_47F700(a1, v7, (int)"select failed in soap_poll()", 28); *(_DWORD *)(a1 + 102824) = 28; return 28; } return -1; } //----- (00480BD0) -------------------------------------------------------- int __cdecl sub_480BD0(int a1, const char *a2, int a3, int a4, int a5, const char *a6, int a7) { int v7; // esi@1 int v8; // eax@8 int v9; // eax@9 unsigned int v10; // edi@11 int v11; // ecx@11 int v12; // ebx@11 char v13; // al@12 int result; // eax@14 int v15; // edi@17 int v16; // eax@20 int v17; // eax@27 char v18; // cl@28 int v19; // eax@32 int v20; // edx@33 int v21; // ebx@34 char v22; // cl@35 int v23; // ebx@36 int v24; // eax@36 char v25; // cl@37 int v26; // eax@39 char v27; // dl@40 int v28; // eax@42 int v29; // edx@43 int v30; // ebx@44 char v31; // cl@45 int v32; // ebx@46 int v33; // eax@46 char v34; // cl@47 int v35; // eax@49 char v36; // dl@50 int v37; // eax@53 unsigned int v38; // kr00_4@55 char v39[4]; // eax@55 const char *v40; // [sp-14h] [bp-1Ch]@19 int v41; // [sp-10h] [bp-18h]@19 const char *v42; // [sp-Ch] [bp-14h]@19 int v43; // [sp-8h] [bp-10h]@19 char v44[4]; // [sp+10h] [bp+8h]@2 v7 = a1; switch ( *(_DWORD *)(a1 + 102820) ) { case 0x7D2: *(_DWORD *)v44 = "GET"; break; case 0x7D3: *(_DWORD *)v44 = "PUT"; break; case 0x7D4: *(_DWORD *)v44 = "DELETE"; break; case 0x7D5: *(_DWORD *)v44 = "CONNECT"; break; default: *(_DWORD *)v44 = "POST"; break; } if ( !a2 || (LOBYTE(v8) = sub_47C7C0((int)a2, (int)"http:*"), v8) && (LOBYTE(v9) = sub_47C7C0((int)a2, (int)"https:*"), v9) && strncmp(a2, "httpg:", 6u) ) { result = 0; } else { v10 = strlen(a2); v11 = *(_DWORD *)(v7 + 32); v12 = v11 + 1; do v13 = *(_BYTE *)v11++; while ( v13 ); if ( v10 + v11 - v12 <= 0x3B0 ) { if ( *(_DWORD *)(v7 + 102820) == 2005 ) { v15 = v7 + 91392; sprintf( (char *)(v7 + 91392), "%s %s:%d HTTP/%s", *(_DWORD *)v44, v7 + 101736, *(_DWORD *)(v7 + 102772), *(_DWORD *)(v7 + 32)); } else { if ( *(_DWORD *)(v7 + 102800) ) { v43 = *(_DWORD *)(v7 + 32); v42 = a2; v41 = *(_DWORD *)v44; v40 = "%s %s HTTP/%s"; } else { v16 = a5; if ( *(_BYTE *)a5 == 47 ) v16 = a5 + 1; v43 = *(_DWORD *)(v7 + 32); v42 = (const char *)v16; v41 = *(_DWORD *)v44; v40 = "%s /%s HTTP/%s"; } v15 = v7 + 91392; sprintf((char *)(v7 + 91392), v40, v41, v42, v43); } result = (*(int (__cdecl **)(int, int, _DWORD))(v7 + 24584))(v7, v15, 0); if ( !result ) { if ( a4 == 80 ) { v17 = a3; do { v18 = *(_BYTE *)v17; *(_BYTE *)(v15 - a3 + v17) = *(_BYTE *)v17; ++v17; } while ( v18 ); } else { sprintf((char *)v15, "%s:%d", a3, a4); } result = (*(int (__cdecl **)(int, _DWORD, int))(v7 + 24584))(v7, "Host", v15); if ( !result ) { result = (*(int (__cdecl **)(int, _DWORD, _DWORD))(v7 + 24584))(v7, "User-Agent", "gSOAP/2.8"); if ( !result ) { result = sub_47F180(v7, 0, a7); if ( !result ) { v19 = *(_DWORD *)(v7 + 24536); if ( !v19 ) goto LABEL_62; v20 = *(_DWORD *)(v7 + 24540); if ( !v20 ) goto LABEL_62; v21 = v19 + 1; do v22 = *(_BYTE *)v19++; while ( v22 ); v23 = v19 - v21; v24 = *(_DWORD *)(v7 + 24540); do v25 = *(_BYTE *)v24++; while ( v25 ); if ( (unsigned int)(v23 + v24 - (v20 + 1)) >= 0x2F9 ) goto LABEL_62; *(_DWORD *)v15 = dword_4C80F0; *(_WORD *)(v15 + 4) = word_4C80F4; *(_BYTE *)(v15 + 6) = byte_4C80F6; sprintf((char *)(v7 + 91654), "%s:%s", *(_DWORD *)(v7 + 24536), v20); v26 = v7 + 91654; do v27 = *(_BYTE *)v26++; while ( v27 ); sub_47EE90(v7, v7 + 91654, (void *)(v7 + 91398), v26 - (v7 + 91655)); result = (*(int (__cdecl **)(_DWORD, _DWORD, int))(v7 + 24584))(v7, "Authorization", v15); if ( !result ) { LABEL_62: v28 = *(_DWORD *)(v7 + 102808); if ( !v28 ) goto LABEL_63; v29 = *(_DWORD *)(v7 + 102812); if ( !v29 ) goto LABEL_63; v30 = v28 + 1; do v31 = *(_BYTE *)v28++; while ( v31 ); v32 = v28 - v30; v33 = *(_DWORD *)(v7 + 102812); do v34 = *(_BYTE *)v33++; while ( v34 ); if ( (unsigned int)(v32 + v33 - (v29 + 1)) >= 0x2F9 ) goto LABEL_63; *(_DWORD *)v15 = dword_4C80F0; *(_WORD *)(v15 + 4) = word_4C80F4; *(_BYTE *)(v15 + 6) = byte_4C80F6; sprintf((char *)(v7 + 91654), "%s:%s", *(_DWORD *)(v7 + 102808), v29); v35 = v7 + 91654; do v36 = *(_BYTE *)v35++; while ( v36 ); sub_47EE90(v7, v7 + 91654, (void *)(v7 + 91398), v35 - (v7 + 91655)); result = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(v7 + 24584))(v7, "Proxy-Authorization", v15); if ( !result ) { LABEL_63: if ( !a6 || (v37 = *(_DWORD *)(v7 + 102820), v37 == 2002) || v37 == 2004 ) goto LABEL_64; v38 = strlen(a6); *(_DWORD *)v39 = a6; if ( v38 >= 0x3FD ) *(_DWORD *)v39 = byte_4C760C; sprintf((char *)v15, "\"%s\"", *(_DWORD *)v39); result = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(v7 + 24584))(v7, "SOAPAction", v15); if ( !result ) LABEL_64: result = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(v7 + 24584))(v7, 0, 0); } } } } } } } else { result = 20; *(_DWORD *)(v7 + 102824) = 20; } } return result; } // 4C80F0: using guessed type int dword_4C80F0; // 4C80F4: using guessed type __int16 word_4C80F4; // 4C80F6: using guessed type char byte_4C80F6; //----- (00480FA0) -------------------------------------------------------- int __cdecl sub_480FA0(int a1, signed int a2, int a3) { int v3; // eax@1 int v4; // edi@1 char v5; // cl@2 int result; // eax@4 int v7; // ebx@5 int v8; // eax@9 int v9; // edx@9 int v10; // edx@11 int v11; // eax@12 char v12; // cl@13 bool v13; // cf@14 int v14; // eax@14 const char *v15; // eax@23 int v16; // eax@24 int v17; // eax@37 v3 = *(_DWORD *)(a1 + 32); v4 = v3 + 1; do v5 = *(_BYTE *)v3++; while ( v5 ); if ( (unsigned int)(v3 - v4) > 4 ) { result = 20; *(_DWORD *)(a1 + 102824) = 20; return result; } v7 = a2; if ( !a2 || a2 == 1002 || a2 == 1003 ) { if ( a3 || (v17 = (int)"202 Accepted", (*(_DWORD *)(a1 + 16) & 3) == 3) ) v17 = (int)"200 OK"; if ( *(_DWORD *)(a1 + 24768) != -1 || *(_DWORD *)(a1 + 24772) != -1 ) { sprintf((char *)(a1 + 91392), "HTTP/%s %s", *(_DWORD *)(a1 + 32), v17); result = (*(int (__cdecl **)(int, int, _DWORD))(a1 + 24584))(a1, a1 + 91392, 0); if ( result ) return result; } else { result = (*(int (__cdecl **)(int, _DWORD, int))(a1 + 24584))(a1, "Status", v17); if ( result ) return result; } goto LABEL_44; } if ( (unsigned int)(a2 - 200) > 0x18F ) { v15 = *(const char **)sub_474DA0(a1); if ( (unsigned int)(a2 - 15) > 4 ) { if ( *(_WORD *)(a1 + 6) != 2 || v15 && strcmp(v15, "SOAP-ENV:Sender") ) v16 = (int)"500 Internal Server Error"; else v16 = (int)"400 Bad Request"; } else { v16 = (int)"405 Method Not Allowed"; } if ( *(_DWORD *)(a1 + 24768) != -1 || *(_DWORD *)(a1 + 24772) != -1 ) { sprintf((char *)(a1 + 91392), "HTTP/%s %s", *(_DWORD *)(a1 + 32), v16); result = (*(int (__cdecl **)(int, int, _DWORD))(a1 + 24584))(a1, a1 + 91392, 0); if ( result ) return result; } else { result = (*(int (__cdecl **)(_DWORD, _DWORD, int))(a1 + 24584))(a1, "Status", v16); if ( result ) return result; } goto LABEL_44; } v8 = sub_47CE80((void *)a2); sprintf((char *)(a1 + 91392), "HTTP/%s %d %s", v9, a2, v8); result = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24584))(a1, a1 + 91392, 0); if ( result ) return result; if ( a2 != 401 ) { if ( a2 >= 301 && a2 <= 303 || a2 == 307 ) { result = (*(int (__cdecl **)(_DWORD, _DWORD, int))(a1 + 24584))(a1, "Location", a1 + 99688); if ( result ) return result; } LABEL_44: result = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24584))(a1, "Server", "gSOAP/2.8"); if ( !result ) { result = sub_47F180(a1, v7, a3); if ( !result ) result = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24584))(a1, 0, 0); } return result; } v10 = *(_DWORD *)(a1 + 24544); if ( !v10 ) goto LABEL_49; v11 = *(_DWORD *)(a1 + 24544); do v12 = *(_BYTE *)v11++; while ( v12 ); v7 = a2; v13 = (unsigned int)(v11 - (v10 + 1)) < 0x3F2; v14 = *(_DWORD *)(a1 + 24544); if ( !v13 ) LABEL_49: v14 = (int)"gSOAP Web Service"; sprintf((char *)(a1 + 91392), "Basic realm=\"%s\"", v14); result = (*(int (__cdecl **)(_DWORD, _DWORD, int))(a1 + 24584))(a1, "WWW-Authenticate", a1 + 91392); if ( !result ) goto LABEL_44; return result; } //----- (00481250) -------------------------------------------------------- int __cdecl sub_481250(int a1, unsigned int a2, unsigned int *a3, int a4, int a5, int a6) { int v6; // esi@1 int v7; // eax@4 int v8; // ebx@6 int v9; // edi@7 int v10; // eax@7 int v11; // esi@10 bool v12; // zf@11 int result; // eax@16 v6 = a1; if ( *(_WORD *)(a1 + 6) == 2 ) *(_WORD *)(a1 + 99660) = 1; if ( a3 ) v7 = sub_47D010(v6, a2, a3, a4, a6, (int)&a1); else v7 = sub_47CF00(v6, a2, a6, (int)&a1); v8 = v7; if ( !v7 ) return v8; v9 = a1; LOBYTE(v10) = sub_47D260(v6, a1); if ( v10 || *(_WORD *)(v6 + 99668) == 3 ) goto LABEL_21; if ( !v9 ) return v8; v11 = *(_DWORD *)(v6 + 8) & 8; v12 = v11 ? *(_BYTE *)(v9 + 20) == 0 : *(_BYTE *)(v9 + 21) == 0; LOBYTE(v10) = v12; if ( v10 ) { LABEL_21: result = 0; } else { if ( v11 ) { *(_BYTE *)(v9 + 20) = 1; return v8; } *(_BYTE *)(v9 + 21) = 1; result = v8; } return result; } //----- (00481310) -------------------------------------------------------- void __cdecl sub_481310(int a1, void *a2) { __int16 v2; // ax@2 int v3; // ecx@5 int v4; // eax@6 int v5; // eax@14 if ( a1 ) { v2 = *(_WORD *)(a1 + 4); if ( v2 == 1 || v2 == 2 ) { if ( a2 ) { v3 = a1 + 108; if ( *(_DWORD *)(a1 + 108) ) { while ( 1 ) { v4 = *(_DWORD *)v3; if ( *(_WORD *)(*(_DWORD *)v3 - 2) != -16162 ) { *(_DWORD *)(a1 + 102824) = 21; return; } if ( a2 == (void *)(v4 - *(_DWORD *)(v4 + 4)) ) break; v3 = *(_DWORD *)v3; if ( !*(_DWORD *)v4 ) goto LABEL_9; } *(_DWORD *)v3 = *(_DWORD *)v4; free(a2); } else { LABEL_9: sub_47D520(a1, (int)a2); } } else { if ( *(_DWORD *)(a1 + 108) ) { while ( 1 ) { v5 = *(_DWORD *)(a1 + 108); if ( *(_WORD *)(v5 - 2) != -16162 ) break; *(_DWORD *)(a1 + 108) = *(_DWORD *)v5; free((void *)(v5 - *(_DWORD *)(v5 + 4))); if ( !*(_DWORD *)(a1 + 108) ) goto LABEL_16; } *(_DWORD *)(a1 + 102824) = 21; } else { LABEL_16: *(_DWORD *)(a1 + 16) &= 0xFFFFFEFFu; *(_DWORD *)(a1 + 36) = 0; *(_DWORD *)(a1 + 102760) = 0; *(_DWORD *)(a1 + 24504) = 0; *(_DWORD *)(a1 + 24500) = 0; *(_DWORD *)(a1 + 24536) = 0; *(_DWORD *)(a1 + 24540) = 0; *(_DWORD *)(a1 + 24544) = 0; *(_DWORD *)(a1 + 102900) = 0; *(_DWORD *)(a1 + 102904) = 0; *(_DWORD *)(a1 + 102888) = 0; *(_DWORD *)(a1 + 102892) = 0; } } } } } //----- (00481410) -------------------------------------------------------- void *__cdecl sub_481410(int a1, const char *a2, void *a3, int a4, int a5, int a6, unsigned int a7, int a8, int a9) { void *result; // eax@1 int v10; // eax@4 void *v11; // esi@4 const char *v12; // eax@19 const char v13; // cl@20 result = a3; if ( !a3 || !a2 || !*a2 ) return result; v10 = sub_47D390(a1, a2); v11 = (void *)v10; if ( !v10 ) { v11 = sub_47D420(a1, (int)a2); if ( v11 ) { *((_DWORD *)v11 + 1) = a5; *((_DWORD *)v11 + 2) = a7; *((_DWORD *)v11 + 3) = 0; *((_DWORD *)v11 + 4) = 0; *((_DWORD *)v11 + 6) = 0; *((_DWORD *)v11 + 7) = 0; *((_DWORD *)v11 + 5) = 0; goto LABEL_10; } return 0; } if ( *(_DWORD *)(v10 + 4) != a5 || *(_DWORD *)(v10 + 28) == a8 && *(_DWORD *)(v10 + 8) != a7 ) { v12 = a2; do { v13 = *v12; v12[a1 + 93440 - (_DWORD)a2] = *v12; ++v12; } while ( v13 ); *(_DWORD *)(a1 + 102824) = 26; return 0; } LABEL_10: if ( a9 || a7 < 4 || *a2 != 35 ) { result = malloc(0x18u); if ( result ) { *(_DWORD *)result = *((_DWORD *)v11 + 5); *((_DWORD *)result + 1) = a6; *((_DWORD *)result + 2) = a3; *((_DWORD *)result + 3) = a8; *((_DWORD *)result + 4) = a4; if ( a9 ) { *((_DWORD *)result + 5) = a9; *((_DWORD *)v11 + 5) = result; result = a3; } else { *((_DWORD *)result + 5) = sub_47D930; *((_DWORD *)v11 + 5) = result; result = a3; } } else { *(_DWORD *)(a1 + 102824) = 20; } } else { result = a3; *(_DWORD *)a3 = *((_DWORD *)v11 + 4); *((_DWORD *)v11 + 4) = a3; } return result; } //----- (00481550) -------------------------------------------------------- void __cdecl sub_481550(int a1) { void *v1; // eax@1 void *v2; // ebx@1 void *v3; // edi@2 int v4; // ebx@4 void *v5; // eax@5 void *v6; // edi@6 int v7; // eax@7 int v8; // ecx@10 void *v9; // edi@17 void *v10; // eax@21 int v11; // edi@23 void *v12; // eax@25 void *v13; // edi@34 void *v14; // eax@35 void *v15; // edi@36 v1 = *(void **)(a1 + 96); v2 = 0; if ( v1 ) { do { v3 = *(void **)v1; free(v1); v1 = v3; } while ( v3 ); } *(_DWORD *)(a1 + 96) = 0; if ( *(_DWORD *)(a1 + 100) ) { do { v4 = *(_DWORD *)(a1 + 100); if ( v4 ) { v5 = *(void **)(v4 + 4); if ( v5 ) { do { v6 = *(void **)v5; free(v5); v5 = v6; } while ( v6 ); } v7 = *(_DWORD *)(a1 + 100); if ( v7 == v4 ) { *(_DWORD *)(a1 + 100) = *(_DWORD *)v4; } else { if ( v7 ) { while ( 1 ) { v8 = *(_DWORD *)v7; if ( *(_DWORD *)v7 == v4 ) break; v7 = *(_DWORD *)v7; if ( !v8 ) goto LABEL_14; } *(_DWORD *)v7 = *(_DWORD *)v4; } } LABEL_14: free((void *)v4); } } while ( *(_DWORD *)(a1 + 100) ); v2 = 0; } v9 = *(void **)(a1 + 99656); if ( v9 != v2 ) { do { v2 = *(void **)v9; if ( *((_DWORD *)v9 + 2) ) free(*((void **)v9 + 2)); free(v9); v9 = v2; } while ( v2 ); } v10 = *(void **)(a1 + 24820); *(_DWORD *)(a1 + 99656) = v2; if ( v10 != v2 ) free(v10); v11 = *(_DWORD *)(a1 + 92); *(_DWORD *)(a1 + 24820) = v2; *(_DWORD *)(a1 + 24824) = v2; *(_DWORD *)(a1 + 24828) = v2; if ( (void *)v11 != v2 ) { for ( ; *(void **)v11 != v2; v11 += 16 ) { v12 = *(void **)(v11 + 12); if ( v12 != v2 ) { if ( *(void **)(a1 + 40) == v12 ) *(_DWORD *)(a1 + 40) = byte_4C760C; free(*(void **)(v11 + 12)); *(_DWORD *)(v11 + 12) = v2; } if ( *(_DWORD *)(a1 + 40) == *(_DWORD *)(v11 + 4) ) *(_DWORD *)(a1 + 40) = byte_4C760C; } free(*(void **)(a1 + 92)); *(_DWORD *)(a1 + 92) = v2; } if ( *(void **)(a1 + 102908) != v2 ) { do { v13 = (void *)**(_DWORD **)(a1 + 102908); free(*(void **)(a1 + 102908)); *(_DWORD *)(a1 + 102908) = v13; } while ( v13 != v2 ); } v14 = *(void **)(a1 + 24492); if ( v14 != v2 ) { do { v15 = *(void **)v14; free(v14); v14 = v15; } while ( v15 != v2 ); } *(_DWORD *)(a1 + 24492) = v2; *(_WORD *)(a1 + 24496) = 0; memset((void *)(a1 + 8108), 0, 0x4000u); sub_47D330(a1); } //----- (004816F0) -------------------------------------------------------- void __cdecl sub_4816F0(int a1) { if ( !*(_WORD *)(a1 + 102776) ) { *(_DWORD *)(a1 + 24796) = 0; *(_DWORD *)(a1 + 24792) = 0; } *(_WORD *)(a1 + 102776) = ((unsigned __int8)(*(_DWORD *)(a1 + 12) >> 4) | (unsigned __int8)(*(_DWORD *)(a1 + 16) >> 4)) & 1; *(_WORD *)(a1 + 99664) = 0; *(_WORD *)(a1 + 99660) = 0; *(_WORD *)(a1 + 99662) = 0; *(_WORD *)(a1 + 99666) = 0; *(_WORD *)(a1 + 99668) = 9; *(_DWORD *)(a1 + 99588) = 0; *(_DWORD *)(a1 + 8) = 0; *(_WORD *)(a1 + 99670) = 0; *(_DWORD *)(a1 + 99672) = 0; *(_WORD *)(a1 + 99676) = 0; *(_DWORD *)(a1 + 24812) = 0; *(_DWORD *)(a1 + 24816) = 0; *(_WORD *)(a1 + 24804) = 0; *(_DWORD *)(a1 + 102824) = 0; *(_WORD *)(a1 + 99678) = 0; *(_DWORD *)(a1 + 24800) = 0; *(_DWORD *)(a1 + 24508) = 0; *(_DWORD *)(a1 + 24808) = 0; *(_BYTE *)(a1 + 99688) = 0; *(_DWORD *)(a1 + 102848) = 0; *(_DWORD *)(a1 + 102852) = 0; sub_481550(a1); } //----- (004817C0) -------------------------------------------------------- void __cdecl sub_4817C0(int a1) { __int16 v1; // ax@2 int v2; // edi@5 if ( a1 ) { v1 = *(_WORD *)(a1 + 4); if ( v1 == 1 || v1 == 2 ) { sub_481550(a1); sub_481310(a1, 0); if ( *(_DWORD *)(a1 + 104) ) { do { v2 = **(_DWORD **)(a1 + 104); free(*(void **)(a1 + 104)); *(_DWORD *)(a1 + 104) = v2; } while ( v2 ); } sub_47CCB0(a1); } } } //----- (00481820) -------------------------------------------------------- int __cdecl sub_481820(int a1, int a2) { int v2; // ebx@1 int v3; // ecx@1 int v4; // edi@1 int v5; // ST08_4@1 int v6; // esi@1 int v7; // eax@2 int v8; // ecx@3 int v9; // eax@5 __int16 v10; // ax@6 int v11; // edx@8 void *v12; // ST08_4@11 void *v13; // ecx@13 int v14; // esi@14 int result; // eax@19 int v16; // [sp+Ch] [bp-4h]@1 int v17; // [sp+18h] [bp+8h]@1 v2 = a1; v3 = *(_DWORD *)(a1 + 24808); v4 = 0; v5 = a1; v17 = *(_DWORD *)(a1 + 92); v16 = v3; *(_DWORD *)(v5 + 88) = a2; *(_DWORD *)(v2 + 92) = 0; sub_47D950(v5); v6 = *(_DWORD *)(v2 + 96); *(_DWORD *)(v2 + 96) = 0; if ( !v6 ) goto LABEL_12; v7 = *(_DWORD *)v6; *(_DWORD *)v6 = 0; if ( v7 ) { do { v8 = *(_DWORD *)v7; *(_DWORD *)v7 = v6; v6 = v7; v7 = v8; } while ( v8 ); } if ( v6 ) { while ( 1 ) { *(_DWORD *)(v2 + 24808) = *(_DWORD *)(v6 + 4); v9 = *(_DWORD *)(v6 + 12); if ( v9 || (v10 = *(_WORD *)(v6 + 8), v10 >= 0) && v17 && ((v11 = 2 * v10, (v9 = *(_DWORD *)(v17 + 16 * v10 + 12)) != 0) || (v9 = *(_DWORD *)(v17 + 8 * v11 + 4)) != 0) ) { if ( !sub_480150(v2, (const char *)(v6 + 16), v9) ) break; } v12 = (void *)v6; v6 = *(_DWORD *)v6; free(v12); if ( !v6 ) goto LABEL_12; } result = *(_DWORD *)(v2 + 102824); } else { LABEL_12: if ( v17 ) { v13 = (void *)v17; if ( *(_DWORD *)v17 ) { v14 = v17; do { if ( *(_DWORD *)(v14 + 12) ) { free(*(void **)(v14 + 12)); v13 = (void *)v17; *(_DWORD *)(v14 + 12) = 0; } ++v4; v14 = (int)((char *)v13 + 16 * v4); } while ( *(_DWORD *)v14 ); } free(v13); } *(_DWORD *)(v2 + 24808) = v16; result = 0; } return result; } //----- (00481930) -------------------------------------------------------- signed int __cdecl sub_481930(int a1, const char *a2, int a3, signed int a4, signed int a5) { const char *v5; // ebx@1 unsigned int v6; // eax@2 signed int result; // eax@5 int v8; // edi@6 const char v9; // al@7 int v10; // ebx@11 void *v11; // eax@11 int v12; // eax@12 char v13; // cl@13 int v14; // ecx@15 char v15; // dl@16 const char v16; // al@19 size_t v17; // ecx@19 int v18; // esi@24 unsigned int v19; // eax@26 __int16 v20; // cx@36 int v21; // eax@37 const char *v22; // ecx@38 unsigned int v23; // eax@39 size_t v24; // edi@42 int v25; // eax@47 const void *v26; // ecx@47 int v27; // eax@47 int v28; // esi@47 char v29; // dl@48 const char *v30; // esi@51 const void *v31; // [sp-8h] [bp-1Ch]@40 const void *v32; // [sp-8h] [bp-1Ch]@49 size_t v33; // [sp-4h] [bp-18h]@40 size_t v34; // [sp-4h] [bp-18h]@49 signed int v35; // [sp+10h] [bp-4h]@19 const char *v36; // [sp+20h] [bp+Ch]@26 const void *v37; // [sp+20h] [bp+Ch]@34 v5 = a2; if ( !a2 ) return *(_DWORD *)(a1 + 102824); v6 = strlen(a2); if ( a5 >= 0 && (signed int)v6 > a5 || (signed int)v6 < a4 ) { result = 45; *(_DWORD *)(a1 + 102824) = 45; return result; } v8 = a1; *(_DWORD *)(a1 + 24828) = 0; while ( 1 ) { v9 = *v5; if ( !*v5 ) break; while ( v9 + 1 > 0 && v9 <= 32 ) { v9 = (v5++)[1]; if ( !v9 ) goto LABEL_11; } if ( !*v5 ) break; v16 = v5[1]; v17 = 1; v35 = 1; if ( v16 ) { do { if ( v16 + 1 > 0 && v16 <= 32 ) break; v16 = v5[v17++ + 1]; } while ( v16 ); v35 = v17; } v18 = *(_DWORD *)(v8 + 96); if ( !v18 ) goto LABEL_59; if ( !strncmp(v5, "xml:", 4u) ) { v17 = v35; LABEL_59: sub_47E200(v8, v5, v17); goto LABEL_60; } v19 = (unsigned int)v5; v36 = v5; if ( *v5 ) { while ( 1 ) { if ( v19 >= (unsigned int)&v5[v35] ) { LABEL_30: v36 = (const char *)v19; goto LABEL_31; } if ( *(_BYTE *)v19 == 58 ) break; ++v19; if ( !*(_BYTE *)v19 ) goto LABEL_30; } v36 = (const char *)v19; } else { LABEL_31: if ( *(_BYTE *)v19 != 58 ) { do { if ( !*(_BYTE *)(v18 + 16) ) break; v18 = *(_DWORD *)v18; } while ( v18 ); v37 = v5; goto LABEL_35; } } v24 = v19 - (_DWORD)v5; do { if ( !strncmp((const char *)(v18 + 16), v5, v24) && !*(_BYTE *)(v24 + v18 + 16) ) break; v18 = *(_DWORD *)v18; } while ( v18 ); v37 = v36 + 1; v8 = a1; LABEL_35: if ( !v18 ) { if ( v5[v35] ) { v33 = v35; v31 = v5; } else { v33 = 2; v31 = "\"\""; } goto LABEL_56; } v20 = *(_WORD *)(v18 + 8); if ( v20 >= 0 && (v21 = *(_DWORD *)(v8 + 92)) != 0 && (v22 = *(const char **)(v21 + 16 * v20)) != 0 ) { v23 = strlen(v22); if ( v22[v23 - 1] != 95 ) { v33 = v23; v31 = v22; LABEL_56: sub_47E200(v8, v31, v33); goto LABEL_57; } sub_47E200(v8, &word_4B8FF0, 1u); v25 = *(_WORD *)(v18 + 8); v26 = *(const void **)(*(_DWORD *)(v8 + 92) + 16 * v25 + 4); v27 = *(_DWORD *)(*(_DWORD *)(v8 + 92) + 16 * v25 + 4); v28 = v27 + 1; do v29 = *(_BYTE *)v27++; while ( v29 ); v34 = v27 - v28; v32 = v26; } else { if ( !*(_DWORD *)(v18 + 12) ) { result = 9; *(_DWORD *)(v8 + 102824) = 9; return result; } sub_47E200(v8, &word_4B8FF0, 1u); v30 = *(const char **)(v18 + 12); v34 = strlen(v30); v32 = v30; } sub_47E200(v8, v32, v34); sub_47E200(v8, &word_4B8FF0, 1u); LABEL_57: sub_47E200(v8, ":", 1u); sub_47E200(v8, v37, (size_t)&v5[v35 - (_DWORD)v37]); LABEL_60: v5 += v35; if ( *v5 ) sub_47E200(v8, " ", 1u); } LABEL_11: sub_47E200(v8, byte_4C760C, 1u); v10 = *(_DWORD *)(v8 + 24820); v11 = 0; if ( v10 ) { v12 = *(_DWORD *)(v8 + 24820); do v13 = *(_BYTE *)v12++; while ( v13 ); v11 = sub_47D480(v8, v12 - (v10 + 1) + 1); if ( v11 ) { v14 = v10; do { v15 = *(_BYTE *)v14; *((_BYTE *)v11 + v14 - v10) = *(_BYTE *)v14; ++v14; } while ( v15 ); } } *(_DWORD *)a3 = v11; return *(_DWORD *)(v8 + 102824); } //----- (00481C20) -------------------------------------------------------- signed int __cdecl sub_481C20(int a1) { int v1; // esi@1 void *v2; // edi@5 signed int result; // eax@6 void *v4; // eax@10 int v5; // eax@11 void *v6; // eax@14 int v7; // ebx@16 int v8; // edi@16 void *v9; // eax@16 int v10; // edi@17 int v11; // ebx@18 int v12; // eax@21 int v13; // ecx@21 int v14; // ebx@29 int v15; // eax@30 int v16; // edi@30 int v17; // eax@32 void (__cdecl *v18)(_DWORD, _DWORD); // eax@36 int v19; // eax@44 void *v20; // eax@44 int v21; // ebx@47 int v22; // eax@47 void *v23; // ecx@50 int v24; // [sp+4h] [bp-8h]@14 int v25; // [sp+4h] [bp-8h]@28 int v26; // [sp+8h] [bp-4h]@14 int v27; // [sp+8h] [bp-4h]@28 int v28; // [sp+14h] [bp+8h]@14 int v29; // [sp+14h] [bp+8h]@28 int v30; // [sp+14h] [bp+8h]@47 v1 = a1; while ( *(_BYTE *)(a1 + 102856) & 1 ) { if ( sub_47E7F0(a1) ) return *(_DWORD *)(a1 + 102824); if ( sub_47C2C0(a1, *(_DWORD *)(a1 + 102844)) ) { result = -1; *(_DWORD *)(a1 + 102824) = -1; return result; } } v2 = 0; if ( sub_47C2C0( a1, ((*(_DWORD *)(a1 + 102844) + 3) & 0xFFFFFFFC) - (*(_DWORD *)(a1 + 24792) + *(_DWORD *)(a1 + 24812) - (*(_DWORD *)(a1 + 24800) != 0) - *(_DWORD *)(a1 + 24796))) ) { result = -1; *(_DWORD *)(a1 + 102824) = -1; return result; } if ( !sub_47E7F0(a1) ) { do { v4 = *(void **)(v1 + 24724); if ( v4 != v2 ) { v5 = ((int (__cdecl *)(int, _DWORD, _DWORD, _DWORD))v4)( v1, *(_DWORD *)(v1 + 102864), *(_DWORD *)(v1 + 102868), *(_DWORD *)(v1 + 102872)); *(_DWORD *)(v1 + 102860) = v5; if ( (void *)v5 != v2 ) { v29 = *(_DWORD *)(v1 + 102864); v27 = *(_DWORD *)(v1 + 102868); v25 = *(_DWORD *)(v1 + 102872); do { v14 = *(_DWORD *)(v1 + 102844); while ( 1 ) { v15 = *(_DWORD *)(v1 + 24792); v16 = *(_DWORD *)(v1 + 24796) - v15; if ( v14 < (unsigned int)v16 ) v16 = v14; v17 = (*(int (__cdecl **)(int, _DWORD, int, int))(v1 + 24740))( v1, *(_DWORD *)(v1 + 102860), v15 + v1 + 24832, v16); *(_DWORD *)(v1 + 102824) = v17; if ( v17 ) break; v14 -= v16; if ( !v14 ) { *(_DWORD *)(v1 + 24792) += v16; break; } if ( sub_47BF30(v1) ) goto LABEL_35; } if ( sub_47C2C0(v1, -*(_DWORD *)(v1 + 102844) & 3) ) { LABEL_35: *(_DWORD *)(v1 + 102824) = -1; break; } } while ( *(_BYTE *)(v1 + 102856) & 1 && !sub_47E7F0(v1) ); v18 = *(void (__cdecl **)(_DWORD, _DWORD))(v1 + 24732); if ( v18 ) v18(v1, *(_DWORD *)(v1 + 102860)); *(_DWORD *)(v1 + 102844) = 0; *(_DWORD *)(v1 + 102864) = v29; *(_DWORD *)(v1 + 102868) = v27; *(_DWORD *)(v1 + 102872) = v25; v2 = 0; goto LABEL_47; } result = *(_DWORD *)(v1 + 102824); if ( (void *)result != v2 ) return result; } if ( *(_BYTE *)(v1 + 102856) & 1 ) { v28 = *(_DWORD *)(v1 + 102864); v24 = *(_DWORD *)(v1 + 102868); v26 = *(_DWORD *)(v1 + 102872); v6 = malloc(0xCu); if ( v6 == v2 ) goto LABEL_57; *(_DWORD *)v6 = *(_DWORD *)(v1 + 100); *((_DWORD *)v6 + 1) = v2; *((_DWORD *)v6 + 2) = v2; *(_DWORD *)(v1 + 100) = v6; while ( 1 ) { v7 = *(_DWORD *)(v1 + 102844); v8 = *(_DWORD *)(v1 + 100); v9 = malloc(v7 + 8); if ( !v9 ) { *(_DWORD *)(v1 + 102824) = 20; goto LABEL_57; } *(_DWORD *)v9 = *(_DWORD *)(v8 + 4); *((_DWORD *)v9 + 1) = v7; *(_DWORD *)(v8 + 8) += v7; *(_DWORD *)(v8 + 4) = v9; v10 = (int)((char *)v9 + 8); if ( v9 == (void *)-8 ) goto LABEL_57; v11 = *(_DWORD *)(v1 + 102844); if ( v11 ) { while ( *(_DWORD *)(v1 + 24792) < *(_DWORD *)(v1 + 24796) || !sub_47BF30(v1) ) { v12 = *(_DWORD *)(v1 + 24792); v13 = *(_BYTE *)(v12 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v12 + 1; if ( v13 == -1 ) break; *(_BYTE *)v10++ = v13; --v11; if ( !v11 ) goto LABEL_23; } LABEL_58: result = -1; *(_DWORD *)(v1 + 102824) = -1; return result; } LABEL_23: if ( sub_47C2C0(v1, -*(_DWORD *)(v1 + 102844) & 3) ) goto LABEL_58; if ( !(*(_BYTE *)(v1 + 102856) & 1) ) break; if ( sub_47E7F0(v1) ) return *(_DWORD *)(v1 + 102824); } v19 = *(_DWORD *)(v1 + 100); *(_DWORD *)(v1 + 102844) = (*(_DWORD *)(v19 + 8))++; v20 = sub_480050(v1, 0, 0, 0); *(_DWORD *)(v1 + 102860) = v20; if ( !v20 ) return *(_DWORD *)(v1 + 102824); *((_BYTE *)v20 + *(_DWORD *)(v1 + 102844)) = 0; *(_DWORD *)(v1 + 102864) = v28; *(_DWORD *)(v1 + 102868) = v24; *(_DWORD *)(v1 + 102872) = v26; v2 = 0; } else { *(_DWORD *)(v1 + 102860) = sub_47E720(*(_DWORD *)(v1 + 102844), v1); } LABEL_47: v21 = *(_DWORD *)(v1 + 102844); v30 = *(_DWORD *)(v1 + 102860); v22 = (int)sub_47D480(v1, 0x24u); if ( (void *)v22 == v2 ) { LABEL_57: *(_DWORD *)(v1 + 102824) = 20; return 20; } *(_DWORD *)v22 = v2; *(_DWORD *)(v22 + 4) = v30; *(_DWORD *)(v22 + 8) = v21; *(_DWORD *)(v22 + 12) = v2; *(_DWORD *)(v22 + 16) = v2; *(_DWORD *)(v22 + 20) = v2; *(_DWORD *)(v22 + 24) = v2; *(_DWORD *)(v22 + 28) = v2; *(_DWORD *)(v22 + 32) = v2; if ( *(void **)(v1 + 102880) == v2 ) *(_DWORD *)(v1 + 102880) = v22; v23 = *(void **)(v1 + 102884); if ( v23 != v2 ) *(_DWORD *)v23 = v22; *(_DWORD *)(v1 + 102884) = v22; *(_DWORD *)(v22 + 12) = *(_DWORD *)(v1 + 102864); *(_DWORD *)(v22 + 16) = *(_DWORD *)(v1 + 102868); *(_DWORD *)(v22 + 20) = *(_DWORD *)(v1 + 102872); if ( *(void **)(v1 + 102824) != v2 ) return *(_DWORD *)(v1 + 102824); sub_47EAE0(v1, v22); } while ( !sub_47E7F0(v1) ); } result = *(_DWORD *)(v1 + 102824); if ( result == 35 ) { *(_DWORD *)(v1 + 102824) = v2; result = 0; } return result; } //----- (00482090) -------------------------------------------------------- signed int __cdecl sub_482090(int a1, int a2, int a3, int a4, const char *a5, const char *a6, const char *a7, const char *a8) { void *v8; // esi@1 int v9; // eax@4 signed int result; // eax@6 v8 = sub_47D480(a1, 0x24u); if ( v8 ) { *(_DWORD *)v8 = 0; *((_DWORD *)v8 + 1) = a2; *((_DWORD *)v8 + 2) = a3; *((_DWORD *)v8 + 3) = 0; *((_DWORD *)v8 + 4) = 0; *((_DWORD *)v8 + 5) = 0; *((_DWORD *)v8 + 6) = 0; *((_DWORD *)v8 + 7) = 0; *((_DWORD *)v8 + 8) = 0; if ( !*(_DWORD *)(a1 + 102900) ) *(_DWORD *)(a1 + 102900) = v8; v9 = *(_DWORD *)(a1 + 102904); if ( v9 ) *(_DWORD *)v9 = v8; *(_DWORD *)(a1 + 102904) = v8; *((_DWORD *)v8 + 3) = sub_47FDA0(a1, a6); *((_DWORD *)v8 + 4) = sub_47FDA0(a1, a5); *((_DWORD *)v8 + 6) = a4; *((_DWORD *)v8 + 7) = sub_47FDA0(a1, a7); *((_DWORD *)v8 + 8) = sub_47FDA0(a1, a8); result = 0; } else { result = 20; } return result; } //----- (00482140) -------------------------------------------------------- void *__cdecl sub_482140(int a1) { void *result; // eax@2 void *v2; // esi@3 int v3; // eax@4 int v4; // edx@4 char v5; // cl@5 int v6; // edi@6 int v7; // esi@8 int i; // edi@8 while ( 1 ) { if ( *(_DWORD *)(a1 + 102888) ) { result = (void *)sub_47EC50(a1); if ( !result ) break; } v2 = *(void **)(a1 + 102888); if ( !v2 ) goto LABEL_15; v3 = *(_DWORD *)(a1 + 102888); v4 = (int)((char *)v2 + 1); do v5 = *(_BYTE *)v3++; while ( v5 ); v6 = v3 - v4; if ( (unsigned int)(v3 - v4) < 0x10 ) { LABEL_15: v6 = 64; result = sub_47D480(a1, 0x41u); v2 = result; *(_DWORD *)(a1 + 102888) = result; if ( !result ) return result; } *(_WORD *)v2 = word_4C8278; *((_BYTE *)v2 + 2) = byte_4C827A; v7 = (int)((char *)v2 + 2); for ( i = v6 - 4; i; --i ) *(_BYTE *)v7++ = byte_4C75C8[rand() & 0x3F]; *(_WORD *)v7 = word_4C8278; *(_BYTE *)(v7 + 2) = byte_4C827A; } if ( !*(_DWORD *)(a1 + 102892) ) *(_DWORD *)(a1 + 102892) = ""; return result; } // 4C8278: using guessed type __int16 word_4C8278; // 4C827A: using guessed type char byte_4C827A; //----- (00482210) -------------------------------------------------------- void *__cdecl sub_482210(int a1) { int v1; // esi@1 int v2; // eax@1 void *result; // eax@4 int v4; // eax@6 int v5; // edi@6 int v6; // ebx@6 int v7; // eax@9 int v8; // ecx@14 int v9; // edi@19 int v10; // eax@20 char v11; // cl@21 int v12; // ecx@23 char v13; // dl@24 unsigned int v14; // [sp+4h] [bp-8h]@1 unsigned int v15; // [sp+8h] [bp-4h]@1 unsigned int v16; // [sp+14h] [bp+8h]@6 v1 = a1; v2 = *(_DWORD *)(a1 + 8); v15 = 0; v14 = 0; if ( v2 & 0x400 || (v2 & 3) == 3 || (v14 = *(_DWORD *)(a1 + 24816)) != 0 ) { *(_DWORD *)(a1 + 24828) = 0; if ( sub_47E200(a1, 0, 0) ) { LABEL_18: result = 0; } else { while ( 1 ) { v4 = *(_DWORD *)(v1 + 24828); v5 = v4 + *(_DWORD *)(v1 + 24820); v6 = *(_DWORD *)(v1 + 24824) - v4; *(_DWORD *)(v1 + 24828) = *(_DWORD *)(v1 + 24824); v16 = 0; if ( v6 ) break; LABEL_17: if ( sub_47E200(v1, 0, 0) ) goto LABEL_18; } while ( 1 ) { ++v15; if ( v14 ) { if ( v15 > v14 ) break; } v7 = *(_DWORD *)(v1 + 24800); if ( v7 ) { if ( v7 == -1 ) break; *(_DWORD *)(v1 + 24800) = 0; } else { if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) break; v8 = *(_DWORD *)(v1 + 24792); v7 = *(_BYTE *)(v8 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v8 + 1; } if ( v7 == -1 ) break; *(_BYTE *)v5++ = v7; ++v16; if ( v16 >= v6 ) goto LABEL_17; } *(_BYTE *)v5 = 0; v9 = *(_DWORD *)(v1 + 24820); result = 0; if ( v9 ) { v10 = *(_DWORD *)(v1 + 24820); do v11 = *(_BYTE *)v10++; while ( v11 ); result = sub_47D480(v1, v10 - (v9 + 1) + 1); if ( result ) { v12 = v9; do { v13 = *(_BYTE *)v12; *((_BYTE *)result + v12 - v9) = *(_BYTE *)v12; ++v12; } while ( v13 ); } } } } else { result = 0; } return result; } //----- (00482370) -------------------------------------------------------- int __cdecl sub_482370(int a1) { int v1; // esi@1 int v2; // edi@1 int v3; // ebx@1 int result; // eax@1 signed int v5; // ecx@8 char *v6; // esi@13 char *v7; // esi@22 char *v8; // esi@36 char *v9; // esi@58 char *v10; // esi@61 char *v11; // esi@64 char *v12; // esi@67 int v13; // eax@72 void *v14; // edi@72 int v15; // edx@72 char v16; // cl@73 int v17; // eax@74 char v18; // cl@75 int v19; // eax@77 char v20; // cl@78 int v21; // eax@84 int v22; // ecx@84 int v23; // [sp+14h] [bp+8h]@72 v1 = a1; v2 = sub_474DA0(a1); v3 = sub_474EA0(a1); result = *(_DWORD *)(a1 + 24648); if ( result ) result = ((int (__cdecl *)(int, int, int))result)(a1, v2, v3); if ( !*(_DWORD *)v2 ) { if ( *(_WORD *)(a1 + 6) == 2 ) *(_DWORD *)v2 = "SOAP-ENV:Sender"; else *(_DWORD *)v2 = "SOAP-ENV:Client"; } if ( !*(_DWORD *)v3 ) { v5 = *(_DWORD *)(a1 + 102824); result = *(_DWORD *)(a1 + 102824); if ( result > 1000 ) { LABEL_82: if ( v5 <= 200 || v5 >= 600 ) { result = sprintf((char *)(a1 + 90368), "Error %d", *(_DWORD *)(a1 + 102824)); *(_DWORD *)v3 = a1 + 90368; } else { v21 = sub_47CE80((void *)v5); result = sprintf((char *)(a1 + 90368), "HTTP Error: %d %s", v22, v21); *(_DWORD *)v3 = a1 + 90368; } } else { if ( result == 1000 ) { *(_DWORD *)v3 = "Stopped: no response to be sent or received (informative)"; } else { ++result; switch ( result ) { case 2: *(_DWORD *)v3 = "Client fault"; break; case 3: *(_DWORD *)v3 = "Server fault"; break; case 4: v6 = (char *)(a1 + 90368); if ( *(_BYTE *)(a1 + 92416) ) { result = sprintf( v6, "Validation constraint violation: %s%s in element '%s'", "tag name or namespace mismatch", byte_4C760C, a1 + 92416); *(_DWORD *)v3 = v6; } else { result = sprintf( v6, "Validation constraint violation: %s%s", "tag name or namespace mismatch", byte_4C760C); *(_DWORD *)v3 = v6; } break; case 5: result = sub_47F550(a1 + 95488, a1, (int)"data type mismatch "); *(_DWORD *)v3 = result; break; case 6: *(_DWORD *)v3 = "Well-formedness violation"; break; case 7: *(_DWORD *)v3 = "No XML root element"; break; case 9: *(_DWORD *)v2 = "SOAP-ENV:MustUnderstand"; result = sprintf( (char *)(a1 + 90368), "The data in element '%s' must be understood but cannot be handled", a1 + 92416); *(_DWORD *)v3 = a1 + 90368; break; case 40: *(_DWORD *)v2 = "SOAP-ENV:VersionMismatch"; *(_DWORD *)v3 = "Invalid SOAP message or SOAP version mismatch"; break; case 42: *(_DWORD *)v2 = "SOAP-ENV:DataEncodingUnknown"; *(_DWORD *)v3 = "Unsupported SOAP data encoding"; break; case 10: v7 = (char *)(a1 + 90368); if ( *(_BYTE *)(a1 + 92416) ) { result = sprintf( v7, "Validation constraint violation: %s%s in element '%s'", "namespace error", byte_4C760C, a1 + 92416); *(_DWORD *)v3 = v7; } else { result = sprintf(v7, "Validation constraint violation: %s%s", "namespace error", byte_4C760C); *(_DWORD *)v3 = v7; } break; case 11: *(_DWORD *)v3 = "User data error"; break; case 12: *(_DWORD *)v3 = "Fatal error"; break; case 14: result = sprintf( (char *)(a1 + 90368), "Method '%s' not implemented: method name or namespace not recognized", a1 + 92416); *(_DWORD *)v3 = a1 + 90368; break; case 15: *(_DWORD *)v3 = "Data required for operation"; break; case 16: *(_DWORD *)v3 = "HTTP GET method not implemented"; break; case 17: *(_DWORD *)v3 = "HTTP PUT method not implemented"; break; case 20: *(_DWORD *)v3 = "HTTP method not implemented"; break; case 21: *(_DWORD *)v3 = "Out of memory"; break; case 22: *(_DWORD *)v3 = "Memory overflow or memory corruption error"; break; case 23: *(_DWORD *)v3 = "Header line too long"; break; case 8: *(_DWORD *)v3 = "Array index out of bounds"; break; case 24: v8 = (char *)(a1 + 90368); if ( *(_BYTE *)(a1 + 92416) ) { result = sprintf( v8, "Validation constraint violation: %s%s in element '%s'", "nil not allowed", byte_4C760C, a1 + 92416); *(_DWORD *)v3 = v8; } else { result = sprintf(v8, "Validation constraint violation: %s%s", "nil not allowed", byte_4C760C); *(_DWORD *)v3 = v8; } break; case 25: result = sub_47F550( a1 + 93440, a1, (int)"multiple definitions (use the SOAP_XML_TREE flag) of the same id "); *(_DWORD *)v3 = result; if ( *(_WORD *)(a1 + 6) == 2 ) { result = sub_474DD0(a1); *(_DWORD *)result = "SOAP-ENC:DuplicateID"; } break; case 26: result = sub_47F550(a1 + 93440, a1, (int)"missing id for ref "); *(_DWORD *)v3 = result; if ( *(_WORD *)(a1 + 6) == 2 ) { result = sub_474DD0(a1); *(_DWORD *)result = "SOAP-ENC:MissingID"; } break; case 27: result = sub_47F550(a1 + 93440, a1, (int)"incompatible object type ref/id pair "); *(_DWORD *)v3 = result; break; case 28: *(_DWORD *)v3 = "Message too large for UDP packet"; break; case 29: result = sub_480310(a1); *(_DWORD *)v3 = result; break; case 30: *(_DWORD *)v3 = "An HTTP processing error occurred"; break; case 49: *(_DWORD *)v3 = "An HTTP NTLM authentication error occurred"; break; case 31: *(_DWORD *)v3 = "OpenSSL not installed: recompile with -DWITH_OPENSSL"; break; case 41: *(_DWORD *)v3 = "Plugin registry error"; break; case 33: *(_DWORD *)v3 = "DIME format error"; break; case 34: *(_DWORD *)v3 = "DIME href to missing attachment"; break; case 35: *(_DWORD *)v3 = "DIME version/transmission error"; break; case 36: *(_DWORD *)v3 = "End of DIME error"; break; case 37: *(_DWORD *)v3 = "MIME format error"; break; case 38: *(_DWORD *)v3 = "MIME href to missing attachment"; break; case 39: *(_DWORD *)v3 = "End of MIME error"; break; case 32: *(_DWORD *)v3 = "Zlib/gzip not installed for (de)compression: recompile with -DWITH_GZIP"; break; case 43: v9 = (char *)(a1 + 90368); if ( *(_BYTE *)(a1 + 92416) ) { result = sprintf( v9, "Validation constraint violation: %s%s in element '%s'", "missing required attribute", byte_4C760C, a1 + 92416); *(_DWORD *)v3 = v9; } else { result = sprintf(v9, "Validation constraint violation: %s%s", "missing required attribute", byte_4C760C); *(_DWORD *)v3 = v9; } break; case 44: v10 = (char *)(a1 + 90368); if ( *(_BYTE *)(a1 + 92416) ) { result = sprintf( v10, "Validation constraint violation: %s%s in element '%s'", "prohibited attribute present", byte_4C760C, a1 + 92416); *(_DWORD *)v3 = v10; } else { result = sprintf( v10, "Validation constraint violation: %s%s", "prohibited attribute present", byte_4C760C); *(_DWORD *)v3 = v10; } break; case 45: v11 = (char *)(a1 + 90368); if ( *(_BYTE *)(a1 + 92416) ) { result = sprintf( v11, "Validation constraint violation: %s%s in element '%s'", "occurrence violation", byte_4C760C, a1 + 92416); *(_DWORD *)v3 = v11; } else { result = sprintf(v11, "Validation constraint violation: %s%s", "occurrence violation", byte_4C760C); *(_DWORD *)v3 = v11; } break; case 46: v12 = (char *)(a1 + 90368); if ( *(_BYTE *)(a1 + 92416) ) { result = sprintf( v12, "Validation constraint violation: %s%s in element '%s'", "content range or length violation", byte_4C760C, a1 + 92416); *(_DWORD *)v3 = v12; } else { result = sprintf( v12, "Validation constraint violation: %s%s", "content range or length violation", byte_4C760C); *(_DWORD *)v3 = v12; } break; case 47: *(_DWORD *)v3 = "Maximum number of open connections was reached (no define HAVE_POLL): increase FD_SETSIZE"; break; case 48: *(_DWORD *)v3 = "UTF content encoding error"; break; case 0: v13 = sub_47F5B0(a1); v14 = (void *)(a1 + 90368); v23 = a1 + 90368; v15 = v1 + 90368 - v13; do { v16 = *(_BYTE *)v13; *(_BYTE *)(v15 + v13) = *(_BYTE *)v13; ++v13; } while ( v16 ); v17 = v1 + 90368; do v18 = *(_BYTE *)v17++; while ( v18 ); result = v17 - (v1 + 90369) + 25; if ( (unsigned int)result < 0x400 ) { v19 = v1 + 90368; do v20 = *(_BYTE *)v19++; while ( v20 ); result = (int)memmove_0((void *)(v1 + 90393), (const void *)(v1 + 90368), v19 - (v1 + 90369) + 1); memcpy(v14, "End of file or no input: ", 0x19u); v14 = (void *)v23; } *(_DWORD *)v3 = v14; break; default: goto LABEL_82; case 13: return result; } } } } return result; } //----- (00482A00) -------------------------------------------------------- int __cdecl sub_482A00(int a1, FILE *a2) { int v2; // esi@1 int result; // eax@2 int v4; // ebx@5 int v5; // edi@9 int v6; // eax@9 int v7; // edx@13 __int16 v8; // cx@15 int v9; // esi@16 bool v10; // zf@18 int v11; // ecx@18 int v12; // [sp+Ch] [bp+8h]@5 v2 = a1; if ( a1 && ((result = *(_WORD *)(a1 + 4), (_WORD)result == 1) || (_WORD)result == 2) ) { if ( *(_DWORD *)(a1 + 102824) ) { v4 = 0; v12 = sub_474DA0(a1); if ( !*(_DWORD *)v12 ) sub_482370(v2); if ( *(_WORD *)(v2 + 6) == 2 ) v4 = sub_474E60(v2); v5 = *(_DWORD *)sub_474EA0(v2); v6 = sub_474FB0(v2); if ( !v6 ) v6 = (int)"[no detail]"; if ( !v5 ) v5 = (int)"[no reason]"; v7 = v4; if ( !v4 ) v7 = (int)"no subcode"; v8 = *(_WORD *)(v2 + 6); if ( v8 ) v9 = v8; else v9 = *(_DWORD *)(v2 + 102824); v10 = v8 == 0; v11 = (int)"SOAP 1."; if ( v10 ) v11 = (int)"Error "; result = fprintf(a2, "%s%d fault: %s [%s]\n\"%s\"\nDetail: %s\n", v11, v9, *(_DWORD *)v12, v7, v5, v6); } } else { result = fprintf(a2, "Error: soap struct state not initialized\n"); } return result; } //----- (00482AF0) -------------------------------------------------------- char *__cdecl sub_482AF0(int a1, char *a2, size_t a3) { int v3; // esi@1 __int16 v4; // ax@2 int v5; // ebx@5 int v6; // edi@9 int v7; // eax@9 int v8; // edx@13 __int16 v9; // cx@15 int v10; // esi@16 bool v11; // zf@18 int v12; // ecx@18 char *result; // eax@20 int v14; // [sp+Ch] [bp+8h]@5 v3 = a1; if ( a1 && ((v4 = *(_WORD *)(a1 + 4), v4 == 1) || v4 == 2) ) { if ( *(_DWORD *)(a1 + 102824) ) { v5 = 0; v14 = sub_474DA0(a1); if ( !*(_DWORD *)v14 ) sub_482370(v3); if ( *(_WORD *)(v3 + 6) == 2 ) v5 = *(_DWORD *)sub_474DD0(v3); v6 = *(_DWORD *)sub_474EA0(v3); v7 = sub_474FB0(v3); if ( !v7 ) v7 = (int)"[no detail]"; if ( !v6 ) v6 = (int)"[no reason]"; v8 = v5; if ( !v5 ) v8 = (int)"no subcode"; v9 = *(_WORD *)(v3 + 6); if ( v9 ) v10 = v9; else v10 = *(_DWORD *)(v3 + 102824); v11 = v9 == 0; v12 = (int)"SOAP 1."; if ( v11 ) v12 = (int)"Error "; _snprintf(a2, a3, "%s%d fault: %s [%s]\n\"%s\"\nDetail: %s\n", v12, v10, *(_DWORD *)v14, v8, v6, v7); result = a2; } else { result = a2; } } else { strncpy(a2, "Error: soap struct not initialized", a3); result = a2; } return result; } //----- (00482BF0) -------------------------------------------------------- int __cdecl sub_482BF0(int a1) { size_t v1; // edi@1 int (__cdecl *v2)(_DWORD, _DWORD, _DWORD); // eax@3 int result; // eax@4 v1 = *(_DWORD *)(a1 + 24792); if ( v1 ) { if ( (*(_DWORD *)(a1 + 8) & 3) == 2 && (v2 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24692)) != 0 && (result = v2(a1, a1 + 24832, *(_DWORD *)(a1 + 24792))) != 0 ) { *(_DWORD *)(a1 + 102824) = result; } else { *(_DWORD *)(a1 + 24792) = 0; result = sub_47F7C0(a1, (const void *)(a1 + 24832), v1); } } else { result = 0; } return result; } //----- (00482C60) -------------------------------------------------------- int __cdecl sub_482C60(int a1) { int result; // eax@1 int v2; // ecx@7 int v3; // eax@13 int v4; // ecx@13 int v5; // eax@13 unsigned int v6; // eax@16 int v7; // ecx@23 int v8; // ecx@28 signed int v9; // edi@34 int v10; // ecx@37 int v11; // ecx@37 int v12; // ecx@40 bool v13; // cf@42 int v14; // ecx@46 int v15; // ecx@46 int v16; // ecx@49 int v17; // ecx@52 int v18; // ecx@64 int v19; // ecx@69 result = *(_DWORD *)(a1 + 24800); if ( result ) { if ( result == -1 ) return result; *(_DWORD *)(a1 + 24800) = 0; } else { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) return -1; v2 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v2 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v2 + 1; } if ( result != -1 ) { LABEL_9: if ( *(_WORD *)(a1 + 24804) ) { if ( result != 93 ) return result; if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || (v3 = *(_DWORD *)(a1 + 24792), v4 = *(_BYTE *)(v3 + a1 + 24832), v5 = v3 + 1, *(_DWORD *)(a1 + 24792) = v5, v4 != 93) ) { --*(_DWORD *)(a1 + 24792); return 93; } if ( (unsigned int)v5 >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || (v6 = *(_DWORD *)(a1 + 24792), *(_BYTE *)(v6 + a1 + 24832) != 62) ) { *(_DWORD *)(a1 + 24800) = 93; return 93; } *(_WORD *)(a1 + 24804) = 0; if ( v6 < *(_DWORD *)(a1 + 24796) || !sub_47BF30(a1) ) ++*(_DWORD *)(a1 + 24792); if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { result = -1; } else { v7 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v7 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v7 + 1; } } switch ( result ) { case 60: do { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { result = -1; } else { v8 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v8 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v8 + 1; } } while ( result + 1 > 0 && result <= 32 ); if ( result != 33 && result != 63 && result != 37 ) { if ( result == 47 ) { result = -3; } else { --*(_DWORD *)(a1 + 24792); result = -2; } return result; } v9 = 1; if ( result == 33 ) { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) return -1; v10 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v10 + a1 + 24832); v11 = v10 + 1; *(_DWORD *)(a1 + 24792) = v11; if ( result == 91 ) { while ( 1 ) { if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) return -1; v12 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v12 + a1 + 24832); v11 = v12 + 1; *(_DWORD *)(a1 + 24792) = v11; if ( result == -1 ) return result; if ( result == 91 ) { v13 = (unsigned int)v11 < *(_DWORD *)(a1 + 24796); *(_WORD *)(a1 + 24804) = 1; goto LABEL_67; } } } if ( result == 45 ) { if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) return -1; v14 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v14 + a1 + 24832); v15 = v14 + 1; *(_DWORD *)(a1 + 24792) = v15; if ( result == 45 ) { while ( 1 ) { if ( (unsigned int)v15 >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) return -1; v16 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v16 + a1 + 24832); v15 = v16 + 1; *(_DWORD *)(a1 + 24792) = v15; if ( result == 45 ) { if ( (unsigned int)v15 >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) return -1; v17 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v17 + a1 + 24832); v15 = v17 + 1; *(_DWORD *)(a1 + 24792) = v15; if ( result == 45 ) break; } if ( result == -1 ) return result; } } } } else { if ( result == 63 ) result = sub_47FC40(a1); } if ( result == -1 ) return result; break; case 62: return -4; case 34: return -5; case 39: return -6; case 38: return sub_47FA00(a1) | 0x80000000; default: return result; } do { if ( result == 60 ) { ++v9; } else { if ( result == 62 ) { --v9; if ( v9 <= 0 ) { v13 = *(_DWORD *)(a1 + 24792) < *(_DWORD *)(a1 + 24796); LABEL_67: if ( !v13 && sub_47BF30(a1) ) return -1; v19 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v19 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v19 + 1; if ( result != -1 ) goto LABEL_9; return result; } } } if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) return -1; v18 = *(_DWORD *)(a1 + 24792); result = *(_BYTE *)(v18 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v18 + 1; } while ( result != -1 ); } return result; } //----- (004830C0) -------------------------------------------------------- int __cdecl sub_4830C0(int a1) { int v1; // esi@1 int v2; // edi@1 int v3; // eax@8 signed int v4; // ebx@8 int v5; // eax@8 int result; // eax@9 int v7; // ebx@10 char v8; // al@14 int v9; // ecx@15 char v10; // al@20 int v11; // ecx@21 char v12; // al@26 int v13; // ecx@27 int v14; // eax@28 int v15; // ebx@28 char v16; // cl@32 int v17; // eax@33 int v18; // [sp+8h] [bp-8h]@22 int v19; // [sp+Ch] [bp-4h]@10 int v20; // [sp+18h] [bp+8h]@16 v1 = a1; v2 = *(_DWORD *)(a1 + 24800); if ( v2 ) *(_DWORD *)(a1 + 24800) = 0; else v2 = sub_482C60(a1); if ( (unsigned int)(v2 - 128) > 0x7F || *(_BYTE *)(a1 + 8) & 0x20 ) { result = v2; } else { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || (v3 = *(_DWORD *)(a1 + 24792), v4 = *(_BYTE *)(v3 + a1 + 24832), v5 = v3 + 1, *(_DWORD *)(a1 + 24792) = v5, v4 < 128) ) { --*(_DWORD *)(a1 + 24792); result = v2; } else { v7 = v4 & 0x3F; v19 = v7; if ( v2 >= 224 ) { if ( (unsigned int)v5 >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { v8 = -1; } else { v9 = *(_DWORD *)(a1 + 24792); v8 = *(_BYTE *)(v9 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v9 + 1; } v20 = v8 & 0x3F; if ( v2 >= 240 ) { if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v10 = -1; } else { v11 = *(_DWORD *)(v1 + 24792); v10 = *(_BYTE *)(v11 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v11 + 1; } v18 = v10 & 0x3F; if ( v2 >= 248 ) { if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v12 = -1; } else { v13 = *(_DWORD *)(v1 + 24792); v12 = *(_BYTE *)(v13 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v13 + 1; } v14 = v12 & 0x3F; v15 = v14; if ( v2 >= 252 ) { if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v16 = -1; } else { v17 = *(_DWORD *)(v1 + 24792); v16 = *(_BYTE *)(v17 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v17 + 1; } result = v16 & 0x3F | ((v15 | ((v18 | ((v20 | ((v19 | ((v2 & 1) << 6)) << 6)) << 6)) << 6)) << 6); } else { result = v14 | ((v18 | ((v20 | ((v19 | ((v2 & 3) << 6)) << 6)) << 6)) << 6); } } else { result = v10 & 0x3F | ((v20 | ((v7 | ((v2 & 7) << 6)) << 6)) << 6); } } else { result = v8 & 0x3F | ((v7 | ((v2 & 0xF) << 6)) << 6); } } else { result = v7 | ((v2 & 0x1F) << 6); } } } return result; } //----- (004832F0) -------------------------------------------------------- int __cdecl sub_4832F0(int a1) { const char *v1; // esi@1 char *v2; // eax@2 int v3; // edx@3 char *v4; // eax@3 char v5; // al@3 char *v6; // eax@8 char *v7; // ecx@9 unsigned int v8; // eax@14 bool v9; // cf@14 int result; // eax@21 char *v11; // eax@32 char *v12; // edi@32 int v13; // ecx@37 char *v14; // esi@57 signed int v15; // edi@57 char v16; // al@61 int v17; // edi@63 int v18; // eax@65 const void *v19; // esi@65 char v20; // cl@66 unsigned int v21; // eax@67 void *v22; // edi@67 char v23; // cl@68 signed int v24; // eax@85 void *v25; // eax@96 const char *v26; // [sp+Ch] [bp-2018h]@1 int v27; // [sp+10h] [bp-2014h]@1 signed int v28; // [sp+14h] [bp-2010h]@43 signed __int16 v29; // [sp+18h] [bp-200Ch]@1 char *v30; // [sp+1Ch] [bp-2008h]@2 char v31; // [sp+20h] [bp-2004h]@6 unsigned int v32; // [sp+2020h] [bp-4h]@1 int v33; // [sp+2024h] [bp+0h]@1 v32 = (unsigned int)&v33 ^ __security_cookie; v1 = (const char *)(a1 + 90368); v29 = 0; v27 = 0; v26 = (const char *)(a1 + 99688); *(_BYTE *)(a1 + 99688) = 0; *(_DWORD *)(a1 + 24816) = 0; *(_DWORD *)(a1 + 24536) = 0; *(_DWORD *)(a1 + 24540) = 0; *(_DWORD *)(a1 + 24544) = 0; *(_DWORD *)(a1 + 102816) = 0; *(_DWORD *)(a1 + 36) = 0; *(_DWORD *)(a1 + 102760) = 0; *(_DWORD *)(a1 + 102820) = 0; if ( sub_47E440(a1, a1 + 90368, 1024) ) { LABEL_29: result = -1; if ( *(_DWORD *)(a1 + 102824) == -1 ) return result; result = 414; goto LABEL_31; } while ( 1 ) { v2 = strchr(v1, 32); v30 = v2; if ( !v2 || (v3 = (unsigned __int16)strtoul(v2, &v30, 10), v4 = v30, *(_DWORD *)(a1 + 102820) = v3, v5 = *v4, v5 + 1 <= 0) || v5 > 32 ) *(_DWORD *)(a1 + 102820) = 0; if ( sub_47E440(a1, (int)&v31, 8192) ) { LABEL_25: if ( *(_DWORD *)(a1 + 102824) != -1 ) return *(_DWORD *)(a1 + 102824); *(_DWORD *)(a1 + 102824) = 0; } else { while ( v31 ) { v6 = strchr(&v31, 58); v30 = v6; if ( v6 ) { *v6 = 0; v7 = v30; do { ++v7; v30 = v7; } while ( *v7 && *v7 <= 32 ); if ( *v7 == 34 ) { ++v7; v30 = v7; } v8 = (unsigned int)&v7[strlen(v7) - 1]; v9 = v8 < (unsigned int)v7; if ( v8 > (unsigned int)v7 ) { do { if ( *(_BYTE *)v8 > 32 ) break; --v8; } while ( v8 > (unsigned int)v7 ); v9 = v8 < (unsigned int)v7; } if ( !v9 && *(_BYTE *)v8 == 34 ) --v8; *(_BYTE *)(v8 + 1) = 0; result = (*(int (__cdecl **)(int, char *, char *))(a1 + 24596))(a1, &v31, v30); *(_DWORD *)(a1 + 102824) = result; if ( result ) { if ( result < 1000 ) return result; v27 = result; *(_DWORD *)(a1 + 102824) = 0; } } if ( sub_47E440(a1, (int)&v31, 8192) ) goto LABEL_25; } } v1 = (const char *)(a1 + 90368); if ( *(_DWORD *)(a1 + 102820) != 100 ) break; if ( sub_47E440(a1, a1 + 90368, 1024) ) goto LABEL_29; } v11 = strstr((const char *)(a1 + 90368), "HTTP/"); v12 = v11; v30 = v11; if ( v11 && v11[7] != 49 ) { if ( *(_WORD *)(a1 + 102776) == 1 ) *(_WORD *)(a1 + 102776) = 0; if ( !*(_DWORD *)(a1 + 102820) ) { v13 = *(_DWORD *)(a1 + 16); if ( (*(_BYTE *)(a1 + 16) & 3) == 3 ) { *(_DWORD *)(a1 + 12) |= 3u; *(_DWORD *)(a1 + 16) = v13 & 0xFFFFFFFE | 2; } } } if ( *(_WORD *)(a1 + 102776) < 0 ) *(_WORD *)(a1 + 102776) = 1; if ( *(_DWORD *)(a1 + 102820) ) goto LABEL_85; if ( v11 ) { v28 = 5; if ( strncmp((const char *)(a1 + 90368), "POST ", 5u) ) { v28 = 4; if ( strncmp((const char *)(a1 + 90368), "PUT ", 4u) ) { v28 = 4; if ( strncmp((const char *)(a1 + 90368), "GET ", 4u) ) { v28 = 7; if ( strncmp((const char *)(a1 + 90368), "DELETE ", 7u) ) { v28 = 8; if ( strncmp((const char *)(a1 + 90368), "OPTIONS ", 8u) ) { v28 = 5; if ( !strncmp((const char *)(a1 + 90368), "HEAD ", 5u) ) v29 = 6; } else { v29 = 5; } } else { v29 = 4; } } else { v29 = 3; } } else { v29 = 2; } } else { v29 = 1; } v12 = v30; if ( v30 ) { if ( v29 ) { v14 = (char *)strlen(v26); v15 = (signed int)&v30[(_DWORD)(&v14[-a1] - v28) - 90369]; if ( (unsigned int)v14 > v15 ) v14 = &v30[(_DWORD)(&v14[-a1] - v28) - 90369]; if ( (unsigned int)v15 >= 0x400 ) v15 = 1023; strncpy((char *)(a1 + 100712), (const char *)(a1 + v28 + 90368), v15 - (_DWORD)v14); *(_BYTE *)(a1 - (_DWORD)v14 + v15 + 100712) = 0; v16 = *(_BYTE *)(a1 + 100712); if ( v16 && v16 != 47 ) { v17 = a1 + 99688; *v26 = 0; } else { v17 = a1 + 99688; } v18 = a1 + 100712; v19 = (const void *)(a1 + 100712); do v20 = *(_BYTE *)v18++; while ( v20 ); v21 = v18 - (_DWORD)v19; v22 = (void *)(v17 - 1); do { v23 = *((_BYTE *)v22 + 1); v22 = (char *)v22 + 1; } while ( v23 ); memcpy(v22, v19, v21); if ( (unsigned __int16)v29 > 1u ) { switch ( v29 ) { case 2: *(_DWORD *)(a1 + 102824) = (*(int (__cdecl **)(int))(a1 + 24564))(a1); break; case 3: *(_DWORD *)(a1 + 102824) = (*(int (__cdecl **)(int))(a1 + 24560))(a1); break; case 4: *(_DWORD *)(a1 + 102824) = (*(int (__cdecl **)(int))(a1 + 24568))(a1); break; case 5: *(_DWORD *)(a1 + 102824) = (*(int (__cdecl **)(int))(a1 + 24572))(a1); break; case 6: *(_DWORD *)(a1 + 102824) = (*(int (__cdecl **)(int))(a1 + 24576))(a1); break; default: *(_DWORD *)(a1 + 102824) = 405; break; } if ( !*(_DWORD *)(a1 + 102824) ) *(_DWORD *)(a1 + 102824) = 1000; return *(_DWORD *)(a1 + 102824); } if ( v27 ) { result = v27; *(_DWORD *)(a1 + 102824) = v27; return result; } goto LABEL_85; } } } result = v27; if ( v27 ) { LABEL_31: *(_DWORD *)(a1 + 102824) = result; return result; } if ( v12 ) { result = 405; *(_DWORD *)(a1 + 102824) = 405; return result; } LABEL_85: v24 = *(_DWORD *)(a1 + 102820); if ( v24 && v24 != 200 ) { if ( !*(_DWORD *)(a1 + 24816) && (!*(_DWORD *)(a1 + 36) || *(_WORD *)(a1 + 102776) && !*(_DWORD *)(a1 + 52)) && (*(_BYTE *)(a1 + 12) & 3) != 3 ) return sub_47F700(a1, (int)"HTTP Error", a1 + 90368, *(_DWORD *)(a1 + 102820)); if ( (v24 <= 200 || v24 > 299) && v24 != 400 && v24 != 500 ) { *(_WORD *)(a1 + 102776) = 0; v25 = sub_482210(a1); v30 = (char *)v25; if ( v25 ) return sub_47F700(a1, a1 + 90368, (int)v25, *(_DWORD *)(a1 + 102820)); return sub_47F700(a1, (int)"HTTP Error", a1 + 90368, *(_DWORD *)(a1 + 102820)); } } return 0; } // 4DE38C: using guessed type int __security_cookie; //----- (00483970) -------------------------------------------------------- int __cdecl sub_483970(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@3 __int16 v5; // ax@4 __int16 v6; // bx@4 int result; // eax@9 v3 = a2; if ( a2 && *(_BYTE *)a2 ) { v4 = a1 + 91392; while ( 1 ) { v3 = sub_47CD70(v3, v4, 1024, "=,;"); LOBYTE(v5) = sub_47C7C0(v4, a3); v6 = v5; if ( *(_BYTE *)v3 == 61 ) v3 = sub_47CD70(v3 + 1, v4, 1024, ",;"); else *(_BYTE *)v4 = 0; if ( !v6 ) break; if ( !*(_BYTE *)v3 ) goto LABEL_9; } result = a1 + 91392; } else { LABEL_9: result = 0; } return result; } //----- (004839F0) -------------------------------------------------------- int __cdecl sub_4839F0(int a1) { void *v1; // eax@1 void *v2; // edi@2 bool v3; // zf@3 int v4; // eax@4 int v5; // eax@7 int v6; // ecx@7 int v7; // eax@11 int v8; // eax@17 int v9; // eax@19 int (__cdecl *v10)(_DWORD); // eax@25 int result; // eax@27 v1 = *(void **)(a1 + 96); if ( v1 ) { do { v2 = *(void **)v1; free(v1); v1 = v2; } while ( v2 ); } v3 = (*(_BYTE *)(a1 + 8) & 0x80) == 0; *(_DWORD *)(a1 + 96) = 0; if ( v3 && (v4 = *(_DWORD *)(a1 + 16), (char)v4 >= 0) ) { *(_DWORD *)(a1 + 8) = v4; if ( v4 & 4 ) *(_DWORD *)(a1 + 8) = v4 | 0x40; v5 = *(_DWORD *)(a1 + 8); v6 = *(_DWORD *)(a1 + 8) & 3; if ( v6 == 2 || (v6 == 3 || v5 & 0x40) && !*(_DWORD *)(a1 + 24692) ) v7 = v5 & 0xFFFFFFF7; else v7 = v5 | 8; } else { v7 = *(_DWORD *)(a1 + 16) | 0x88; } *(_DWORD *)(a1 + 8) = v7; if ( !*(_DWORD *)(a1 + 40) && !(v7 & 0x20000000) ) *(_DWORD *)(a1 + 8) = v7 | 0x20000; v8 = *(_DWORD *)(a1 + 8); if ( v8 & 0x200 && (char)v8 < 0 ) { v9 = v8 | 0x100; } else { if ( v8 & 0x100 ) goto LABEL_23; v9 = v8 & 0xFFFFFDFF; } *(_DWORD *)(a1 + 8) = v9; LABEL_23: if ( *(_DWORD *)(a1 + 8) & 0x100 ) sub_482140(a1); *(_DWORD *)(a1 + 102876) = *(_DWORD *)(a1 + 102884); *(_DWORD *)(a1 + 24812) = 0; *(_DWORD *)(a1 + 99664) = 0; *(_DWORD *)(a1 + 99588) = 0; *(_DWORD *)(a1 + 99660) = 0; *(_DWORD *)(a1 + 99668) = 0; *(_DWORD *)(a1 + 99672) = 0; *(_DWORD *)(a1 + 24508) = 0; sub_47E190(a1); sub_47D950(a1); v10 = *(int (__cdecl **)(_DWORD))(a1 + 24684); *(_DWORD *)(a1 + 102840) = 0; *(_DWORD *)(a1 + 102844) = 0; if ( !v10 || (*(_DWORD *)(a1 + 8) & 3) == 2 || (result = v10(a1), (*(_DWORD *)(a1 + 102824) = result) == 0) ) result = 0; return result; } //----- (00483B30) -------------------------------------------------------- int __cdecl sub_483B30(int a1) { void *v1; // eax@1 void *v2; // edi@2 int v3; // eax@3 bool v4; // cf@4 bool v5; // zf@4 int result; // eax@5 int v7; // eax@6 int v8; // eax@10 void *v9; // eax@14 int v10; // eax@17 int v11; // eax@22 int v12; // eax@24 int (__cdecl *v13)(_DWORD); // eax@34 v1 = *(void **)(a1 + 96); if ( v1 ) { do { v2 = *(void **)v1; free(v1); v1 = v2; } while ( v2 ); } v3 = *(_DWORD *)(a1 + 16) | *(_DWORD *)(a1 + 8) & 0x88; *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 102824) = 0; *(_DWORD *)(a1 + 8) = v3; if ( v3 & 4 ) { v4 = *(_DWORD *)(a1 + 24812) < 0x10000u; v5 = *(_DWORD *)(a1 + 24812) == 65536; *(_DWORD *)(a1 + 8) = v3 | 0x40; if ( !(v4 | v5) ) { result = 27; *(_DWORD *)(a1 + 102824) = 27; return result; } } v7 = *(_DWORD *)(a1 + 8); if ( !(v7 & 3) && *(_DWORD *)(a1 + 24772) != -1 ) { if ( *(_DWORD *)(a1 + 24812) || v7 & 0x48 ) v8 = v7 | 1; else v8 = v7 | 2; *(_DWORD *)(a1 + 8) = v8; } *(_DWORD *)(a1 + 8) &= 0xFFFFFFF7u; if ( (*(_DWORD *)(a1 + 8) & 3) == 2 ) { v9 = malloc(0xCu); if ( !v9 ) { result = 20; *(_DWORD *)(a1 + 102824) = 20; return result; } *(_DWORD *)v9 = *(_DWORD *)(a1 + 100); *((_DWORD *)v9 + 1) = 0; *((_DWORD *)v9 + 2) = 0; *(_DWORD *)(a1 + 100) = v9; } v10 = *(_DWORD *)(a1 + 8); if ( !(v10 & 0x10) ) *(_WORD *)(a1 + 102776) = 0; if ( !*(_DWORD *)(a1 + 40) && !(v10 & 0x20000000) ) *(_DWORD *)(a1 + 8) = v10 | 0x20000; v11 = *(_DWORD *)(a1 + 8); if ( v11 & 0x200 && (char)v11 < 0 ) { v12 = v11 & 0xFFFFFF7F | 0x100; LABEL_27: *(_DWORD *)(a1 + 8) = v12; goto LABEL_28; } if ( !(v11 & 0x100) ) { v12 = v11 & 0xFFFFFDFF; goto LABEL_27; } LABEL_28: if ( *(_DWORD *)(a1 + 8) & 0x100 ) sub_482140(a1); if ( *(_DWORD *)(a1 + 24772) == -1 ) _setmode(*(_DWORD *)(a1 + 24784), 32768); if ( *(_BYTE *)(a1 + 8) & 3 ) { *(_DWORD *)(a1 + 24792) = 0; *(_DWORD *)(a1 + 24796) = 0; } *(_DWORD *)(a1 + 99680) = 0; *(_DWORD *)(a1 + 99664) = 0; *(_DWORD *)(a1 + 99588) = 0; *(_DWORD *)(a1 + 99660) = 0; *(_DWORD *)(a1 + 24508) = 0; *(_DWORD *)(a1 + 24808) = 0; sub_47E190(a1); sub_47D950(a1); v13 = *(int (__cdecl **)(_DWORD))(a1 + 24684); *(_WORD *)(a1 + 99668) = 0; if ( !v13 || (*(_DWORD *)(a1 + 8) & 3) != 2 || (result = v13(a1), (*(_DWORD *)(a1 + 102824) = result) == 0) ) result = 0; return result; } //----- (00483CF0) -------------------------------------------------------- int __cdecl sub_483CF0(int a1) { bool v1; // zf@1 int result; // eax@3 int v3; // eax@4 int v4; // eax@11 int i; // edi@12 void *v6; // eax@23 void *v7; // edi@24 int (__cdecl *v8)(_DWORD); // eax@25 v1 = (*(_BYTE *)(a1 + 8) & 0x80) == 0; *(_WORD *)(a1 + 99668) = 9; *(_DWORD *)(a1 + 119320) = 0; *(_DWORD *)(a1 + 119324) = 0; *(_DWORD *)(a1 + 24716) = 0; if ( !v1 && sub_481C20(a1) ) { result = *(_DWORD *)(a1 + 102824); *(_DWORD *)(a1 + 102880) = 0; *(_DWORD *)(a1 + 102884) = 0; return result; } v3 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 102876) = *(_DWORD *)(a1 + 102880); *(_DWORD *)(a1 + 102880) = 0; *(_DWORD *)(a1 + 102884) = 0; if ( !(v3 & 0x100) ) goto LABEL_30; if ( v3 & 0x40000000 ) { if ( !*(_WORD *)(a1 + 102776) ) *(_WORD *)(a1 + 102776) = -1; sub_47FDF0(a1); return 0; } while ( sub_485ED0(a1, 0) ) ; result = *(_DWORD *)(a1 + 102824); if ( !result ) { LABEL_30: v4 = *(_DWORD *)(a1 + 102900); *(_DWORD *)(a1 + 102896) = v4; *(_DWORD *)(a1 + 102900) = 0; *(_DWORD *)(a1 + 102904) = 0; *(_DWORD *)(a1 + 102888) = 0; if ( *(_DWORD *)(a1 + 102908) ) { for ( i = v4; i; i = *(_DWORD *)i ) sub_47EAE0(a1, i); } if ( (*(_BYTE *)(a1 + 8) & 3) == 3 ) { while ( *(_DWORD *)(a1 + 24800) != -1 && !sub_47BBB0(a1) ) ; } if ( sub_47FDF0(a1) ) { result = *(_DWORD *)(a1 + 102824); } else { if ( *(_DWORD *)(a1 + 102908) ) { if ( *(_DWORD *)(a1 + 8) & 0x200 ) { result = 37; *(_DWORD *)(a1 + 102824) = 37; } else { result = 33; *(_DWORD *)(a1 + 102824) = 33; } } else { v6 = *(void **)(a1 + 96); if ( v6 ) { do { v7 = *(void **)v6; free(v6); v6 = v7; } while ( v7 ); } v8 = *(int (__cdecl **)(_DWORD))(a1 + 24704); *(_DWORD *)(a1 + 96) = 0; if ( v8 ) { result = v8(a1); *(_DWORD *)(a1 + 102824) = result; } else { result = 0; } } } } return result; } // 483CF0: using guessed type _DWORD __cdecl sub_483CF0(_DWORD); //----- (00483EA0) -------------------------------------------------------- signed int __cdecl sub_483EA0(int a1, const char *a2) { signed int v2; // edi@1 signed int result; // eax@3 int v4; // eax@10 int v5; // eax@15 signed int v6; // ecx@19 int v7; // edi@20 signed int v8; // ebx@20 int i; // eax@20 v2 = 0; if ( a2 && *a2 == 45 ) { result = 0; } else { if ( *(_DWORD *)(a1 + 102824) == 6 ) *(_DWORD *)(a1 + 102824) = 0; if ( *(_WORD *)(a1 + 99678) ) { if ( *(_BYTE *)(a1 + 92416) ) v2 = 1; *(_WORD *)(a1 + 99678) = 0; } do { v4 = sub_482C60(a1); if ( v4 != -3 ) { while ( v4 != -1 ) { if ( v4 == -2 ) { ++v2; } else { if ( v4 == 47 ) { v5 = sub_482C60(a1); if ( v5 == -4 ) --v2; else *(_DWORD *)(a1 + 24800) = v5; } } v4 = sub_482C60(a1); if ( v4 == -3 ) goto LABEL_19; } goto LABEL_25; } LABEL_19: v6 = v2--; } while ( v6 ); v7 = a1 + 92416; v8 = 1024; for ( i = sub_482C60(a1); i > 32; i = sub_482C60(a1) ) { --v8; if ( v8 > 0 ) *(_BYTE *)v7++ = i; } *(_BYTE *)v7 = 0; if ( i == -1 ) { LABEL_25: result = *(_DWORD *)(a1 + 102824); if ( !result ) result = -1; *(_DWORD *)(a1 + 102824) = result; return result; } for ( ; i + 1 > 0; i = sub_482C60(a1) ) { if ( i > 32 ) break; } if ( i != -4 || a2 && *(_DWORD *)(a1 + 8) & 0x1000 && (sub_47C680(a1), sub_47C8A0(a1, (const char *)(a1 + 92416), a2)) ) { result = 5; *(_DWORD *)(a1 + 102824) = 5; } else { --*(_DWORD *)(a1 + 24808); result = 0; } } return result; } //----- (00484000) -------------------------------------------------------- signed int __usercall sub_484000(int a1, int a2, unsigned int a3, int a4) { int v4; // esi@1 int v5; // eax@2 signed int result; // eax@15 unsigned int v7; // [sp+8h] [bp-4h]@1 v4 = a1; v7 = 0; if ( !a3 ) { LABEL_15: result = 20; LABEL_16: *(_DWORD *)(a2 + 102824) = result; return result; } while ( 2 ) { v5 = sub_482C60(a2); switch ( v5 + 6 ) { case 3: *(_BYTE *)v4 = 60; *(_DWORD *)(a2 + 24800) = 47; goto LABEL_14; case 4: *(_BYTE *)v4 = 60; goto LABEL_14; case 2: if ( a4 == 32 ) goto LABEL_17; *(_BYTE *)v4 = 62; goto LABEL_14; case 1: if ( v5 == a4 ) goto LABEL_18; *(_BYTE *)v4 = 34; goto LABEL_14; case 0: if ( v5 == a4 ) goto LABEL_18; *(_BYTE *)v4 = 39; goto LABEL_14; case 15: case 16: case 19: case 38: case 53: if ( a4 != 32 ) goto LABEL_12; LABEL_17: *(_DWORD *)(a2 + 24800) = v5; LABEL_18: *(_BYTE *)v4 = 0; return 0; default: LABEL_12: if ( v5 != -1 ) { *(_BYTE *)v4 = v5; LABEL_14: ++v4; ++v7; if ( v7 >= a3 ) goto LABEL_15; continue; } result = *(_DWORD *)(a2 + 102824); if ( result ) goto LABEL_16; result = -1; *(_DWORD *)(a2 + 102824) = -1; return result; } } } //----- (00484110) -------------------------------------------------------- signed int __cdecl sub_484110(int a1) { int v1; // edi@1 signed int result; // eax@3 signed int v3; // eax@5 signed int v4; // esi@5 unsigned int v5; // eax@8 int v6; // eax@14 int v7; // ecx@16 int i; // eax@23 signed int v9; // ebx@42 int v10; // eax@43 signed int v11; // esi@46 int v12; // eax@55 int v13; // eax@61 int j; // eax@63 int v15; // esi@68 int v16; // eax@78 char v17; // al@81 void *v18; // esi@85 int v19; // eax@90 char v20; // cl@91 int v21; // eax@93 char v22; // cl@94 int v23; // eax@104 int v24; // eax@107 int v25; // ebx@107 size_t v26; // ST14_4@114 const void *v27; // ST10_4@114 int v28; // eax@119 int v29; // eax@123 int v30; // edx@123 char v31; // cl@124 int v32; // eax@125 void *v33; // eax@127 int v34; // ecx@128 void *v35; // edx@128 char v36; // al@129 int v37; // eax@133 int v38; // esi@139 signed int v39; // ecx@153 int v40; // eax@154 const char *v41; // esi@160 int v42; // eax@167 int v43; // eax@169 __int16 v44; // ax@176 char *v45; // eax@178 const char *v46; // ebx@178 const char *v47; // eax@196 int v48; // eax@198 int v49; // ecx@198 bool v50; // cf@199 unsigned __int8 v51; // dl@201 int v52; // eax@203 const char *v53; // eax@219 int v54; // eax@221 int v55; // ecx@221 unsigned __int8 v56; // dl@224 const char *v57; // [sp-10h] [bp-18h]@169 size_t v58; // [sp-Ch] [bp-14h]@169 void *v59; // [sp+4h] [bp-4h]@85 int v60; // [sp+10h] [bp+8h]@39 signed int v61; // [sp+10h] [bp+8h]@68 unsigned int v62; // [sp+10h] [bp+8h]@82 int v63; // [sp+10h] [bp+8h]@157 v1 = a1; if ( *(_WORD *)(a1 + 99678) ) { if ( *(_BYTE *)(a1 + 92416) ) { result = 0; } else { result = 6; *(_DWORD *)(a1 + 102824) = 6; } return result; } *(_WORD *)(a1 + 99678) = 1; *(_BYTE *)(a1 + 93440) = 0; *(_BYTE *)(a1 + 94464) = 0; *(_BYTE *)(a1 + 95488) = 0; *(_BYTE *)(a1 + 96512) = 0; *(_BYTE *)(a1 + 97536) = 0; *(_BYTE *)(a1 + 98560) = 0; *(_WORD *)(a1 + 99584) = 0; *(_WORD *)(a1 + 99586) = -1; *(_DWORD *)(a1 + 99588) = 0; *(_DWORD *)(a1 + 99662) = 0; v3 = sub_47C1D0(a1); v4 = v3; if ( v3 != 239 ) { if ( v3 == 254 ) { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || *(_BYTE *)(*(_DWORD *)(a1 + 24792) + a1 + 24832) != -1 ) goto LABEL_22; } else { if ( v3 != 255 || *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || *(_BYTE *)(*(_DWORD *)(a1 + 24792) + a1 + 24832) != -2 ) goto LABEL_22; } result = 47; *(_DWORD *)(a1 + 102824) = 47; return result; } if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || (v5 = *(_DWORD *)(a1 + 24792), *(_BYTE *)(v5 + a1 + 24832) != -69) ) { LABEL_22: *(_DWORD *)(a1 + 24800) = v4; goto LABEL_23; } if ( v5 < *(_DWORD *)(a1 + 24796) || !sub_47BF30(a1) ) ++*(_DWORD *)(a1 + 24792); if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { LOBYTE(v6) = -1; LABEL_15: *(_DWORD *)(a1 + 24800) = v6 & 0x3F | 0xFEC0; goto LABEL_23; } v7 = *(_DWORD *)(a1 + 24792); v6 = *(_BYTE *)(v7 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v7 + 1; if ( v6 != 191 ) goto LABEL_15; *(_DWORD *)(a1 + 8) &= 0xFFFFFFDFu; LABEL_23: for ( i = sub_482C60(a1); i + 1 > 0; i = sub_482C60(a1) ) { if ( i > 32 ) break; } if ( i != -2 ) { *(_BYTE *)(a1 + 92416) = 0; if ( i == -1 ) { result = *(_DWORD *)(a1 + 102824); if ( !result ) result = -1; *(_DWORD *)(a1 + 102824) = result; } else { if ( i > 0 ) i |= 0x80000000u; *(_DWORD *)(a1 + 24800) = i; result = 6; *(_DWORD *)(a1 + 102824) = 6; } return result; } v60 = a1 + 92416; do { if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v9 = -1; } else { v10 = *(_DWORD *)(v1 + 24792); v9 = *(_BYTE *)(v10 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v10 + 1; } } while ( v9 + 1 > 0 && v9 <= 32 ); v11 = 1024; if ( v9 != 62 ) { while ( v9 != 47 && v9 > 32 && v9 != -1 ) { --v11; if ( v11 > 0 ) *(_BYTE *)v60++ = v9; if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v9 = -1; } else { v12 = *(_DWORD *)(v1 + 24792); v9 = *(_BYTE *)(v12 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v12 + 1; if ( v9 == 62 ) break; } } } while ( v9 + 1 > 0 ) { if ( v9 > 32 ) break; if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v9 = -1; } else { v13 = *(_DWORD *)(v1 + 24792); v9 = *(_BYTE *)(v13 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v13 + 1; } } *(_BYTE *)v60 = 0; sub_47C680(v1); for ( j = *(_DWORD *)(v1 + 99656); j; j = *(_DWORD *)j ) *(_WORD *)(j + 20) = 0; if ( v9 == -1 ) { LABEL_147: result = *(_DWORD *)(v1 + 102824); if ( !result ) result = -1; *(_DWORD *)(v1 + 102824) = result; return result; } while ( 1 ) { if ( v9 == 62 || v9 == 47 ) { if ( v9 == -1 ) goto LABEL_147; *(_WORD *)(v1 + 24806) = v9 != 47; if ( v9 == 47 ) { do { if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v39 = -1; } else { v40 = *(_DWORD *)(v1 + 24792); v39 = *(_BYTE *)(v40 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v40 + 1; } } while ( v39 + 1 > 0 && v39 <= 32 ); } v63 = *(_DWORD *)(v1 + 99656); if ( !v63 ) { LABEL_234: *(_DWORD *)(v1 + 102824) = 0; return 0; } while ( 1 ) { if ( !*(_WORD *)(v63 + 20) || !*(_DWORD *)(v63 + 8) ) goto LABEL_233; v41 = (const char *)(v63 + 22); if ( !strcmp((const char *)(v63 + 22), "id") ) { if ( *(_WORD *)(v1 + 6) > 0 && !(*(_DWORD *)(v1 + 8) & 0x20000) || *(_DWORD *)(v1 + 8) & 0x20000000 ) { *(_BYTE *)(v1 + 93440) = 35; strncpy((char *)(v1 + 93441), *(const char **)(v63 + 8), 0x3FEu); *(_BYTE *)(v1 + 94463) = 0; } goto LABEL_233; } if ( !strcmp((const char *)(v63 + 22), "href") ) break; if ( sub_47C8A0(v1, v41, "xsi:type") ) { if ( (!sub_47C8A0(v1, v41, "xsi:null") || !sub_47C8A0(v1, v41, "xsi:nil")) && (!strcmp(*(const char **)(v63 + 8), "1") || !strcmp(*(const char **)(v63 + 8), "true")) ) { *(_WORD *)(v1 + 99664) = 1; goto LABEL_233; } v44 = *(_WORD *)(v1 + 6); if ( v44 == 1 ) { if ( sub_47C8A0(v1, v41, "SOAP-ENC:arrayType") ) { if ( sub_47C8A0(v1, v41, "SOAP-ENC:offset") ) { if ( sub_47C8A0(v1, v41, "SOAP-ENC:position") ) { if ( sub_47C8A0(v1, v41, "SOAP-ENC:root") ) { if ( sub_47C8A0(v1, v41, "SOAP-ENV:mustUnderstand") || strcmp(*(const char **)(v63 + 8), "1") && strcmp(*(const char **)(v63 + 8), "true") ) { if ( !sub_47C8A0(v1, v41, "SOAP-ENV:actor") ) { v47 = *(const char **)(v1 + 44); if ( !v47 || strcmp(v47, *(const char **)(v63 + 8)) ) { v48 = *(_DWORD *)(v63 + 8); v49 = (int)"http://schemas.xmlsoap.org/soap/actor/next"; while ( 1 ) { v50 = *(_BYTE *)v48 < *(_BYTE *)v49; if ( *(_BYTE *)v48 != *(_BYTE *)v49 ) break; if ( *(_BYTE *)v48 ) { v51 = *(_BYTE *)(v48 + 1); v50 = v51 < *(_BYTE *)(v49 + 1); if ( v51 != *(_BYTE *)(v49 + 1) ) break; v48 += 2; v49 += 2; if ( v51 ) continue; } v52 = 0; goto LABEL_205; } LABEL_204: v52 = -v50 - (v50 - 1); LABEL_205: if ( v52 ) *(_WORD *)(v1 + 99584) = 1; goto LABEL_233; } } } else { *(_WORD *)(v1 + 99662) = 1; } } else { *(_WORD *)(v1 + 99586) = !strcmp(*(const char **)(v63 + 8), "1") || !strcmp(*(const char **)(v63 + 8), "true"); } } else { *(_DWORD *)(v1 + 99588) = sub_47C600(*(_DWORD *)(v63 + 8), v1 + 99592); } } else { strncpy((char *)(v1 + 98560), *(const char **)(v63 + 8), 0x400u); } } else { v45 = strrchr(*(const char **)(v63 + 8), 91); v46 = v45; if ( v45 && (unsigned int)&v45[-*(_DWORD *)(v63 + 8)] < 0x400 ) { strncpy((char *)(v1 + 96512), *(const char **)(v63 + 8), (size_t)&v45[-*(_DWORD *)(v63 + 8)]); *(&v46[v1 + 96512] - *(_DWORD *)(v63 + 8)) = 0; strncpy((char *)(v1 + 97536), v46, 0x3FFu); *(_BYTE *)(v1 + 98559) = 0; *(_BYTE *)(v1 + 97535) = 0; } else { strncpy((char *)(v1 + 96512), *(const char **)(v63 + 8), 0x3FFu); *(_BYTE *)(v1 + 98559) = 0; *(_BYTE *)(v1 + 97535) = 0; } } } else { if ( v44 != 2 ) { if ( !sub_47C8A0(v1, v41, "wsdl:required") && !strcmp(*(const char **)(v63 + 8), "true") ) *(_WORD *)(v1 + 99662) = 1; goto LABEL_233; } if ( !strcmp((const char *)(v63 + 22), "ref") || !sub_47C8A0(v1, v41, "SOAP-ENC:ref") ) { *(_BYTE *)(v1 + 94464) = 35; v58 = 1022; v57 = *(const char **)(v63 + 8); v43 = v1 + 94465; LABEL_228: strncpy((char *)v43, v57, v58); *(_BYTE *)(v1 + 95487) = 0; goto LABEL_233; } if ( sub_47C8A0(v1, v41, "SOAP-ENC:itemType") ) { if ( sub_47C8A0(v1, v41, "SOAP-ENC:arraySize") ) { if ( sub_47C8A0(v1, v41, "SOAP-ENV:mustUnderstand") || strcmp(*(const char **)(v63 + 8), "1") && strcmp(*(const char **)(v63 + 8), "true") ) { if ( !sub_47C8A0(v1, v41, "SOAP-ENV:role") ) { v53 = *(const char **)(v1 + 44); if ( !v53 || strcmp(v53, *(const char **)(v63 + 8)) ) { v54 = *(_DWORD *)(v63 + 8); v55 = (int)"http://www.w3.org/2003/05/soap-envelope/role/next"; while ( 1 ) { v50 = *(_BYTE *)v54 < *(_BYTE *)v55; if ( *(_BYTE *)v54 != *(_BYTE *)v55 ) goto LABEL_204; if ( *(_BYTE *)v54 ) { v56 = *(_BYTE *)(v54 + 1); v50 = v56 < *(_BYTE *)(v55 + 1); if ( v56 != *(_BYTE *)(v55 + 1) ) goto LABEL_204; v54 += 2; v55 += 2; if ( v56 ) continue; } v52 = 0; goto LABEL_205; } } } } else { *(_WORD *)(v1 + 99662) = 1; } } else { strncpy((char *)(v1 + 97536), *(const char **)(v63 + 8), 0x3FFu); } } else { strncpy((char *)(v1 + 96512), *(const char **)(v63 + 8), 0x3FFu); } } } else { strncpy((char *)(v1 + 95488), *(const char **)(v63 + 8), 0x3FFu); *(_BYTE *)(v1 + 96511) = 0; } LABEL_233: v63 = *(_DWORD *)v63; if ( !v63 ) goto LABEL_234; } if ( *(_WORD *)(v1 + 6) != 1 ) { v42 = *(_DWORD *)(v1 + 8); if ( !(v42 & 0x20000200) ) { if ( (char)v42 >= 0 ) goto LABEL_233; } } v58 = 1023; v57 = *(const char **)(v63 + 8); v43 = v1 + 94464; goto LABEL_228; } v15 = v1 + 91392; v61 = 1024; if ( v9 != 61 ) { while ( v9 != 62 && v9 != 47 && v9 > 32 && v9 != -1 ) { --v61; if ( v61 > 0 ) *(_BYTE *)v15++ = v9; if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v9 = -1; } else { v16 = *(_DWORD *)(v1 + 24792); v9 = *(_BYTE *)(v16 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v16 + 1; if ( v9 == 61 ) break; } } } *(_BYTE *)v15 = 0; if ( v61 == 1024 ) { result = 5; *(_DWORD *)(v1 + 102824) = 5; return result; } if ( strncmp((const char *)(v1 + 91392), "xmlns", 5u) ) { v62 = 0; } else { v17 = *(_BYTE *)(v1 + 91397); if ( v17 == 58 ) v62 = v1 + 91398; else v62 = (unsigned int)byte_4C760C & ((v17 != 0) - 1); } v18 = *(void **)(v1 + 99656); v59 = 0; if ( !v18 ) goto LABEL_90; while ( strcmp((const char *)v18 + 22, (const char *)(v1 + 91392)) ) { v59 = v18; v18 = *(void **)v18; if ( !v18 ) goto LABEL_90; } if ( !v18 ) { LABEL_90: v19 = v1 + 91392; do v20 = *(_BYTE *)v19++; while ( v20 ); v18 = malloc(v19 - (v1 + 91393) + 24); if ( !v18 ) goto LABEL_144; v21 = v1 + 91392; do { v22 = *(_BYTE *)v21; *((_BYTE *)v18 + v21 - v1 - 91370) = *(_BYTE *)v21; ++v21; } while ( v22 ); *((_DWORD *)v18 + 2) = 0; *((_DWORD *)v18 + 3) = 0; *((_DWORD *)v18 + 4) = 0; if ( v59 && strchr((const char *)(v1 + 91392), 58) ) { *(_DWORD *)v59 = v18; *(_DWORD *)v18 = 0; } else { *(_DWORD *)v18 = *(_DWORD *)(v1 + 99656); *(_DWORD *)(v1 + 99656) = v18; } } while ( v9 + 1 > 0 ) { if ( v9 > 32 ) break; if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v9 = -1; } else { v23 = *(_DWORD *)(v1 + 24792); v9 = *(_BYTE *)(v23 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v23 + 1; } } if ( v9 != 61 ) { *((_WORD *)v18 + 10) = 1; goto LABEL_138; } do { v24 = sub_4830C0(v1); v25 = v24; } while ( v24 + 1 > 0 && v24 <= 32 ); if ( v24 != -5 && v24 != -6 ) { *(_DWORD *)(v1 + 24800) = v24; v25 = 32; } if ( sub_484000(*((_DWORD *)v18 + 2), v1, *((_DWORD *)v18 + 3), v25) ) break; do { LABEL_130: if ( *(_DWORD *)(v1 + 24792) >= *(_DWORD *)(v1 + 24796) && sub_47BF30(v1) ) { v9 = -1; } else { v37 = *(_DWORD *)(v1 + 24792); v9 = *(_BYTE *)(v37 + v1 + 24832); *(_DWORD *)(v1 + 24792) = v37 + 1; } } while ( v9 + 1 > 0 && v9 <= 32 ); *((_WORD *)v18 + 10) = 2; LABEL_138: if ( v62 ) { v38 = *((_DWORD *)v18 + 2); if ( v38 ) { if ( !sub_480150(v1, (const char *)v62, v38) ) return *(_DWORD *)(v1 + 102824); } } if ( v9 == -1 ) goto LABEL_147; } if ( *(_DWORD *)(v1 + 102824) != 20 || (*(_DWORD *)(v1 + 102824) = 0, v26 = *((_DWORD *)v18 + 3), v27 = (const void *)*((_DWORD *)v18 + 2), *(_DWORD *)(v1 + 24828) = 0, sub_47E200(v1, v27, v26)) ) return *(_DWORD *)(v1 + 102824); if ( *((_DWORD *)v18 + 2) ) free(*((void **)v18 + 2)); if ( !sub_484000( *(_DWORD *)(v1 + 24828) + *(_DWORD *)(v1 + 24820), v1, *(_DWORD *)(v1 + 24824) - *(_DWORD *)(v1 + 24828), v25) ) { LABEL_121: if ( *(_DWORD *)(v1 + 24828) ) { *((_DWORD *)v18 + 3) = *(_DWORD *)(v1 + 24824); } else { v29 = *(_DWORD *)(v1 + 24820); v30 = v29 + 1; do v31 = *(_BYTE *)v29++; while ( v31 ); v32 = v29 - v30 + 1; *((_DWORD *)v18 + 3) = v32; if ( (unsigned int)v32 < 0x100 ) *((_DWORD *)v18 + 3) = 256; } v33 = malloc(*((_DWORD *)v18 + 3)); *((_DWORD *)v18 + 2) = v33; if ( !v33 ) { LABEL_144: result = 20; *(_DWORD *)(v1 + 102824) = 20; return result; } v34 = *(_DWORD *)(v1 + 24820); v35 = v33; do { v36 = *(_BYTE *)v34; *(_BYTE *)v35 = *(_BYTE *)v34++; v35 = (char *)v35 + 1; } while ( v36 ); goto LABEL_130; } while ( *(_DWORD *)(v1 + 102824) == 20 ) { v28 = *(_DWORD *)(v1 + 24824); *(_DWORD *)(v1 + 102824) = 0; *(_DWORD *)(v1 + 24828) = v28; if ( sub_47E200(v1, 0, 0) ) break; if ( !sub_484000( *(_DWORD *)(v1 + 24828) + *(_DWORD *)(v1 + 24820), v1, *(_DWORD *)(v1 + 24824) - *(_DWORD *)(v1 + 24828), v25) ) goto LABEL_121; } return *(_DWORD *)(v1 + 102824); } //----- (004850A0) -------------------------------------------------------- int __cdecl sub_4850A0(int a1, int a2, signed int a3, signed int a4) { size_t v4; // ecx@1 int v5; // edi@1 int v6; // ebx@1 int v7; // eax@3 char v8; // cl@4 int v9; // edi@5 int v10; // esi@5 int v11; // ebx@7 const char *v12; // esi@8 int v13; // eax@8 const char v14; // cl@9 int v15; // ecx@12 const char *v16; // esi@12 const char *v17; // edx@12 char v18; // al@13 unsigned int v19; // esi@14 int v20; // eax@16 int v21; // eax@18 int v22; // edx@18 char v23; // cl@19 int v24; // eax@20 int v25; // edi@24 int v26; // ST08_4@24 int v27; // eax@25 int v28; // esi@25 bool v29; // zf@25 int v30; // edx@25 int v31; // eax@29 int v32; // eax@30 int v33; // ecx@36 int v34; // ST10_4@43 int v35; // eax@45 int v36; // ecx@46 int v37; // ecx@48 int v38; // ecx@50 char *v39; // ecx@52 signed int v40; // eax@83 signed int v41; // eax@87 int v42; // ebx@91 signed int v43; // eax@91 signed int v44; // eax@93 int v45; // ebx@107 int result; // eax@117 int v47; // ecx@119 int v48; // edi@119 void *v49; // eax@119 int v50; // eax@120 char v51; // cl@121 int v52; // ecx@123 char v53; // dl@124 int v54; // eax@133 int v55; // eax@135 int v56; // eax@139 int v57; // ecx@140 int v58; // ecx@142 int v59; // ecx@144 char *v60; // ecx@146 int v61; // eax@169 int v62; // ebx@175 int v63; // [sp+Ch] [bp-28h]@25 int v64; // [sp+Ch] [bp-28h]@133 signed int v65; // [sp+10h] [bp-24h]@1 unsigned int v66; // [sp+14h] [bp-20h]@25 unsigned int v67; // [sp+14h] [bp-20h]@133 signed int v68; // [sp+18h] [bp-1Ch]@1 int v69; // [sp+1Ch] [bp-18h]@1 int v70; // [sp+20h] [bp-14h]@1 int v71; // [sp+24h] [bp-10h]@1 char v72; // [sp+28h] [bp-Ch]@46 char v73; // [sp+29h] [bp-Bh]@46 char v74; // [sp+2Ah] [bp-Ah]@53 unsigned int v75; // [sp+30h] [bp-4h]@1 int v76; // [sp+34h] [bp+0h]@1 v75 = (unsigned int)&v76 ^ __security_cookie; v4 = 0; v5 = a1; v6 = 0; v71 = a1; v69 = 0; v68 = 0; v70 = 0; v65 = 0; if ( *(_WORD *)(a1 + 99678) && *(_BYTE *)(a1 + 92416) ) { *(_BYTE *)(a1 + 91392) = 60; *(_BYTE *)(a1 + 92415) = 0; strncpy((char *)(a1 + 91393), (const char *)(a1 + 92416), 0x3FEu); v7 = a1 + 91392; do v8 = *(_BYTE *)v7++; while ( v8 ); v9 = *(_DWORD *)(a1 + 99656); v10 = v7 - (a1 + 91393) + a1 + 91392; while ( v9 ) { if ( *(_WORD *)(v9 + 20) ) { v11 = v71 + 92414; if ( v10 >= (unsigned int)(v71 + 92414) ) break; *(_BYTE *)v10 = 32; v12 = (const char *)(v10 + 1); v13 = v9 + 22; do { v14 = *(_BYTE *)v13; *(&v12[v13 - 22] - v9) = *(_BYTE *)v13; ++v13; } while ( v14 ); v10 = (int)&v12[strlen(v12)]; if ( v10 >= (unsigned int)v11 ) break; if ( *(_DWORD *)(v9 + 8) ) { *(_WORD *)v10 = 8765; v15 = *(_DWORD *)(v9 + 8); v16 = (const char *)(v10 + 2); v17 = v16; do { v18 = *(_BYTE *)v15; *v17++ = *(_BYTE *)v15++; } while ( v18 ); v19 = (unsigned int)&v16[strlen(v16)]; *(_BYTE *)v19 = 34; v10 = v19 + 1; } } v9 = *(_DWORD *)v9; } v20 = v71; if ( !*(_WORD *)(v71 + 24806) ) *(_BYTE *)v10++ = 47; v21 = v20 + 91392; *(_WORD *)v10 = 62; v69 = v21; v22 = v21 + 1; do v23 = *(_BYTE *)v21++; while ( v23 ); v6 = v21 - v22; v24 = v71; if ( *(_WORD *)(v71 + 24806) ) v70 = 1; v65 = 1; *(_WORD *)(v71 + 99678) = 0; v5 = v24; v4 = 0; } if ( a2 != v4 ) { *(_DWORD *)(v5 + 24828) = v4; if ( sub_47E200(v5, (const void *)v4, v4) ) goto LABEL_187; while ( 1 ) { v54 = *(_DWORD *)(v5 + 24828); v28 = v54 + *(_DWORD *)(v5 + 24820); v64 = *(_DWORD *)(v5 + 24824) - v54; *(_DWORD *)(v5 + 24828) = *(_DWORD *)(v5 + 24824); v67 = 0; if ( v64 ) break; LABEL_184: if ( sub_47E200(v5, 0, 0) ) return 0; } while ( 1 ) { if ( v6 <= 0 ) { if ( !(*(_DWORD *)(v5 + 8) & 0x2000000) ) { v32 = sub_4830C0(v5); LABEL_153: if ( v32 > -6 ) { switch ( v32 + 5 ) { case 1: LABEL_157: *(_BYTE *)v28 = 62; goto LABEL_180; case 0: LABEL_159: *(_BYTE *)v28 = 34; goto LABEL_180; case 2: if ( !v70 ) goto LABEL_119; v5 = v71; v6 = 1; --v70; *(_BYTE *)v28++ = 60; v69 = (int)"/"; goto LABEL_181; case 3: if ( !v65 ) goto LABEL_167; if ( !v70 ) goto LABEL_119; v5 = v71; LABEL_167: ++v70; *(_BYTE *)v28 = 60; goto LABEL_180; case 52: if ( v70 > 0 ) { v61 = sub_482C60(v5); if ( v61 == -4 ) --v70; *(_DWORD *)(v5 + 24800) = v61; } *(_BYTE *)v28 = 47; goto LABEL_180; default: break; } LABEL_173: if ( v32 == -1 ) goto LABEL_119; v5 = v71; if ( !(*(_DWORD *)(v71 + 8) & 0x4000000) ) { *(_BYTE *)v28 = v32; goto LABEL_180; } v62 = wctomb(&v72, v32); if ( v62 < 1 || v62 > ___mb_cur_max_func() ) { *(_BYTE *)v28++ = 127; v6 = 0; } else { *(_BYTE *)v28++ = v72; v69 = (int)&v73; v6 = v62 - 1; } } else { if ( v32 != -6 ) { switch ( v32 + 2147483614 ) { case 26: *(_BYTE *)v28 = 60; goto LABEL_180; case 28: goto LABEL_157; case 4: *(_BYTE *)v28 = 38; goto LABEL_180; case 0: goto LABEL_159; case 5: goto LABEL_160; default: goto LABEL_173; } goto LABEL_173; } LABEL_160: *(_BYTE *)v28 = 39; LABEL_180: ++v28; } LABEL_181: ++v68; if ( a4 >= 0 && v68 > a4 ) { *(_DWORD *)(v5 + 102824) = 45; goto LABEL_187; } goto LABEL_183; } v32 = sub_482C60(v5); if ( v32 >= 0 || (unsigned int)(v32 + 2147483520) > 0x7FFFFF79 ) goto LABEL_153; v56 = v32 & 0x7FFFFFFF; if ( v56 >= 2048 ) { if ( v56 >= 65536 ) { if ( v56 >= 2097152 ) { if ( v56 >= 67108864 ) { v72 = (v56 >> 30) & 1 | 0xFC; v73 = BYTE3(v56) & 0x3F | 0x80; v60 = &v74; } else { v72 = BYTE3(v56) & 3 | 0xF8; v60 = &v73; } *v60 = (v56 >> 18) & 0x3F | 0x80; v59 = (int)(v60 + 1); } else { v72 = (v56 >> 18) & 7 | 0xF0; v59 = (int)&v73; } *(_BYTE *)v59 = (v56 >> 12) & 0x3F | 0x80; v58 = v59 + 1; } else { v72 = (v56 >> 12) & 0xF | 0xE0; v58 = (int)&v73; } *(_BYTE *)v58 = (v56 >> 6) & 0x3F | 0x80; v57 = v58 + 1; } else { v72 = (v56 >> 6) & 0x1F | 0xC0; v57 = (int)&v73; } *(_BYTE *)v57 = v56 & 0x3F | 0x80; v6 = v57 - (_DWORD)&v72; *(_BYTE *)v28++ = v72; v69 = (int)&v73; } else { v55 = v69 + 1; *(_BYTE *)v28++ = *(_BYTE *)v69; v69 = v55; --v6; } LABEL_183: ++v67; if ( v67 >= v64 ) goto LABEL_184; } } v25 = 0; v26 = v71; *(_DWORD *)(v71 + 24828) = 0; if ( sub_47E200(v26, 0, 0) ) goto LABEL_187; while ( 1 ) { v27 = *(_DWORD *)(v71 + 24828); v28 = v27 + *(_DWORD *)(v71 + 24820); v29 = *(_DWORD *)(v71 + 24824) == v27; v63 = *(_DWORD *)(v71 + 24824) - v27; v30 = v71; *(_DWORD *)(v71 + 24828) = *(_DWORD *)(v71 + 24824); v66 = 0; if ( !v29 ) break; LABEL_116: if ( sub_47E200(v71, 0, 0) ) return 0; } while ( 1 ) { if ( v6 > 0 ) { v31 = v69 + 1; *(_BYTE *)v28++ = *(_BYTE *)v69; v69 = v31; --v6; goto LABEL_115; } v32 = *(_DWORD *)(v30 + 24800); if ( !v32 ) break; if ( v32 == -1 ) goto LABEL_119; *(_DWORD *)(v30 + 24800) = 0; LABEL_37: if ( v32 == -1 ) goto LABEL_119; if ( v32 < 128 && v32 >= -6 || v25 == 1 || *(_BYTE *)(v71 + 8) & 0x20 ) goto LABEL_190; if ( v32 >= 128 ) { v34 = v71; *(_DWORD *)(v71 + 24800) = v32; v32 = sub_4830C0(v34); } if ( !(*(_DWORD *)(v71 + 8) & 0x2000000) ) { LABEL_190: switch ( v25 ) { case 1: if ( v32 == 93 ) v25 = 4; *(_BYTE *)v28++ = v32; break; case 2: if ( v32 == 45 ) v25 = 6; *(_BYTE *)v28++ = v32; break; case 3: if ( v32 == 63 ) v25 = 8; *(_BYTE *)v28++ = v32; break; case 4: *(_BYTE *)v28++ = v32; v25 = 4 * (v32 == 93) + 1; break; case 5: *(_BYTE *)v28++ = v32; v25 = v32 != 62; break; case 6: v25 = v32 != 45 ? 2 : 7; *(_BYTE *)v28++ = v32; break; case 7: v25 = v32 != 62 ? 2 : 0; *(_BYTE *)v28++ = v32; break; case 8: v25 = v32 != 62 ? 3 : 0; *(_BYTE *)v28++ = v32; break; default: switch ( v32 + 6 ) { case 3: if ( !v70 ) goto LABEL_119; v6 = 1; --v70; *(_BYTE *)v28++ = 60; v69 = (int)"/"; goto LABEL_113; case 4: if ( v65 && !v70 ) goto LABEL_119; ++v70; *(_BYTE *)v28 = 60; goto LABEL_112; case 2: case 68: *(_BYTE *)v28 = 62; goto LABEL_112; case 1: case 40: *(_BYTE *)v28 = 34; goto LABEL_112; case 0: *(_BYTE *)v28 = 39; goto LABEL_112; case 53: if ( v70 > 0 ) { v40 = sub_47C1D0(v71); if ( v40 == 62 ) --v70; *(_DWORD *)(v71 + 24800) = v40; } *(_BYTE *)v28 = 47; goto LABEL_112; case 66: v41 = sub_47C1D0(v71); switch ( v41 ) { case 47: if ( !v70 ) { v32 = -3; goto LABEL_119; } --v70; *(_DWORD *)(v71 + 24800) = 47; *(_BYTE *)v28 = 60; break; case 33: v42 = v71; v43 = sub_47C1D0(v71); if ( v43 == 91 ) { while ( 1 ) { v32 = sub_47C1D0(v42); if ( v32 == -1 ) goto LABEL_119; if ( v32 == 91 ) break; v42 = v71; } v69 = (int)"![CDATA["; v6 = 8; v25 = 1; *(_BYTE *)v28 = 60; } else { if ( v43 == 45 ) { v44 = sub_47C1D0(v71); if ( v44 == 45 ) v25 = 2; *(_DWORD *)(v71 + 24800) = v44; v69 = (int)"!-"; v6 = 2; *(_BYTE *)v28 = 60; } else { *(_DWORD *)(v71 + 24800) = v43; v69 = (int)"!"; v6 = 1; *(_BYTE *)v28 = 60; } } break; case 63: *(_DWORD *)(v71 + 24800) = 63; v25 = 3; *(_BYTE *)v28 = 60; break; default: if ( v65 && !v70 ) { --*(_DWORD *)(v71 + 24792); v32 = 60; goto LABEL_119; } ++v70; *(_DWORD *)(v71 + 24800) = v41; *(_BYTE *)v28 = 60; break; } LABEL_112: ++v28; LABEL_113: ++v68; if ( a4 >= 0 && v68 > a4 ) goto LABEL_131; break; default: if ( !(*(_DWORD *)(v71 + 8) & 0x4000000) ) { *(_BYTE *)v28 = v32; goto LABEL_112; } v45 = wctomb(&v72, v32); if ( v45 < 1 || v45 > ___mb_cur_max_func() ) { *(_BYTE *)v28++ = 127; v6 = 0; } else { *(_BYTE *)v28++ = v72; v69 = (int)&v73; v6 = v45 - 1; } goto LABEL_113; } break; } } else { v35 = v32 & 0x7FFFFFFF; if ( v35 >= 2048 ) { if ( v35 >= 65536 ) { if ( v35 >= 2097152 ) { if ( v35 >= 67108864 ) { v73 = BYTE3(v35) & 0x3F | 0x80; v72 = (v35 >> 30) & 1 | 0xFC; v39 = &v74; } else { v72 = BYTE3(v35) & 3 | 0xF8; v39 = &v73; } *v39 = (v35 >> 18) & 0x3F | 0x80; v38 = (int)(v39 + 1); } else { v72 = (v35 >> 18) & 7 | 0xF0; v38 = (int)&v73; } *(_BYTE *)v38 = (v35 >> 12) & 0x3F | 0x80; v37 = v38 + 1; } else { v72 = (v35 >> 12) & 0xF | 0xE0; v37 = (int)&v73; } *(_BYTE *)v37 = (v35 >> 6) & 0x3F | 0x80; v36 = v37 + 1; } else { v72 = (v35 >> 6) & 0x1F | 0xC0; v36 = (int)&v73; } *(_BYTE *)v36 = v35 & 0x3F | 0x80; v6 = v36 - (_DWORD)&v72; *(_BYTE *)v28++ = v72; v69 = (int)&v73; } LABEL_115: ++v66; if ( v66 >= v63 ) goto LABEL_116; v30 = v71; } if ( *(_DWORD *)(v30 + 24792) < *(_DWORD *)(v30 + 24796) ) { LABEL_36: v33 = *(_DWORD *)(v30 + 24792); v32 = *(_BYTE *)(v33 + v30 + 24832); *(_DWORD *)(v30 + 24792) = v33 + 1; goto LABEL_37; } if ( !sub_47BF30(v71) ) { v30 = v71; goto LABEL_36; } v32 = -1; LABEL_119: v47 = v71; *(_DWORD *)(v71 + 24800) = v32; *(_BYTE *)v28 = 0; v48 = *(_DWORD *)(v47 + 24820); v49 = 0; if ( v48 ) { v50 = *(_DWORD *)(v47 + 24820); do v51 = *(_BYTE *)v50++; while ( v51 ); v49 = sub_47D480(v71, v50 - (v48 + 1) + 1); if ( v49 ) { v52 = v48; do { v53 = *(_BYTE *)v52; *((_BYTE *)v49 + v52 - v48) = *(_BYTE *)v52; ++v52; } while ( v53 ); } } v69 = (int)v49; if ( v68 < a3 ) { LABEL_131: *(_DWORD *)(v71 + 102824) = 45; result = 0; } else { if ( a2 != 2 || !sub_481930(v71, (const char *)v49, (int)&v69, a3, a4) ) return v69; LABEL_187: result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00485B90) -------------------------------------------------------- int __cdecl sub_485B90(int a1) { int v1; // ebx@1 bool v2; // zf@1 int v3; // esi@1 int v5; // eax@3 unsigned int v6; // edi@5 int i; // esi@10 int v8; // [sp+10h] [bp+8h]@1 v1 = a1; v2 = *(_WORD *)(a1 + 24806) == 0; v3 = a1 + 91392; v8 = a1 + 91392; if ( v2 ) return (int)byte_4C760C; do v5 = sub_482C60(v1); while ( v5 + 1 > 0 && v5 <= 32 ); v6 = 0; do { if ( v5 == -3 ) break; if ( v5 == -2 ) break; if ( v5 == -1 ) break; *(_BYTE *)v3++ = v5; v5 = sub_482C60(v1); ++v6; } while ( v6 < 0x3FF ); for ( i = v3 - 1; v6; --v6 ) { if ( *(_BYTE *)i + 1 <= 0 ) break; if ( *(_BYTE *)i > 32 ) break; --i; } *(_BYTE *)(i + 1) = 0; if ( v5 == -3 || v5 == -2 || v5 == -1 ) { *(_DWORD *)(v1 + 24800) = v5; } else { if ( *(_DWORD *)(v1 + 8) & 0x1000 ) { *(_DWORD *)(v1 + 102824) = 45; return 0; } } return v8; } //----- (00485C50) -------------------------------------------------------- signed int __cdecl sub_485C50(int a1) { int v1; // edi@1 int v2; // ebx@1 int v3; // eax@6 char v4; // cl@7 int v5; // eax@8 int v6; // ecx@8 int v7; // eax@8 int v8; // edx@10 const char *v9; // ecx@11 signed int result; // eax@13 char *v11; // eax@21 int v12; // esi@21 char v13; // al@23 int v14; // eax@25 int v15; // eax@27 int v16; // eax@29 int v17; // eax@30 int v18; // eax@31 int v19; // eax@33 int v20; // eax@35 int v21; // [sp+10h] [bp+8h]@20 v1 = a1; v2 = a1 + 90368; do { if ( sub_47E440(a1, v2, 1024) ) return *(_DWORD *)(a1 + 102824); } while ( !*(_BYTE *)v2 ); if ( *(_BYTE *)v2 == 45 && *(_BYTE *)(a1 + 90369) == 45 ) { v3 = a1 + 90368; do v4 = *(_BYTE *)v3++; while ( v4 ); v5 = v3 - (a1 + 90369); v6 = *(_BYTE *)(v5 + a1 + 90367); v7 = v5 + a1 + 90367; if ( v6 + 1 > 0 ) { do { if ( *(_BYTE *)v7 > 32 ) break; v8 = *(_BYTE *)(v7-- - 1); } while ( v8 + 1 > 0 ); } *(_BYTE *)(v7 + 1) = 0; v9 = *(const char **)(a1 + 102888); if ( v9 ) { if ( strcmp((const char *)(a1 + 90370), v9) ) { result = 36; *(_DWORD *)(a1 + 102824) = 36; return result; } } else { *(_DWORD *)(a1 + 102888) = sub_47FDA0(a1, (const char *)(a1 + 90370)); } v2 = a1 + 90368; if ( sub_47E440(a1, a1 + 90368, 1024) ) return *(_DWORD *)(a1 + 102824); } if ( sub_482090(a1, 0, 0, 0, 0, 0, 0, 0) ) { result = 20; *(_DWORD *)(a1 + 102824) = 20; } else { v21 = *(_DWORD *)(a1 + 102904); if ( *(_BYTE *)v2 ) { while ( 1 ) { v11 = strchr((const char *)v2, 58); v12 = (int)v11; if ( v11 ) { *v11 = 0; do v13 = *(_BYTE *)(v12++ + 1); while ( v13 && v13 <= 32 ); LOBYTE(v14) = sub_47C7C0(v2, (int)"Content-ID"); if ( v14 ) { LOBYTE(v15) = sub_47C7C0(v2, (int)"Content-Location"); if ( v15 ) { LOBYTE(v16) = sub_47C7C0(v2, (int)"Content-Disposition"); if ( v16 ) { LOBYTE(v18) = sub_47C7C0(v2, (int)"Content-Type"); if ( v18 ) { LOBYTE(v19) = sub_47C7C0(v2, (int)"Content-Description"); if ( v19 ) { LOBYTE(v20) = sub_47C7C0(v2, (int)"Content-Transfer-Encoding"); if ( !v20 ) *(_DWORD *)(v21 + 24) = sub_47F8F0((int)&unk_4C7AD8, v12, 0); } else { *(_DWORD *)(v21 + 32) = sub_47FDA0(v1, (const char *)v12); } } else { *(_DWORD *)(v21 + 16) = sub_47FDA0(v1, (const char *)v12); } } else { v17 = sub_483970(v1, v12, (int)"name"); *(_DWORD *)(v21 + 12) = sub_47FDA0(v1, (const char *)v17); } } else { *(_DWORD *)(v21 + 28) = sub_47FDA0(v1, (const char *)v12); } } else { *(_DWORD *)(v21 + 12) = sub_47FDA0(v1, (const char *)v12); } } if ( sub_47E440(v1, v2, 1024) ) break; v2 = v1 + 90368; if ( !*(_BYTE *)(v1 + 90368) ) goto LABEL_39; } result = *(_DWORD *)(v1 + 102824); } else { LABEL_39: result = 0; } } return result; } //----- (00485ED0) -------------------------------------------------------- int __cdecl sub_485ED0(int a1, int a2) { signed int v2; // ebx@1 int v3; // esi@1 int v5; // edi@3 int (__cdecl *v6)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // eax@7 int v7; // eax@8 int v8; // edi@13 int v9; // edi@14 void *v10; // eax@14 unsigned int v11; // edx@16 int v12; // eax@22 int v13; // edi@24 const char *v14; // eax@24 int v15; // eax@32 int v16; // ecx@33 int v17; // edi@35 __int16 v18; // dx@36 int v19; // ecx@39 int (__cdecl *v20)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@40 int v21; // eax@41 int v22; // edi@42 int v23; // ecx@42 int (__cdecl *v24)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@44 void (__cdecl *v25)(_DWORD, _DWORD); // eax@46 signed int v26; // eax@52 int v27; // eax@55 int v28; // ecx@55 int v29; // edx@55 int v30; // eax@75 __int16 v31; // [sp+8h] [bp-14h]@1 int v32; // [sp+Ch] [bp-10h]@1 unsigned int v33; // [sp+10h] [bp-Ch]@16 int v34; // [sp+14h] [bp-8h]@1 int v35; // [sp+18h] [bp-4h]@3 int v36; // [sp+24h] [bp+8h]@13 v2 = 0; v3 = a1; v34 = 0; v32 = 0; v31 = 0; if ( !(*(_DWORD *)(a1 + 8) & 0x100) ) return 0; v5 = *(_DWORD *)(a1 + 102904); v35 = v5; if ( v5 ) { if ( v5 != *(_DWORD *)(a1 + 102900) ) { v6 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(a1 + 24748); if ( v6 ) { v7 = v6(a1, a2, *(_DWORD *)(v5 + 12), *(_DWORD *)(v5 + 16), *(_DWORD *)(v5 + 32), *(_DWORD *)(v5 + 24)); *(_DWORD *)(v5 + 4) = v7; if ( !v7 ) { if ( *(_DWORD *)(a1 + 102824) ) return 0; } } } } else { if ( sub_485C50(a1) ) return 0; v5 = *(_DWORD *)(a1 + 102904); v35 = *(_DWORD *)(a1 + 102904); } if ( !*(_DWORD *)(v5 + 4) && !sub_47C340(a1) ) goto LABEL_51; LABEL_12: if ( !*(_DWORD *)(v35 + 4) ) { v9 = *(_DWORD *)(v3 + 100); v10 = malloc(0x408u); if ( v10 ) { *(_DWORD *)v10 = *(_DWORD *)(v9 + 4); *((_DWORD *)v10 + 1) = 1024; *(_DWORD *)(v9 + 8) += 1024; *(_DWORD *)(v9 + 4) = v10; v8 = (int)((char *)v10 + 8); v36 = (int)((char *)v10 + 8); if ( v10 == (void *)-8 ) goto LABEL_51; goto LABEL_16; } *(_DWORD *)(v3 + 102824) = 20; LABEL_51: *(_DWORD *)(v3 + 102824) = 20; return 0; } v8 = v3 + 91392; v36 = v3 + 91392; LABEL_16: v11 = 0; v33 = 0; while ( 1 ) { if ( v34 ) { *(_BYTE *)v8++ = *(_BYTE *)v32; --v34; ++v32; goto LABEL_38; } if ( !v31 ) { if ( *(_DWORD *)(v3 + 24792) >= *(_DWORD *)(v3 + 24796) && sub_47BF30(v3) || (v12 = *(_DWORD *)(v3 + 24792), v2 = *(_BYTE *)(v12 + v3 + 24832), *(_DWORD *)(v3 + 24792) = v12 + 1, v2 == -1) ) break; if ( v2 != 13 ) goto LABEL_37; } v13 = v3 + 90368; memset((void *)(v3 + 90368), 0, 0x400u); *(_DWORD *)(v3 + 90368) = 2960650; v14 = *(const char **)(v3 + 102888); if ( v14 ) strncat((char *)(v3 + 90368), v14, 0x3FCu); do { v2 = *(_DWORD *)(v3 + 24800); if ( v2 ) { if ( v2 != -1 ) *(_DWORD *)(v3 + 24800) = 0; } else { if ( *(_DWORD *)(v3 + 24792) >= *(_DWORD *)(v3 + 24796) && sub_47BF30(v3) ) { v2 = -1; } else { v15 = *(_DWORD *)(v3 + 24792); v2 = *(_BYTE *)(v15 + v3 + 24832); *(_DWORD *)(v3 + 24792) = v15 + 1; } } v16 = *(_BYTE *)v13++; } while ( v2 == v16 ); if ( v2 == -1 ) break; v17 = v13 - 1; if ( !*(_BYTE *)v17 ) goto LABEL_42; v18 = v2 == 13; *(_BYTE *)v17 = v2; v2 = 13; v31 = v18; v34 = v17 - v18 - v3 - 90367; v8 = v36; v32 = v3 + 90368; LABEL_37: v11 = v33; *(_BYTE *)v8++ = v2; LABEL_38: ++v11; v36 = v8; v33 = v11; if ( v11 >= 0x400 ) { v19 = *(_DWORD *)(v35 + 4); if ( v19 ) { v20 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(v3 + 24764); if ( v20 ) { v21 = v20(v3, v19, v3 + 91392, v11); *(_DWORD *)(v3 + 102824) = v21; if ( v21 ) { LABEL_42: v22 = v35; *(_BYTE *)v36 = 0; v23 = *(_DWORD *)(v35 + 4); if ( v23 ) { if ( !*(_DWORD *)(v3 + 102824) ) { v24 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(v3 + 24764); if ( v24 ) *(_DWORD *)(v3 + 102824) = v24(v3, v23, v3 + 91392, v33); } v25 = *(void (__cdecl **)(_DWORD, _DWORD))(v3 + 24756); if ( v25 ) v25(v3, *(_DWORD *)(v35 + 4)); if ( *(_DWORD *)(v3 + 102824) ) return 0; } else { v27 = *(_DWORD *)(v3 + 100); v28 = *(_DWORD *)(v27 + 4); v29 = v33 + 1; if ( v28 ) { *(_DWORD *)(v27 + 8) += v29 - *(_DWORD *)(v28 + 4); v22 = v35; *(_DWORD *)(v28 + 4) = v29; } *(_DWORD *)(v22 + 8) = *(_DWORD *)(v27 + 8) - 1; *(_DWORD *)(v22 + 4) = sub_480050(v3, 0, 0, 0); } sub_47EAE0(v3, v22); if ( v2 == 45 ) { if ( sub_47C1D0(v3) == 45 ) { *(_DWORD *)(v3 + 8) &= 0xFFFFFEFFu; if ( *(_DWORD *)(v3 + 8) & 0x40000000 && sub_483CF0(v3) ) { if ( *(_WORD *)(v3 + 102776) < 0 ) *(_WORD *)(v3 + 102776) = 0; sub_47CCB0(v3); return 0; } return v22; } while ( 1 ) { LABEL_66: if ( v2 == -1 || v2 + 1 <= 0 || v2 > 32 ) { if ( v2 == 13 ) goto LABEL_79; goto LABEL_82; } v2 = *(_DWORD *)(v3 + 24800); if ( v2 ) break; if ( *(_DWORD *)(v3 + 24792) >= *(_DWORD *)(v3 + 24796) && sub_47BF30(v3) ) { v2 = -1; } else { v30 = *(_DWORD *)(v3 + 24792); v2 = *(_BYTE *)(v30 + v3 + 24832); *(_DWORD *)(v3 + 24792) = v30 + 1; LABEL_76: if ( v2 == 13 ) goto LABEL_79; } } if ( v2 != -1 ) *(_DWORD *)(v3 + 24800) = 0; goto LABEL_76; } if ( v2 != 13 ) goto LABEL_66; LABEL_79: if ( sub_47C1D0(v3) == 10 ) { if ( !sub_485C50(v3) ) return v22; } else { LABEL_82: *(_DWORD *)(v3 + 102824) = 36; } return 0; } } } goto LABEL_12; } } v26 = *(_DWORD *)(v3 + 102824); if ( !v26 ) v26 = -1; *(_DWORD *)(v3 + 102824) = v26; return 0; } // 483CF0: using guessed type _DWORD __cdecl sub_483CF0(_DWORD); //----- (00486340) -------------------------------------------------------- int __cdecl sub_486340(int a1) { int v1; // eax@1 int v2; // eax@3 int (__cdecl *v3)(_DWORD); // eax@9 int result; // eax@10 signed int v5; // edi@11 int v6; // eax@19 int v7; // eax@27 int (__cdecl *v8)(_DWORD); // ecx@28 int v9; // edi@28 bool v10; // zf@29 signed __int16 v11; // ax@34 unsigned int v12; // eax@41 int v13; // edi@47 int v14; // eax@54 int v15; // eax@69 int v16; // ecx@76 int v17; // eax@77 unsigned int v18; // ecx@80 int (__cdecl *v19)(_DWORD, _DWORD, _DWORD); // edi@83 unsigned int v20; // eax@85 int v21; // eax@87 int (__cdecl *v22)(_DWORD); // eax@89 int v23; // eax@90 int v24; // ecx@94 int v25; // eax@99 int v26; // ecx@107 int v27; // ecx@115 int v28; // edx@115 unsigned int v29; // eax@115 int v30; // edi@115 *(_DWORD *)(a1 + 102824) = 0; *(_DWORD *)(a1 + 24708) = 0; sub_481550(a1); sub_47D950(a1); *(_WORD *)(a1 + 6) = 0; sub_47D330(a1); v1 = *(_DWORD *)(a1 + 12); if ( (v1 & 3) == 3 ) *(_DWORD *)(a1 + 16) |= 3u; v2 = v1 & 0xFFFFFEFC; *(_DWORD *)(a1 + 12) = v2; *(_DWORD *)(a1 + 8) = v2; if ( !*(_WORD *)(a1 + 102776) ) { *(_DWORD *)(a1 + 24796) = 0; *(_DWORD *)(a1 + 24792) = 0; } if ( !(v2 & 0x10) ) *(_WORD *)(a1 + 102776) = 0; v10 = *(_DWORD *)(a1 + 24772) == -1; *(_DWORD *)(a1 + 24800) = 0; *(_DWORD *)(a1 + 24808) = 0; *(_WORD *)(a1 + 99668) = 0; *(_DWORD *)(a1 + 99676) = 0; *(_DWORD *)(a1 + 24812) = 0; *(_DWORD *)(a1 + 24816) = 0; *(_WORD *)(a1 + 24804) = 0; *(_BYTE *)(a1 + 99688) = 0; *(_DWORD *)(a1 + 102760) = 0; *(_DWORD *)(a1 + 24500) = 0; *(_DWORD *)(a1 + 24504) = 0; *(_DWORD *)(a1 + 102820) = 0; *(_DWORD *)(a1 + 24580) = 0; *(_DWORD *)(a1 + 102836) = 0; *(_DWORD *)(a1 + 102848) = 0; *(_DWORD *)(a1 + 102852) = 0; *(_DWORD *)(a1 + 102876) = 0; *(_DWORD *)(a1 + 102880) = 0; *(_DWORD *)(a1 + 102884) = 0; *(_DWORD *)(a1 + 102896) = 0; *(_DWORD *)(a1 + 102900) = 0; *(_DWORD *)(a1 + 102904) = 0; *(_DWORD *)(a1 + 102888) = 0; *(_DWORD *)(a1 + 102892) = 0; if ( v10 ) _setmode(*(_DWORD *)(a1 + 24788), 32768); v3 = *(int (__cdecl **)(_DWORD))(a1 + 24688); if ( v3 ) { result = v3(a1); *(_DWORD *)(a1 + 102824) = result; if ( result ) return result; } v5 = sub_47C1D0(a1); while ( v5 + 1 > 0 ) { if ( v5 > 32 ) break; v5 = *(_DWORD *)(a1 + 24800); if ( v5 ) { if ( v5 != -1 ) *(_DWORD *)(a1 + 24800) = 0; } else { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { v5 = -1; } else { v6 = *(_DWORD *)(a1 + 24792); v5 = *(_BYTE *)(v6 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v6 + 1; } } } if ( v5 == 45 && (*(_DWORD *)(a1 + 24792) < *(_DWORD *)(a1 + 24796) || !sub_47BF30(a1)) && *(_BYTE *)(a1 + *(_DWORD *)(a1 + 24792) + 24832) == 45 ) { *(_DWORD *)(a1 + 8) |= 0x100u; goto LABEL_26; } if ( (v5 & 0xFFFC) == 12 ) { v11 = *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ? -1 : *(_BYTE *)(a1 + *(_DWORD *)(a1 + 24792) + 24832); if ( (v11 & 0xFFF0) == 32 ) { *(_DWORD *)(a1 + 8) |= 0x80u; goto LABEL_71; } } if ( v5 != 239 ) { if ( v5 == 254 ) { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || *(_BYTE *)(a1 + *(_DWORD *)(a1 + 24792) + 24832) != -1 ) goto LABEL_49; } else { if ( v5 != 255 || *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || *(_BYTE *)(a1 + *(_DWORD *)(a1 + 24792) + 24832) != -2 ) goto LABEL_49; } result = 47; *(_DWORD *)(a1 + 102824) = 47; return result; } if ( *(_DWORD *)(a1 + 24792) < *(_DWORD *)(a1 + 24796) || !sub_47BF30(a1) ) { v12 = *(_DWORD *)(a1 + 24792); if ( *(_BYTE *)(v12 + a1 + 24832) == -69 ) { if ( v12 < *(_DWORD *)(a1 + 24796) || !sub_47BF30(a1) ) ++*(_DWORD *)(a1 + 24792); if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { LOBYTE(v13) = -1; LABEL_48: v5 = v13 & 0x3F | 0xFEC0; goto LABEL_49; } v14 = *(_DWORD *)(a1 + 24792); v13 = *(_BYTE *)(v14 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v14 + 1; if ( v13 != 191 ) goto LABEL_48; *(_DWORD *)(a1 + 8) &= 0xFFFFFFDFu; v5 = sub_47C1D0(a1); } } LABEL_49: while ( v5 + 1 > 0 ) { if ( v5 > 32 ) break; v5 = *(_DWORD *)(a1 + 24800); if ( v5 ) { if ( v5 != -1 ) *(_DWORD *)(a1 + 24800) = 0; } else { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { v5 = -1; } else { v15 = *(_DWORD *)(a1 + 24792); v5 = *(_BYTE *)(v15 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v15 + 1; } } } LABEL_71: if ( v5 == -1 ) { result = *(_DWORD *)(a1 + 102824); if ( !result ) { result = -1; *(_DWORD *)(a1 + 102824) = -1; return result; } goto LABEL_119; } LABEL_26: *(_DWORD *)(a1 + 24800) = v5; if ( v5 != 60 ) { v7 = *(_DWORD *)(a1 + 8); if ( !(v7 & 0x580) ) { v8 = *(int (__cdecl **)(_DWORD))(a1 + 24592); v9 = *(_DWORD *)(a1 + 12); *(_DWORD *)(a1 + 8) = v7 & 0xFFFFFFFC; result = v8(a1); *(_DWORD *)(a1 + 102824) = result; if ( result ) { v10 = result == 1000; if ( result < 1000 ) { *(_WORD *)(a1 + 102776) = 0; return result; } } else { v10 = 0; } if ( v10 ) goto LABEL_89; v16 = *(_DWORD *)(a1 + 12) & 3; *(_DWORD *)(a1 + 8) = *(_DWORD *)(a1 + 12); *(_DWORD *)(a1 + 12) = v9; if ( (_BYTE)v16 == 3 ) { v17 = *(_DWORD *)(a1 + 24792); *(_DWORD *)(a1 + 99684) = *(_DWORD *)(a1 + 24796); *(_DWORD *)(a1 + 24796) = v17; *(_DWORD *)(a1 + 99680) = 0; } if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || (v18 = *(_DWORD *)(a1 + 24792), *(_BYTE *)(v18 + a1 + 24832) == -1) ) { result = *(_DWORD *)(a1 + 102820); if ( result == 200 ) { result = 14; *(_DWORD *)(a1 + 102824) = 14; return result; } goto LABEL_119; } v19 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24696); if ( !v19 || (*(_BYTE *)(a1 + 8) & 3) == 3 || (v20 = *(_DWORD *)(a1 + 24796), v20 <= v18) || (result = v19(a1, v18 + a1 + 24832, v20 - v18)) == 0 ) { v21 = *(_DWORD *)(a1 + 102824); if ( v21 ) { if ( v21 == 1001 ) { LABEL_89: v22 = *(int (__cdecl **)(_DWORD))(a1 + 24580); if ( v22 ) { v23 = v22(a1); *(_DWORD *)(a1 + 102824) = v23; if ( !v23 ) *(_DWORD *)(a1 + 102824) = 1000; } } return *(_DWORD *)(a1 + 102824); } goto LABEL_93; } LABEL_119: *(_DWORD *)(a1 + 102824) = result; return result; } } LABEL_93: if ( *(_DWORD *)(a1 + 8) & 0x100 ) { do { v24 = *(_DWORD *)(a1 + 24800); if ( v24 ) { if ( v24 == -1 ) goto LABEL_117; *(_DWORD *)(a1 + 24800) = 0; } else { if ( *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) ) { LABEL_117: result = *(_DWORD *)(a1 + 102824); if ( !result ) result = -1; goto LABEL_119; } v25 = *(_DWORD *)(a1 + 24792); v24 = *(_BYTE *)(v25 + a1 + 24832); *(_DWORD *)(a1 + 24792) = v25 + 1; } if ( v24 == -1 ) goto LABEL_117; } while ( v24 != 45 || *(_DWORD *)(a1 + 24792) >= *(_DWORD *)(a1 + 24796) && sub_47BF30(a1) || *(_BYTE *)(a1 + *(_DWORD *)(a1 + 24792) + 24832) != 45 ); *(_DWORD *)(a1 + 24800) = 45; if ( sub_485C50(a1) ) return *(_DWORD *)(a1 + 102824); if ( *(_DWORD *)(a1 + 102892) ) { do v26 = *(_DWORD *)(a1 + 102904); while ( *(_DWORD *)(v26 + 12) && sub_47E9F0(a1, *(const char **)(a1 + 102892), *(const char **)(v26 + 12)) && sub_485ED0(a1, 0) ); } if ( sub_483970(a1, *(_DWORD *)(*(_DWORD *)(a1 + 102900) + 16), (int)"application/dime") ) *(_DWORD *)(a1 + 8) |= 0x80u; } if ( *(_BYTE *)(a1 + 8) & 0x80 ) { if ( sub_47E7F0(a1) ) return *(_DWORD *)(a1 + 102824); if ( *(_BYTE *)(a1 + 102856) & 1 ) { v27 = *(_DWORD *)(a1 + 24796); v28 = *(_DWORD *)(a1 + 24792); v29 = *(_DWORD *)(a1 + 102844); v30 = *(_DWORD *)(a1 + 24796) - v28; *(_DWORD *)(a1 + 102848) = v29; if ( v30 < v29 ) { *(_DWORD *)(a1 + 102848) = v28 + v29 - v27; } else { *(_DWORD *)(a1 + 102852) = v27; *(_DWORD *)(a1 + 24796) = v28 + v29; } } *(_DWORD *)(a1 + 24812) = *(_DWORD *)(a1 + 24796) - *(_DWORD *)(a1 + 24792); } return 0; } //----- (00486A50) -------------------------------------------------------- signed int __cdecl sub_486A50(int a1) { *(_WORD *)(a1 + 99668) = 8; return sub_483EA0(a1, "SOAP-ENV:Envelope"); } //----- (00486A80) -------------------------------------------------------- signed int __cdecl sub_486A80(int a1) { signed int result; // eax@2 if ( *(_WORD *)(a1 + 99668) == 5 ) { *(_DWORD *)(a1 + 102824) = 0; result = 0; } else { *(_WORD *)(a1 + 99668) = 7; result = sub_483EA0(a1, "SOAP-ENV:Body"); } return result; } //----- (00486AC0) -------------------------------------------------------- int __cdecl sub_486AC0(int a1, int a2) { signed int v2; // edi@1 int v4; // ebx@11 const char *v5; // edi@14 v2 = *(_DWORD *)(a1 + 102824); if ( !a2 && v2 != 6 && (v2 != 3 || *(_DWORD *)(a1 + 24808) != 2) ) return *(_DWORD *)(a1 + 102824); *(_DWORD *)(a1 + 102824) = 0; if ( !sub_47ACF0(a1) ) { v5 = *(const char **)sub_474DA0(a1); if ( sub_47C8A0(a1, v5, "SOAP-ENV:Server") && sub_47C8A0(a1, v5, "SOAP-ENV:Receiver") ) { if ( sub_47C8A0(a1, v5, "SOAP-ENV:Client") && sub_47C8A0(a1, v5, "SOAP-ENV:Sender") ) { if ( sub_47C8A0(a1, v5, "SOAP-ENV:MustUnderstand") ) v2 = sub_47C8A0(a1, v5, "SOAP-ENV:VersionMismatch") != 0 ? 12 : 39; else v2 = 8; } else { v2 = 1; } } else { v2 = 2; } if ( *(_WORD *)(a1 + 99668) == 5 ) { *(_DWORD *)(a1 + 102824) = 0; } else { *(_WORD *)(a1 + 99668) = 7; if ( sub_483EA0(a1, "SOAP-ENV:Body") ) goto LABEL_27; } *(_WORD *)(a1 + 99668) = 8; sub_483EA0(a1, "SOAP-ENV:Envelope"); goto LABEL_27; } if ( a2 && *(_DWORD *)(a1 + 102824) == 3 && *(_DWORD *)(a1 + 24808) == 2 ) { *(_DWORD *)(a1 + 102824) = 0; return 0; } v4 = (int)"SOAP-ENV:Sender"; if ( *(_WORD *)(a1 + 6) != 2 ) v4 = (int)"SOAP-ENV:Client"; *(_DWORD *)sub_474DA0(a1) = v4; *(_DWORD *)(a1 + 102824) = v2; sub_482370(a1); LABEL_27: sub_483CF0(a1); *(_DWORD *)(a1 + 102824) = v2; return sub_47CCB0(a1); } // 483CF0: using guessed type _DWORD __cdecl sub_483CF0(_DWORD); //----- (00486C60) -------------------------------------------------------- int __cdecl sub_486C60(int a1, const void *a2, int a3) { int result; // eax@1 int (__cdecl *v4)(_DWORD, _DWORD, _DWORD); // ecx@2 int v5; // edx@3 int (__cdecl *v6)(_DWORD, _DWORD, _DWORD); // ecx@7 int v7; // ecx@10 size_t v8; // edi@13 result = a3; if ( a3 ) { v4 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24692); if ( v4 ) { v5 = *(_DWORD *)(a1 + 8); if ( (*(_DWORD *)(a1 + 8) & 3) != 2 ) { if ( v5 & 8 ) { result = v4(a1, a2, a3); *(_DWORD *)(a1 + 102824) = result; if ( result ) return result; result = a3; } } } v6 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 24712); if ( v6 ) { result = v6(a1, &a2, &a3); *(_DWORD *)(a1 + 102824) = result; if ( result ) return result; result = a3; } v7 = *(_DWORD *)(a1 + 8); if ( v7 & 8 ) { *(_DWORD *)(a1 + 24812) += result; result = 0; } else { if ( v7 & 3 ) { v8 = 65536 - *(_DWORD *)(a1 + 24792); if ( result < v8 ) { LABEL_16: memmove((void *)(*(_DWORD *)(a1 + 24792) + a1 + 24832), a2, result); *(_DWORD *)(a1 + 24792) += a3; result = 0; } else { while ( 1 ) { memmove((void *)(*(_DWORD *)(a1 + 24792) + a1 + 24832), a2, v8); *(_DWORD *)(a1 + 24792) = 65536; if ( sub_482BF0(a1) ) break; a2 = (char *)a2 + v8; result = a3 - v8; a3 = result; v8 = 65536; if ( (unsigned int)result < 0x10000 ) goto LABEL_16; } result = *(_DWORD *)(a1 + 102824); } } else { result = sub_47F7C0(a1, a2, result); } } } return result; } //----- (00486D90) -------------------------------------------------------- int __cdecl sub_486D90(int a1, const void *a2) { int result; // eax@2 if ( a2 ) result = sub_486C60(a1, a2, strlen((const char *)a2)); else result = 0; return result; } //----- (00486DC0) -------------------------------------------------------- int __cdecl sub_486DC0(int a1, const void *a2, const void *a3, const void *a4) { int result; // eax@6 if ( a2 && sub_486C60(a1, a2, strlen((const char *)a2)) || a3 && sub_486C60(a1, a3, strlen((const char *)a3)) ) { result = *(_DWORD *)(a1 + 102824); } else { if ( a4 ) result = sub_486C60(a1, a4, strlen((const char *)a4)); else result = 0; } return result; } //----- (00486E50) -------------------------------------------------------- int __cdecl sub_486E50(int a1, unsigned int a2) { int v2; // ecx@5 int v3; // ecx@7 int v4; // ecx@9 char *v5; // ecx@11 char *v6; // eax@17 char v7; // cl@18 int v9; // [sp-4h] [bp-1Ch]@3 char v10; // [sp+4h] [bp-14h]@3 char v11; // [sp+5h] [bp-13h]@5 char v12; // [sp+6h] [bp-12h]@12 unsigned int v13; // [sp+14h] [bp-4h]@1 int v14; // [sp+18h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; if ( a2 >= 0x80 ) { if ( a2 >= 0x800 ) { if ( a2 >= 0x10000 ) { if ( a2 >= 0x200000 ) { if ( a2 >= 0x4000000 ) { v10 = (a2 >> 30) & 1 | 0xFC; v11 = BYTE3(a2) & 0x3F | 0x80; v5 = &v12; } else { v10 = BYTE3(a2) & 3 | 0xF8; v5 = &v11; } *v5 = (a2 >> 18) & 0x3F | 0x80; v4 = (int)(v5 + 1); } else { v10 = (a2 >> 18) & 7 | 0xF0; v4 = (int)&v11; } *(_BYTE *)v4 = (a2 >> 12) & 0x3F | 0x80; v3 = v4 + 1; } else { v10 = (a2 >> 12) & 0xF | 0xE0; v3 = (int)&v11; } *(_BYTE *)v3 = (a2 >> 6) & 0x3F | 0x80; v2 = v3 + 1; } else { v10 = (a2 >> 6) & 0x1F | 0xC0; v2 = (int)&v11; } *(_BYTE *)v2 = a2 & 0x3F | 0x80; *(_BYTE *)(v2 + 1) = 0; } else { if ( a2 ) { v10 = a2; v9 = 1; return sub_486C60(a1, &v10, v9); } } v6 = &v10; do v7 = *v6++; while ( v7 ); v9 = v6 - &v11; return sub_486C60(a1, &v10, v9); } // 4DE38C: using guessed type int __security_cookie; //----- (00486F70) -------------------------------------------------------- char __cdecl sub_486F70(int a1, int a2, int a3) { int v3; // eax@1 void *v4; // eax@2 int v5; // eax@3 int v6; // esi@4 int v7; // eax@8 int v8; // eax@8 void *v9; // eax@8 int v10; // eax@9 int v11; // eax@12 int v12; // eax@14 int v13; // eax@15 int v14; // eax@16 int v15; // eax@18 int v16; // edi@19 int v17; // eax@21 int v18; // eax@22 int v19; // eax@24 int v20; // eax@26 int v21; // eax@27 char *v22; // eax@28 char *v23; // ebx@28 int v24; // eax@30 int v25; // eax@31 int v26; // eax@32 int v27; // eax@33 int v28; // eax@34 int v29; // eax@35 int v30; // eax@37 int v31; // eax@41 int v32; // eax@43 int v33; // eax@45 int v35; // [sp+Ch] [bp-4h]@28 LOBYTE(v3) = sub_47C7C0(a2, (int)"Host"); if ( v3 ) { LOBYTE(v5) = sub_47C7C0(a2, (int)"Content-Type"); if ( v5 ) { LOBYTE(v11) = sub_47C7C0(a2, (int)"Content-Length"); if ( !v11 ) { *(_DWORD *)(a1 + 24816) = strtoul((const char *)a3, 0, 10); LOBYTE(v4) = 0; return (char)v4; } LOBYTE(v12) = sub_47C7C0(a2, (int)"Content-Encoding"); if ( v12 ) { LOBYTE(v15) = sub_47C7C0(a2, (int)"Transfer-Encoding"); if ( v15 ) { LOBYTE(v17) = sub_47C7C0(a2, (int)"Connection"); if ( v17 ) { LOBYTE(v20) = sub_47C7C0(a2, (int)"Authorization"); if ( v20 ) { LOBYTE(v24) = sub_47C7C0(a2, (int)"WWW-Authenticate"); if ( v24 && (LOBYTE(v25) = sub_47C7C0(a2, (int)"Proxy-Authenticate"), v25) ) { LOBYTE(v26) = sub_47C7C0(a2, (int)"Expect"); if ( v26 ) { LOBYTE(v30) = sub_47C7C0(a2, (int)"SOAPAction"); if ( !v30 ) { v10 = a3; v6 = a1; if ( *(_BYTE *)a3 == 34 ) { v4 = sub_47FDA0(a1, (const char *)(a3 + 1)); *(_DWORD *)(a1 + 102760) = v4; *((_BYTE *)v4 + strlen((const char *)v4) - 1) = 0; LOBYTE(v4) = 0; return (char)v4; } goto LABEL_40; } LOBYTE(v31) = sub_47C7C0(a2, (int)"Location"); if ( !v31 ) { strncpy((char *)(a1 + 99688), (const char *)a3, 0x400u); *(_BYTE *)(a1 + 100711) = 0; LOBYTE(v4) = 0; return (char)v4; } LOBYTE(v32) = sub_47C7C0(a2, (int)"X-Forwarded-For"); if ( !v32 ) { *(_DWORD *)(a1 + 102816) = sub_47FDA0(a1, (const char *)a3); LOBYTE(v4) = 0; return (char)v4; } } else { LOBYTE(v27) = sub_47C7C0(a3, (int)"100-continue"); if ( !v27 ) { v28 = (*(int (__cdecl **)(int, _DWORD, _DWORD))(a1 + 24584))(a1, "HTTP/1.1 100 Continue", 0); *(_DWORD *)(a1 + 102824) = v28; if ( v28 || (v29 = (*(int (__cdecl **)(int, _DWORD, _DWORD))(a1 + 24584))(a1, 0, 0), (*(_DWORD *)(a1 + 102824) = v29) != 0) ) { v4 = *(void **)(a1 + 102824); return (char)v4; } } } } else { v33 = sub_483970(a1, a3 + 6, (int)"realm"); *(_DWORD *)(a1 + 24544) = sub_47FDA0(a1, (const char *)v33); } } else { LOBYTE(v21) = sub_47C7C0(a3, (int)"Basic *"); if ( !v21 ) { sub_47EFD0(a1, (const char *)(a3 + 6), (void *)(a1 + 91392), 0x3FFu, (int)&v35); *(_BYTE *)(v35 + a1 + 91392) = 0; v22 = strchr((const char *)(a1 + 91392), 58); v23 = v22; if ( v22 ) { *v22 = 0; *(_DWORD *)(a1 + 24536) = sub_47FDA0(a1, (const char *)(a1 + 91392)); *(_DWORD *)(a1 + 24540) = sub_47FDA0(a1, v23 + 1); LOBYTE(v4) = 0; return (char)v4; } } } } else { LOBYTE(v18) = sub_47C7C0(a3, (int)"keep-alive"); if ( !v18 ) { *(_WORD *)(a1 + 102776) = -*(_WORD *)(a1 + 102776); LOBYTE(v4) = 0; return (char)v4; } LOBYTE(v19) = sub_47C7C0(a3, (int)"close"); if ( !v19 ) { *(_WORD *)(a1 + 102776) = 0; LOBYTE(v4) = 0; return (char)v4; } } } else { *(_DWORD *)(a1 + 12) &= 0xFFFFFFFCu; v16 = *(_DWORD *)(a1 + 12); LOBYTE(v4) = sub_47C7C0(a3, (int)"chunked"); if ( !v4 ) { *(_DWORD *)(a1 + 12) = v16 | 3; return (char)v4; } } } else { LOBYTE(v13) = sub_47C7C0(a3, (int)"deflate"); if ( !v13 || (LOBYTE(v14) = sub_47C7C0(a3, (int)"gzip"), !v14) ) { LOBYTE(v4) = 31; return (char)v4; } } } else { v6 = a1; *(_DWORD *)(a1 + 36) = sub_47FDA0(a1, (const char *)a3); if ( sub_483970(a1, a3, (int)"application/dime") ) { *(_DWORD *)(a1 + 12) |= 0x80u; } else { if ( sub_483970(a1, a3, (int)"multipart/related") || sub_483970(a1, a3, (int)"multipart/form-data") ) { v7 = sub_483970(a1, a3, (int)"boundary"); *(_DWORD *)(a1 + 102888) = sub_47FDA0(a1, (const char *)v7); v8 = sub_483970(a1, a3, (int)"start"); v9 = sub_47FDA0(a1, (const char *)v8); *(_DWORD *)(a1 + 12) |= 0x100u; *(_DWORD *)(a1 + 102892) = v9; } } v10 = sub_483970(a1, a3, (int)"action"); if ( v10 ) { if ( *(_BYTE *)v10 == 34 ) { v4 = sub_47FDA0(a1, (const char *)(v10 + 1)); *(_DWORD *)(a1 + 102760) = v4; *((_BYTE *)v4 + strlen((const char *)v4) - 1) = 0; LOBYTE(v4) = 0; return (char)v4; } LABEL_40: *(_DWORD *)(v6 + 102760) = sub_47FDA0(v6, (const char *)v10); LOBYTE(v4) = 0; return (char)v4; } } LOBYTE(v4) = 0; return (char)v4; } *(_DWORD *)(a1 + 99688) = dword_4C8CF4; *(_DWORD *)(a1 + 99692) = dword_4C8CF8; strncat((char *)(a1 + 99688), (const char *)a3, 0x3F8u); *(_BYTE *)(a1 + 100711) = 0; LOBYTE(v4) = 0; return (char)v4; } // 4C8CF4: using guessed type int dword_4C8CF4; // 4C8CF8: using guessed type int dword_4C8CF8; //----- (00487420) -------------------------------------------------------- int __usercall sub_487420(const char *a1, int a2) { const char *v2; // edi@1 char *v3; // ecx@2 unsigned int v4; // eax@3 size_t v5; // eax@4 int (__cdecl *v6)(_DWORD, _DWORD, _DWORD); // edx@5 int v7; // ecx@6 int v8; // eax@8 int (__cdecl *v9)(_DWORD, _DWORD, _DWORD); // ecx@10 int v10; // eax@11 int v11; // ecx@13 size_t v12; // edi@16 char v13; // al@17 int (__cdecl *v14)(_DWORD, _DWORD, _DWORD); // eax@18 int v15; // eax@19 int v16; // eax@25 int v18; // [sp+8h] [bp-Ch]@2 void *v19; // [sp+Ch] [bp-8h]@4 size_t v20; // [sp+10h] [bp-4h]@4 v2 = a1; while ( 1 ) { v3 = strchr(v2, 10); v18 = (int)v3; if ( !v3 ) { v4 = strlen(v2); v3 = (char *)&v2[v4]; v18 = (int)&v2[v4]; } v5 = v3 - v2; v20 = v3 - v2; v19 = (void *)v2; if ( v3 == v2 ) goto LABEL_29; v6 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a2 + 24692); if ( v6 ) { v7 = *(_DWORD *)(a2 + 8); if ( (*(_DWORD *)(a2 + 8) & 3) != 2 ) { if ( v7 & 8 ) { v8 = v6(a2, v2, v5); *(_DWORD *)(a2 + 102824) = v8; if ( v8 ) return *(_DWORD *)(a2 + 102824); v5 = v20; } } } v9 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a2 + 24712); if ( v9 ) { v10 = v9(a2, &v19, &v20); *(_DWORD *)(a2 + 102824) = v10; if ( v10 ) return *(_DWORD *)(a2 + 102824); v5 = v20; } v11 = *(_DWORD *)(a2 + 8); if ( !(v11 & 8) ) break; *(_DWORD *)(a2 + 24812) += v5; LABEL_28: v3 = (char *)v18; LABEL_29: v2 = v3 + 1; if ( !*v3 ) return 0; } if ( !(v11 & 3) ) { v16 = sub_47F7C0(a2, v19, v5); goto LABEL_27; } v12 = 65536 - *(_DWORD *)(a2 + 24792); if ( v5 < v12 ) { LABEL_24: memmove((void *)(*(_DWORD *)(a2 + 24792) + a2 + 24832), v19, v5); *(_DWORD *)(a2 + 24792) += v20; goto LABEL_28; } while ( 1 ) { memmove((void *)(*(_DWORD *)(a2 + 24792) + a2 + 24832), v19, v12); v13 = *(_DWORD *)(a2 + 8) & 3; *(_DWORD *)(a2 + 24792) = 65536; if ( v13 == 2 && (v14 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a2 + 24692)) != 0 && (v15 = v14(a2, a2 + 24832, 65536)) != 0 ) { *(_DWORD *)(a2 + 102824) = v15; } else { *(_DWORD *)(a2 + 24792) = 0; v15 = sub_47F7C0(a2, (const void *)(a2 + 24832), 0x10000u); } if ( v15 ) break; v19 = (char *)v19 + v12; v5 = v20 - v12; v20 = v5; v12 = 65536; if ( v5 < 0x10000 ) goto LABEL_24; } v16 = *(_DWORD *)(a2 + 102824); LABEL_27: if ( !v16 ) goto LABEL_28; return *(_DWORD *)(a2 + 102824); } //----- (004875F0) -------------------------------------------------------- int __cdecl sub_4875F0(int a1, const char *a2, const char *a3) { int result; // eax@3 if ( a2 && (sub_487420(a2, a1) || a3 && (sub_486C60(a1, &unk_4C8D00, 2) || sub_487420(a3, a1))) ) result = *(_DWORD *)(a1 + 102824); else result = sub_486C60(a1, &unk_4C8CFC, 2); return result; } //----- (00487650) -------------------------------------------------------- int __cdecl sub_487650(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int result; // eax@6 int v5; // ebx@7 int v6; // [sp+Ch] [bp+8h]@5 v2 = a1; v3 = *(_DWORD *)(a1 + 16); if ( !(v3 & 0x42) && (a2 == 1002 || a2 == 1003) ) *(_DWORD *)(a1 + 16) = v3 & 0xFFFFFFFE | 2; *(_DWORD *)(a1 + 102820) = a2; v6 = sub_47E590(a1); if ( sub_483B30(v2) ) return *(_DWORD *)(v2 + 102824); v5 = *(_DWORD *)(v2 + 8); if ( (*(_BYTE *)(v2 + 8) & 3) == 2 || v5 & 0x40 ) return 0; *(_DWORD *)(v2 + 8) = v5 & 0xFFFFFBFC; if ( v5 & 3 ) *(_DWORD *)(v2 + 8) = v5 & 0xFFFFFBFC | 1; result = (*(int (__cdecl **)(int, int, int))(v2 + 24588))(v2, a2, v6); *(_DWORD *)(v2 + 102824) = result; if ( !result ) { if ( (v5 & 3) == 3 && sub_482BF0(v2) ) return *(_DWORD *)(v2 + 102824); *(_DWORD *)(v2 + 8) = v5; return 0; } return result; } //----- (00487710) -------------------------------------------------------- int __cdecl sub_487710(int a1, const char *a2) { const void *v2; // ebx@1 int v4; // eax@7 char *v5; // edi@12 v2 = a2; if ( *a2 == 45 ) return 0; if ( *(_DWORD *)(a1 + 8) & 0x10000 ) sub_47C680(a1); if ( *(_DWORD *)(a1 + 8) & 0x2000 ) { if ( !*(_WORD *)(a1 + 24806) ) { v4 = *(_DWORD *)(a1 + 24808); if ( (unsigned int)v4 >= 0xB ) v4 = 10; if ( sub_486C60(a1, "\n\t\t\t\t\t\t\t\t\t", v4) ) return *(_DWORD *)(a1 + 102824); } *(_WORD *)(a1 + 24806) = 0; } if ( *(_DWORD *)(a1 + 8) & 0x8000 ) { v5 = strchr(a2, 58); if ( v5 ) { sub_47C680(a1); v2 = v5 + 1; } } if ( !sub_486C60(a1, &unk_4C8D08, 2) && (!v2 || !sub_486C60(a1, v2, strlen((const char *)v2))) ) { --*(_DWORD *)(a1 + 24808); return sub_486C60(a1, &unk_4C8D04, 1); } return *(_DWORD *)(a1 + 102824); } //----- (00487800) -------------------------------------------------------- signed int __cdecl sub_487800(int a1, const char *a2, int a3, const char *a4) { signed int result; // eax@3 signed int v5; // eax@7 if ( sub_484110(a1) ) { if ( *(_DWORD *)(a1 + 102824) == 6 && a2 && *a2 == 45 ) *(_DWORD *)(a1 + 102824) = 0; } else { if ( *(_WORD *)(a1 + 99584) ) { result = 3; *(_DWORD *)(a1 + 102824) = 3; return result; } if ( a2 && *a2 == 45 ) return 0; v5 = sub_47C8A0(a1, (const char *)(a1 + 92416), a2); *(_DWORD *)(a1 + 102824) = v5; if ( !v5 ) { *(_WORD *)(a1 + 99678) = 0; if ( a4 && *(_BYTE *)(a1 + 95488) && sub_47C8A0(a1, (const char *)(a1 + 95488), a4) ) { result = 4; *(_DWORD *)(a1 + 102824) = 4; return result; } if ( !a3 && *(_WORD *)(a1 + 99664) && *(_DWORD *)(a1 + 8) & 0x1000 ) { result = 23; *(_DWORD *)(a1 + 102824) = 23; return result; } if ( *(_WORD *)(a1 + 24806) ) { ++*(_DWORD *)(a1 + 24808); return *(_DWORD *)(a1 + 102824); } } } return *(_DWORD *)(a1 + 102824); } //----- (00487910) -------------------------------------------------------- int __cdecl sub_487910(int a1, wchar_t a2, int a3) { int v3; // edx@1 const void *v4; // esi@4 signed int v5; // ecx@4 int v6; // edi@4 int v8; // eax@10 int v9; // eax@28 int v10; // eax@28 int v11; // [sp+Ch] [bp-Ch]@28 signed int v12; // [sp+10h] [bp-8h]@1 signed int v13; // [sp+14h] [bp-4h]@4 v3 = a3; v12 = -128; if ( a3 == 2 || *(_DWORD *)(a1 + 8) & 0x2000000 ) v12 = 0; v4 = (const void *)a2; v5 = *(_BYTE *)a2; v6 = a2; v13 = *(_BYTE *)a2; if ( !*(_BYTE *)a2 ) return sub_486C60(a1, (const void *)a2, a2 - a2); while ( 2 ) { ++v6; switch ( v5 ) { case 9: if ( !v3 ) goto LABEL_42; if ( sub_486C60(a1, v4, v6 - (_DWORD)v4 - 1) ) return *(_DWORD *)(a1 + 102824); v8 = sub_486C60(a1, " ", 5); goto LABEL_40; case 10: if ( !v3 && *(_DWORD *)(a1 + 8) & 0x10000 ) goto LABEL_42; if ( sub_486C60(a1, v4, v6 - (_DWORD)v4 - 1) ) return *(_DWORD *)(a1 + 102824); v8 = sub_486C60(a1, " ", 5); goto LABEL_40; case 13: if ( sub_486C60(a1, v4, v6 - (_DWORD)v4 - 1) ) return *(_DWORD *)(a1 + 102824); v8 = sub_486C60(a1, " ", 5); goto LABEL_40; case 38: if ( sub_486C60(a1, v4, v6 - (_DWORD)v4 - 1) ) return *(_DWORD *)(a1 + 102824); v8 = sub_486C60(a1, "&", 5); goto LABEL_40; case 60: if ( sub_486C60(a1, v4, v6 - (_DWORD)v4 - 1) ) return *(_DWORD *)(a1 + 102824); v8 = sub_486C60(a1, "<", 4); goto LABEL_40; case 62: if ( v3 ) goto LABEL_42; if ( sub_486C60(a1, v4, v6 - (_DWORD)v4 - 1) ) return *(_DWORD *)(a1 + 102824); v8 = sub_486C60(a1, ">", 4); goto LABEL_40; case 34: if ( !v3 ) goto LABEL_42; if ( sub_486C60(a1, v4, v6 - (_DWORD)v4 - 1) ) return *(_DWORD *)(a1 + 102824); v8 = sub_486C60(a1, """, 6); goto LABEL_40; default: if ( !(*(_DWORD *)(a1 + 8) & 0x4000000) ) goto LABEL_36; v9 = ___mb_cur_max_func(); v10 = mbtowc(&a2, (const char *)(v6 - 1), v9); v11 = v10; if ( v10 > 0 && (a2 != v13 || v10 != 1 || v13 >= 128) ) { if ( sub_486C60(a1, v4, v6 - (_DWORD)v4 - 1) || sub_486E50(a1, a2) ) return *(_DWORD *)(a1 + 102824); v6 = v6 + v11 - 1; goto LABEL_41; } v5 = v13; LABEL_36: if ( !(v5 & v12) && v5 & 0xFFFFFFE0 ) { LABEL_42: v13 = *(_BYTE *)v6; if ( !*(_BYTE *)v6 ) return sub_486C60(a1, v4, v6 - (_DWORD)v4); v5 = *(_BYTE *)v6; v3 = a3; continue; } if ( !sub_486C60(a1, v4, v6 - (_DWORD)v4 - 1) ) { v8 = sub_486E50(a1, (unsigned __int8)v13); LABEL_40: if ( !v8 ) { LABEL_41: v4 = (const void *)v6; goto LABEL_42; } } return *(_DWORD *)(a1 + 102824); } } } //----- (00487C20) -------------------------------------------------------- void *__cdecl sub_487C20(int a1, const char *a2, int a3, const char *a4, int a5) { void *v6; // edi@9 int v7; // eax@12 if ( sub_487800(a1, a2, 0, 0) ) return 0; if ( *(_BYTE *)(a1 + 95488) && sub_47C8A0(a1, (const char *)(a1 + 95488), a4) && sub_47C8A0(a1, (const char *)(a1 + 95488), ":int") && sub_47C8A0(a1, (const char *)(a1 + 95488), ":short") && sub_47C8A0(a1, (const char *)(a1 + 95488), ":byte") ) { *(_DWORD *)(a1 + 102824) = 4; sub_47E2D0(a1); return 0; } v6 = (void *)sub_47D7E0(a1, a1 + 93440, a3, a5, 4u, 0, 0, 0, 0); if ( *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, a5, 0, 4u, 0, 0); } else { if ( v6 ) { v7 = sub_485B90(a1); if ( sub_47E300(a1, (const char *)v7, (int)v6) ) return 0; } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00487D50) -------------------------------------------------------- void *__cdecl sub_487D50(int a1, const char *a2, int a3, const char *a4, int a5) { void *v6; // edi@7 int v7; // eax@10 if ( sub_487800(a1, a2, 0, 0) ) return 0; if ( *(_BYTE *)(a1 + 95488) && sub_47C8A0(a1, (const char *)(a1 + 95488), a4) && sub_47C8A0(a1, (const char *)(a1 + 95488), ":byte") ) { *(_DWORD *)(a1 + 102824) = 4; sub_47E2D0(a1); return 0; } v6 = (void *)sub_47D7E0(a1, a1 + 93440, a3, a5, 1u, 0, 0, 0, 0); if ( *(_BYTE *)(a1 + 94464) ) { v6 = sub_481410(a1, (const char *)(a1 + 94464), v6, 0, a5, 0, 1u, 0, 0); } else { if ( v6 ) { v7 = sub_485B90(a1); if ( sub_47E3E0(a1, (const char *)v7, (int)v6) ) return 0; } } if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v6; } //----- (00487E50) -------------------------------------------------------- void *__cdecl sub_487E50(int a1, const char *a2, void *a3, int a4, int a5, int a6, signed int a7, signed int a8) { void *v8; // edi@6 int v10; // eax@12 if ( sub_487800(a1, a2, 1, 0) ) { if ( !a2 || *a2 != 45 || *(_DWORD *)(a1 + 102824) != 6 ) return 0; *(_DWORD *)(a1 + 102824) = 0; } v8 = a3; if ( !a3 ) { v8 = sub_47D480(a1, 4u); if ( !v8 ) return 0; } if ( *(_WORD *)(a1 + 99664) ) { *(_DWORD *)v8 = 0; goto LABEL_25; } if ( !*(_WORD *)(a1 + 24806) ) { if ( a2 && *a2 == 45 ) goto LABEL_17; if ( *(_BYTE *)(a1 + 94464) || a7 <= 0 ) { *(_DWORD *)v8 = sub_47FDA0(a1, byte_4C760C); goto LABEL_25; } *(_DWORD *)(a1 + 102824) = 45; return 0; } v10 = sub_4850A0(a1, a6, a7, a8); *(_DWORD *)v8 = v10; if ( !v10 || !sub_47D7E0(a1, a1 + 93440, v10, a5, 4u, 0, 0, 0, 0) ) return 0; if ( !**(_BYTE **)v8 && a2 && *a2 == 45 ) { LABEL_17: *(_DWORD *)(a1 + 102824) = 6; return 0; } LABEL_25: if ( *(_BYTE *)(a1 + 94464) ) v8 = sub_47D630(a1, a1 + 94464, v8, a5, 4, 0); if ( *(_WORD *)(a1 + 24806) && sub_483EA0(a1, a2) ) return 0; return v8; } //----- (00487FB0) -------------------------------------------------------- void *__cdecl sub_487FB0(int a1, const char *a2, void *a3) { int v3; // eax@3 void *v4; // edi@5 int v6; // eax@17 if ( sub_487800(a1, a2, 1, 0) ) { if ( *(_DWORD *)(a1 + 102824) != 6 || (v3 = sub_482C60(a1), *(_DWORD *)(a1 + 24800) = v3, v3 == -3) ) return 0; *(_DWORD *)(a1 + 102824) = 0; } v4 = a3; if ( a3 || (v4 = sub_47D480(a1, 4u)) != 0 ) { if ( !*(_WORD *)(a1 + 24806) && (!a2 || *a2 != 45) ) { if ( *(_WORD *)(a1 + 99664) ) *(_DWORD *)v4 = 0; else *(_DWORD *)v4 = sub_47FDA0(a1, byte_4C760C); goto LABEL_12; } v6 = sub_4850A0(a1, 0, -1, -1); *(_DWORD *)v4 = v6; if ( v6 ) { if ( *(_BYTE *)v6 || !a2 || *a2 != 45 ) { LABEL_12: if ( !*(_WORD *)(a1 + 24806) || !sub_483EA0(a1, a2) ) return v4; return 0; } *(_DWORD *)(a1 + 102824) = 6; } } return 0; } //----- (004880A0) -------------------------------------------------------- int __cdecl sub_4880A0(int a1) { int v1; // ebx@1 int v2; // eax@3 int v3; // edx@4 char v4; // cl@5 int v5; // eax@8 int v6; // edx@9 char v7; // cl@10 char v8; // cl@13 char v9; // al@13 char v10; // al@13 char v11; // dl@13 int v12; // eax@15 int v13; // eax@19 int result; // eax@23 int v15; // [sp+Ch] [bp-18h]@1 int v16; // [sp+10h] [bp-14h]@1 char v17; // [sp+14h] [bp-10h]@13 char v18; // [sp+15h] [bp-Fh]@13 char v19; // [sp+16h] [bp-Eh]@13 char v20; // [sp+17h] [bp-Dh]@13 char v21; // [sp+18h] [bp-Ch]@13 char v22; // [sp+19h] [bp-Bh]@13 char v23; // [sp+1Ah] [bp-Ah]@13 char v24; // [sp+1Bh] [bp-9h]@13 char v25; // [sp+1Ch] [bp-8h]@13 char v26; // [sp+1Dh] [bp-7h]@13 char v27; // [sp+1Eh] [bp-6h]@13 char v28; // [sp+1Fh] [bp-5h]@13 unsigned int v29; // [sp+20h] [bp-4h]@1 int v30; // [sp+24h] [bp+0h]@1 v29 = (unsigned int)&v30 ^ __security_cookie; v1 = 0; v15 = 0; v16 = 0; if ( *(_DWORD *)(a1 + 102872) ) v1 = (*(_BYTE *)(*(_DWORD *)(a1 + 102872) + 3) | (*(_BYTE *)(*(_DWORD *)(a1 + 102872) + 2) << 8)) + 4; v2 = *(_DWORD *)(a1 + 102864); if ( v2 ) { v3 = v2 + 1; do v4 = *(_BYTE *)v2++; while ( v4 ); v15 = v2 - v3; if ( (unsigned int)(v2 - v3) > 0xFFFF ) v15 = 65535; } v5 = *(_DWORD *)(a1 + 102868); if ( v5 ) { v6 = v5 + 1; do v7 = *(_BYTE *)v5++; while ( v7 ); v16 = v5 - v6; if ( (unsigned int)(v5 - v6) > 0xFFFF ) v16 = 65535; } v8 = *(_BYTE *)(a1 + 102856) & 7 | 8; v18 = *(_BYTE *)(a1 + 102856) & 0xF0; v17 = v8; v22 = v15; v19 = BYTE1(v1); v24 = v16; v9 = *(_BYTE *)(a1 + 102847); v21 = BYTE1(v15); v26 = *(_BYTE *)(a1 + 102846); v25 = v9; v10 = *(_BYTE *)(a1 + 102844); v23 = BYTE1(v16); v11 = *(_BYTE *)(a1 + 102845); v20 = v1; v27 = v11; v28 = v10; if ( sub_486C60(a1, &v17, 12) || (!sub_486C60(a1, *(const void **)(a1 + 102872), v1) ? (v12 = sub_486C60(a1, byte_4C760C, -v1 & 3)) : (v12 = *(_DWORD *)(a1 + 102824)), v12 || (!sub_486C60(a1, *(const void **)(a1 + 102864), v15) ? (v13 = sub_486C60(a1, byte_4C760C, -v15 & 3)) : (v13 = *(_DWORD *)(a1 + 102824)), v13 || (!sub_486C60(a1, *(const void **)(a1 + 102868), v16) ? (result = sub_486C60(a1, byte_4C760C, -v16 & 3)) : (result = *(_DWORD *)(a1 + 102824)), result))) ) result = *(_DWORD *)(a1 + 102824); return result; } // 4DE38C: using guessed type int __security_cookie; //----- (00488270) -------------------------------------------------------- int __cdecl sub_488270(int a1) { int v1; // esi@1 int v3; // ebx@3 int (__cdecl *v4)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // eax@6 int v5; // edi@7 int v6; // eax@11 int v7; // eax@12 signed int v8; // eax@17 int v9; // eax@19 int v10; // edi@19 int v11; // edi@24 int v12; // eax@30 signed int v13; // eax@37 void (__cdecl *v14)(_DWORD, _DWORD); // eax@41 int v15; // edi@46 int v16; // eax@47 int v17; // [sp+4h] [bp-8h]@3 int v18; // [sp+8h] [bp-4h]@7 unsigned int v19; // [sp+14h] [bp+8h]@9 v1 = a1; if ( !(*(_BYTE *)(a1 + 8) & 0x80) ) return 0; v3 = *(_DWORD *)(a1 + 102880); v17 = v3; if ( !v3 ) return 0; while ( 1 ) { *(_DWORD *)(v1 + 102844) = *(_DWORD *)(v3 + 8); *(_DWORD *)(v1 + 102864) = *(_DWORD *)(v3 + 12); *(_DWORD *)(v1 + 102868) = *(_DWORD *)(v3 + 16); *(_DWORD *)(v1 + 102872) = *(_DWORD *)(v3 + 20); v4 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(v1 + 24720); *(_BYTE *)(v1 + 102856) = 24; if ( !v4 ) break; v5 = v4(v1, *(_DWORD *)(v3 + 4), *(_DWORD *)(v3 + 12), *(_DWORD *)(v3 + 16), *(_DWORD *)(v3 + 20)); v18 = v5; if ( !v5 ) { if ( !*(_DWORD *)(v1 + 102824) ) break; } v19 = *(_DWORD *)(v3 + 8); if ( !v5 ) return *(_DWORD *)(v1 + 102824); if ( !*(_DWORD *)(v3 + 8) && ((v6 = *(_DWORD *)(v1 + 8), v6 & 0x40) || (v7 = v6 & 3, v7 == 3) || v7 == 2) ) { while ( 1 ) { v11 = (*(int (__cdecl **)(int, int, int, signed int))(v1 + 24736))(v1, v5, v1 + 91392, 1024); if ( (unsigned int)v11 >= 0x400 ) { *(_BYTE *)(v1 + 102856) |= 1u; } else { *(_BYTE *)(v1 + 102856) &= 0xFEu; if ( !*(_DWORD *)v3 ) *(_BYTE *)(v1 + 102856) |= 2u; } *(_DWORD *)(v1 + 102844) = v11; if ( sub_4880A0(v1) ) break; v12 = sub_486C60(v1, (const void *)(v1 + 91392), v11) ? *(_DWORD *)(v1 + 102824) : sub_486C60( v1, byte_4C760C, -v11 & 3); if ( v12 ) break; if ( *(_DWORD *)(v1 + 102864) ) { *(_BYTE *)(v1 + 102856) &= 0xEBu; *(_DWORD *)(v1 + 102864) = 0; *(_DWORD *)(v1 + 102868) = 0; *(_DWORD *)(v1 + 102872) = 0; } if ( (unsigned int)v11 < 0x400 ) break; v5 = v18; } } else { if ( !*(_DWORD *)v3 ) *(_BYTE *)(v1 + 102856) |= 2u; if ( sub_4880A0(v1) ) return *(_DWORD *)(v1 + 102824); while ( 1 ) { v8 = v19; if ( v19 >= 0x400 ) v8 = 1024; v9 = (*(int (__cdecl **)(int, int, int, signed int))(v1 + 24736))(v1, v5, v1 + 91392, v8); v10 = v9; if ( !v9 ) break; if ( sub_486C60(v1, (const void *)(v1 + 91392), v9) || (v19 -= v10) == 0 ) goto LABEL_40; v5 = v18; } v13 = *(_DWORD *)(v1 + 102824); if ( !v13 ) v13 = -1; *(_DWORD *)(v1 + 102824) = v13; LABEL_40: sub_486C60(v1, byte_4C760C, -*(_DWORD *)(v1 + 102844) & 3); v3 = v17; } v14 = *(void (__cdecl **)(_DWORD, _DWORD))(v1 + 24728); if ( v14 ) v14(v1, v18); LABEL_50: v17 = *(_DWORD *)v3; if ( !*(_DWORD *)v3 ) return 0; v3 = *(_DWORD *)v3; } if ( !*(_DWORD *)v3 ) *(_BYTE *)(v1 + 102856) |= 2u; if ( !sub_4880A0(v1) ) { v15 = *(_DWORD *)(v3 + 8); v16 = sub_486C60(v1, *(const void **)(v3 + 4), *(_DWORD *)(v3 + 8)) ? *(_DWORD *)(v1 + 102824) : sub_486C60(v1, byte_4C760C, -v15 & 3); if ( !v16 ) goto LABEL_50; } return *(_DWORD *)(v1 + 102824); } //----- (00488520) -------------------------------------------------------- int __cdecl sub_488520(int a1, int a2) { int result; // eax@2 const void *v3; // eax@3 int v4; // ecx@5 _UNKNOWN *v5; // eax@5 const void *v6; // eax@8 const void *v7; // eax@10 const void *v8; // eax@12 const void *v9; // eax@14 if ( sub_486DC0(a1, "\r\n--", *(const void **)(a1 + 102888), &unk_4C8CFC) ) { result = *(_DWORD *)(a1 + 102824); } else { v3 = *(const void **)(a2 + 16); if ( v3 && sub_486DC0(a1, "Content-Type: ", v3, &unk_4C8CFC) ) goto LABEL_20; v4 = *(_DWORD *)(a2 + 24); v5 = &unk_4C7AD8; if ( v4 != 1 ) { do { if ( !*((_DWORD *)v5 + 1) ) break; v5 = (char *)v5 + 8; } while ( *(_DWORD *)v5 != v4 ); } if ( (v6 = (const void *)*((_DWORD *)v5 + 1)) != 0 && sub_486DC0(a1, "Content-Transfer-Encoding: ", v6, &unk_4C8CFC) || (v7 = *(const void **)(a2 + 12)) != 0 && sub_486DC0(a1, "Content-ID: ", v7, &unk_4C8CFC) || (v8 = *(const void **)(a2 + 28)) != 0 && sub_486DC0(a1, "Content-Location: ", v8, &unk_4C8CFC) || (v9 = *(const void **)(a2 + 32)) != 0 && sub_486DC0(a1, "Content-Description: ", v9, &unk_4C8CFC) ) LABEL_20: result = *(_DWORD *)(a1 + 102824); else result = sub_486C60(a1, &unk_4C8CFC, 2); } return result; } //----- (00488630) -------------------------------------------------------- int __cdecl sub_488630(int a1) { int v1; // esi@1 int v2; // edi@3 int (__cdecl *v4)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // eax@6 int v5; // eax@7 int v6; // ebx@9 int v7; // eax@12 int v8; // eax@13 int v9; // edi@15 signed int v10; // eax@18 int v11; // eax@20 int v12; // edi@20 void (__cdecl *v13)(_DWORD, _DWORD); // eax@26 int v14; // [sp+4h] [bp-8h]@7 unsigned int v15; // [sp+8h] [bp-4h]@9 int v16; // [sp+14h] [bp+8h]@3 v1 = a1; if ( *(_DWORD *)(a1 + 8) & 0x100 && *(_DWORD *)(a1 + 102888) ) { v2 = *(_DWORD *)(a1 + 102900); v16 = v2; if ( !v2 ) return sub_486DC0(v1, "\r\n--", *(const void **)(v1 + 102888), "--"); while ( 1 ) { v4 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(v1 + 24744); if ( v4 ) { v5 = v4(v1, *(_DWORD *)(v2 + 4), *(_DWORD *)(v2 + 12), *(_DWORD *)(v2 + 16), *(_DWORD *)(v2 + 32)); v14 = v5; if ( v5 ) break; if ( *(_DWORD *)(v1 + 102824) ) break; } if ( sub_488520(v1, v2) || sub_486C60(v1, *(const void **)(v2 + 4), *(_DWORD *)(v2 + 8)) ) return *(_DWORD *)(v1 + 102824); LABEL_30: v16 = *(_DWORD *)v2; if ( !*(_DWORD *)v2 ) return sub_486DC0(v1, "\r\n--", *(const void **)(v1 + 102888), "--"); v2 = *(_DWORD *)v2; } v6 = *(_DWORD *)(v2 + 8); v15 = *(_DWORD *)(v2 + 8); if ( !v5 || sub_488520(v1, v2) ) return *(_DWORD *)(v1 + 102824); if ( v6 ) { while ( 1 ) { v10 = v15; if ( v15 >= 0x400 ) v10 = 1024; v11 = (*(int (__cdecl **)(int, int, int, signed int))(v1 + 24760))(v1, v14, v1 + 91392, v10); v12 = v11; if ( !v11 ) break; if ( !sub_486C60(v1, (const void *)(v1 + 91392), v11) ) { v15 -= v12; if ( v15 ) continue; } goto LABEL_25; } *(_DWORD *)(v1 + 102824) = -1; } else { v7 = *(_DWORD *)(v1 + 8); if ( !(v7 & 0x40) ) { v8 = v7 & 3; if ( v8 != 3 ) { if ( v8 != 2 ) goto LABEL_26; } } do v9 = (*(int (__cdecl **)(int, int, int, signed int))(v1 + 24760))(v1, v14, v1 + 91392, 1024); while ( !sub_486C60(v1, (const void *)(v1 + 91392), v9) && v9 ); } LABEL_25: v2 = v16; LABEL_26: v13 = *(void (__cdecl **)(_DWORD, _DWORD))(v1 + 24752); if ( v13 ) v13(v1, v14); goto LABEL_30; } return 0; } //----- (004887E0) -------------------------------------------------------- int __cdecl sub_4887E0(int a1) { int v1; // eax@3 const char *v2; // ST04_4@6 int v3; // eax@6 int v4; // ecx@7 bool v5; // zf@10 int v6; // eax@12 char v7; // cl@13 int v8; // ecx@14 int v9; // eax@14 int v10; // edi@15 char v11; // dl@16 int v12; // ecx@17 int v13; // eax@20 int result; // eax@22 if ( sub_487710(a1, "SOAP-ENV:Envelope") || sub_486C60(a1, &unk_4C8CFC, 2) ) { result = *(_DWORD *)(a1 + 102824); } else { v1 = *(_DWORD *)(a1 + 8); if ( v1 & 8 && (char)v1 < 0 && !(v1 & 0x200) ) { v2 = *(const char **)(a1 + 28); *(_DWORD *)(a1 + 102844) = *(_DWORD *)(a1 + 24812) - *(_DWORD *)(a1 + 102844); sprintf((char *)(a1 + 93440), v2, 0); v3 = *(_DWORD *)(a1 + 92); *(_DWORD *)(a1 + 102864) = a1 + 93440; if ( v3 ) { v4 = *(_DWORD *)(v3 + 12); if ( v4 ) *(_DWORD *)(a1 + 102868) = v4; else *(_DWORD *)(a1 + 102868) = *(_DWORD *)(v3 + 4); } v5 = *(_DWORD *)(a1 + 102880) == 0; *(_DWORD *)(a1 + 102872) = 0; *(_BYTE *)(a1 + 102856) = 36; if ( v5 ) *(_BYTE *)(a1 + 102856) = 38; v6 = a1 + 93440; do v7 = *(_BYTE *)v6++; while ( v7 ); v8 = *(_DWORD *)(a1 + 102868); v9 = v6 - (a1 + 93441); if ( v8 ) { v10 = v8 + 1; do v11 = *(_BYTE *)v8++; while ( v11 ); v12 = (v8 - v10 + 3) & 0xFFFFFFFC; } else { v12 = 0; } *(_DWORD *)(a1 + 24812) += ((v9 + 3) & 0xFFFFFFFC) + v12 + 12; } v13 = *(_DWORD *)(a1 + 8); if ( (char)v13 >= 0 || v13 & 0x200 ) { *(_WORD *)(a1 + 99668) = 8; result = 0; } else { result = sub_486C60(a1, byte_4C760C, -*(_DWORD *)(a1 + 102844) & 3); } } return result; } //----- (00488930) -------------------------------------------------------- int __cdecl sub_488930(int a1) { int result; // eax@4 int v2; // eax@5 int v3; // ebx@8 const char *v4; // esi@9 void *v5; // eax@14 int v6; // ecx@15 void *v7; // edx@15 char v8; // al@16 void *v9; // eax@21 int v10; // ecx@22 void *v11; // edx@22 char v12; // al@23 *(_WORD *)(a1 + 99668) = 2; if ( !sub_487800(a1, "SOAP-ENV:Envelope", 0, 0) ) { v3 = *(_DWORD *)(a1 + 92); if ( v3 ) { v4 = *(const char **)(v3 + 12); if ( !v4 ) v4 = *(const char **)(v3 + 4); if ( strcmp(v4, "http://schemas.xmlsoap.org/soap/envelope/") ) { if ( !strcmp(v4, "http://www.w3.org/2003/05/soap-envelope") ) { *(_WORD *)(a1 + 6) = 2; if ( *(_DWORD *)(v3 + 28) ) free(*(void **)(v3 + 28)); v9 = malloc(0x28u); *(_DWORD *)(v3 + 28) = v9; if ( v9 ) { v10 = (int)"http://www.w3.org/2003/05/soap-encoding"; v11 = v9; do { v12 = *(_BYTE *)v10; *(_BYTE *)v11 = *(_BYTE *)v10++; v11 = (char *)v11 + 1; } while ( v12 ); } } } else { *(_WORD *)(a1 + 6) = 1; if ( *(_DWORD *)(v3 + 28) ) free(*(void **)(v3 + 28)); v5 = malloc(0x2Au); *(_DWORD *)(v3 + 28) = v5; if ( v5 ) { v6 = (int)"http://schemas.xmlsoap.org/soap/encoding/"; v7 = v5; do { v8 = *(_BYTE *)v6; *(_BYTE *)v7 = *(_BYTE *)v6++; v7 = (char *)v7 + 1; } while ( v8 ); return 0; } } } return 0; } if ( *(_DWORD *)(a1 + 102824) != 3 || sub_487800(a1, "Envelope", 0, 0) ) { v2 = *(_DWORD *)(a1 + 102820); if ( v2 ) *(_DWORD *)(a1 + 102824) = v2; result = *(_DWORD *)(a1 + 102824); } else { *(_DWORD *)(a1 + 102824) = 39; result = *(_DWORD *)(a1 + 102824); } return result; } //----- (00488AB0) -------------------------------------------------------- int __cdecl sub_488AB0(int a1) { int result; // eax@2 if ( sub_487710(a1, "SOAP-ENV:Body") ) { result = *(_DWORD *)(a1 + 102824); } else { *(_WORD *)(a1 + 99668) = 7; result = 0; } return result; } //----- (00488AF0) -------------------------------------------------------- int __cdecl sub_488AF0(int a1) { int result; // eax@2 *(_WORD *)(a1 + 99668) = 6; if ( sub_487800(a1, "SOAP-ENV:Body", 0, 0) ) { result = *(_DWORD *)(a1 + 102824); } else { if ( !*(_WORD *)(a1 + 24806) ) *(_WORD *)(a1 + 99668) = 5; result = 0; } return result; } //----- (00488B40) -------------------------------------------------------- int __cdecl sub_488B40(int a1) { int v1; // eax@2 int result; // eax@3 int v3; // ecx@8 int v4; // eax@8 signed int v5; // eax@10 int v6; // eax@11 int v7; // edi@18 int v8; // eax@18 int v9; // ecx@19 int v10; // edx@20 int v11; // edi@21 int v12; // eax@22 int v13; // eax@22 int v14; // edi@23 int v15; // eax@23 void *v16; // ST18_4@24 int v17; // edi@24 if ( *(_DWORD *)(a1 + 102876) ) { **(_DWORD **)(a1 + 102884) = *(_DWORD *)(a1 + 102880); v1 = *(_DWORD *)(a1 + 102876); *(_DWORD *)(a1 + 102880) = *(_DWORD *)v1; *(_DWORD *)v1 = 0; *(_DWORD *)(a1 + 102884) = *(_DWORD *)(a1 + 102876); } result = sub_488270(a1); if ( !result ) result = sub_488630(a1); *(_DWORD *)(a1 + 102896) = 0; *(_DWORD *)(a1 + 102900) = 0; *(_DWORD *)(a1 + 102904) = 0; *(_DWORD *)(a1 + 102876) = 0; *(_DWORD *)(a1 + 102880) = 0; *(_DWORD *)(a1 + 102884) = 0; if ( !result ) { if ( !(*(_BYTE *)(a1 + 8) & 3) ) goto LABEL_31; if ( sub_482BF0(a1) ) return *(_DWORD *)(a1 + 102824); v3 = *(_DWORD *)(a1 + 8); v4 = *(_DWORD *)(a1 + 8) & 3; if ( v4 == 2 ) { if ( v3 & 0x40 ) goto LABEL_18; v5 = *(_DWORD *)(a1 + 102820); *(_DWORD *)(a1 + 8) = v3 - 1; if ( v5 < 2000 ) { if ( v5 == 1000 ) { LABEL_15: if ( !*(_DWORD *)(a1 + 102824) && !sub_482BF0(a1) ) { ++*(_DWORD *)(a1 + 8); LABEL_18: v7 = *(_DWORD *)(a1 + 100); v8 = *(_DWORD *)(v7 + 4); if ( v8 ) { v9 = 0; do { v10 = *(_DWORD *)v8; *(_DWORD *)v8 = v9; v9 = v8; v8 = v10; } while ( v10 ); *(_DWORD *)(v7 + 4) = v9; v11 = v9 + 8; if ( v9 != -8 ) { while ( 1 ) { v12 = sub_47C560(a1, 0); v13 = (*(int (__cdecl **)(int, int, int))(a1 + 24636))(a1, v11, v12); *(_DWORD *)(a1 + 102824) = v13; if ( v13 ) break; v14 = *(_DWORD *)(a1 + 100); v15 = *(_DWORD *)(v14 + 4); if ( v15 ) { v16 = *(void **)(v14 + 4); *(_DWORD *)(v14 + 4) = *(_DWORD *)v15; free(v16); v17 = *(_DWORD *)(v14 + 4); if ( v17 ) { v11 = v17 + 8; if ( v11 ) continue; } } goto LABEL_26; } sub_47C580(a1, 0); return *(_DWORD *)(a1 + 102824); } } LABEL_26: sub_47C580(a1, 0); goto LABEL_31; } return *(_DWORD *)(a1 + 102824); } v6 = (*(int (__cdecl **)(int, signed int, _DWORD))(a1 + 24588))(a1, v5, *(_DWORD *)(*(_DWORD *)(a1 + 100) + 8)); } else { v6 = (*(int (__cdecl **)(int, int, int, _DWORD, int, _DWORD, _DWORD))(a1 + 24556))( a1, a1 + 99688, a1 + 101736, *(_DWORD *)(a1 + 102772), a1 + 100712, *(_DWORD *)(a1 + 102760), *(_DWORD *)(*(_DWORD *)(a1 + 100) + 8)); } *(_DWORD *)(a1 + 102824) = v6; goto LABEL_15; } if ( v4 != 3 || (result = (*(int (__cdecl **)(int, _DWORD, signed int))(a1 + 24636))(a1, "\r\n0\r\n\r\n", 7), (*(_DWORD *)(a1 + 102824) = result) == 0) ) { LABEL_31: *(_DWORD *)(a1 + 16) &= 0x7FFFFFFFu; *(_DWORD *)(a1 + 24812) = 0; *(_WORD *)(a1 + 99668) = 9; return 0; } } return result; } //----- (00488D50) -------------------------------------------------------- int __cdecl sub_488D50(int a1, const char *a2) { int v2; // esi@1 int i; // edi@2 int j; // edi@7 const char *v5; // eax@10 int v6; // edi@14 int result; // eax@18 char *v8; // ebx@23 int v9; // ecx@24 int v10; // eax@24 int v11; // ebx@27 int v12; // eax@44 char v13; // dl@45 int v14; // [sp+14h] [bp+8h]@14 v2 = a1; if ( *(_DWORD *)(a1 + 8) & 0x10000 ) { for ( i = *(_DWORD *)(a1 + 99656); i; i = *(_DWORD *)i ) { if ( *(_WORD *)(i + 20) && i != -22 ) sub_47DC50(a1, (const char *)(i + 22)); } for ( j = *(_DWORD *)(a1 + 96); j; j = *(_DWORD *)j ) { if ( *(_WORD *)(j + 8) == 1 && *(_DWORD *)(j + 12) ) { v5 = "xmlns:%s"; if ( !*(_BYTE *)(j + 16) ) v5 = "xmlns"; sprintf((char *)(a1 + 91392), v5, j + 16); sub_47DD00(a1, (char *)(a1 + 91392), *(const char **)(j + 12), 1); *(_WORD *)(j + 8) = 2; } } } v6 = *(_DWORD *)(a1 + 99656); v14 = v6; if ( v6 ) { while ( 1 ) { if ( !*(_WORD *)(v6 + 20) ) goto LABEL_40; if ( !(*(_DWORD *)(v2 + 8) & 0x8000) || (v8 = strchr((const char *)(v6 + 22), 58)) == 0 ) { if ( sub_486C60(v2, " ", 1) ) goto LABEL_47; if ( v6 != -22 ) { v12 = v6 + 22; do v13 = *(_BYTE *)v12++; while ( v13 ); if ( sub_486C60(v2, (const void *)(v6 + 22), v12 - (v6 + 23)) ) goto LABEL_47; } goto LABEL_34; } v9 = v14; v10 = *(_DWORD *)(v2 + 96); if ( v10 ) { if ( !strncmp((const char *)(v10 + 16), (const char *)(v14 + 22), (size_t)&v8[-v14 - 22]) && !*(&v8[*(_DWORD *)(v2 + 96) - 6] - v14) ) { v11 = (int)(v8 + 1); goto LABEL_30; } v9 = v14; } v11 = v9 + 22; LABEL_30: if ( sub_486C60(v2, " ", 1) || v11 && sub_486C60(v2, (const void *)v11, strlen((const char *)v11)) ) goto LABEL_47; v6 = v14; LABEL_34: if ( *(_WORD *)(v6 + 20) == 2 && *(_DWORD *)(v6 + 8) && (sub_486C60(v2, "=\"", 2) || sub_487910(v2, *(_DWORD *)(v6 + 8), *(_WORD *)(v6 + 4)) || sub_486C60(v2, &word_4B8FF0, 1)) ) goto LABEL_47; *(_WORD *)(v6 + 20) = 0; LABEL_40: v14 = *(_DWORD *)v6; if ( !*(_DWORD *)v6 ) break; v6 = *(_DWORD *)v6; } } if ( a2 ) { if ( *(_DWORD *)(v2 + 8) & 0x10000 ) { if ( sub_486C60(v2, &unk_4C8D04, 1) || (result = sub_487710(v2, a2)) != 0 ) LABEL_47: result = *(_DWORD *)(v2 + 102824); } else { --*(_DWORD *)(v2 + 24808); result = sub_486C60(v2, "/>", 2); } } else { result = sub_486C60(v2, &unk_4C8D04, 1); } return result; } //----- (00488FD0) -------------------------------------------------------- void __cdecl sub_488FD0(int a1) { void *v1; // eax@4 void *v2; // edi@4 int v3; // eax@8 if ( *(_WORD *)(a1 + 6) == 2 ) { if ( *(_DWORD *)(a1 + 40) ) { if ( !sub_487800(a1, ":result", 1, 0) ) { v1 = sub_47D480(a1, 4u); v2 = v1; if ( v1 ) { if ( *(_WORD *)(a1 + 99664) ) { *(_DWORD *)v1 = 0; } else { if ( *(_WORD *)(a1 + 24806) ) { v3 = sub_4850A0(a1, 2, -1, -1); *(_DWORD *)v2 = v3; if ( !v3 || !sub_47D7E0(a1, a1 + 93440, v3, 0, 4u, 0, 0, 0, 0) ) return; } else { *(_DWORD *)v1 = sub_47FDA0(a1, byte_4C760C); } } if ( *(_BYTE *)(a1 + 94464) ) sub_47D630(a1, a1 + 94464, v2, 0, 4, 0); if ( *(_WORD *)(a1 + 24806) ) sub_483EA0(a1, ":result"); } } } } } //----- (004890C0) -------------------------------------------------------- int __cdecl sub_4890C0(int a1, const char *a2, const char *a3) { char v3; // al@3 if ( *(_DWORD *)(a1 + 8) & 0x10000 ) { if ( !strncmp(a2, "xmlns", 5u) ) { v3 = a2[5]; if ( v3 == 58 || !v3 ) { sub_47DAE0(a1, &a2[(v3 == 58) + 5], a3, 0); return 0; } } if ( sub_47DD00(a1, (char *)a2, a3, 1) ) return *(_DWORD *)(a1 + 102824); } else { if ( sub_486C60(a1, " ", 1) || a2 && sub_486C60(a1, a2, strlen(a2)) || a3 && (sub_486C60(a1, "=\"", 2) || sub_487910(a1, (wchar_t)a3, 1) || sub_486C60(a1, &word_4B8FF0, 1)) ) return *(_DWORD *)(a1 + 102824); } return 0; } //----- (004891C0) -------------------------------------------------------- int __usercall sub_4891C0(const char *a1, int a2, int a3, int a4, const char *a5) { const char *v5; // edi@1 int v6; // eax@1 char v7; // dl@2 int (__cdecl *v8)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@3 int result; // eax@4 int (__cdecl *v10)(_DWORD); // eax@13 int v11; // eax@24 int v12; // ebx@26 int v13; // edi@29 const char *v14; // [sp+8h] [bp-410h]@1 int v15; // [sp+10h] [bp-408h]@3 int v16; // [sp+10h] [bp-408h]@22 char v17[1024]; // [sp+14h] [bp-404h]@2 unsigned int v18; // [sp+414h] [bp-4h]@1 int v19; // [sp+418h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; v5 = a1; v6 = a3 + 101736; v14 = a1; *(_DWORD *)(a3 + 102824) = 0; do { v7 = *(_BYTE *)v6; *(&v17[v6 - 101736] - a3) = *(_BYTE *)v6; ++v6; } while ( v7 ); v15 = *(_DWORD *)(a3 + 102772); *(_DWORD *)(a3 + 102820) = a4; sub_47ED50(a3, a1); v8 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(a3 + 24608); if ( v8 ) { result = v8(a3, v5, a3 + 101736, *(_DWORD *)(a3 + 102772)); *(_DWORD *)(a3 + 102824) = result; if ( result ) return result; } else { *(_DWORD *)(a3 + 102760) = sub_47FDA0(a3, a5); } if ( *(_DWORD *)(a3 + 24624) ) { if ( *(_BYTE *)(a3 + 101736) ) { if ( !*(_WORD *)(a3 + 102776) || *(_DWORD *)(a3 + 24772) == -1 || strcmp((const char *)(a3 + 101736), v17) || *(_DWORD *)(a3 + 102772) != v15 || (v10 = *(int (__cdecl **)(_DWORD))(a3 + 24644)) == 0 || v10(a3) ) { *(_DWORD *)(a3 + 102824) = 0; if ( strncmp(v5, "soap.udp:", 9u) ) { *(_DWORD *)(a3 + 16) &= 0xFFFFFFFBu; *(_WORD *)(a3 + 102776) = 0; } else { *(_DWORD *)(a3 + 16) |= 4u; } sub_47CCB0(a3); if ( !*(_WORD *)(a3 + 102776) || *(_DWORD *)(a3 + 24772) == -1 ) { *(_DWORD *)(a3 + 24772) = (*(int (__cdecl **)(int, const char *, int, _DWORD))(a3 + 24624))( a3, v5, a3 + 101736, *(_DWORD *)(a3 + 102772)); result = *(_DWORD *)(a3 + 102824); if ( result ) return result; *(_WORD *)(a3 + 102776) = (*(_DWORD *)(a3 + 16) >> 4) & 1; } } } } v16 = sub_47E590(a3); if ( sub_483B30(a3) ) return *(_DWORD *)(a3 + 102824); v11 = a4; if ( a4 == 2002 ) *(_DWORD *)(a3 + 8) = *(_DWORD *)(a3 + 8) & 0xFFFFFFFD | 1; v12 = *(_DWORD *)(a3 + 8); if ( (*(_DWORD *)(a3 + 8) & 3) == 2 || v12 & 0x40 || !v5 ) goto LABEL_35; v13 = *(_DWORD *)(a3 + 8) & 3; *(_DWORD *)(a3 + 8) = v12 & 0xFFFFFBFC; if ( v12 & 3 ) *(_DWORD *)(a3 + 8) = v12 & 0xFFFFFBFC | 1; result = (*(int (__cdecl **)(int, const char *, int, _DWORD, int, const char *, int))(a3 + 24556))( a3, v14, a3 + 101736, *(_DWORD *)(a3 + 102772), a3 + 100712, a5, v16); *(_DWORD *)(a3 + 102824) = result; if ( !result ) { if ( v13 == 3 && sub_482BF0(a3) ) return *(_DWORD *)(a3 + 102824); v11 = a4; *(_DWORD *)(a3 + 8) = v12; LABEL_35: if ( v11 == 2002 || v11 == 2004 ) result = sub_488B40(a3); else result = 0; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4891C0: using guessed type char var_404[1024]; //----- (00489490) -------------------------------------------------------- int __cdecl sub_489490(int a1) { int v1; // edi@1 int v2; // eax@1 v1 = *(_DWORD *)(a1 + 16); v2 = *(_DWORD *)(a1 + 16) & 3; *(_DWORD *)(a1 + 24812) = 0; if ( (_BYTE)v2 == 3 ) *(_DWORD *)(a1 + 16) = v1 & 0xFFFFFFFD | 1; if ( !sub_487650(a1, 200) && !sub_488B40(a1) ) *(_DWORD *)(a1 + 102824) = 1000; *(_DWORD *)(a1 + 16) = v1; return sub_47CCB0(a1); } //----- (00489500) -------------------------------------------------------- int __cdecl sub_489500(int a1, const char *a2, int a3, const char *a4) { int v4; // esi@1 __int16 v5; // ax@1 int v6; // ecx@1 const void *v7; // edx@3 char *v9; // eax@14 int v10; // edi@15 size_t v11; // ebx@15 int v12; // eax@17 const char *v13; // eax@21 const char *v14; // eax@29 const char *v15; // edi@32 int v16; // edi@42 const char *v17; // eax@48 int v18; // ecx@58 const char *v19; // eax@60 char *v20; // eax@61 signed int v21; // eax@65 signed int v22; // edi@72 int v23; // ebx@73 int v24; // eax@74 char v25; // cl@75 int v26; // edi@77 char v27; // al@78 int v28; // eax@81 const char *v29; // ecx@83 const char *v30; // eax@86 int v31; // ecx@91 int v32; // eax@92 int v33; // ecx@94 bool v34; // zf@100 char *v35; // [sp+10h] [bp+8h]@14 signed int v36; // [sp+10h] [bp+8h]@40 v4 = a1; v5 = *(_WORD *)(a1 + 99666); ++*(_DWORD *)(v4 + 24808); v6 = *(_DWORD *)(a1 + 24808); if ( v5 ) { if ( *(_DWORD *)(a1 + 8) & 0x2000 ) { if ( v5 == 1 ) { if ( (unsigned int)v6 >= 0xB ) v6 = 10; if ( sub_486C60(a1, "\n\t\t\t\t\t\t\t\t\t", v6) ) return *(_DWORD *)(a1 + 102824); } *(_WORD *)(a1 + 24806) = 1; } } else { if ( !(*(_DWORD *)(a1 + 8) & 0x10000) ) { v7 = *(const void **)(a1 + 102764); if ( !v7 ) v7 = "\n"; if ( sub_486C60(a1, v7, strlen((const char *)v7)) ) return *(_DWORD *)(a1 + 102824); } } if ( *(_DWORD *)(a1 + 8) & 0x8000 && (v9 = strchr(a2, 58), (v35 = v9) != 0) ) { v10 = *(_DWORD *)(v4 + 92); v11 = v9 - a2; if ( sub_486C60(v4, "<", 1) || sub_486D90(v4, v35 + 1) ) return *(_DWORD *)(v4 + 102824); v12 = *(_DWORD *)(v4 + 96); if ( (!v12 || strncmp((const char *)(v12 + 16), a2, v11) || *(_BYTE *)(*(_DWORD *)(v4 + 96) + v11 + 16)) && v10 ) { do { v13 = *(const char **)v10; if ( !*(_DWORD *)v10 ) break; if ( *v13 && (*(_DWORD *)(v10 + 12) || *(_DWORD *)(v10 + 4)) && !strncmp(v13, a2, v11) && !*(_BYTE *)(v11 + *(_DWORD *)v10) ) { v14 = *(const char **)(v10 + 12); if ( !v14 ) v14 = *(const char **)(v10 + 4); sub_47DAE0(v4, *(const char **)v10, v14, 0); if ( *(_DWORD *)(v10 + 12) ) v15 = *(const char **)(v10 + 12); else v15 = *(const char **)(v10 + 4); if ( !sub_4890C0(v4, "xmlns", v15) ) break; return *(_DWORD *)(v4 + 102824); } v10 += 16; } while ( v10 ); } } else { if ( sub_486C60(v4, "<", 1) || a2 && sub_486C60(v4, a2, strlen(a2)) ) return *(_DWORD *)(v4 + 102824); } if ( !*(_WORD *)(v4 + 99666) ) { v36 = -1; if ( *(_DWORD *)(v4 + 8) & 0x8000 ) v36 = 4; v16 = *(_DWORD *)(v4 + 92); if ( v16 ) { while ( *(_DWORD *)v16 && v36 ) { if ( **(_BYTE **)v16 && (*(_DWORD *)(v16 + 12) || *(_DWORD *)(v16 + 4)) ) { sprintf((char *)(v4 + 91392), "xmlns:%s", *(_DWORD *)v16); v17 = *(const char **)(v16 + 12); if ( !v17 ) v17 = *(const char **)(v16 + 4); if ( sub_4890C0(v4, (const char *)(v4 + 91392), v17) ) return *(_DWORD *)(v4 + 102824); } --v36; v16 += 16; if ( !v16 ) break; } } } *(_WORD *)(v4 + 99666) = 1; if ( *(_DWORD *)(v4 + 8) & 0x10000 ) sub_47DC50(v4, a2); if ( a3 > 0 ) { sprintf((char *)(v4 + 91392), "_%d", a3); if ( sub_4890C0(v4, "id", (const char *)(v4 + 91392)) ) return *(_DWORD *)(v4 + 102824); } if ( a4 ) { if ( *a4 ) { v18 = *(_DWORD *)(v4 + 8); if ( !(v18 & 0x80000) ) { if ( *(_WORD *)(v4 + 99668) != 3 ) { v19 = a4; if ( v18 & 0x8000 ) { v20 = strchr(a4, 58); if ( v20 ) v19 = v20 + 1; else v19 = a4; } if ( *(_DWORD *)(v4 + 99656) ) v21 = sub_47DD00(v4, "xsi:type", v19, 1); else v21 = sub_4890C0(v4, "xsi:type", v19); if ( v21 ) return *(_DWORD *)(v4 + 102824); if ( *(_DWORD *)(v4 + 8) & 0x10000 ) sub_47DC50(v4, a4); } } } } if ( *(_WORD *)(v4 + 99664) && *(_DWORD *)(v4 + 99588) > 0 ) { sprintf((char *)(v4 + 91392), "[%d", *(_DWORD *)(v4 + 99592)); v22 = 1; if ( *(_DWORD *)(v4 + 99588) > 1 ) { v23 = v4 + 99596; do { v24 = v4 + 91392; do v25 = *(_BYTE *)v24++; while ( v25 ); sprintf((char *)(v4 + v24 - (v4 + 91393) + 91392), ",%d", *(_DWORD *)v23); ++v22; v23 += 4; } while ( v22 < *(_DWORD *)(v4 + 99588) ); } v26 = v4 + 91391; do v27 = *(_BYTE *)(v26++ + 1); while ( v27 ); *(_WORD *)v26 = word_4C7B18; if ( sub_4890C0(v4, "SOAP-ENC:position", (const char *)(v4 + 91392)) ) return *(_DWORD *)(v4 + 102824); } if ( *(_WORD *)(v4 + 99662) ) { v28 = *(_DWORD *)(v4 + 44); if ( v28 && *(_BYTE *)v28 ) { v29 = "SOAP-ENV:role"; if ( *(_WORD *)(v4 + 6) != 2 ) v29 = "SOAP-ENV:actor"; if ( sub_4890C0(v4, v29, *(const char **)(v4 + 44)) ) return *(_DWORD *)(v4 + 102824); } v30 = "true"; if ( *(_WORD *)(v4 + 6) != 2 ) v30 = "1"; if ( sub_4890C0(v4, "SOAP-ENV:mustUnderstand", v30) ) return *(_DWORD *)(v4 + 102824); *(_WORD *)(v4 + 99662) = 0; } if ( *(_WORD *)(v4 + 99660) ) { v31 = *(_DWORD *)(v4 + 40); if ( !v31 || (v32 = *(_DWORD *)(v4 + 92)) == 0 ) goto LABEL_105; if ( !*(_BYTE *)v31 ) { v33 = *(_DWORD *)(v32 + 28); if ( v33 ) *(_DWORD *)(v4 + 40) = v33; else *(_DWORD *)(v4 + 40) = *(_DWORD *)(v32 + 20); } if ( !*(_DWORD *)(v4 + 40) || !sub_4890C0(v4, "SOAP-ENV:encodingStyle", *(const char **)(v4 + 40)) ) { LABEL_105: *(_WORD *)(v4 + 99660) = 0; goto LABEL_100; } return *(_DWORD *)(v4 + 102824); } LABEL_100: v34 = *(_WORD *)(v4 + 99670) == 1; *(_WORD *)(v4 + 99664) = 0; *(_DWORD *)(v4 + 99588) = 0; if ( v34 ) *(_WORD *)(v4 + 99670) = 0; return 0; } // 4C7B18: using guessed type __int16 word_4C7B18; //----- (004899E0) -------------------------------------------------------- int __cdecl sub_4899E0(int a1, const char *a2, int a3, const char *a4) { int result; // eax@2 if ( *a2 == 45 ) { result = 0; } else { if ( sub_489500(a1, a2, a3, a4) ) result = *(_DWORD *)(a1 + 102824); else result = sub_488D50(a1, 0); } return result; } //----- (00489A20) -------------------------------------------------------- int __cdecl sub_489A20(int a1, const char *a2, int a3, const char *a4) { int v4; // esi@1 int result; // eax@8 v4 = *(_DWORD *)(a1 + 99656); if ( v4 ) { while ( !*(_WORD *)(v4 + 20) ) { v4 = *(_DWORD *)v4; if ( !v4 ) goto LABEL_4; } } else { LABEL_4: if ( (*(_WORD *)(a1 + 6) != 2 || *(_DWORD *)(a1 + 99588) <= 0) && a3 <= 0 && !(*(_DWORD *)(a1 + 8) & 0x40000) ) { *(_DWORD *)(a1 + 99588) = 0; *(_DWORD *)(a1 + 99662) = 65536; return 0; } } if ( sub_489500(a1, a2, a3, a4) || !v4 && sub_4890C0(a1, "xsi:nil", "true") ) result = *(_DWORD *)(a1 + 102824); else result = sub_488D50(a1, a2); return result; } //----- (00489AD0) -------------------------------------------------------- int __cdecl sub_489AD0(int a1, wchar_t a2) { int result; // eax@8 if ( *(_WORD *)(a1 + 6) == 2 && *(_DWORD *)(a1 + 40) && (sub_489500(a1, "SOAP-RPC:result", 0, 0) || sub_4890C0(a1, "xmlns:SOAP-RPC", "http://www.w3.org/2003/05/soap-rpc") || sub_488D50(a1, 0) || sub_487910(a1, a2, 0) || sub_487710(a1, "SOAP-RPC:result")) ) result = *(_DWORD *)(a1 + 102824); else result = 0; return result; } //----- (00489B60) -------------------------------------------------------- int __cdecl sub_489B60(int a1, const char *a2, int a3, unsigned int a4, const char *a5, int a6) { int v6; // eax@1 int v7; // eax@3 int result; // eax@7 v6 = sub_47D170(a1, a3, a4, a6); if ( *a2 != 45 && (!sub_489500(a1, a2, v6, a5) ? (v7 = sub_488D50(a1, 0)) : (v7 = *(_DWORD *)(a1 + 102824)), v7) || (sprintf((char *)(a1 + 91392), "%ld", *(_DWORD *)a4), sub_487910(a1, a1 + 25856, 0)) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (00489BF0) -------------------------------------------------------- int __cdecl sub_489BF0(int a1, const char *a2, int a3, unsigned int a4, const char *a5, int a6) { int v6; // eax@1 int v7; // eax@3 int result; // eax@7 v6 = sub_47D170(a1, a3, a4, a6); if ( *a2 != 45 && (!sub_489500(a1, a2, v6, a5) ? (v7 = sub_488D50(a1, 0)) : (v7 = *(_DWORD *)(a1 + 102824)), v7) || (sprintf((char *)(a1 + 91392), "%ld", *(_BYTE *)a4), sub_487910(a1, a1 + 25856, 0)) ) result = *(_DWORD *)(a1 + 102824); else result = sub_487710(a1, a2); return result; } //----- (00489C90) -------------------------------------------------------- int __cdecl sub_489C90(int a1) { int v1; // ebx@1 int v2; // eax@2 int v3; // edx@4 char v4; // cl@5 int v5; // edx@6 int v6; // eax@6 int v7; // esi@6 char v8; // cl@7 int v9; // eax@11 int v10; // eax@18 char v11; // cl@19 int result; // eax@21 int v13; // ecx@22 int v14; // eax@22 v1 = *(_DWORD *)(a1 + 8); if ( v1 & 0x100 ) { v2 = *(_DWORD *)(a1 + 102888); if ( v2 ) { if ( *(_DWORD *)(a1 + 102892) ) { v3 = v2 + 1; do v4 = *(_BYTE *)v2++; while ( v4 ); v5 = v2 - v3; v6 = *(_DWORD *)(a1 + 102892); v7 = v6 + 1; do v8 = *(_BYTE *)v6++; while ( v8 ); if ( (unsigned int)(v5 + v6 - v7) < 0x3B0 ) { if ( (char)v1 >= 0 || v1 & 0x200 ) { if ( *(_WORD *)(a1 + 6) == 2 ) { v9 = (int)(v1 & 0x200 ? "application/xop+xml; charset=utf-8; type=\"application/soap+xml\"" : "application/soap+xml; charset=utf-8"); } else { v9 = (int)"application/xop+xml; charset=utf-8; type=\"text/xml\""; if ( !(v1 & 0x200) ) v9 = (int)"text/xml; charset=utf-8"; } } else { v9 = (int)"application/dime"; } sprintf( (char *)(a1 + 91392), "--%s\r\nContent-Type: %s\r\nContent-Transfer-Encoding: binary\r\nContent-ID: %s\r\n\r\n", *(_DWORD *)(a1 + 102888), v9, *(_DWORD *)(a1 + 102892)); v10 = a1 + 91392; do v11 = *(_BYTE *)v10++; while ( v11 ); if ( sub_486C60(a1, (const void *)(a1 + 91392), v10 - (a1 + 91393)) ) goto LABEL_31; } } } } v13 = *(_DWORD *)(a1 + 8); v14 = *(_DWORD *)(a1 + 8) & 8; if ( *(_DWORD *)(a1 + 8) & 8 ) *(_DWORD *)(a1 + 102844) = *(_DWORD *)(a1 + 24812); if ( !v14 && (char)v13 < 0 && sub_4880A0(a1) || (*(_WORD *)(a1 + 99668) = 2, sub_489500(a1, "SOAP-ENV:Envelope", 0, 0)) ) LABEL_31: result = *(_DWORD *)(a1 + 102824); else result = sub_488D50(a1, 0); return result; } //----- (00489DE0) -------------------------------------------------------- int __cdecl sub_489DE0(int a1) { bool v1; // zf@1 int result; // eax@5 v1 = *(_WORD *)(a1 + 6) == 1; *(_WORD *)(a1 + 99668) = 6; if ( v1 ) *(_WORD *)(a1 + 99660) = 1; if ( *(_DWORD *)(a1 + 8) & 0x80000000 && sub_47DD00(a1, "wsu:Id", "Body", 1) || sub_489500(a1, "SOAP-ENV:Body", 0, 0) ) result = *(_DWORD *)(a1 + 102824); else result = sub_488D50(a1, 0); return result; } //----- (00489E60) -------------------------------------------------------- int __fastcall sub_489E60(int a1, int a2, int a3, int a4, const char *a5, const char *a6) { const char *v6; // edi@1 char *v7; // ebx@2 int v8; // eax@5 char v9; // cl@6 int v10; // edi@7 int (__cdecl *v11)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@7 int v12; // eax@8 void *v13; // eax@10 const char *v14; // ecx@12 const char v15; // dl@13 int (__cdecl *v16)(_DWORD); // eax@21 int v17; // ebx@34 int v18; // edi@37 int v20; // [sp+10h] [bp-414h]@7 int v21; // [sp+10h] [bp-414h]@30 char *v22; // [sp+18h] [bp-40Ch]@2 void *v23; // [sp+1Ch] [bp-408h]@3 char v24[1024]; // [sp+20h] [bp-404h]@6 unsigned int v25; // [sp+420h] [bp-4h]@1 int v26; // [sp+424h] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v6 = a5; if ( !a5 || (v7 = strchr(a5, 32), (v22 = v7) == 0) ) { sub_4891C0(a5, a2, a3, a4, a6); return *(_DWORD *)(a3 + 102824); } v23 = malloc(strlen(a5) + 1); while ( 1 ) { strncpy((char *)v23, v6, v7 - v6); v7[v23 - v6] = 0; *(_DWORD *)(a3 + 102824) = 0; v8 = a3 + 101736; do { v9 = *(_BYTE *)v8; *(&v24[v8 - 101736] - a3) = *(_BYTE *)v8; ++v8; } while ( v9 ); v10 = a4; v20 = *(_DWORD *)(a3 + 102772); *(_DWORD *)(a3 + 102820) = a4; sub_47ED50(a3, (const char *)v23); v11 = *(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(a3 + 24608); if ( v11 ) { v12 = v11(a3, v23, a3 + 101736, *(_DWORD *)(a3 + 102772)); *(_DWORD *)(a3 + 102824) = v12; if ( v12 ) goto LABEL_48; } else { v13 = 0; if ( a6 ) { v13 = sub_47D480(a3, strlen(a6) + 1); if ( v13 ) { v14 = a6; do { v15 = *v14; v14[v13 - a6] = *v14; ++v14; } while ( v15 ); } } v10 = a4; *(_DWORD *)(a3 + 102760) = v13; } if ( !*(_DWORD *)(a3 + 24624) ) break; if ( !*(_BYTE *)(a3 + 101736) ) break; if ( *(_WORD *)(a3 + 102776) ) { if ( *(_DWORD *)(a3 + 24772) != -1 ) { if ( !strcmp((const char *)(a3 + 101736), v24) ) { if ( *(_DWORD *)(a3 + 102772) == v20 ) { v16 = *(int (__cdecl **)(_DWORD))(a3 + 24644); if ( v16 ) { if ( !v16(a3) ) break; } } } } } *(_DWORD *)(a3 + 102824) = 0; if ( strncmp((const char *)v23, "soap.udp:", 9u) ) { *(_DWORD *)(a3 + 16) &= 0xFFFFFFFBu; *(_WORD *)(a3 + 102776) = 0; } else { *(_DWORD *)(a3 + 16) |= 4u; } sub_47CCB0(a3); if ( *(_WORD *)(a3 + 102776) ) { if ( *(_DWORD *)(a3 + 24772) != -1 ) break; } *(_DWORD *)(a3 + 24772) = (*(int (__cdecl **)(int, void *, int, _DWORD))(a3 + 24624))( a3, v23, a3 + 101736, *(_DWORD *)(a3 + 102772)); v12 = *(_DWORD *)(a3 + 102824); if ( !v12 ) { *(_WORD *)(a3 + 102776) = (*(_DWORD *)(a3 + 16) >> 4) & 1; break; } LABEL_48: if ( v12 != 28 || !*v7 ) goto LABEL_54; for ( *(_DWORD *)(a3 + 102824) = 0; *v7 == 32; ++v7 ) ; v6 = v7; v22 = strchr(v7, 32); if ( !v22 ) v22 = &v7[strlen(v7)]; v7 = v22; } v21 = sub_47E590(a3); if ( sub_483B30(a3) ) { v12 = *(_DWORD *)(a3 + 102824); goto LABEL_48; } if ( v10 == 2002 ) *(_DWORD *)(a3 + 8) = *(_DWORD *)(a3 + 8) & 0xFFFFFFFD | 1; v17 = *(_DWORD *)(a3 + 8); if ( (*(_DWORD *)(a3 + 8) & 3) != 2 && !(v17 & 0x40) && v23 ) { v18 = *(_DWORD *)(a3 + 8) & 3; *(_DWORD *)(a3 + 8) = v17 & 0xFFFFFBFC; if ( v17 & 3 ) *(_DWORD *)(a3 + 8) = v17 & 0xFFFFFBFC | 1; v12 = (*(int (__cdecl **)(int, void *, int, _DWORD, int, const char *, int))(a3 + 24556))( a3, v23, a3 + 101736, *(_DWORD *)(a3 + 102772), a3 + 100712, a6, v21); *(_DWORD *)(a3 + 102824) = v12; if ( v12 ) goto LABEL_47; if ( v18 == 3 && sub_482BF0(a3) ) { v12 = *(_DWORD *)(a3 + 102824); LABEL_47: v7 = v22; goto LABEL_48; } v10 = a4; *(_DWORD *)(a3 + 8) = v17; } if ( v10 == 2002 || v10 == 2004 ) { v12 = sub_488B40(a3); goto LABEL_47; } LABEL_54: free(v23); return *(_DWORD *)(a3 + 102824); } // 4DE38C: using guessed type int __security_cookie; // 489E60: using guessed type char var_404[1024]; //----- (0048A270) -------------------------------------------------------- #error "48A3C9: positive sp value has been found (funcsize=104)" //----- (0048A3E0) -------------------------------------------------------- int __thiscall sub_48A3E0(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edi@1 int v6; // ecx@1 int (__stdcall *v7)(_DWORD, _DWORD, _DWORD); // eax@4 int v8; // eax@4 int v9; // edx@4 unsigned __int8 v10; // cf@4 int v11; // ecx@8 int v12; // eax@9 int v13; // ecx@12 int v15; // [sp+0h] [bp-30h]@1 int v16; // [sp+10h] [bp-20h]@1 char v17; // [sp+14h] [bp-1Ch]@3 int v18; // [sp+18h] [bp-18h]@1 void *v19; // [sp+1Ch] [bp-14h]@1 int *v20; // [sp+20h] [bp-10h]@1 int v21; // [sp+2Ch] [bp-4h]@3 v20 = &v15; v4 = (int)this; v19 = this; v5 = 0; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 3) = 0; v6 = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this + 4) + 56); v18 = 0; v16 = v4; if ( v6 ) (*(void (**)(void))(*(_DWORD *)v6 + 4))(); v21 = 0; v17 = sub_43FF30(1); v21 = 1; if ( v17 ) { v7 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)(*(_DWORD *)(*(_DWORD *)v4 + 4) + v4 + 56) + 32); LOBYTE(v21) = 2; v8 = v7(a2, a3, a4); v10 = __CFADD__(v8, *(_DWORD *)(v4 + 8)); *(_DWORD *)(v4 + 8) += v8; *(_DWORD *)(v4 + 12) += v9 + v10; if ( v8 != a3 || v9 != a4 ) v18 = 3; v21 = 1; v5 = 0; } v11 = v4 + *(_DWORD *)(*(_DWORD *)v4 + 4); if ( v18 != v5 ) { v12 = v18 | *(_DWORD *)(v11 + 12); if ( *(_DWORD *)(v11 + 56) == v5 ) LOBYTE(v12) = v12 | 4; sub_43EAA0(v11, v12, v5); } v13 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v4 + 4) + v4 + 56); v21 = -1; if ( v13 != v5 ) (*(void (**)(void))(*(_DWORD *)v13 + 8))(); return v4; } // 43FF30: using guessed type _DWORD __stdcall sub_43FF30(char); //----- (0048A4DF) -------------------------------------------------------- int (*__usercall sub_48A4DF(int a1))() { int v1; // eax@1 int v2; // ecx@1 int v3; // ecx@3 v1 = *(_DWORD *)(a1 - 20) + *(_DWORD *)(**(_DWORD **)(a1 - 20) + 4); v2 = *(_DWORD *)(v1 + 12) | 4; if ( !*(_DWORD *)(v1 + 56) ) v2 = *(_DWORD *)(v1 + 12) | 4; v3 = v2 & 0x17; *(_DWORD *)(v1 + 12) = v3; if ( v3 & *(_DWORD *)(v1 + 16) ) _CxxThrowException(0, 0); *(_DWORD *)(a1 - 4) = 1; return loc_48A510; } // 48A510: using guessed type int loc_48A510(); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0048A530) -------------------------------------------------------- signed int __cdecl sub_48A530(int a1, const char *buf, int nNumberOfBytesToWrite) { signed int result; // eax@3 DWORD v4; // edi@5 SOCKET v5; // ecx@6 int v6; // eax@8 bool v7; // zf@8 int v8; // eax@10 int v9; // eax@13 int v10; // eax@16 bool v11; // zf@18 bool v12; // sf@18 char v13; // of@18 int v14; // ebx@19 unsigned int v15; // edi@19 DWORD v16; // eax@30 bool v17; // zf@32 __int32 v18; // eax@34 int v19; // eax@36 if ( *(_DWORD *)(a1 + 24776) ) { sub_48A270(buf, nNumberOfBytesToWrite, 0); if ( *(_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 24776) + 4) + *(_DWORD *)(a1 + 24776) + 12) ) { *(_DWORD *)(a1 + 102832) = 0; result = -1; } else { result = 0; } return result; } v4 = nNumberOfBytesToWrite; if ( !nNumberOfBytesToWrite ) return 0; while ( 1 ) { v5 = *(_DWORD *)(a1 + 24772); if ( v5 != -1 ) break; v10 = sub_492C41(*(_DWORD *)(a1 + 24784), (int)buf, v4); if ( v10 <= 0 ) { v16 = GetLastError(); if ( v16 && v16 != 10004 ) { v17 = v16 == 10035; LABEL_46: if ( !v17 ) { *(_DWORD *)(a1 + 102832) = v16; return -1; } } LABEL_47: v10 = 0; } LABEL_48: buf += v10; v4 -= v10; nNumberOfBytesToWrite = v4; if ( !v4 ) return 0; } if ( !*(_DWORD *)(a1 + 56) || (v6 = sub_47CA70(a1, v5, 6, *(_DWORD *)(a1 + 56)), v7 = v6 == 0, v6 > 0) ) { LABEL_14: if ( *(_BYTE *)(a1 + 16) & 4 ) { if ( *(_DWORD *)(a1 + 119372) ) v10 = sendto( *(_DWORD *)(a1 + 24772), buf, v4, *(_DWORD *)(a1 + 68), (const struct sockaddr *)(a1 + 119356), *(_DWORD *)(a1 + 119372)); else v10 = send(*(_DWORD *)(a1 + 24772), buf, v4, *(_DWORD *)(a1 + 68)); v13 = 0; v11 = v10 == 0; v12 = v10 < 0; if ( v10 >= 0 ) { LABEL_29: if ( (unsigned __int8)(v12 ^ v13) | v11 ) { v16 = WSAGetLastError(); if ( v16 == 10035 ) { v18 = *(_DWORD *)(a1 + 56); if ( !v18 ) v18 = -10000; v19 = sub_47CA70(a1, *(_DWORD *)(a1 + 24772), 6, v18); if ( v19 ) { if ( v19 < 0 && *(_DWORD *)(a1 + 102832) != 10004 ) return -1; } else { if ( *(_DWORD *)(a1 + 56) ) return -1; } } else { if ( v16 ) { v17 = v16 == 10004; goto LABEL_46; } } goto LABEL_47; } goto LABEL_48; } v14 = ((*(_BYTE *)(a1 + 72) & 0x20) != 0) + 1; v15 = rand() % 0xC9u + 50; do { sub_47CA70(a1, *(_DWORD *)(a1 + 24772), 4, -1000 * v15); if ( *(_DWORD *)(a1 + 119372) ) v10 = sendto( *(_DWORD *)(a1 + 24772), buf, nNumberOfBytesToWrite, *(_DWORD *)(a1 + 68), (const struct sockaddr *)(a1 + 119356), *(_DWORD *)(a1 + 119372)); else v10 = send(*(_DWORD *)(a1 + 24772), buf, nNumberOfBytesToWrite, *(_DWORD *)(a1 + 68)); v15 *= 2; if ( (signed int)v15 > 500 ) v15 = 500; if ( v10 >= 0 ) break; --v14; } while ( v14 > 0 ); v4 = nNumberOfBytesToWrite; } else { v10 = send(*(_DWORD *)(a1 + 24772), buf, v4, *(_DWORD *)(a1 + 68)); } v13 = 0; v11 = v10 == 0; v12 = v10 < 0; goto LABEL_29; } while ( !v7 ) { v8 = *(_DWORD *)(a1 + 102832); if ( !v8 ) return *(_DWORD *)(a1 + 102824); if ( v8 != 10004 && v8 != 10035 ) return -1; v9 = sub_47CA70(a1, *(_DWORD *)(a1 + 24772), 6, *(_DWORD *)(a1 + 56)); v7 = v9 == 0; if ( v9 > 0 ) goto LABEL_14; } return -1; } // 48A270: using guessed type _DWORD __stdcall sub_48A270(_DWORD, _DWORD, _DWORD); //----- (0048A7D0) -------------------------------------------------------- int __cdecl sub_48A7D0(signed int fromlen, void *buf, unsigned int len) { int v3; // esi@1 void *v4; // ecx@1 int result; // eax@3 int v6; // ebx@5 int v7; // eax@7 bool v8; // zf@7 int v9; // eax@9 int v10; // eax@11 int v11; // ST0C_4@13 SOCKET v12; // ST00_4@13 int v13; // edi@13 u_long v14; // ST14_4@13 int v15; // eax@16 __int32 v16; // eax@18 int v17; // eax@20 bool v18; // zf@21 int v19; // eax@23 signed int v20; // edx@26 signed int v21; // [sp+4h] [bp-4h]@1 v3 = fromlen; v4 = *(void **)(fromlen + 24780); v21 = 100; *(_DWORD *)(fromlen + 102832) = 0; if ( v4 ) { if ( !*(_DWORD *)((char *)v4 + *(_DWORD *)(*(_DWORD *)v4 + 4) + 12) ) return *(_DWORD *)(sub_48A3E0(v4, (int)buf, len, 0) + 8); return 0; } if ( *(_DWORD *)(v3 + 24772) == -1 ) { result = _read(*(_DWORD *)(v3 + 24788), buf, len); if ( result >= 0 ) return result; *(_DWORD *)(v3 + 102832) = GetLastError(); return 0; } v6 = len; while ( 1 ) { if ( *(_DWORD *)(v3 + 52) ) { v7 = sub_47CA70(v3, *(_DWORD *)(v3 + 24772), 5, *(_DWORD *)(v3 + 52)); v8 = v7 == 0; if ( v7 <= 0 ) break; } LABEL_12: if ( *(_BYTE *)(v3 + 16) & 4 ) { *(_DWORD *)(v3 + 119356) = 0; *(_DWORD *)(v3 + 119360) = 0; *(_DWORD *)(v3 + 119364) = 0; *(_DWORD *)(v3 + 119368) = 0; v11 = *(_DWORD *)(v3 + 68); v12 = *(_DWORD *)(v3 + 24772); fromlen = 16; v13 = recvfrom(v12, (char *)buf, v6, v11, (struct sockaddr *)(v3 + 119356), &fromlen); v14 = *(_DWORD *)(v3 + 119360); *(_DWORD *)(v3 + 119372) = fromlen; *(_DWORD *)(v3 + 102768) = ntohl(v14); } else { v13 = recv(*(_DWORD *)(v3 + 24772), (char *)buf, v6, *(_DWORD *)(v3 + 68)); } if ( v13 >= 0 ) return v13; v15 = WSAGetLastError(); if ( v15 != 10004 && v15 != 10035 ) { *(_DWORD *)(v3 + 102832) = v15; return 0; } v16 = *(_DWORD *)(v3 + 52); if ( !v16 ) v16 = 5; v17 = sub_47CA70(v3, *(_DWORD *)(v3 + 24772), 5, v16); if ( v17 ) { if ( v17 >= 0 || (v19 = *(_DWORD *)(v3 + 102832), v19 == 10004) ) goto LABEL_26; v18 = v19 == 10035; } else { v18 = *(_DWORD *)(v3 + 52) == 0; } if ( !v18 ) return 0; LABEL_26: v20 = v21--; if ( v20 <= 0 ) return 0; } while ( !v8 ) { v9 = *(_DWORD *)(v3 + 102832); if ( v9 != 10004 ) { if ( v9 != 10035 ) break; } v10 = sub_47CA70(v3, *(_DWORD *)(v3 + 24772), 5, *(_DWORD *)(v3 + 52)); v8 = v10 == 0; if ( v10 > 0 ) goto LABEL_12; } return 0; } //----- (0048A9C0) -------------------------------------------------------- void __cdecl sub_48A9C0(int a1) { __int16 v1; // ax@2 int v2; // ebx@5 int v3; // eax@9 int v4; // ebx@9 bool v5; // zf@13 if ( a1 ) { v1 = *(_WORD *)(a1 + 4); if ( v1 == 1 || v1 == 2 ) { sub_481550(a1); if ( *(_DWORD *)(a1 + 104) ) { do { v2 = **(_DWORD **)(a1 + 104); free(*(void **)(a1 + 104)); *(_DWORD *)(a1 + 104) = v2; } while ( v2 ); } if ( *(_WORD *)(a1 + 4) == 1 ) *(_DWORD *)(a1 + 16) &= 0xFFFFFFFBu; *(_WORD *)(a1 + 102776) = 0; sub_47CCB0(a1); if ( *(_DWORD *)(a1 + 24532) ) { do { v3 = *(_DWORD *)(a1 + 24532); v4 = *(_DWORD *)v3; if ( *(_DWORD *)(v3 + 12) || *(_WORD *)(a1 + 4) == 1 ) (*(void (__cdecl **)(int, _DWORD))(v3 + 16))(a1, *(_DWORD *)(a1 + 24532)); free(*(void **)(a1 + 24532)); *(_DWORD *)(a1 + 24532) = v4; } while ( v4 ); } v5 = *(_WORD *)(a1 + 4) == 1; *(_DWORD *)(a1 + 24564) = sub_47CEB0; *(_DWORD *)(a1 + 24568) = sub_47CEB0; *(_DWORD *)(a1 + 24660) = sub_47F760; *(_DWORD *)(a1 + 24664) = 0; *(_DWORD *)(a1 + 24556) = sub_480BD0; *(_DWORD *)(a1 + 24560) = sub_43DD70; *(_DWORD *)(a1 + 24572) = sub_489490; *(_DWORD *)(a1 + 24576) = sub_489490; *(_DWORD *)(a1 + 24580) = 0; *(_DWORD *)(a1 + 24584) = sub_4875F0; *(_DWORD *)(a1 + 24588) = sub_480FA0; *(_DWORD *)(a1 + 24592) = sub_4832F0; *(_DWORD *)(a1 + 24596) = sub_486F70; *(_DWORD *)(a1 + 24600) = 0; *(_DWORD *)(a1 + 24604) = sub_47CA10; *(_DWORD *)(a1 + 24628) = sub_47CC10; *(_DWORD *)(a1 + 24624) = sub_480380; *(_DWORD *)(a1 + 24632) = sub_47CC30; *(_DWORD *)(a1 + 24616) = sub_47CC80; *(_DWORD *)(a1 + 24620) = sub_47CC90; *(_DWORD *)(a1 + 24636) = sub_48A530; *(_DWORD *)(a1 + 24640) = sub_48A7D0; *(_DWORD *)(a1 + 24644) = sub_480B00; *(_DWORD *)(a1 + 24668) = 0; *(_DWORD *)(a1 + 24672) = 0; *(_DWORD *)(a1 + 24676) = 0; *(_DWORD *)(a1 + 24680) = 0; *(_DWORD *)(a1 + 24684) = 0; *(_DWORD *)(a1 + 24688) = 0; *(_DWORD *)(a1 + 24692) = 0; *(_DWORD *)(a1 + 24696) = 0; *(_DWORD *)(a1 + 24700) = 0; *(_DWORD *)(a1 + 24704) = 0; *(_DWORD *)(a1 + 24712) = 0; *(_DWORD *)(a1 + 24716) = 0; *(_DWORD *)(a1 + 24648) = 0; *(_DWORD *)(a1 + 24652) = 0; *(_DWORD *)(a1 + 24656) = 0; if ( v5 ) { if ( *(_DWORD *)(a1 + 24768) != -1 ) { sub_47CC80(a1, *(_DWORD *)(a1 + 24768)); *(_DWORD *)(a1 + 24768) = -1; } } } } } // 47CEB0: using guessed type int sub_47CEB0(); //----- (0048ABC0) -------------------------------------------------------- int __cdecl sub_48ABC0(int a1, int a2, int a3) { int result; // eax@1 *(_WORD *)(a1 + 4) = 1; *(_DWORD *)(a1 + 102912) = 0; *(_DWORD *)(a1 + 102924) = 0; *(_DWORD *)(a1 + 102916) = 0; *(_DWORD *)(a1 + 102928) = 0; *(_DWORD *)(a1 + 102920) = 0; *(_DWORD *)(a1 + 102932) = 0; *(_DWORD *)(a1 + 8) = a2; *(_DWORD *)(a1 + 12) = a2; *(_DWORD *)(a1 + 16) = a3; *(_DWORD *)(a1 + 24532) = 0; *(_DWORD *)(a1 + 24512) = 0; *(_WORD *)(a1 + 6) = 0; *(_DWORD *)(a1 + 24516) = 0; *(_DWORD *)(a1 + 24520) = 0; *(_DWORD *)(a1 + 24524) = 0; *(_DWORD *)(a1 + 24528) = 0; *(_DWORD *)(a1 + 24564) = sub_47CEB0; *(_DWORD *)(a1 + 24568) = sub_47CEB0; *(_DWORD *)(a1 + 24536) = 0; *(_DWORD *)(a1 + 24540) = 0; *(_DWORD *)(a1 + 24544) = 0; *(_DWORD *)(a1 + 24556) = sub_480BD0; *(_DWORD *)(a1 + 24560) = sub_43DD70; *(_DWORD *)(a1 + 24572) = sub_489490; *(_DWORD *)(a1 + 24576) = sub_489490; *(_DWORD *)(a1 + 24580) = 0; *(_DWORD *)(a1 + 24584) = sub_4875F0; *(_DWORD *)(a1 + 24588) = sub_480FA0; *(_DWORD *)(a1 + 24592) = sub_4832F0; *(_DWORD *)(a1 + 24596) = sub_486F70; *(_DWORD *)(a1 + 24600) = 0; *(_DWORD *)(a1 + 24608) = 0; *(_DWORD *)(a1 + 24612) = 0; *(_DWORD *)(a1 + 119344) = 0; *(_DWORD *)(a1 + 119348) = 0; *(_BYTE *)(a1 + 119352) = 0; *(_DWORD *)(a1 + 24604) = sub_47CA10; *(_DWORD *)(a1 + 24628) = sub_47CC10; *(_DWORD *)(a1 + 24624) = sub_480380; *(_DWORD *)(a1 + 24632) = sub_47CC30; *(_DWORD *)(a1 + 24616) = sub_47CC80; *(_DWORD *)(a1 + 24620) = sub_47CC90; *(_DWORD *)(a1 + 24636) = sub_48A530; *(_DWORD *)(a1 + 24640) = sub_48A7D0; *(_DWORD *)(a1 + 24644) = sub_480B00; *(_DWORD *)(a1 + 24648) = 0; *(_DWORD *)(a1 + 24652) = 0; *(_DWORD *)(a1 + 24656) = 0; *(_DWORD *)(a1 + 24660) = sub_47F760; *(_DWORD *)(a1 + 24664) = 0; *(_DWORD *)(a1 + 24668) = 0; *(_DWORD *)(a1 + 24672) = 0; *(_DWORD *)(a1 + 24676) = 0; *(_DWORD *)(a1 + 24680) = 0; *(_DWORD *)(a1 + 24684) = 0; *(_DWORD *)(a1 + 24688) = 0; *(_DWORD *)(a1 + 24692) = 0; *(_DWORD *)(a1 + 24696) = 0; *(_DWORD *)(a1 + 24700) = 0; *(_DWORD *)(a1 + 24704) = 0; *(_DWORD *)(a1 + 24712) = 0; *(_DWORD *)(a1 + 24716) = 0; *(_DWORD *)(a1 + 24720) = 0; *(_DWORD *)(a1 + 24724) = 0; *(_DWORD *)(a1 + 24728) = 0; *(_DWORD *)(a1 + 24732) = 0; *(_DWORD *)(a1 + 24736) = 0; *(_DWORD *)(a1 + 24740) = 0; *(_DWORD *)(a1 + 24744) = 0; *(_DWORD *)(a1 + 24748) = 0; *(_DWORD *)(a1 + 102776) = 0; *(_WORD *)(a1 + 84) = 0; *(_DWORD *)(a1 + 24752) = 0; *(_DWORD *)(a1 + 24756) = 0; *(_DWORD *)(a1 + 24760) = 0; *(_DWORD *)(a1 + 24764) = 0; *(_DWORD *)(a1 + 20) = "%.9G"; *(_DWORD *)(a1 + 24) = "%.17lG"; *(_DWORD *)(a1 + 28) = "cid:id%d"; *(_DWORD *)(a1 + 32) = "1.1"; *(_DWORD *)(a1 + 102796) = "1.0"; *(_DWORD *)(a1 + 36) = 0; *(_DWORD *)(a1 + 44) = 0; *(_DWORD *)(a1 + 48) = "en"; *(_DWORD *)(a1 + 102780) = 0; *(_DWORD *)(a1 + 102784) = 0; *(_DWORD *)(a1 + 102788) = 0; *(_DWORD *)(a1 + 102792) = 100; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 68) = 0; *(_DWORD *)(a1 + 72) = 0; *(_DWORD *)(a1 + 76) = 0; *(_DWORD *)(a1 + 80) = 0; *(_DWORD *)(a1 + 102768) = 0; *(_DWORD *)(a1 + 24820) = 0; *(_DWORD *)(a1 + 24824) = 0; *(_DWORD *)(a1 + 24828) = 0; *(_DWORD *)(a1 + 40) = byte_4C760C; *(_DWORD *)(a1 + 88) = 0; *(_DWORD *)(a1 + 92) = 0; *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 100) = 0; *(_DWORD *)(a1 + 104) = 0; *(_DWORD *)(a1 + 108) = 0; *(_DWORD *)(a1 + 99656) = 0; *(_DWORD *)(a1 + 24500) = 0; *(_DWORD *)(a1 + 24504) = 0; *(_DWORD *)(a1 + 24768) = -1; *(_DWORD *)(a1 + 24772) = -1; *(_DWORD *)(a1 + 24776) = 0; *(_DWORD *)(a1 + 24780) = 0; *(_DWORD *)(a1 + 102836) = 0; *(_DWORD *)(a1 + 102876) = 0; *(_DWORD *)(a1 + 102880) = 0; *(_DWORD *)(a1 + 102884) = 0; *(_DWORD *)(a1 + 102896) = 0; *(_DWORD *)(a1 + 102900) = 0; *(_DWORD *)(a1 + 102904) = 0; *(_DWORD *)(a1 + 102888) = 0; *(_DWORD *)(a1 + 102892) = 0; *(_DWORD *)(a1 + 102908) = 0; *(_DWORD *)(a1 + 24788) = 0; *(_DWORD *)(a1 + 24784) = 1; *(_BYTE *)(a1 + 101736) = 0; *(_DWORD *)(a1 + 102772) = 0; *(_DWORD *)(a1 + 102760) = 0; *(_DWORD *)(a1 + 102800) = 0; *(_DWORD *)(a1 + 102804) = 8080; *(_DWORD *)(a1 + 102808) = 0; *(_DWORD *)(a1 + 102812) = 0; *(_DWORD *)(a1 + 102764) = 0; *(_DWORD *)(a1 + 119320) = 0; *(_DWORD *)(a1 + 119324) = 0; *(_DWORD *)(a1 + 119328) = 0; *(_DWORD *)(a1 + 119332) = 0; *(_DWORD *)(a1 + 119336) = 0; *(_DWORD *)(a1 + 119340) = 32; result = 0; memset((void *)(a1 + 112), 0, 0x1F3Cu); *(_DWORD *)(a1 + 24492) = 0; *(_WORD *)(a1 + 24496) = 0; memset((void *)(a1 + 8108), 0, 0x4000u); *(_DWORD *)(a1 + 120460) = 0; *(_DWORD *)(a1 + 24796) = 0; *(_DWORD *)(a1 + 24792) = 0; *(_DWORD *)(a1 + 102848) = 0; *(_DWORD *)(a1 + 102852) = 0; *(_WORD *)(a1 + 99664) = 0; *(_DWORD *)(a1 + 99588) = 0; *(_DWORD *)(a1 + 99660) = 0; *(_DWORD *)(a1 + 99666) = 589824; *(_WORD *)(a1 + 99670) = 0; *(_DWORD *)(a1 + 99672) = 0; *(_WORD *)(a1 + 99676) = 0; *(_DWORD *)(a1 + 24812) = 0; *(_DWORD *)(a1 + 24816) = 0; *(_WORD *)(a1 + 24804) = 0; *(_WORD *)(a1 + 99678) = 0; *(_DWORD *)(a1 + 24800) = 0; *(_DWORD *)(a1 + 24508) = 0; *(_DWORD *)(a1 + 24808) = 0; *(_BYTE *)(a1 + 99688) = 0; *(_DWORD *)(a1 + 102824) = 0; return result; } // 47CEB0: using guessed type int sub_47CEB0(); //----- (0048B000) -------------------------------------------------------- int __cdecl sub_48B000(int a1, const char *a2, int a3, int a4) { signed int v4; // ebx@1 const char *v5; // edi@1 int result; // eax@5 v4 = 0; v5 = "href"; if ( *(_WORD *)(a1 + 6) == 2 ) { v5 = "SOAP-ENC:ref"; v4 = 1; } sprintf((char *)(a1 + 94464), "#_%d", a4); if ( sub_489500(a1, a2, a3, 0) || sub_4890C0(a1, v5, (const char *)(v4 + a1 + 94464)) || (result = sub_488D50(a1, a2)) != 0 ) result = *(_DWORD *)(a1 + 102824); return result; } //----- (0048B090) -------------------------------------------------------- signed int __cdecl sub_48B090(int a1, const char *a2, int a3, unsigned int a4, unsigned int *a5, int a6, const char *a7, int a8) { int v9; // edi@5 int v10; // eax@7 signed int v11; // ebx@10 int v12; // eax@10 if ( !a4 ) { sub_489A20(a1, a2, a3, a7); return -1; } if ( *(_DWORD *)(a1 + 8) & 0x20000 ) return 0; v9 = a3; if ( a3 < 0 ) { v10 = a5 ? sub_47D010(a1, a4, a5, a6, a8, (int)&a4) : sub_47CF00(a1, a4, a8, (int)&a4); v9 = v10; if ( v10 ) { v11 = a4; LOBYTE(v12) = sub_47D260(a1, a4); if ( v12 ) { sub_48B000(a1, a2, 0, v9); return -1; } if ( sub_47D2D0(a1, v11) ) return 0; sub_47D310(a1, v11); } } return v9; } //----- (0048B160) -------------------------------------------------------- int __cdecl sub_48B160(int a1, const char *a2, int a3, unsigned int *a4, const char *a5, int a6) { int v6; // eax@1 int result; // eax@4 int v8; // eax@7 v6 = sub_48B090(a1, a2, a3, *a4, 0, 0, a5, a6); if ( v6 < 0 ) goto LABEL_15; if ( !*(_BYTE *)*a4 && *(_DWORD *)(a1 + 8) & 0x8000000 ) return sub_489A20(a1, a2, v6, a5); if ( *a2 != 45 && (!sub_489500(a1, a2, v6, a5) ? (v8 = sub_488D50(a1, 0)) : (v8 = *(_DWORD *)(a1 + 102824)), v8) || sub_487910(a1, *a4, 0) || (result = sub_487710(a1, a2)) != 0 ) LABEL_15: result = *(_DWORD *)(a1 + 102824); return result; } //----- (0048B220) -------------------------------------------------------- int __cdecl sub_48B220(int a1, const char *a2, const char *a3) { return sub_489E60((int)a2, a1, a1, 2000, a2, a3); } //----- (0048B240) -------------------------------------------------------- void *__cdecl sub_48B240(int a1, void *a2) { int v2; // esi@1 void *result; // eax@2 int v4; // ST24_4@5 const char *v5; // edi@9 int v6; // ebx@9 int v7; // ecx@13 __int16 v8; // ax@15 int v9; // esi@16 bool v10; // zf@18 const char *v11; // eax@18 const char *v12; // ST18_4@20 const char *v13; // ST10_4@20 void *v14; // eax@20 void *v15; // eax@20 void *v16; // eax@20 void *v17; // eax@20 void *v18; // eax@20 void *v19; // eax@20 int v20; // eax@20 int v21; // eax@20 void *v22; // eax@20 void *v23; // eax@20 int v24; // eax@20 int v25; // eax@20 void *v26; // eax@20 int v27; // eax@20 int v28; // [sp+4h] [bp-4h]@5 int v29; // [sp+10h] [bp+8h]@5 v2 = a1; if ( a1 && ((result = (void *)*(_WORD *)(a1 + 4), (_WORD)result == 1) || (_WORD)result == 2) ) { if ( *(_DWORD *)(a1 + 102824) ) { v4 = a1; v29 = 0; v28 = sub_474DA0(v4); if ( !*(_DWORD *)v28 ) sub_482370(v2); if ( *(_WORD *)(v2 + 6) == 2 ) v29 = sub_474E60(v2); v5 = *(const char **)sub_474EA0(v2); v6 = sub_474FB0(v2); if ( !v6 ) v6 = (int)"[no detail]"; if ( !v5 ) v5 = "[no reason]"; v7 = v29; if ( !v29 ) v7 = (int)"no subcode"; v8 = *(_WORD *)(v2 + 6); if ( v8 ) v9 = v8; else v9 = *(_DWORD *)(v2 + 102824); v10 = v8 == 0; v11 = "SOAP 1."; if ( v10 ) v11 = "Error "; v12 = (const char *)v7; v13 = *(const char **)v28; v14 = sub_4407C0(a2, v11); v15 = sub_4469A0(v14, v9); v16 = sub_4407C0(v15, " fault: "); v17 = sub_4407C0(v16, v13); v18 = sub_4407C0(v17, "["); v19 = sub_4407C0(v18, v12); v20 = (int)sub_4407C0(v19, (const char *)&word_4C7B18); v21 = sub_447510(v20); v22 = sub_4407C0((void *)v21, (const char *)&word_4B8FF0); v23 = sub_4407C0(v22, v5); v24 = (int)sub_4407C0(v23, (const char *)&word_4B8FF0); v25 = sub_447510(v24); v26 = sub_4407C0((void *)v25, "Detail: "); v27 = (int)sub_4407C0(v26, (const char *)v6); result = (void *)sub_447510(v27); } } else { result = sub_4407C0(a2, "Error: soap struct state not initialized\n"); } return result; } // 4C7B18: using guessed type __int16 word_4C7B18; //----- (0048B3C0) -------------------------------------------------------- void *__thiscall sub_48B3C0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_4C8C24; sub_48ABC0((int)this, 0, 0); return v1; } // 4C8C24: using guessed type int (__thiscall *off_4C8C24)(void *, char); //----- (0048B3E0) -------------------------------------------------------- void __thiscall sub_48B3E0(int this) { int v1; // esi@1 __int16 v2; // ax@1 int v3; // edi@4 v1 = this; v2 = *(_WORD *)(this + 4); *(_DWORD *)this = &off_4C8C24; if ( v2 == 1 || v2 == 2 ) { if ( *(_DWORD *)(this + 104) ) { do { v3 = *(_DWORD *)(v1 + 104); *(_DWORD *)(v1 + 104) = *(_DWORD *)v3; (*(void (__cdecl **)(int))(v3 + 16))(v3); free((void *)v3); } while ( *(_DWORD *)(v1 + 104) ); } *(_DWORD *)(v1 + 24504) = 0; *(_DWORD *)(v1 + 24500) = 0; } sub_4817C0(v1); sub_48A9C0(v1); } // 4C8C24: using guessed type int (__thiscall *off_4C8C24)(void *, char); //----- (0048B450) -------------------------------------------------------- void *__thiscall sub_48B450(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_48B3E0((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0048B481) -------------------------------------------------------- void *__thiscall sub_48B481(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_4C8F80; return v2; } // 48E06E: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 4C8F80: using guessed type int (__thiscall *off_4C8F80)(void *, char); //----- (0048B49E) -------------------------------------------------------- void __stdcall sub_48B49E(int a1) { int (__thiscall **v1)(void *, char); // [sp+0h] [bp-Ch]@2 std::exception::exception(&a1); v1 = &off_4C8F8C; _CxxThrowException(&v1, &unk_4D2754); } // 48DFE9: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 4C8F8C: using guessed type int (__thiscall *off_4C8F8C)(void *, char); //----- (0048B4CE) -------------------------------------------------------- void *__thiscall sub_48B4CE(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_4C8F8C; return v2; } // 48E06E: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 4C8F8C: using guessed type int (__thiscall *off_4C8F8C)(void *, char); //----- (0048B4EB) -------------------------------------------------------- void __stdcall sub_48B4EB(int a1) { int (__thiscall **v1)(void *, char); // [sp+0h] [bp-Ch]@2 std::exception::exception(&a1); v1 = &off_4C8F98; _CxxThrowException(&v1, &unk_4D2790); } // 48DFE9: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 4C8F98: using guessed type int (__thiscall *off_4C8F98)(void *, char); //----- (0048B51B) -------------------------------------------------------- void *__thiscall sub_48B51B(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_4C8F98; return v2; } // 48E06E: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 4C8F98: using guessed type int (__thiscall *off_4C8F98)(void *, char); //----- (0048B538) -------------------------------------------------------- void *__thiscall sub_48B538(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_48E063(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0048B801) -------------------------------------------------------- int __cdecl sub_48B801() { return dword_A429B0; } // A429B0: using guessed type int dword_A429B0; //----- (0048BAD1) -------------------------------------------------------- void *__thiscall sub_48BAD1(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4C8FB4; if ( a2 & 1 ) operator delete(this); return v2; } // 4C8FB4: using guessed type int (__thiscall *off_4C8FB4)(void *, char); //----- (0048BB68) -------------------------------------------------------- int __thiscall sub_48BB68(int this) { return *(_DWORD *)(this + 4); } //----- (0048BB6C) -------------------------------------------------------- int __thiscall sub_48BB6C(int this) { return *(_DWORD *)(this + 8); } //----- (0048BB70) -------------------------------------------------------- int (__thiscall **__cdecl sub_48BB70())(void *, char) { return &off_4DE30C; } // 4DE30C: using guessed type int (__thiscall *off_4DE30C)(void *, char); //----- (0048BE4F) -------------------------------------------------------- void __cdecl sub_48BE4F(LPCRITICAL_SECTION lpCriticalSection) { LeaveCriticalSection(lpCriticalSection); } //----- (0048DB99) -------------------------------------------------------- void __cdecl sub_48DB99(void *a1) { operator delete(a1); } //----- (0048DBA4) -------------------------------------------------------- int __thiscall sub_48DBA4(void *this) { *(_DWORD *)this = &off_4C9140; return sub_499B62((int)this); } // 4C9140: using guessed type int (__thiscall *off_4C9140)(void *, char); //----- (0048DBB4) -------------------------------------------------------- void *__thiscall sub_48DBB4(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_48DBA4(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0048E045) -------------------------------------------------------- void *__thiscall sub_48E045(void *this, char a2) { void *v2; // esi@1 v2 = this; std::exception::exception(&a2); *(_DWORD *)v2 = &off_4C9168; return v2; } // 48DFE9: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 4C9168: using guessed type int (__thiscall *off_4C9168)(void *, char); //----- (0048E063) -------------------------------------------------------- int __thiscall sub_48E063(void *this) { *(_DWORD *)this = &off_4C9148; return std::exception::_Tidy(); } // 48DFCB: using guessed type int std__exception___Tidy(void); // 4C9148: using guessed type int (__thiscall *off_4C9148)(void *, char); //----- (0048E093) -------------------------------------------------------- void *__thiscall sub_48E093(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4C9148; std::exception::_Tidy(); if ( a2 & 1 ) operator delete(v2); return v2; } // 48DFCB: using guessed type int std__exception___Tidy(void); // 4C9148: using guessed type int (__thiscall *off_4C9148)(void *, char); //----- (0048E0BA) -------------------------------------------------------- void *__thiscall sub_48E0BA(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_4C9168; return v2; } // 48E06E: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 4C9168: using guessed type int (__thiscall *off_4C9168)(void *, char); //----- (0049005E) -------------------------------------------------------- void **__cdecl sub_49005E() { return &off_4DE440; } // 4DE440: using guessed type void *off_4DE440; //----- (004903F0) -------------------------------------------------------- int __cdecl sub_4903F0() { return flsall(1); } // 4902C3: using guessed type _DWORD __cdecl flsall(_DWORD); //----- (00491D3C) -------------------------------------------------------- signed int __cdecl sub_491D3C(int a1) { signed int result; // eax@2 if ( a1 ) { *(_DWORD *)a1 = dword_A43894; result = 0; } else { *_errno() = 22; _invalid_parameter_noinfo(); result = 22; } return result; } // 496BD0: using guessed type int _invalid_parameter_noinfo(void); // A43894: using guessed type int dword_A43894; //----- (00492C41) -------------------------------------------------------- signed int __cdecl sub_492C41(int a1, int a2, DWORD nNumberOfBytesToWrite) { int *v4; // edi@7 int v5; // esi@7 if ( a1 == -2 ) { *__doserrno() = 0; *_errno() = 9; return -1; } if ( a1 < 0 || a1 >= uNumber || (v4 = &dword_A43920[a1 >> 5], v5 = (a1 & 0x1F) << 6, !(*(_BYTE *)(*v4 + v5 + 4) & 1)) ) { *__doserrno() = 0; *_errno() = 9; _invalid_parameter_noinfo(); return -1; } __lock_fhandle(a1); if ( *(_BYTE *)(*v4 + v5 + 4) & 1 ) { _write_nolock(a1, a2, nNumberOfBytesToWrite); } else { *_errno() = 9; *__doserrno() = 0; } return _unlock_fhandle(a1); } // 496BD0: using guessed type int _invalid_parameter_noinfo(void); // 49BC44: using guessed type _DWORD __cdecl __lock_fhandle(_DWORD); // 49BCE3: using guessed type _DWORD __cdecl _unlock_fhandle(_DWORD); // A43920: using guessed type int dword_A43920[]; //----- (00493939) -------------------------------------------------------- int __cdecl sub_493939() { return 0; } //----- (00494688) -------------------------------------------------------- void *__thiscall sub_494688(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4C9BA0; sub_48E063(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 4C9BA0: using guessed type int (__thiscall *off_4C9BA0)(void *, char); //----- (004949B9) -------------------------------------------------------- void __usercall sub_4949B9(int a1) { *(_DWORD *)(_getptd() + 148) = *(_DWORD *)(a1 + 8); _CxxThrowException(0, 0); } // 48E0D7: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 495809: using guessed type int _getptd(void); //----- (00496A46) -------------------------------------------------------- void *__cdecl sub_496A46(void *a1) { void *result; // eax@1 result = a1; dword_A42EF4 = a1; return result; } //----- (00496BE0) -------------------------------------------------------- void *__cdecl sub_496BE0(void *a1) { void *result; // eax@1 result = a1; dword_A42EF8 = a1; return result; } //----- (00496E7B) -------------------------------------------------------- PVOID __cdecl sub_496E7B() { return DecodePointer(dword_A43058); } //----- (004971F5) -------------------------------------------------------- int (*__cdecl sub_4971F5())(void) { int (*result)(void); // eax@1 unsigned int v1; // edi@1 result = (int (*)(void))&unk_4CEF14; v1 = (unsigned int)&unk_4CEF14; if ( &unk_4CEF14 < &unk_4CEF14 ) { do { result = *(int (**)(void))v1; if ( *(_DWORD *)v1 ) result = (int (*)(void))result(); v1 += 4; } while ( v1 < (unsigned int)&unk_4CEF14 ); } return result; } //----- (0049721B) -------------------------------------------------------- int (*__cdecl sub_49721B())(void) { int (*result)(void); // eax@1 unsigned int v1; // edi@1 result = (int (*)(void))&unk_4CEF1C; v1 = (unsigned int)&unk_4CEF1C; if ( &unk_4CEF1C < &unk_4CEF1C ) { do { result = *(int (**)(void))v1; if ( *(_DWORD *)v1 ) result = (int (*)(void))result(); v1 += 4; } while ( v1 < (unsigned int)&unk_4CEF1C ); } return result; } //----- (00497E27) -------------------------------------------------------- signed int __cdecl sub_497E27(int a1) { signed int result; // eax@2 if ( a1 ) { *(_DWORD *)a1 = dword_4DEAE4; result = 0; } else { *_errno() = 22; _invalid_parameter_noinfo(); result = 22; } return result; } // 496BD0: using guessed type int _invalid_parameter_noinfo(void); // 4DEAE4: using guessed type int dword_4DEAE4; //----- (00497E54) -------------------------------------------------------- signed int __cdecl sub_497E54(int a1) { signed int result; // eax@2 if ( a1 ) { *(_DWORD *)a1 = dword_4DEAE8; result = 0; } else { *_errno() = 22; _invalid_parameter_noinfo(); result = 22; } return result; } // 496BD0: using guessed type int _invalid_parameter_noinfo(void); // 4DEAE8: using guessed type int dword_4DEAE8; //----- (00497E81) -------------------------------------------------------- signed int __cdecl sub_497E81(int a1) { signed int result; // eax@2 if ( a1 ) { *(_DWORD *)a1 = dword_4DEAE0; result = 0; } else { *_errno() = 22; _invalid_parameter_noinfo(); result = 22; } return result; } // 496BD0: using guessed type int _invalid_parameter_noinfo(void); // 4DEAE0: using guessed type int dword_4DEAE0; //----- (00497EAE) -------------------------------------------------------- int *__cdecl sub_497EAE() { return &dword_4DEAE4; } // 4DEAE4: using guessed type int dword_4DEAE4; //----- (00497EB4) -------------------------------------------------------- int *__cdecl sub_497EB4() { return &dword_4DEAE8; } // 4DEAE8: using guessed type int dword_4DEAE8; //----- (00497EBA) -------------------------------------------------------- int *__cdecl sub_497EBA() { return &dword_4DEAE0; } // 4DEAE0: using guessed type int dword_4DEAE0; //----- (00497EC0) -------------------------------------------------------- int __cdecl sub_497EC0() { return (int)off_4DEB70; } // 4DEB70: using guessed type void *off_4DEB70[2]; //----- (00498C65) -------------------------------------------------------- int __cdecl sub_498C65() { dword_A43A20 = IsProcessorFeaturePresent(0xAu); return 0; } // A43A20: using guessed type int dword_A43A20; //----- (00499B62) -------------------------------------------------------- int __cdecl sub_499B62(int a1) { int v1; // ecx@1 void *v2; // eax@2 void *v3; // edx@2 _lock(14); v1 = *(_DWORD *)(a1 + 4); if ( v1 ) { v2 = dword_A43770; v3 = &unk_A4376C; while ( dword_A43770 ) { if ( *(_DWORD *)dword_A43770 == v1 ) { *((_DWORD *)v3 + 1) = *((_DWORD *)dword_A43770 + 1); free(v2); break; } v3 = dword_A43770; } free(*(void **)(a1 + 4)); *(_DWORD *)(a1 + 4) = 0; } return _unlock(14); } // 496D1A: using guessed type _DWORD __cdecl _unlock(_DWORD); // 496DF3: using guessed type _DWORD __cdecl _lock(_DWORD); //----- (0049A7F3) -------------------------------------------------------- int __cdecl sub_49A7F3() { dword_A438F8 = IsProcessorFeaturePresent(0xAu); return 0; } // A438F8: using guessed type int dword_A438F8; //----- (0049BF18) -------------------------------------------------------- signed int __cdecl sub_49BF18(int a1, LONG lDistanceToMove, DWORD dwMoveMethod) { int *v4; // edi@7 int v5; // esi@7 if ( a1 == -2 ) { *__doserrno() = 0; *_errno() = 9; return -1; } if ( a1 < 0 || a1 >= uNumber || (v4 = &dword_A43920[a1 >> 5], v5 = (a1 & 0x1F) << 6, !(*(_BYTE *)(*v4 + v5 + 4) & 1)) ) { *__doserrno() = 0; *_errno() = 9; _invalid_parameter_noinfo(); return -1; } __lock_fhandle(a1); if ( *(_BYTE *)(*v4 + v5 + 4) & 1 ) { _lseek_nolock(a1, lDistanceToMove, dwMoveMethod); } else { *_errno() = 9; *__doserrno() = 0; } return _unlock_fhandle(a1); } // 496BD0: using guessed type int _invalid_parameter_noinfo(void); // 49BC44: using guessed type _DWORD __cdecl __lock_fhandle(_DWORD); // 49BCE3: using guessed type _DWORD __cdecl _unlock_fhandle(_DWORD); // A43920: using guessed type int dword_A43920[]; //----- (0049DCD0) -------------------------------------------------------- int __cdecl sub_49DCD0(LPSTR lpBuffer, size_t a2) { _lock(7); _getdcwd_nolock(0, lpBuffer, a2); return _unlock(7); } // 496D1A: using guessed type _DWORD __cdecl _unlock(_DWORD); // 496DF3: using guessed type _DWORD __cdecl _lock(_DWORD); //----- (004A2139) -------------------------------------------------------- _UNKNOWN *__cdecl sub_4A2139() { return &unk_4DF5B0; } //----- (004A213F) -------------------------------------------------------- int __cdecl sub_4A213F() { return (int)off_4DF500; } // 4DF500: using guessed type char *off_4DF500[44]; //----- (004A2417) -------------------------------------------------------- void __cdecl sub_4A2417() { dword_A438F4 = 0; } // A438F4: using guessed type int dword_A438F4; //----- (004A2552) -------------------------------------------------------- int __cdecl sub_4A2552(int a1, int a2, int a3) { HMODULE v3; // eax@2 HMODULE v4; // ebx@2 FARPROC v5; // eax@3 FARPROC v6; // eax@4 FARPROC v7; // eax@4 FARPROC v8; // eax@4 FARPROC v9; // eax@5 int (*v10)(void); // edi@8 PVOID v11; // eax@8 PVOID v12; // ebx@8 int v13; // eax@10 int (*v14)(void); // eax@15 PVOID v15; // eax@18 PVOID v16; // eax@20 char v18; // [sp+Ch] [bp-24h]@11 int v19; // [sp+10h] [bp-20h]@1 int v20; // [sp+14h] [bp-1Ch]@1 void *v21; // [sp+18h] [bp-18h]@1 int v22; // [sp+1Ch] [bp-14h]@1 char v23; // [sp+20h] [bp-10h]@11 char v24; // [sp+28h] [bp-8h]@12 unsigned int v25; // [sp+2Ch] [bp-4h]@1 int v26; // [sp+30h] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v19 = a1; v20 = a2; v22 = 0; v21 = (void *)_encoded_null(); if ( !dword_A4389C ) { v3 = LoadLibraryW(L"USER32.DLL"); v4 = v3; if ( !v3 || (v5 = GetProcAddress(v3, "MessageBoxW")) == 0 ) return 0; dword_A4389C = EncodePointer(v5); v6 = GetProcAddress(v4, "GetActiveWindow"); dword_A438A0 = EncodePointer(v6); v7 = GetProcAddress(v4, "GetLastActivePopup"); dword_A438A4 = EncodePointer(v7); v8 = GetProcAddress(v4, "GetUserObjectInformationW"); dword_A438AC = EncodePointer(v8); if ( dword_A438AC ) { v9 = GetProcAddress(v4, "GetProcessWindowStation"); dword_A438A8 = EncodePointer(v9); } } if ( dword_A438A8 == v21 || dword_A438AC == v21 || (v10 = (int (*)(void))DecodePointer(dword_A438A8), v11 = DecodePointer(dword_A438AC), v12 = v11, !v10) || !v11 || (v13 = v10()) != 0 && ((int (__stdcall *)(int, signed int, char *, signed int, char *))v12)(v13, 1, &v23, 12, &v18) && v24 & 1 ) { if ( dword_A438A0 != v21 ) { v14 = (int (*)(void))DecodePointer(dword_A438A0); if ( v14 ) { v22 = v14(); if ( v22 ) { if ( dword_A438A4 != v21 ) { v15 = DecodePointer(dword_A438A4); if ( v15 ) v22 = ((int (__stdcall *)(int))v15)(v22); } } } } } else { a3 |= 0x200000u; } v16 = DecodePointer(dword_A4389C); if ( v16 ) return ((int (__stdcall *)(int, int, int, int))v16)(v22, v19, v20, a3); return 0; } // 495659: using guessed type int _encoded_null(void); // 4DE38C: using guessed type int __security_cookie; //----- (004A2944) -------------------------------------------------------- signed int __cdecl sub_4A2944(int a1, int a2, int a3) { signed int v3; // eax@1 char v6; // [sp+Ch] [bp-28h]@1 char v7; // [sp+10h] [bp-24h]@1 int v8; // [sp+18h] [bp-1Ch]@4 char v9; // [sp+1Ch] [bp-18h]@3 int v10; // [sp+20h] [bp-14h]@1 char v11; // [sp+24h] [bp-10h]@1 unsigned int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; _LocaleUpdate::_LocaleUpdate(a3); v10 = __strgtold12_l(&v11, &v6, a2, 0, 0, 0, 0, &v7); v3 = sub_4A3838((int)&v11, a1); if ( v10 & 3 ) { if ( v10 & 1 ) goto LABEL_8; if ( v10 & 2 ) goto LABEL_3; } else { if ( v3 == 1 ) { LABEL_3: if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 3; } if ( v3 == 2 ) { LABEL_8: if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 4; } } if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 0; } // 48D087: using guessed type _DWORD __stdcall _LocaleUpdate___LocaleUpdate(_DWORD); // 49D3D5: using guessed type _DWORD __cdecl __strgtold12_l(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (004A29EC) -------------------------------------------------------- signed int __cdecl sub_4A29EC(int a1, int a2, int a3) { signed int v3; // eax@1 char v6; // [sp+Ch] [bp-28h]@1 char v7; // [sp+10h] [bp-24h]@1 int v8; // [sp+18h] [bp-1Ch]@4 char v9; // [sp+1Ch] [bp-18h]@3 int v10; // [sp+20h] [bp-14h]@1 char v11; // [sp+24h] [bp-10h]@1 unsigned int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; _LocaleUpdate::_LocaleUpdate(a3); v10 = __strgtold12_l(&v11, &v6, a2, 0, 0, 0, 0, &v7); v3 = sub_4A3D89((int)&v11, a1); if ( v10 & 3 ) { if ( v10 & 1 ) goto LABEL_8; if ( v10 & 2 ) goto LABEL_3; } else { if ( v3 == 1 ) { LABEL_3: if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 3; } if ( v3 == 2 ) { LABEL_8: if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 4; } } if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 0; } // 48D087: using guessed type _DWORD __stdcall _LocaleUpdate___LocaleUpdate(_DWORD); // 49D3D5: using guessed type _DWORD __cdecl __strgtold12_l(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 4DE38C: using guessed type int __security_cookie; //----- (004A3536) -------------------------------------------------------- int __cdecl sub_4A3536(LPCSTR lpFileName, int a2, int a3, int a4, int a5, int a6) { int result; // eax@2 int v7; // eax@8 int v8; // [sp+18h] [bp-1Ch]@1 CPPEH_RECORD ms_exc; // [sp+1Ch] [bp-18h]@6 v8 = 0; if ( a5 == 0 || (*(_DWORD *)a5 = -1, lpFileName == 0) || a6 && a4 & 0xFFFFFE7F ) { *_errno() = 22; _invalid_parameter_noinfo(); result = 22; } else { ms_exc.disabled = 0; result = _tsopen_nolock((int)&v8, lpFileName, a2, a3, a4); ms_exc.disabled = -2; if ( v8 ) { if ( result ) { v7 = dword_A43920[*(_DWORD *)a5 >> 5] + ((*(_DWORD *)a5 & 0x1F) << 6) + 4; *(_BYTE *)v7 &= 0xFEu; } result = _unlock_fhandle(*(_DWORD *)a5); } } return result; } // 496BD0: using guessed type int _invalid_parameter_noinfo(void); // 49BCE3: using guessed type _DWORD __cdecl _unlock_fhandle(_DWORD); // A43920: using guessed type int dword_A43920[]; //----- (004A35FA) -------------------------------------------------------- int __cdecl sub_4A35FA(int a1, LPCSTR lpFileName, int a3, int a4, int a5) { return sub_4A3536(lpFileName, a3, a4, a5, a1, 1); } //----- (004A3838) -------------------------------------------------------- signed int __cdecl sub_4A3838(int a1, int a2) { __int16 v2; // bx@1 int v3; // ebx@1 int v4; // eax@1 int v5; // ebx@2 signed int v6; // eax@2 signed int result; // eax@5 signed int v8; // edi@7 int v9; // edx@7 int *v10; // esi@7 int v11; // eax@8 bool i; // zf@8 int v13; // eax@13 int v14; // edi@13 signed int v15; // edx@15 int *v16; // ecx@15 bool v17; // cf@16 int v18; // edi@18 int v19; // eax@30 int v20; // edx@30 int *v21; // ebx@31 int v22; // ST1C_4@31 signed int v23; // edx@32 int *v24; // ecx@32 signed int v25; // esi@37 int v26; // eax@37 int v27; // edx@37 int *v28; // ebx@37 bool j; // zf@38 int v30; // eax@43 int v31; // esi@43 signed int v32; // edx@45 int *v33; // ecx@45 int v34; // edi@45 signed int k; // ecx@48 int *v36; // ecx@50 int v37; // esi@50 signed int v38; // edi@50 int v39; // eax@57 int v40; // edx@57 int *v41; // ebx@58 int v42; // ST1C_4@58 signed int v43; // edx@59 int *v44; // ecx@59 int v45; // eax@66 int v46; // edx@66 int *v47; // ebx@67 int v48; // ST1C_4@67 signed int v49; // edx@68 int *v50; // ecx@68 int v51; // eax@74 int v52; // edx@74 int v53; // ST1C_4@75 signed int v54; // edx@76 int *v55; // ecx@76 int v56; // ebx@82 int v57; // edx@83 int v58; // [sp+8h] [bp-38h]@1 char v59; // [sp+10h] [bp-30h]@7 int v60; // [sp+10h] [bp-30h]@37 int v61; // [sp+14h] [bp-2Ch]@7 char v62; // [sp+14h] [bp-2Ch]@37 int v63; // [sp+18h] [bp-28h]@7 int v64; // [sp+18h] [bp-28h]@30 signed int v65; // [sp+18h] [bp-28h]@45 int v66; // [sp+18h] [bp-28h]@57 int v67; // [sp+18h] [bp-28h]@66 int v68; // [sp+18h] [bp-28h]@74 signed int v69; // [sp+1Ch] [bp-24h]@7 int v70; // [sp+20h] [bp-20h]@15 signed int v71; // [sp+20h] [bp-20h]@30 signed int v72; // [sp+20h] [bp-20h]@57 signed int v73; // [sp+20h] [bp-20h]@66 signed int v74; // [sp+20h] [bp-20h]@74 int v75; // [sp+24h] [bp-1Ch]@7 int v76; // [sp+28h] [bp-18h]@7 int v77; // [sp+2Ch] [bp-14h]@7 int v78; // [sp+30h] [bp-10h]@1 int v79; // [sp+34h] [bp-Ch]@1 int v80; // [sp+38h] [bp-8h]@1 unsigned int v81; // [sp+3Ch] [bp-4h]@1 int v82; // [sp+40h] [bp+0h]@1 v81 = (unsigned int)&v82 ^ __security_cookie; v2 = *(_WORD *)(a1 + 10); v58 = *(_WORD *)(a1 + 10) & 0x8000; v78 = *(_DWORD *)(a1 + 6); v3 = (v2 & 0x7FFF) - 16383; v4 = *(_WORD *)a1 << 16; v79 = *(_DWORD *)(a1 + 2); v80 = v4; if ( v3 != -16383 ) { v69 = 0; v75 = v78; v76 = v79; v77 = v80; v8 = dword_4DF5DC - 1; v61 = v3; v63 = dword_4DF5DC / 32; v9 = dword_4DF5DC % 32; v10 = &v78 + dword_4DF5DC / 32; v59 = 31 - dword_4DF5DC % 32; if ( (1 << (31 - dword_4DF5DC % 32)) & *v10 ) { v11 = dword_4DF5DC / 32; for ( i = (~(-1 << (31 - v9)) & *(&v78 + v63)) == 0; i; i = *(&v78 + v11) == 0 ) { ++v11; if ( v11 >= 3 ) goto LABEL_23; } v13 = v8 / 32; v14 = v8 & 0x8000001F; if ( v14 < 0 ) LOBYTE(v14) = ((unsigned __int8)(v14 - 1) | 0xE0) + 1; v69 = 0; v15 = 1 << (31 - v14); v16 = &v78 + v13; v70 = v15 + *v16; if ( v70 >= (unsigned int)*v16 ) { v17 = v70 < (unsigned int)v15; goto LABEL_20; } LABEL_21: v69 = 1; while ( 1 ) { --v13; *v16 = v70; if ( v13 < 0 ) break; if ( !v69 ) break; v69 = 0; v16 = &v78 + v13; v18 = *v16 + 1; v70 = v18; if ( v18 >= (unsigned int)*v16 ) { v17 = (unsigned int)v18 < 1; LABEL_20: if ( !v17 ) continue; } goto LABEL_21; } } LABEL_23: *v10 &= -1 << v59; if ( v63 + 1 < 3 ) memset(&v78 + v63 + 1, 0, 4 * (3 - (v63 + 1))); if ( v69 ) ++v3; if ( v3 >= dword_4DF5D8 - dword_4DF5DC ) { if ( v3 > dword_4DF5D8 ) { if ( v3 < dword_4DF5D4 ) { v5 = dword_4DF5E8 + v3; v78 &= 0x7FFFFFFFu; v51 = dword_4DF5E0 / 32; v52 = dword_4DF5E0 % 32; v68 = 0; v74 = 0; do { v53 = ~(-1 << v52) & *(&v78 + v74); *(&v78 + v74) = v68 | ((unsigned int)*(&v78 + v74) >> v52); ++v74; v68 = v53 << (32 - v52); } while ( v74 < 3 ); v54 = 2; v55 = &v80 - v51; do { if ( v54 < v51 ) *(&v78 + v54) = 0; else *(&v78 + v54) = *v55; --v55; --v54; } while ( v54 >= 0 ); result = 0; } else { v79 = 0; v80 = 0; v78 = -2147483648; v45 = dword_4DF5E0 / 32; v46 = dword_4DF5E0 % 32; v67 = 0; v73 = 0; do { v47 = &v78 + v73; v48 = ~(-1 << v46) & *v47; *v47 = v67 | ((unsigned int)*v47 >> v46); ++v73; v67 = v48 << (32 - v46); } while ( v73 < 3 ); v49 = 2; v50 = &v80 - v45; do { if ( v49 < v45 ) *(&v78 + v49) = 0; else *(&v78 + v49) = *v50; --v50; --v49; } while ( v49 >= 0 ); v5 = dword_4DF5D4 + dword_4DF5E8; result = 1; } goto LABEL_82; } v78 = v75; v79 = v76; v19 = (dword_4DF5D8 - v61) / 32; v80 = v77; v20 = (dword_4DF5D8 - v61) % 32; v64 = 0; v71 = 0; do { v21 = &v78 + v71; v22 = ~(-1 << v20) & *v21; *v21 = v64 | ((unsigned int)*v21 >> v20); ++v71; v64 = v22 << (32 - v20); } while ( v71 < 3 ); v23 = 2; v24 = &v80 - v19; do { if ( v23 < v19 ) *(&v78 + v23) = 0; else *(&v78 + v23) = *v24; --v24; --v23; } while ( v23 >= 0 ); v25 = dword_4DF5DC - 1; v26 = dword_4DF5DC / 32; v60 = dword_4DF5DC / 32; v27 = dword_4DF5DC % 32; v28 = &v78 + dword_4DF5DC / 32; v62 = 31 - dword_4DF5DC % 32; if ( (1 << (31 - dword_4DF5DC % 32)) & *v28 ) { for ( j = (~(-1 << (31 - v27)) & *(&v78 + v26)) == 0; j; j = *(&v78 + v26) == 0 ) { ++v26; if ( v26 >= 3 ) goto LABEL_55; } v30 = v25 / 32; v31 = v25 & 0x8000001F; if ( v31 < 0 ) LOBYTE(v31) = ((unsigned __int8)(v31 - 1) | 0xE0) + 1; v65 = 0; v32 = 1 << (31 - v31); v33 = &v78 + v30; v34 = *v33 + v32; if ( v34 < (unsigned int)*v33 || v34 < (unsigned int)v32 ) v65 = 1; *v33 = v34; for ( k = v65; ; k = v38 ) { --v30; if ( v30 < 0 ) break; if ( !k ) break; v36 = &v78 + v30; v37 = *v36 + 1; v38 = 0; if ( v37 < (unsigned int)*v36 || (unsigned int)v37 < 1 ) v38 = 1; *v36 = v37; } } LABEL_55: *v28 &= -1 << v62; if ( v60 + 1 < 3 ) memset(&v78 + v60 + 1, 0, 4 * (3 - (v60 + 1))); v39 = (dword_4DF5E0 + 1) / 32; v40 = (dword_4DF5E0 + 1) % 32; v66 = 0; v72 = 0; do { v41 = &v78 + v72; v42 = ~(-1 << v40) & *v41; *v41 = v66 | ((unsigned int)*v41 >> v40); ++v72; v66 = v42 << (32 - v40); } while ( v72 < 3 ); v43 = 2; v44 = &v80 - v39; do { if ( v43 < v39 ) *(&v78 + v43) = 0; else *(&v78 + v43) = *v44; --v44; --v43; } while ( v43 >= 0 ); } else { v78 = 0; v79 = 0; v80 = 0; } v5 = 0; result = 2; goto LABEL_82; } v5 = 0; v6 = 0; while ( !*(&v78 + v6) ) { ++v6; if ( v6 >= 3 ) { result = 0; goto LABEL_82; } } v78 = 0; v79 = 0; v80 = 0; result = 2; LABEL_82: v56 = v78 | (v58 != 0 ? 0x80000000 : 0) | (v5 << (31 - dword_4DF5E0)); if ( dword_4DF5E4 == 64 ) { v57 = v79; *(_DWORD *)(a2 + 4) = v56; *(_DWORD *)a2 = v57; } else { if ( dword_4DF5E4 == 32 ) *(_DWORD *)a2 = v56; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4DF5D4: using guessed type int dword_4DF5D4; // 4DF5D8: using guessed type int dword_4DF5D8; // 4DF5DC: using guessed type int dword_4DF5DC; // 4DF5E0: using guessed type int dword_4DF5E0; // 4DF5E4: using guessed type int dword_4DF5E4; // 4DF5E8: using guessed type int dword_4DF5E8; //----- (004A3D89) -------------------------------------------------------- signed int __cdecl sub_4A3D89(int a1, int a2) { __int16 v2; // bx@1 int v3; // ebx@1 int v4; // eax@1 int v5; // ebx@2 signed int v6; // eax@2 signed int result; // eax@5 signed int v8; // edi@7 int v9; // edx@7 int *v10; // esi@7 int v11; // eax@8 bool i; // zf@8 int v13; // eax@13 int v14; // edi@13 signed int v15; // edx@15 int *v16; // ecx@15 bool v17; // cf@16 int v18; // edi@18 int v19; // eax@30 int v20; // edx@30 int *v21; // ebx@31 int v22; // ST1C_4@31 signed int v23; // edx@32 int *v24; // ecx@32 signed int v25; // esi@37 int v26; // eax@37 int v27; // edx@37 int *v28; // ebx@37 bool j; // zf@38 int v30; // eax@43 int v31; // esi@43 signed int v32; // edx@45 int *v33; // ecx@45 int v34; // edi@45 signed int k; // ecx@48 int *v36; // ecx@50 int v37; // esi@50 signed int v38; // edi@50 int v39; // eax@57 int v40; // edx@57 int *v41; // ebx@58 int v42; // ST1C_4@58 signed int v43; // edx@59 int *v44; // ecx@59 int v45; // eax@66 int v46; // edx@66 int *v47; // ebx@67 int v48; // ST1C_4@67 signed int v49; // edx@68 int *v50; // ecx@68 int v51; // eax@74 int v52; // edx@74 int v53; // ST1C_4@75 signed int v54; // edx@76 int *v55; // ecx@76 int v56; // ebx@82 int v57; // edx@83 int v58; // [sp+8h] [bp-38h]@1 char v59; // [sp+10h] [bp-30h]@7 int v60; // [sp+10h] [bp-30h]@37 int v61; // [sp+14h] [bp-2Ch]@7 char v62; // [sp+14h] [bp-2Ch]@37 int v63; // [sp+18h] [bp-28h]@7 int v64; // [sp+18h] [bp-28h]@30 signed int v65; // [sp+18h] [bp-28h]@45 int v66; // [sp+18h] [bp-28h]@57 int v67; // [sp+18h] [bp-28h]@66 int v68; // [sp+18h] [bp-28h]@74 signed int v69; // [sp+1Ch] [bp-24h]@7 int v70; // [sp+20h] [bp-20h]@15 signed int v71; // [sp+20h] [bp-20h]@30 signed int v72; // [sp+20h] [bp-20h]@57 signed int v73; // [sp+20h] [bp-20h]@66 signed int v74; // [sp+20h] [bp-20h]@74 int v75; // [sp+24h] [bp-1Ch]@7 int v76; // [sp+28h] [bp-18h]@7 int v77; // [sp+2Ch] [bp-14h]@7 int v78; // [sp+30h] [bp-10h]@1 int v79; // [sp+34h] [bp-Ch]@1 int v80; // [sp+38h] [bp-8h]@1 unsigned int v81; // [sp+3Ch] [bp-4h]@1 int v82; // [sp+40h] [bp+0h]@1 v81 = (unsigned int)&v82 ^ __security_cookie; v2 = *(_WORD *)(a1 + 10); v58 = *(_WORD *)(a1 + 10) & 0x8000; v78 = *(_DWORD *)(a1 + 6); v3 = (v2 & 0x7FFF) - 16383; v4 = *(_WORD *)a1 << 16; v79 = *(_DWORD *)(a1 + 2); v80 = v4; if ( v3 != -16383 ) { v69 = 0; v75 = v78; v76 = v79; v77 = v80; v8 = dword_4DF5F4 - 1; v61 = v3; v63 = dword_4DF5F4 / 32; v9 = dword_4DF5F4 % 32; v10 = &v78 + dword_4DF5F4 / 32; v59 = 31 - dword_4DF5F4 % 32; if ( (1 << (31 - dword_4DF5F4 % 32)) & *v10 ) { v11 = dword_4DF5F4 / 32; for ( i = (~(-1 << (31 - v9)) & *(&v78 + v63)) == 0; i; i = *(&v78 + v11) == 0 ) { ++v11; if ( v11 >= 3 ) goto LABEL_23; } v13 = v8 / 32; v14 = v8 & 0x8000001F; if ( v14 < 0 ) LOBYTE(v14) = ((unsigned __int8)(v14 - 1) | 0xE0) + 1; v69 = 0; v15 = 1 << (31 - v14); v16 = &v78 + v13; v70 = v15 + *v16; if ( v70 >= (unsigned int)*v16 ) { v17 = v70 < (unsigned int)v15; goto LABEL_20; } LABEL_21: v69 = 1; while ( 1 ) { --v13; *v16 = v70; if ( v13 < 0 ) break; if ( !v69 ) break; v69 = 0; v16 = &v78 + v13; v18 = *v16 + 1; v70 = v18; if ( v18 >= (unsigned int)*v16 ) { v17 = (unsigned int)v18 < 1; LABEL_20: if ( !v17 ) continue; } goto LABEL_21; } } LABEL_23: *v10 &= -1 << v59; if ( v63 + 1 < 3 ) memset(&v78 + v63 + 1, 0, 4 * (3 - (v63 + 1))); if ( v69 ) ++v3; if ( v3 >= dword_4DF5F0 - dword_4DF5F4 ) { if ( v3 > dword_4DF5F0 ) { if ( v3 < dword_4DF5EC ) { v5 = dword_4DF600 + v3; v78 &= 0x7FFFFFFFu; v51 = dword_4DF5F8 / 32; v52 = dword_4DF5F8 % 32; v68 = 0; v74 = 0; do { v53 = ~(-1 << v52) & *(&v78 + v74); *(&v78 + v74) = v68 | ((unsigned int)*(&v78 + v74) >> v52); ++v74; v68 = v53 << (32 - v52); } while ( v74 < 3 ); v54 = 2; v55 = &v80 - v51; do { if ( v54 < v51 ) *(&v78 + v54) = 0; else *(&v78 + v54) = *v55; --v55; --v54; } while ( v54 >= 0 ); result = 0; } else { v79 = 0; v80 = 0; v78 = -2147483648; v45 = dword_4DF5F8 / 32; v46 = dword_4DF5F8 % 32; v67 = 0; v73 = 0; do { v47 = &v78 + v73; v48 = ~(-1 << v46) & *v47; *v47 = v67 | ((unsigned int)*v47 >> v46); ++v73; v67 = v48 << (32 - v46); } while ( v73 < 3 ); v49 = 2; v50 = &v80 - v45; do { if ( v49 < v45 ) *(&v78 + v49) = 0; else *(&v78 + v49) = *v50; --v50; --v49; } while ( v49 >= 0 ); v5 = dword_4DF5EC + dword_4DF600; result = 1; } goto LABEL_82; } v78 = v75; v79 = v76; v19 = (dword_4DF5F0 - v61) / 32; v80 = v77; v20 = (dword_4DF5F0 - v61) % 32; v64 = 0; v71 = 0; do { v21 = &v78 + v71; v22 = ~(-1 << v20) & *v21; *v21 = v64 | ((unsigned int)*v21 >> v20); ++v71; v64 = v22 << (32 - v20); } while ( v71 < 3 ); v23 = 2; v24 = &v80 - v19; do { if ( v23 < v19 ) *(&v78 + v23) = 0; else *(&v78 + v23) = *v24; --v24; --v23; } while ( v23 >= 0 ); v25 = dword_4DF5F4 - 1; v26 = dword_4DF5F4 / 32; v60 = dword_4DF5F4 / 32; v27 = dword_4DF5F4 % 32; v28 = &v78 + dword_4DF5F4 / 32; v62 = 31 - dword_4DF5F4 % 32; if ( (1 << (31 - dword_4DF5F4 % 32)) & *v28 ) { for ( j = (~(-1 << (31 - v27)) & *(&v78 + v26)) == 0; j; j = *(&v78 + v26) == 0 ) { ++v26; if ( v26 >= 3 ) goto LABEL_55; } v30 = v25 / 32; v31 = v25 & 0x8000001F; if ( v31 < 0 ) LOBYTE(v31) = ((unsigned __int8)(v31 - 1) | 0xE0) + 1; v65 = 0; v32 = 1 << (31 - v31); v33 = &v78 + v30; v34 = *v33 + v32; if ( v34 < (unsigned int)*v33 || v34 < (unsigned int)v32 ) v65 = 1; *v33 = v34; for ( k = v65; ; k = v38 ) { --v30; if ( v30 < 0 ) break; if ( !k ) break; v36 = &v78 + v30; v37 = *v36 + 1; v38 = 0; if ( v37 < (unsigned int)*v36 || (unsigned int)v37 < 1 ) v38 = 1; *v36 = v37; } } LABEL_55: *v28 &= -1 << v62; if ( v60 + 1 < 3 ) memset(&v78 + v60 + 1, 0, 4 * (3 - (v60 + 1))); v39 = (dword_4DF5F8 + 1) / 32; v40 = (dword_4DF5F8 + 1) % 32; v66 = 0; v72 = 0; do { v41 = &v78 + v72; v42 = ~(-1 << v40) & *v41; *v41 = v66 | ((unsigned int)*v41 >> v40); ++v72; v66 = v42 << (32 - v40); } while ( v72 < 3 ); v43 = 2; v44 = &v80 - v39; do { if ( v43 < v39 ) *(&v78 + v43) = 0; else *(&v78 + v43) = *v44; --v44; --v43; } while ( v43 >= 0 ); } else { v78 = 0; v79 = 0; v80 = 0; } v5 = 0; result = 2; goto LABEL_82; } v5 = 0; v6 = 0; while ( !*(&v78 + v6) ) { ++v6; if ( v6 >= 3 ) { result = 0; goto LABEL_82; } } v78 = 0; v79 = 0; v80 = 0; result = 2; LABEL_82: v56 = v78 | (v58 != 0 ? 0x80000000 : 0) | (v5 << (31 - dword_4DF5F8)); if ( dword_4DF5FC == 64 ) { v57 = v79; *(_DWORD *)(a2 + 4) = v56; *(_DWORD *)a2 = v57; } else { if ( dword_4DF5FC == 32 ) *(_DWORD *)a2 = v56; } return result; } // 4DE38C: using guessed type int __security_cookie; // 4DF5EC: using guessed type int dword_4DF5EC; // 4DF5F0: using guessed type int dword_4DF5F0; // 4DF5F4: using guessed type int dword_4DF5F4; // 4DF5F8: using guessed type int dword_4DF5F8; // 4DF5FC: using guessed type int dword_4DF5FC; // 4DF600: using guessed type int dword_4DF600; //----- (004A4793) -------------------------------------------------------- BOOL __cdecl sub_4A4793() { BOOL result; // eax@1 result = (BOOL)hConsoleOutput; if ( hConsoleOutput != (HANDLE)-1 ) { if ( hConsoleOutput != (HANDLE)-2 ) result = CloseHandle(hConsoleOutput); } return result; } //----- (004A6130) -------------------------------------------------------- void *__thiscall sub_4A6130(void *this) { void *result; // eax@1 signed int v2; // edi@1 int v3; // esi@1 signed int v4; // ecx@2 result = this; v2 = 17; *(_DWORD *)this = &off_4CBF80; v3 = (int)((char *)this + 293); do { v4 = 0; do { *(_BYTE *)(v3 + v4 + 289) = 0; *(_BYTE *)(v3 + v4) = 0; *(_BYTE *)(v3 + v4++ - 289) = 0; } while ( v4 < 17 ); v3 += 17; --v2; } while ( v2 ); *((_BYTE *)result + 149) = 1; *(_WORD *)((char *)result + 165) = 257; *((_BYTE *)result + 160) = 1; *(_WORD *)((char *)result + 169) = 257; *((_BYTE *)result + 171) = 1; *((_WORD *)result + 86) = 257; *((_BYTE *)result + 157) = 1; *((_BYTE *)result + 163) = 1; *((_BYTE *)result + 220) = 1; *((_BYTE *)result + 58) = 1; *((_BYTE *)result + 238) = 1; *((_BYTE *)result + 256) = 1; *((_BYTE *)result + 274) = 1; *((_BYTE *)result + 4) = 1; *((_BYTE *)result + 13) = 1; *((_BYTE *)result + 112) = 1; *((_BYTE *)result + 115) = 1; *((_BYTE *)result + 47) = 1; *((_BYTE *)result + 81) = 1; *((_BYTE *)result + 98) = 1; *((_BYTE *)result + 438) = 1; *((_WORD *)result + 227) = 257; *((_BYTE *)result + 449) = 1; *((_WORD *)result + 229) = 257; *((_BYTE *)result + 460) = 1; *(_WORD *)((char *)result + 461) = 257; *((_BYTE *)result + 509) = 1; *((_BYTE *)result + 347) = 1; *((_BYTE *)result + 527) = 1; *((_BYTE *)result + 545) = 1; *((_BYTE *)result + 563) = 1; *((_WORD *)result + 146) = 257; *((_BYTE *)result + 302) = 1; *((_BYTE *)result + 401) = 1; *((_BYTE *)result + 404) = 1; *((_BYTE *)result + 336) = 1; *((_BYTE *)result + 370) = 1; *((_BYTE *)result + 387) = 1; *((_BYTE *)result + 727) = 1; *(_WORD *)((char *)result + 743) = 257; *((_BYTE *)result + 738) = 1; *(_WORD *)((char *)result + 747) = 257; *((_BYTE *)result + 749) = 1; *((_WORD *)result + 375) = 257; *((_BYTE *)result + 741) = 1; *((_BYTE *)result + 798) = 1; *((_BYTE *)result + 636) = 1; *((_BYTE *)result + 816) = 1; *((_BYTE *)result + 834) = 1; *((_BYTE *)result + 870) = 1; *((_BYTE *)result + 852) = 1; *(_WORD *)((char *)result + 581) = 257; *((_BYTE *)result + 591) = 1; *((_BYTE *)result + 690) = 1; *((_BYTE *)result + 693) = 1; *((_BYTE *)result + 625) = 1; *((_BYTE *)result + 659) = 1; *((_BYTE *)result + 676) = 1; return result; } // 4CBF80: using guessed type int (__thiscall *off_4CBF80)(void *, char); //----- (004A62E0) -------------------------------------------------------- void __thiscall sub_4A62E0(void *this) { *(_DWORD *)this = &off_4CBF80; } // 4CBF80: using guessed type int (__thiscall *off_4CBF80)(void *, char); //----- (004A62F0) -------------------------------------------------------- void *__thiscall sub_4A62F0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_4CBF80; if ( a2 & 1 ) operator delete(this); return v2; } // 4CBF80: using guessed type int (__thiscall *off_4CBF80)(void *, char); //----- (004A6320) -------------------------------------------------------- signed int __thiscall sub_4A6320(int this, unsigned __int16 a2, unsigned int a3) { int v3; // edi@1 signed int result; // eax@2 int v5; // esi@3 int v6; // edx@5 v3 = 10 * a2; if ( (unsigned int)v3 < *(_DWORD *)(this + 68) ) { result = 0; v5 = 40 * a2; do { if ( (unsigned int)(result + v3) >= *(_DWORD *)(this + 68) ) break; v6 = *(_DWORD *)(v5 + *(_DWORD *)(this + 64)); if ( !v6 ) break; if ( a3 < *(_DWORD *)(v6 + 35) ) return result; ++result; v5 += 4; } while ( (unsigned int)result < 0xA ); --result; } else { result = -1; } return result; } //----- (004A6370) -------------------------------------------------------- int __usercall sub_4A6370(int a1) { return sub_401000(*(_DWORD *)(a1 - 16)); } // 401000: using guessed type int __thiscall sub_401000(_DWORD); //----- (004A6378) -------------------------------------------------------- HANDLE __usercall sub_4A6378(int a1) { return sub_445DE0(*(_DWORD *)(a1 - 16) + 1308); } //----- (004A6386) -------------------------------------------------------- void __usercall sub_4A6386(int a1) { sub_43C560(*(_DWORD *)(a1 - 16) + 1356); } //----- (004A6394) -------------------------------------------------------- void __usercall sub_4A6394(int a1) { sub_43D110(*(_DWORD *)(a1 - 16) + 38968); } //----- (004A63A2) -------------------------------------------------------- int __usercall sub_4A63A2(int a1) { return sub_401000(*(_DWORD *)(a1 - 16) + 2136208); } // 401000: using guessed type int __thiscall sub_401000(_DWORD); //----- (004A63B0) -------------------------------------------------------- void __usercall sub_4A63B0(int a1) { sub_43EC90(*(_DWORD *)(a1 - 16) + 2137480); } //----- (004A63BE) -------------------------------------------------------- void __usercall sub_4A63BE(int a1) { sub_43EC90(*(_DWORD *)(a1 - 16) + 2137544); } //----- (004A63CC) -------------------------------------------------------- void __usercall sub_4A63CC(int a1) { sub_43EC90(*(_DWORD *)(a1 - 16) + 2137608); } //----- (004A63DA) -------------------------------------------------------- void __usercall sub_4A63DA(int a1) { sub_43EC90(*(_DWORD *)(a1 - 16) + 2137688); } //----- (004A63E8) -------------------------------------------------------- void __usercall sub_4A63E8(int a1) { sub_43EC90(*(_DWORD *)(a1 - 16) + 2137752); } //----- (004A63F6) -------------------------------------------------------- void __usercall sub_4A63F6(int a1) { sub_43EC90(*(_DWORD *)(a1 - 16) + 2137816); } //----- (004A6404) -------------------------------------------------------- void __usercall sub_4A6404(int a1) { sub_43DFB0(*(_DWORD *)(a1 - 16) + 2137880); } //----- (004A6412) -------------------------------------------------------- int __cdecl sub_4A6412(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6430) -------------------------------------------------------- int (__stdcall **__usercall sub_4A6430(int a1))(int, int) { return sub_44A150((SOCKET *)(a1 - 452)); } //----- (004A643B) -------------------------------------------------------- int __cdecl sub_4A643B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 125)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6470) -------------------------------------------------------- void __usercall sub_4A6470(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (004A647B) -------------------------------------------------------- int __cdecl sub_4A647B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A64A0) -------------------------------------------------------- void __usercall sub_4A64A0(int a1) { type_info::_type_info((void *)(a1 - 1152)); } //----- (004A64AB) -------------------------------------------------------- void __usercall sub_4A64AB(int a1) { type_info::_type_info((void *)(a1 - 1196)); } //----- (004A64B6) -------------------------------------------------------- int __usercall sub_4A64B6(int a1) { return _LN21((void *)(a1 - 1128), 0x10u, 5, type_info::_type_info); } //----- (004A64CC) -------------------------------------------------------- void __usercall sub_4A64CC(int a1) { operator delete(*(void **)(a1 - 1136)); } //----- (004A64DA) -------------------------------------------------------- void __usercall sub_4A64DA(int a1) { type_info::_type_info(*(void **)(a1 - 1200)); } //----- (004A64E5) -------------------------------------------------------- void __usercall sub_4A64E5(int a1) { type_info::_type_info(*(void **)(a1 - 1180)); } //----- (004A64F0) -------------------------------------------------------- int __cdecl sub_4A64F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 301)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6520) -------------------------------------------------------- void __usercall sub_4A6520(int a1) { type_info::_type_info(*(void **)(a1 - 1048)); } //----- (004A652B) -------------------------------------------------------- void __usercall sub_4A652B(int a1) { operator delete(*(void **)(a1 - 1044)); } //----- (004A6539) -------------------------------------------------------- int __cdecl sub_4A6539(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 262)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6570) -------------------------------------------------------- int __cdecl sub_4A6570() { int result; // eax@1 result = dword_4DFA3C & 0xFFFFFFFE; dword_4DFA3C &= 0xFFFFFFFEu; return result; } // 4DFA3C: using guessed type int dword_4DFA3C; //----- (004A65A0) -------------------------------------------------------- void __usercall sub_4A65A0(int a1) { nullsub_1((void *)(a1 - 8480)); } //----- (004A65AB) -------------------------------------------------------- void __usercall sub_4A65AB(int a1) { nullsub_1((void *)(a1 - 16676)); } //----- (004A65B6) -------------------------------------------------------- int __cdecl sub_4A65B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4175)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A65E0) -------------------------------------------------------- void __usercall sub_4A65E0(int a1) { nullsub_1((void *)(a1 - 8788)); } //----- (004A65EB) -------------------------------------------------------- int __cdecl sub_4A65EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2206)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6620) -------------------------------------------------------- void __usercall sub_4A6620(int a1) { nullsub_1((void *)(a1 - 8724)); } //----- (004A662B) -------------------------------------------------------- int __cdecl sub_4A662B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2182)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6660) -------------------------------------------------------- void __usercall sub_4A6660(int a1) { nullsub_1((void *)(a1 - 21936)); } //----- (004A666B) -------------------------------------------------------- void __usercall sub_4A666B(int a1) { nullsub_1((void *)(a1 - 13740)); } //----- (004A6676) -------------------------------------------------------- int __cdecl sub_4A6676(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5489)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A66A0) -------------------------------------------------------- void __usercall sub_4A66A0(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A66AB) -------------------------------------------------------- int __cdecl sub_4A66AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2117)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A66E0) -------------------------------------------------------- void __usercall sub_4A66E0(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A66EB) -------------------------------------------------------- int __cdecl sub_4A66EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2054)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6720) -------------------------------------------------------- void __usercall sub_4A6720(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A672B) -------------------------------------------------------- void __usercall sub_4A672B(int a1) { nullsub_1((void *)(a1 - 16408)); } //----- (004A6736) -------------------------------------------------------- int __cdecl sub_4A6736(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4104)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6760) -------------------------------------------------------- void __usercall sub_4A6760(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A676B) -------------------------------------------------------- void __usercall sub_4A676B(int a1) { nullsub_1((void *)(a1 - 16408)); } //----- (004A6776) -------------------------------------------------------- int __cdecl sub_4A6776(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4103)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A67A0) -------------------------------------------------------- void __usercall sub_4A67A0(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A67AB) -------------------------------------------------------- void __usercall sub_4A67AB(int a1) { nullsub_1((void *)(a1 - 16408)); } //----- (004A67B6) -------------------------------------------------------- int __cdecl sub_4A67B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4113)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A67E0) -------------------------------------------------------- void __usercall sub_4A67E0(int a1) { nullsub_1((void *)(a1 - 16688)); } //----- (004A67EB) -------------------------------------------------------- void __usercall sub_4A67EB(int a1) { nullsub_1((void *)(a1 - 24884)); } //----- (004A67F6) -------------------------------------------------------- void __usercall sub_4A67F6(int a1) { nullsub_1((void *)(a1 - 8492)); } //----- (004A6801) -------------------------------------------------------- int __cdecl sub_4A6801(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6221)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6830) -------------------------------------------------------- void __usercall sub_4A6830(int a1) { nullsub_1((void *)(a1 - 19072)); } //----- (004A683B) -------------------------------------------------------- void __usercall sub_4A683B(int a1) { nullsub_1((void *)(a1 - 10012)); } //----- (004A6846) -------------------------------------------------------- void __usercall sub_4A6846(int a1) { nullsub_1((void *)(a1 - 10012)); } //----- (004A6851) -------------------------------------------------------- void __usercall sub_4A6851(int a1) { nullsub_1((void *)(a1 - 10012)); } //----- (004A685C) -------------------------------------------------------- void __usercall sub_4A685C(int a1) { nullsub_1((void *)(a1 - 10012)); } //----- (004A6867) -------------------------------------------------------- void __usercall sub_4A6867(int a1) { nullsub_1((void *)(a1 - 10012)); } //----- (004A6872) -------------------------------------------------------- void __usercall sub_4A6872(int a1) { nullsub_1((void *)(a1 - 10012)); } //----- (004A687D) -------------------------------------------------------- int __cdecl sub_4A687D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4778)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A68B0) -------------------------------------------------------- void __usercall sub_4A68B0(int a1) { nullsub_1((void *)(a1 - 8508)); } //----- (004A68BB) -------------------------------------------------------- int __cdecl sub_4A68BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2129)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A68F0) -------------------------------------------------------- void __usercall sub_4A68F0(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A68FB) -------------------------------------------------------- int __cdecl sub_4A68FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2123)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6930) -------------------------------------------------------- void __usercall sub_4A6930(int a1) { nullsub_1((void *)(a1 - 8484)); } //----- (004A693B) -------------------------------------------------------- int __cdecl sub_4A693B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2124)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6970) -------------------------------------------------------- void __usercall sub_4A6970(int a1) { nullsub_1((void *)(a1 - 16432)); } //----- (004A697B) -------------------------------------------------------- void __usercall sub_4A697B(int a1) { nullsub_1((void *)(a1 - 8236)); } //----- (004A6986) -------------------------------------------------------- void __usercall sub_4A6986(int a1) { nullsub_1((void *)(a1 - 24628)); } //----- (004A6991) -------------------------------------------------------- int __cdecl sub_4A6991(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6161)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A69C0) -------------------------------------------------------- void __usercall sub_4A69C0(int a1) { nullsub_1((void *)(a1 - 16408)); } //----- (004A69CB) -------------------------------------------------------- void __usercall sub_4A69CB(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A69D6) -------------------------------------------------------- void __usercall sub_4A69D6(int a1) { nullsub_1((void *)(a1 - 24604)); } //----- (004A69E1) -------------------------------------------------------- int __cdecl sub_4A69E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6155)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6A10) -------------------------------------------------------- void __usercall sub_4A6A10(int a1) { nullsub_1((void *)(a1 - 33104)); } //----- (004A6A1B) -------------------------------------------------------- void __usercall sub_4A6A1B(int a1) { nullsub_1((void *)(a1 - 24908)); } //----- (004A6A26) -------------------------------------------------------- void __usercall sub_4A6A26(int a1) { nullsub_1((void *)(a1 - 8516)); } //----- (004A6A31) -------------------------------------------------------- void __usercall sub_4A6A31(int a1) { nullsub_1((void *)(a1 - 16712)); } //----- (004A6A3C) -------------------------------------------------------- int __cdecl sub_4A6A3C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8280)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6A70) -------------------------------------------------------- void __usercall sub_4A6A70(int a1) { nullsub_1((void *)(a1 - 24676)); } //----- (004A6A7B) -------------------------------------------------------- void __usercall sub_4A6A7B(int a1) { nullsub_1((void *)(a1 - 8284)); } //----- (004A6A86) -------------------------------------------------------- void __usercall sub_4A6A86(int a1) { nullsub_1((void *)(a1 - 16480)); } //----- (004A6A91) -------------------------------------------------------- void __usercall sub_4A6A91(int a1) { nullsub_1((void *)(a1 - 32872)); } //----- (004A6A9C) -------------------------------------------------------- int __cdecl sub_4A6A9C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8221)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6AD0) -------------------------------------------------------- void __usercall sub_4A6AD0(int a1) { nullsub_1((void *)(a1 - 24900)); } //----- (004A6ADB) -------------------------------------------------------- void __usercall sub_4A6ADB(int a1) { nullsub_1((void *)(a1 - 8508)); } //----- (004A6AE6) -------------------------------------------------------- void __usercall sub_4A6AE6(int a1) { nullsub_1((void *)(a1 - 16704)); } //----- (004A6AF1) -------------------------------------------------------- void __usercall sub_4A6AF1(int a1) { nullsub_1((void *)(a1 - 33096)); } //----- (004A6AFC) -------------------------------------------------------- int __cdecl sub_4A6AFC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8277)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6B30) -------------------------------------------------------- void __usercall sub_4A6B30(int a1) { nullsub_1((void *)(a1 - 24644)); } //----- (004A6B3B) -------------------------------------------------------- void __usercall sub_4A6B3B(int a1) { nullsub_1((void *)(a1 - 8252)); } //----- (004A6B46) -------------------------------------------------------- void __usercall sub_4A6B46(int a1) { nullsub_1((void *)(a1 - 16448)); } //----- (004A6B51) -------------------------------------------------------- void __usercall sub_4A6B51(int a1) { nullsub_1((void *)(a1 - 32840)); } //----- (004A6B5C) -------------------------------------------------------- int __cdecl sub_4A6B5C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8213)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6B90) -------------------------------------------------------- void __usercall sub_4A6B90(int a1) { nullsub_1((void *)(a1 - 8256)); } //----- (004A6B9B) -------------------------------------------------------- int __cdecl sub_4A6B9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2069)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6BD0) -------------------------------------------------------- void __usercall sub_4A6BD0(int a1) { nullsub_1((void *)(a1 - 8280)); } //----- (004A6BDB) -------------------------------------------------------- int __cdecl sub_4A6BDB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2075)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6C10) -------------------------------------------------------- void __usercall sub_4A6C10(int a1) { nullsub_1((void *)(a1 - 8580)); } //----- (004A6C1B) -------------------------------------------------------- void __usercall sub_4A6C1B(int a1) { nullsub_1((void *)(a1 - 8580)); } //----- (004A6C26) -------------------------------------------------------- void __usercall sub_4A6C26(int a1) { nullsub_1((void *)(a1 - 8580)); } //----- (004A6C31) -------------------------------------------------------- void __usercall sub_4A6C31(int a1) { nullsub_1((void *)(a1 - 16776)); } //----- (004A6C3C) -------------------------------------------------------- int __cdecl sub_4A6C3C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4196)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6C70) -------------------------------------------------------- void __usercall sub_4A6C70(int a1) { nullsub_1((void *)(a1 - 16424)); } //----- (004A6C7B) -------------------------------------------------------- void __usercall sub_4A6C7B(int a1) { nullsub_1((void *)(a1 - 8228)); } //----- (004A6C86) -------------------------------------------------------- int __cdecl sub_4A6C86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4106)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6CB0) -------------------------------------------------------- void __usercall sub_4A6CB0(int a1) { nullsub_1((void *)(a1 - 16680)); } //----- (004A6CBB) -------------------------------------------------------- void __usercall sub_4A6CBB(int a1) { nullsub_1((void *)(a1 - 33072)); } //----- (004A6CC6) -------------------------------------------------------- void __usercall sub_4A6CC6(int a1) { nullsub_1((void *)(a1 - 24876)); } //----- (004A6CD1) -------------------------------------------------------- void __usercall sub_4A6CD1(int a1) { nullsub_1((void *)(a1 - 8484)); } //----- (004A6CDC) -------------------------------------------------------- int __cdecl sub_4A6CDC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8273)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6D10) -------------------------------------------------------- void __usercall sub_4A6D10(int a1) { nullsub_1((void *)(a1 - 24740)); } //----- (004A6D1B) -------------------------------------------------------- void __usercall sub_4A6D1B(int a1) { nullsub_1((void *)(a1 - 16544)); } //----- (004A6D26) -------------------------------------------------------- void __usercall sub_4A6D26(int a1) { nullsub_1((void *)(a1 - 8348)); } //----- (004A6D31) -------------------------------------------------------- int __cdecl sub_4A6D31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6188)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6D60) -------------------------------------------------------- void __usercall sub_4A6D60(int a1) { nullsub_1((void *)(a1 - 24628)); } //----- (004A6D6B) -------------------------------------------------------- void __usercall sub_4A6D6B(int a1) { nullsub_1((void *)(a1 - 8236)); } //----- (004A6D76) -------------------------------------------------------- void __usercall sub_4A6D76(int a1) { nullsub_1((void *)(a1 - 16432)); } //----- (004A6D81) -------------------------------------------------------- int __cdecl sub_4A6D81(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6158)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6DB0) -------------------------------------------------------- void __usercall sub_4A6DB0(int a1) { nullsub_1((void *)(a1 - 16440)); } //----- (004A6DBB) -------------------------------------------------------- void __usercall sub_4A6DBB(int a1) { nullsub_1((void *)(a1 - 8244)); } //----- (004A6DC6) -------------------------------------------------------- void __usercall sub_4A6DC6(int a1) { nullsub_1((void *)(a1 - 24636)); } //----- (004A6DD1) -------------------------------------------------------- int __cdecl sub_4A6DD1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6164)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6E00) -------------------------------------------------------- void __usercall sub_4A6E00(int a1) { nullsub_1((void *)(a1 - 8324)); } //----- (004A6E0B) -------------------------------------------------------- int __cdecl sub_4A6E0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2086)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6E40) -------------------------------------------------------- void __usercall sub_4A6E40(int a1) { nullsub_1((void *)(a1 - 8344)); } //----- (004A6E4B) -------------------------------------------------------- int __cdecl sub_4A6E4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2091)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6E80) -------------------------------------------------------- void __usercall sub_4A6E80(int a1) { nullsub_1((void *)(a1 - 24604)); } //----- (004A6E8B) -------------------------------------------------------- void __usercall sub_4A6E8B(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A6E96) -------------------------------------------------------- void __usercall sub_4A6E96(int a1) { nullsub_1((void *)(a1 - 16408)); } //----- (004A6EA1) -------------------------------------------------------- int __cdecl sub_4A6EA1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6154)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6ED0) -------------------------------------------------------- void __usercall sub_4A6ED0(int a1) { nullsub_1((void *)(a1 - 16408)); } //----- (004A6EDB) -------------------------------------------------------- void __usercall sub_4A6EDB(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A6EE6) -------------------------------------------------------- void __usercall sub_4A6EE6(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A6EF1) -------------------------------------------------------- void __usercall sub_4A6EF1(int a1) { nullsub_1((void *)(a1 - 16408)); } //----- (004A6EFC) -------------------------------------------------------- void __usercall sub_4A6EFC(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A6F07) -------------------------------------------------------- void __usercall sub_4A6F07(int a1) { nullsub_1((void *)(a1 - 24604)); } //----- (004A6F12) -------------------------------------------------------- int __cdecl sub_4A6F12(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6154)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6F40) -------------------------------------------------------- void __usercall sub_4A6F40(int a1) { nullsub_1((void *)(a1 - 17060)); } //----- (004A6F4B) -------------------------------------------------------- void __usercall sub_4A6F4B(int a1) { nullsub_1((void *)(a1 - 25256)); } //----- (004A6F56) -------------------------------------------------------- void __usercall sub_4A6F56(int a1) { nullsub_1((void *)(a1 - 8864)); } //----- (004A6F61) -------------------------------------------------------- int __cdecl sub_4A6F61(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6320)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6F90) -------------------------------------------------------- void __usercall sub_4A6F90(int a1) { nullsub_1((void *)(a1 - 8244)); } //----- (004A6F9B) -------------------------------------------------------- int __cdecl sub_4A6F9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2065)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A6FD0) -------------------------------------------------------- void __usercall sub_4A6FD0(int a1) { nullsub_1((void *)(a1 - 8228)); } //----- (004A6FDB) -------------------------------------------------------- int __cdecl sub_4A6FDB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2058)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7010) -------------------------------------------------------- void __usercall sub_4A7010(int a1) { nullsub_1((void *)(a1 - 74672)); } //----- (004A701B) -------------------------------------------------------- int __cdecl sub_4A701B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 18672)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7050) -------------------------------------------------------- void __usercall sub_4A7050(int a1) { nullsub_1((void *)(a1 - 14000)); } //----- (004A705B) -------------------------------------------------------- int __cdecl sub_4A705B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3504)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7090) -------------------------------------------------------- void __usercall sub_4A7090(int a1) { nullsub_1((void *)(a1 - 8516)); } //----- (004A709B) -------------------------------------------------------- void __usercall sub_4A709B(int a1) { nullsub_1((void *)(a1 - 8516)); } //----- (004A70A6) -------------------------------------------------------- int __cdecl sub_4A70A6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2134)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A70D0) -------------------------------------------------------- void __usercall sub_4A70D0(int a1) { nullsub_1((void *)(a1 - 8628)); } //----- (004A70DB) -------------------------------------------------------- void __usercall sub_4A70DB(int a1) { nullsub_1((void *)(a1 - 8628)); } //----- (004A70E6) -------------------------------------------------------- int __cdecl sub_4A70E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2163)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7110) -------------------------------------------------------- void __usercall sub_4A7110(int a1) { nullsub_1((void *)(a1 - 8780)); } //----- (004A711B) -------------------------------------------------------- int __cdecl sub_4A711B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2198)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7150) -------------------------------------------------------- void __usercall sub_4A7150(int a1) { nullsub_1((void *)(a1 - 8500)); } //----- (004A715B) -------------------------------------------------------- void __usercall sub_4A715B(int a1) { nullsub_1((void *)(a1 - 16696)); } //----- (004A7166) -------------------------------------------------------- void __usercall sub_4A7166(int a1) { nullsub_1((void *)(a1 - 16696)); } //----- (004A7171) -------------------------------------------------------- int __cdecl sub_4A7171(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4175)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A71A0) -------------------------------------------------------- void __usercall sub_4A71A0(int a1) { nullsub_1((void *)(a1 - 16728)); } //----- (004A71AB) -------------------------------------------------------- void __usercall sub_4A71AB(int a1) { nullsub_1((void *)(a1 - 8532)); } //----- (004A71B6) -------------------------------------------------------- void __usercall sub_4A71B6(int a1) { nullsub_1((void *)(a1 - 8532)); } //----- (004A71C1) -------------------------------------------------------- int __cdecl sub_4A71C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4184)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A71F0) -------------------------------------------------------- void __usercall sub_4A71F0(int a1) { nullsub_1((void *)(a1 - 8548)); } //----- (004A71FB) -------------------------------------------------------- void __usercall sub_4A71FB(int a1) { nullsub_1((void *)(a1 - 16744)); } //----- (004A7206) -------------------------------------------------------- void __usercall sub_4A7206(int a1) { nullsub_1((void *)(a1 - 16744)); } //----- (004A7211) -------------------------------------------------------- int __cdecl sub_4A7211(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4214)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7240) -------------------------------------------------------- void __usercall sub_4A7240(int a1) { nullsub_1((void *)(a1 - 8844)); } //----- (004A724B) -------------------------------------------------------- int __cdecl sub_4A724B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2216)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7280) -------------------------------------------------------- void __usercall sub_4A7280(int a1) { nullsub_1((void *)(a1 - 8748)); } //----- (004A728B) -------------------------------------------------------- void __usercall sub_4A728B(int a1) { nullsub_1((void *)(a1 - 16944)); } //----- (004A7296) -------------------------------------------------------- int __cdecl sub_4A7296(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4241)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A72C0) -------------------------------------------------------- void __usercall sub_4A72C0(int a1) { nullsub_1((void *)(a1 - 8500)); } //----- (004A72CB) -------------------------------------------------------- void __usercall sub_4A72CB(int a1) { nullsub_1((void *)(a1 - 16696)); } //----- (004A72D6) -------------------------------------------------------- int __cdecl sub_4A72D6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4174)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7300) -------------------------------------------------------- void __usercall sub_4A7300(int a1) { nullsub_1((void *)(a1 - 8508)); } //----- (004A730B) -------------------------------------------------------- void __usercall sub_4A730B(int a1) { nullsub_1((void *)(a1 - 16704)); } //----- (004A7316) -------------------------------------------------------- int __cdecl sub_4A7316(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4176)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7340) -------------------------------------------------------- void __usercall sub_4A7340(int a1) { nullsub_1((void *)(a1 - 16688)); } //----- (004A734B) -------------------------------------------------------- void __usercall sub_4A734B(int a1) { nullsub_1((void *)(a1 - 8492)); } //----- (004A7356) -------------------------------------------------------- int __cdecl sub_4A7356(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4175)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7380) -------------------------------------------------------- void __usercall sub_4A7380(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A738B) -------------------------------------------------------- void __usercall sub_4A738B(int a1) { nullsub_1((void *)(a1 - 16664)); } //----- (004A7396) -------------------------------------------------------- int __cdecl sub_4A7396(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4168)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A73C0) -------------------------------------------------------- void __usercall sub_4A73C0(int a1) { nullsub_1((void *)(a1 - 16452)); } //----- (004A73CB) -------------------------------------------------------- void __usercall sub_4A73CB(int a1) { nullsub_1((void *)(a1 - 8256)); } //----- (004A73D6) -------------------------------------------------------- void __usercall sub_4A73D6(int a1) { nullsub_1((void *)(a1 - 24648)); } //----- (004A73E1) -------------------------------------------------------- int __cdecl sub_4A73E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6164)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7410) -------------------------------------------------------- void __usercall sub_4A7410(int a1) { nullsub_1((void *)(a1 - 8312)); } //----- (004A741B) -------------------------------------------------------- int __cdecl sub_4A741B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2078)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7450) -------------------------------------------------------- void __usercall sub_4A7450(int a1) { nullsub_1((void *)(a1 - 8288)); } //----- (004A745B) -------------------------------------------------------- int __cdecl sub_4A745B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2075)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7490) -------------------------------------------------------- void __usercall sub_4A7490(int a1) { nullsub_1((void *)(a1 - 8364)); } //----- (004A749B) -------------------------------------------------------- int __cdecl sub_4A749B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2093)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A74D0) -------------------------------------------------------- void __usercall sub_4A74D0(int a1) { nullsub_1((void *)(a1 - 16944)); } //----- (004A74DB) -------------------------------------------------------- void __usercall sub_4A74DB(int a1) { nullsub_1((void *)(a1 - 8748)); } //----- (004A74E6) -------------------------------------------------------- int __cdecl sub_4A74E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4241)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7510) -------------------------------------------------------- void __usercall sub_4A7510(int a1) { nullsub_1((void *)(a1 - 9540)); } //----- (004A751B) -------------------------------------------------------- int __cdecl sub_4A751B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2387)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7550) -------------------------------------------------------- void __usercall sub_4A7550(int a1) { nullsub_1((void *)(a1 - 9376)); } //----- (004A755B) -------------------------------------------------------- int __cdecl sub_4A755B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2353)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7590) -------------------------------------------------------- void __usercall sub_4A7590(int a1) { nullsub_1((void *)(a1 - 9720)); } //----- (004A759B) -------------------------------------------------------- int __cdecl sub_4A759B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2433)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A75D0) -------------------------------------------------------- void __usercall sub_4A75D0(int a1) { nullsub_1((void *)(a1 - 9720)); } //----- (004A75DB) -------------------------------------------------------- int __cdecl sub_4A75DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2431)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7610) -------------------------------------------------------- void __usercall sub_4A7610(int a1) { nullsub_1((void *)(a1 - 9720)); } //----- (004A761B) -------------------------------------------------------- int __cdecl sub_4A761B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2434)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7650) -------------------------------------------------------- void __usercall sub_4A7650(int a1) { nullsub_1((void *)(a1 - 8488)); } //----- (004A765B) -------------------------------------------------------- void __usercall sub_4A765B(int a1) { nullsub_1((void *)(a1 - 16684)); } //----- (004A7666) -------------------------------------------------------- int __cdecl sub_4A7666(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4171)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7690) -------------------------------------------------------- void __usercall sub_4A7690(int a1) { nullsub_1((void *)(a1 - 8496)); } //----- (004A769B) -------------------------------------------------------- int __cdecl sub_4A769B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2124)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A76D0) -------------------------------------------------------- void __usercall sub_4A76D0(int a1) { nullsub_1((void *)(a1 - 8516)); } //----- (004A76DB) -------------------------------------------------------- int __cdecl sub_4A76DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2129)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7710) -------------------------------------------------------- void __usercall sub_4A7710(int a1) { nullsub_1((void *)(a1 - 8276)); } //----- (004A771B) -------------------------------------------------------- void __usercall sub_4A771B(int a1) { nullsub_1((void *)(a1 - 16472)); } //----- (004A7726) -------------------------------------------------------- int __cdecl sub_4A7726(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4122)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7750) -------------------------------------------------------- void __usercall sub_4A7750(int a1) { nullsub_1((void *)(a1 - 124964)); } //----- (004A775B) -------------------------------------------------------- int __cdecl sub_4A775B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 31245)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7790) -------------------------------------------------------- void __usercall sub_4A7790(int a1) { nullsub_1((void *)(a1 - 8980)); } //----- (004A779B) -------------------------------------------------------- int __cdecl sub_4A779B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2247)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A77D0) -------------------------------------------------------- void __usercall sub_4A77D0(int a1) { nullsub_1((void *)(a1 - 16852)); } //----- (004A77DB) -------------------------------------------------------- void __usercall sub_4A77DB(int a1) { nullsub_1((void *)(a1 - 8656)); } //----- (004A77E6) -------------------------------------------------------- void __usercall sub_4A77E6(int a1) { nullsub_1((void *)(a1 - 8656)); } //----- (004A77F1) -------------------------------------------------------- int __cdecl sub_4A77F1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4218)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7820) -------------------------------------------------------- void __usercall sub_4A7820(int a1) { nullsub_1((void *)(a1 - 8552)); } //----- (004A782B) -------------------------------------------------------- int __cdecl sub_4A782B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2138)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7860) -------------------------------------------------------- void __usercall sub_4A7860(int a1) { nullsub_1((void *)(a1 - 8308)); } //----- (004A786B) -------------------------------------------------------- int __cdecl sub_4A786B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2078)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A78A0) -------------------------------------------------------- void __usercall sub_4A78A0(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A78AB) -------------------------------------------------------- void __usercall sub_4A78AB(int a1) { nullsub_1((void *)(a1 - 16664)); } //----- (004A78B6) -------------------------------------------------------- int __cdecl sub_4A78B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4166)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A78E0) -------------------------------------------------------- void __usercall sub_4A78E0(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A78EB) -------------------------------------------------------- void __usercall sub_4A78EB(int a1) { nullsub_1((void *)(a1 - 16664)); } //----- (004A78F6) -------------------------------------------------------- void __usercall sub_4A78F6(int a1) { nullsub_1((void *)(a1 - 16664)); } //----- (004A7901) -------------------------------------------------------- int __cdecl sub_4A7901(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4166)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7930) -------------------------------------------------------- void __usercall sub_4A7930(int a1) { nullsub_1((void *)(a1 - 16664)); } //----- (004A793B) -------------------------------------------------------- void __usercall sub_4A793B(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A7946) -------------------------------------------------------- void __usercall sub_4A7946(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A7951) -------------------------------------------------------- int __cdecl sub_4A7951(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4166)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7980) -------------------------------------------------------- void __usercall sub_4A7980(int a1) { nullsub_1((void *)(a1 - 16688)); } //----- (004A798B) -------------------------------------------------------- void __usercall sub_4A798B(int a1) { nullsub_1((void *)(a1 - 8492)); } //----- (004A7996) -------------------------------------------------------- int __cdecl sub_4A7996(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4181)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A79C0) -------------------------------------------------------- void __usercall sub_4A79C0(int a1) { nullsub_1((void *)(a1 - 8332)); } //----- (004A79CB) -------------------------------------------------------- int __cdecl sub_4A79CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2085)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7A00) -------------------------------------------------------- void __usercall sub_4A7A00(int a1) { nullsub_1((void *)(a1 - 8736)); } //----- (004A7A0B) -------------------------------------------------------- void __usercall sub_4A7A0B(int a1) { nullsub_1((void *)(a1 - 16932)); } //----- (004A7A16) -------------------------------------------------------- int __cdecl sub_4A7A16(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4240)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7A40) -------------------------------------------------------- void __usercall sub_4A7A40(int a1) { nullsub_1((void *)(a1 - 8596)); } //----- (004A7A4B) -------------------------------------------------------- int __cdecl sub_4A7A4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2153)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7A80) -------------------------------------------------------- void __usercall sub_4A7A80(int a1) { nullsub_1((void *)(a1 - 10780)); } //----- (004A7A8B) -------------------------------------------------------- int __cdecl sub_4A7A8B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2697)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7AC0) -------------------------------------------------------- void __usercall sub_4A7AC0(int a1) { nullsub_1((void *)(a1 - 8480)); } //----- (004A7ACB) -------------------------------------------------------- void __usercall sub_4A7ACB(int a1) { nullsub_1((void *)(a1 - 16676)); } //----- (004A7AD6) -------------------------------------------------------- int __cdecl sub_4A7AD6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4169)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7B00) -------------------------------------------------------- void __usercall sub_4A7B00(int a1) { nullsub_1((void *)(a1 - 8480)); } //----- (004A7B0B) -------------------------------------------------------- int __cdecl sub_4A7B0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2120)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7B40) -------------------------------------------------------- void __usercall sub_4A7B40(int a1) { nullsub_1((void *)(a1 - 20408)); } //----- (004A7B4B) -------------------------------------------------------- int __cdecl sub_4A7B4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5108)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7B80) -------------------------------------------------------- void __usercall sub_4A7B80(int a1) { nullsub_1((void *)(a1 - 8492)); } //----- (004A7B8B) -------------------------------------------------------- void __usercall sub_4A7B8B(int a1) { nullsub_1((void *)(a1 - 16688)); } //----- (004A7B96) -------------------------------------------------------- int __cdecl sub_4A7B96(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4172)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7BC0) -------------------------------------------------------- void __usercall sub_4A7BC0(int a1) { nullsub_1((void *)(a1 - 8736)); } //----- (004A7BCB) -------------------------------------------------------- int __cdecl sub_4A7BCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2188)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7C00) -------------------------------------------------------- void __usercall sub_4A7C00(int a1) { nullsub_1((void *)(a1 - 8752)); } //----- (004A7C0B) -------------------------------------------------------- int __cdecl sub_4A7C0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2192)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7C40) -------------------------------------------------------- void __usercall sub_4A7C40(int a1) { nullsub_1((void *)(a1 - 8504)); } //----- (004A7C4B) -------------------------------------------------------- int __cdecl sub_4A7C4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2128)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7C80) -------------------------------------------------------- void __usercall sub_4A7C80(int a1) { nullsub_1((void *)(a1 - 8504)); } //----- (004A7C8B) -------------------------------------------------------- int __cdecl sub_4A7C8B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2130)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7CC0) -------------------------------------------------------- void __usercall sub_4A7CC0(int a1) { nullsub_1((void *)(a1 - 8524)); } //----- (004A7CCB) -------------------------------------------------------- int __cdecl sub_4A7CCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2131)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7D00) -------------------------------------------------------- void __usercall sub_4A7D00(int a1) { nullsub_1((void *)(a1 - 8484)); } //----- (004A7D0B) -------------------------------------------------------- int __cdecl sub_4A7D0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2122)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7D40) -------------------------------------------------------- void __usercall sub_4A7D40(int a1) { nullsub_1((void *)(a1 - 126688)); } //----- (004A7D4B) -------------------------------------------------------- void __usercall sub_4A7D4B(int a1) { nullsub_1((void *)(a1 - 134884)); } //----- (004A7D56) -------------------------------------------------------- int __cdecl sub_4A7D56(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 33739)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7D80) -------------------------------------------------------- void __usercall sub_4A7D80(int a1) { nullsub_1((void *)(a1 - 8764)); } //----- (004A7D8B) -------------------------------------------------------- void __usercall sub_4A7D8B(int a1) { nullsub_1((void *)(a1 - 16960)); } //----- (004A7D96) -------------------------------------------------------- int __cdecl sub_4A7D96(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4247)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7DC0) -------------------------------------------------------- void __usercall sub_4A7DC0(int a1) { nullsub_1((void *)(a1 - 8496)); } //----- (004A7DCB) -------------------------------------------------------- int __cdecl sub_4A7DCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2126)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7E00) -------------------------------------------------------- void __usercall sub_4A7E00(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A7E0B) -------------------------------------------------------- int __cdecl sub_4A7E0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2119)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7E40) -------------------------------------------------------- void __usercall sub_4A7E40(int a1) { nullsub_1((void *)(a1 - 8268)); } //----- (004A7E4B) -------------------------------------------------------- void __usercall sub_4A7E4B(int a1) { nullsub_1((void *)(a1 - 16464)); } //----- (004A7E56) -------------------------------------------------------- int __cdecl sub_4A7E56(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4119)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7E80) -------------------------------------------------------- void __usercall sub_4A7E80(int a1) { nullsub_1((void *)(a1 - 25188)); } //----- (004A7E8B) -------------------------------------------------------- void __usercall sub_4A7E8B(int a1) { nullsub_1((void *)(a1 - 16992)); } //----- (004A7E96) -------------------------------------------------------- void __usercall sub_4A7E96(int a1) { nullsub_1((void *)(a1 - 8796)); } //----- (004A7EA1) -------------------------------------------------------- int __cdecl sub_4A7EA1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6302)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7ED0) -------------------------------------------------------- void __usercall sub_4A7ED0(int a1) { nullsub_1((void *)(a1 - 16448)); } //----- (004A7EDB) -------------------------------------------------------- void __usercall sub_4A7EDB(int a1) { nullsub_1((void *)(a1 - 8252)); } //----- (004A7EE6) -------------------------------------------------------- void __usercall sub_4A7EE6(int a1) { nullsub_1((void *)(a1 - 24644)); } //----- (004A7EF1) -------------------------------------------------------- int __cdecl sub_4A7EF1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6164)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7F20) -------------------------------------------------------- void __usercall sub_4A7F20(int a1) { nullsub_1((void *)(a1 - 8260)); } //----- (004A7F2B) -------------------------------------------------------- int __cdecl sub_4A7F2B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2070)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7F60) -------------------------------------------------------- void __usercall sub_4A7F60(int a1) { nullsub_1((void *)(a1 - 8236)); } //----- (004A7F6B) -------------------------------------------------------- int __cdecl sub_4A7F6B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2063)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7FA0) -------------------------------------------------------- void __usercall sub_4A7FA0(int a1) { nullsub_1((void *)(a1 - 8276)); } //----- (004A7FAB) -------------------------------------------------------- int __cdecl sub_4A7FAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2071)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A7FE0) -------------------------------------------------------- void __usercall sub_4A7FE0(int a1) { nullsub_1((void *)(a1 - 8276)); } //----- (004A7FEB) -------------------------------------------------------- int __cdecl sub_4A7FEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2073)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8020) -------------------------------------------------------- void __usercall sub_4A8020(int a1) { nullsub_1((void *)(a1 - 8244)); } //----- (004A802B) -------------------------------------------------------- int __cdecl sub_4A802B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2066)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8060) -------------------------------------------------------- void __usercall sub_4A8060(int a1) { nullsub_1((void *)(a1 - 8252)); } //----- (004A806B) -------------------------------------------------------- int __cdecl sub_4A806B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2066)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A80A0) -------------------------------------------------------- void __usercall sub_4A80A0(int a1) { nullsub_1((void *)(a1 - 10064)); } //----- (004A80AB) -------------------------------------------------------- int __cdecl sub_4A80AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2517)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A80E0) -------------------------------------------------------- void __usercall sub_4A80E0(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A80EB) -------------------------------------------------------- int __cdecl sub_4A80EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2120)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8120) -------------------------------------------------------- void __usercall sub_4A8120(int a1) { nullsub_1((void *)(a1 - 8740)); } //----- (004A812B) -------------------------------------------------------- int __cdecl sub_4A812B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2187)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8160) -------------------------------------------------------- void __usercall sub_4A8160(int a1) { nullsub_1((void *)(a1 - 8724)); } //----- (004A816B) -------------------------------------------------------- int __cdecl sub_4A816B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2187)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A81A0) -------------------------------------------------------- void __usercall sub_4A81A0(int a1) { nullsub_1((void *)(a1 - 8480)); } //----- (004A81AB) -------------------------------------------------------- int __cdecl sub_4A81AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2122)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A81E0) -------------------------------------------------------- void __usercall sub_4A81E0(int a1) { nullsub_1((void *)(a1 - 8468)); } //----- (004A81EB) -------------------------------------------------------- int __cdecl sub_4A81EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2121)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8220) -------------------------------------------------------- void __usercall sub_4A8220(int a1) { nullsub_1((void *)(a1 - 8724)); } //----- (004A822B) -------------------------------------------------------- int __cdecl sub_4A822B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2186)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8260) -------------------------------------------------------- void __usercall sub_4A8260(int a1) { nullsub_1((void *)(a1 - 8508)); } //----- (004A826B) -------------------------------------------------------- int __cdecl sub_4A826B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2128)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A82A0) -------------------------------------------------------- void __usercall sub_4A82A0(int a1) { nullsub_1((void *)(a1 - 8516)); } //----- (004A82AB) -------------------------------------------------------- int __cdecl sub_4A82AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2132)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A82E0) -------------------------------------------------------- void __usercall sub_4A82E0(int a1) { nullsub_1((void *)(a1 - 8272)); } //----- (004A82EB) -------------------------------------------------------- int __cdecl sub_4A82EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2070)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8320) -------------------------------------------------------- void __usercall sub_4A8320(int a1) { nullsub_1((void *)(a1 - 16440)); } //----- (004A832B) -------------------------------------------------------- void __usercall sub_4A832B(int a1) { nullsub_1((void *)(a1 - 8244)); } //----- (004A8336) -------------------------------------------------------- int __cdecl sub_4A8336(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4113)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8360) -------------------------------------------------------- void __usercall sub_4A8360(int a1) { nullsub_1((void *)(a1 - 8260)); } //----- (004A836B) -------------------------------------------------------- int __cdecl sub_4A836B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2068)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A83A0) -------------------------------------------------------- void __usercall sub_4A83A0(int a1) { nullsub_1((void *)(a1 - 8496)); } //----- (004A83AB) -------------------------------------------------------- int __cdecl sub_4A83AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2125)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A83E0) -------------------------------------------------------- void __usercall sub_4A83E0(int a1) { nullsub_1((void *)(a1 - 8500)); } //----- (004A83EB) -------------------------------------------------------- int __cdecl sub_4A83EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2125)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8420) -------------------------------------------------------- void __usercall sub_4A8420(int a1) { nullsub_1((void *)(a1 - 8628)); } //----- (004A842B) -------------------------------------------------------- int __cdecl sub_4A842B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2165)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8460) -------------------------------------------------------- void __usercall sub_4A8460(int a1) { nullsub_1((void *)(a1 - 16736)); } //----- (004A846B) -------------------------------------------------------- void __usercall sub_4A846B(int a1) { nullsub_1((void *)(a1 - 8540)); } //----- (004A8476) -------------------------------------------------------- void __usercall sub_4A8476(int a1) { nullsub_1((void *)(a1 - 8540)); } //----- (004A8481) -------------------------------------------------------- int __cdecl sub_4A8481(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4185)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A84B0) -------------------------------------------------------- void __usercall sub_4A84B0(int a1) { nullsub_1((void *)(a1 - 8988)); } //----- (004A84BB) -------------------------------------------------------- int __cdecl sub_4A84BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2248)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A84F0) -------------------------------------------------------- void __usercall sub_4A84F0(int a1) { nullsub_1((void *)(a1 - 16956)); } //----- (004A84FB) -------------------------------------------------------- void __usercall sub_4A84FB(int a1) { nullsub_1((void *)(a1 - 8760)); } //----- (004A8506) -------------------------------------------------------- void __usercall sub_4A8506(int a1) { nullsub_1((void *)(a1 - 8760)); } //----- (004A8511) -------------------------------------------------------- int __cdecl sub_4A8511(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4242)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8540) -------------------------------------------------------- void __usercall sub_4A8540(int a1) { nullsub_1((void *)(a1 - 8788)); } //----- (004A854B) -------------------------------------------------------- int __cdecl sub_4A854B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2199)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8580) -------------------------------------------------------- void __usercall sub_4A8580(int a1) { nullsub_1((void *)(a1 - 8876)); } //----- (004A858B) -------------------------------------------------------- int __cdecl sub_4A858B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2220)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A85C0) -------------------------------------------------------- void __usercall sub_4A85C0(int a1) { nullsub_1((void *)(a1 - 8764)); } //----- (004A85CB) -------------------------------------------------------- void __usercall sub_4A85CB(int a1) { nullsub_1((void *)(a1 - 16960)); } //----- (004A85D6) -------------------------------------------------------- int __cdecl sub_4A85D6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4241)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8600) -------------------------------------------------------- void __usercall sub_4A8600(int a1) { nullsub_1((void *)(a1 - 8572)); } //----- (004A860B) -------------------------------------------------------- void __usercall sub_4A860B(int a1) { nullsub_1((void *)(a1 - 16768)); } //----- (004A8616) -------------------------------------------------------- int __cdecl sub_4A8616(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4197)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8640) -------------------------------------------------------- void __usercall sub_4A8640(int a1) { nullsub_1((void *)(a1 - 8508)); } //----- (004A864B) -------------------------------------------------------- int __cdecl sub_4A864B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2127)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8680) -------------------------------------------------------- void __usercall sub_4A8680(int a1) { nullsub_1((void *)(a1 - 8488)); } //----- (004A868B) -------------------------------------------------------- int __cdecl sub_4A868B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2122)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A86C0) -------------------------------------------------------- void __usercall sub_4A86C0(int a1) { nullsub_1((void *)(a1 - 8760)); } //----- (004A86CB) -------------------------------------------------------- void __usercall sub_4A86CB(int a1) { nullsub_1((void *)(a1 - 16956)); } //----- (004A86D6) -------------------------------------------------------- int __cdecl sub_4A86D6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4240)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8700) -------------------------------------------------------- void __usercall sub_4A8700(int a1) { nullsub_1((void *)(a1 - 8548)); } //----- (004A870B) -------------------------------------------------------- int __cdecl sub_4A870B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2139)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8740) -------------------------------------------------------- void __usercall sub_4A8740(int a1) { nullsub_1((void *)(a1 - 8492)); } //----- (004A874B) -------------------------------------------------------- int __cdecl sub_4A874B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2123)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8780) -------------------------------------------------------- void __usercall sub_4A8780(int a1) { nullsub_1((void *)(a1 - 8920)); } //----- (004A878B) -------------------------------------------------------- void __usercall sub_4A878B(int a1) { nullsub_1((void *)(a1 - 17116)); } //----- (004A8796) -------------------------------------------------------- int __cdecl sub_4A8796(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4284)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A87C0) -------------------------------------------------------- void __usercall sub_4A87C0(int a1) { nullsub_1((void *)(a1 - 39492)); } //----- (004A87CB) -------------------------------------------------------- int __cdecl sub_4A87CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9879)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8800) -------------------------------------------------------- void __usercall sub_4A8800(int a1) { nullsub_1((void *)(a1 - 8740)); } //----- (004A880B) -------------------------------------------------------- int __cdecl sub_4A880B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2186)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8840) -------------------------------------------------------- void __usercall sub_4A8840(int a1) { nullsub_1((void *)(a1 - 8824)); } //----- (004A884B) -------------------------------------------------------- int __cdecl sub_4A884B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2211)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8880) -------------------------------------------------------- void __usercall sub_4A8880(int a1) { nullsub_1((void *)(a1 - 8880)); } //----- (004A888B) -------------------------------------------------------- int __cdecl sub_4A888B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2534)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A88C0) -------------------------------------------------------- void __usercall sub_4A88C0(int a1) { nullsub_1((void *)(a1 - 8740)); } //----- (004A88CB) -------------------------------------------------------- int __cdecl sub_4A88CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2185)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8900) -------------------------------------------------------- void __usercall sub_4A8900(int a1) { nullsub_1((void *)(a1 - 8724)); } //----- (004A890B) -------------------------------------------------------- int __cdecl sub_4A890B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2184)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8940) -------------------------------------------------------- void __usercall sub_4A8940(int a1) { nullsub_1((void *)(a1 - 8828)); } //----- (004A894B) -------------------------------------------------------- void __usercall sub_4A894B(int a1) { nullsub_1((void *)(a1 - 17024)); } //----- (004A8956) -------------------------------------------------------- int __cdecl sub_4A8956(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4258)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8980) -------------------------------------------------------- void __usercall sub_4A8980(int a1) { nullsub_1((void *)(a1 - 8748)); } //----- (004A898B) -------------------------------------------------------- void __usercall sub_4A898B(int a1) { nullsub_1((void *)(a1 - 16944)); } //----- (004A8996) -------------------------------------------------------- int __cdecl sub_4A8996(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4238)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A89C0) -------------------------------------------------------- void __usercall sub_4A89C0(int a1) { nullsub_1((void *)(a1 - 16792)); } //----- (004A89CB) -------------------------------------------------------- void __usercall sub_4A89CB(int a1) { nullsub_1((void *)(a1 - 8596)); } //----- (004A89D6) -------------------------------------------------------- void __usercall sub_4A89D6(int a1) { nullsub_1((void *)(a1 - 8596)); } //----- (004A89E1) -------------------------------------------------------- void __usercall sub_4A89E1(int a1) { nullsub_1((void *)(a1 - 8596)); } //----- (004A89EC) -------------------------------------------------------- void __usercall sub_4A89EC(int a1) { nullsub_1((void *)(a1 - 8596)); } //----- (004A89F7) -------------------------------------------------------- void __usercall sub_4A89F7(int a1) { nullsub_1((void *)(a1 - 8596)); } //----- (004A8A02) -------------------------------------------------------- int __cdecl sub_4A8A02(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4204)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8A30) -------------------------------------------------------- void __usercall sub_4A8A30(int a1) { nullsub_1((void *)(a1 - 16872)); } //----- (004A8A3B) -------------------------------------------------------- void __usercall sub_4A8A3B(int a1) { nullsub_1((void *)(a1 - 8676)); } //----- (004A8A46) -------------------------------------------------------- void __usercall sub_4A8A46(int a1) { nullsub_1((void *)(a1 - 8676)); } //----- (004A8A51) -------------------------------------------------------- void __usercall sub_4A8A51(int a1) { nullsub_1((void *)(a1 - 8676)); } //----- (004A8A5C) -------------------------------------------------------- void __usercall sub_4A8A5C(int a1) { nullsub_1((void *)(a1 - 8676)); } //----- (004A8A67) -------------------------------------------------------- int __cdecl sub_4A8A67(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4221)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8A90) -------------------------------------------------------- void __usercall sub_4A8A90(int a1) { nullsub_1((void *)(a1 - 8756)); } //----- (004A8A9B) -------------------------------------------------------- int __cdecl sub_4A8A9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2190)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8AD0) -------------------------------------------------------- void __usercall sub_4A8AD0(int a1) { nullsub_1((void *)(a1 - 8752)); } //----- (004A8ADB) -------------------------------------------------------- int __cdecl sub_4A8ADB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2188)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8B10) -------------------------------------------------------- void __usercall sub_4A8B10(int a1) { nullsub_1((void *)(a1 - 8756)); } //----- (004A8B1B) -------------------------------------------------------- int __cdecl sub_4A8B1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2189)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8B50) -------------------------------------------------------- void __usercall sub_4A8B50(int a1) { nullsub_1((void *)(a1 - 8736)); } //----- (004A8B5B) -------------------------------------------------------- int __cdecl sub_4A8B5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2184)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8B90) -------------------------------------------------------- void __usercall sub_4A8B90(int a1) { nullsub_1((void *)(a1 - 8572)); } //----- (004A8B9B) -------------------------------------------------------- void __usercall sub_4A8B9B(int a1) { nullsub_1((void *)(a1 - 16768)); } //----- (004A8BA6) -------------------------------------------------------- int __cdecl sub_4A8BA6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4196)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8BD0) -------------------------------------------------------- void __usercall sub_4A8BD0(int a1) { nullsub_1((void *)(a1 - 8852)); } //----- (004A8BDB) -------------------------------------------------------- void __usercall sub_4A8BDB(int a1) { nullsub_1((void *)(a1 - 17048)); } //----- (004A8BE6) -------------------------------------------------------- void __usercall sub_4A8BE6(int a1) { nullsub_1((void *)(a1 - 17048)); } //----- (004A8BF1) -------------------------------------------------------- int __cdecl sub_4A8BF1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4265)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8C20) -------------------------------------------------------- void __usercall sub_4A8C20(int a1) { nullsub_1((void *)(a1 - 8572)); } //----- (004A8C2B) -------------------------------------------------------- void __usercall sub_4A8C2B(int a1) { nullsub_1((void *)(a1 - 16768)); } //----- (004A8C36) -------------------------------------------------------- void __usercall sub_4A8C36(int a1) { nullsub_1((void *)(a1 - 16768)); } //----- (004A8C41) -------------------------------------------------------- void __usercall sub_4A8C41(int a1) { nullsub_1((void *)(a1 - 24964)); } //----- (004A8C4C) -------------------------------------------------------- int __cdecl sub_4A8C4C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6244)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8C80) -------------------------------------------------------- void __usercall sub_4A8C80(int a1) { nullsub_1((void *)(a1 - 8748)); } //----- (004A8C8B) -------------------------------------------------------- int __cdecl sub_4A8C8B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2191)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8CC0) -------------------------------------------------------- void __usercall sub_4A8CC0(int a1) { nullsub_1((void *)(a1 - 8492)); } //----- (004A8CCB) -------------------------------------------------------- void __usercall sub_4A8CCB(int a1) { nullsub_1((void *)(a1 - 16688)); } //----- (004A8CD6) -------------------------------------------------------- void __usercall sub_4A8CD6(int a1) { nullsub_1((void *)(a1 - 24884)); } //----- (004A8CE1) -------------------------------------------------------- int __cdecl sub_4A8CE1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6224)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8D10) -------------------------------------------------------- void __usercall sub_4A8D10(int a1) { nullsub_1((void *)(a1 - 8516)); } //----- (004A8D1B) -------------------------------------------------------- void __usercall sub_4A8D1B(int a1) { nullsub_1((void *)(a1 - 16712)); } //----- (004A8D26) -------------------------------------------------------- void __usercall sub_4A8D26(int a1) { nullsub_1((void *)(a1 - 24908)); } //----- (004A8D31) -------------------------------------------------------- int __cdecl sub_4A8D31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6230)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8D60) -------------------------------------------------------- void __usercall sub_4A8D60(int a1) { nullsub_1((void *)(a1 - 9612)); } //----- (004A8D6B) -------------------------------------------------------- void __usercall sub_4A8D6B(int a1) { nullsub_1((void *)(a1 - 17808)); } //----- (004A8D76) -------------------------------------------------------- int __cdecl sub_4A8D76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4461)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8DA0) -------------------------------------------------------- void __usercall sub_4A8DA0(int a1) { nullsub_1((void *)(a1 - 9528)); } //----- (004A8DAB) -------------------------------------------------------- void __usercall sub_4A8DAB(int a1) { nullsub_1((void *)(a1 - 17724)); } //----- (004A8DB6) -------------------------------------------------------- void __usercall sub_4A8DB6(int a1) { nullsub_1((void *)(a1 - 17724)); } //----- (004A8DC1) -------------------------------------------------------- int __cdecl sub_4A8DC1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4436)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8DF0) -------------------------------------------------------- void __usercall sub_4A8DF0(int a1) { nullsub_1((void *)(a1 - 8316)); } //----- (004A8DFB) -------------------------------------------------------- int __cdecl sub_4A8DFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2082)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8E30) -------------------------------------------------------- void __usercall sub_4A8E30(int a1) { nullsub_1((void *)(a1 - 8556)); } //----- (004A8E3B) -------------------------------------------------------- int __cdecl sub_4A8E3B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2141)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8E70) -------------------------------------------------------- void __usercall sub_4A8E70(int a1) { nullsub_1((void *)(a1 - 8588)); } //----- (004A8E7B) -------------------------------------------------------- int __cdecl sub_4A8E7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2150)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8EB0) -------------------------------------------------------- void __usercall sub_4A8EB0(int a1) { nullsub_1((void *)(a1 - 8596)); } //----- (004A8EBB) -------------------------------------------------------- void __usercall sub_4A8EBB(int a1) { nullsub_1((void *)(a1 - 16792)); } //----- (004A8EC6) -------------------------------------------------------- int __cdecl sub_4A8EC6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4201)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8EF0) -------------------------------------------------------- void __usercall sub_4A8EF0(int a1) { nullsub_1((void *)(a1 - 8764)); } //----- (004A8EFB) -------------------------------------------------------- void __usercall sub_4A8EFB(int a1) { nullsub_1((void *)(a1 - 33352)); } //----- (004A8F06) -------------------------------------------------------- void __usercall sub_4A8F06(int a1) { nullsub_1((void *)(a1 - 16960)); } //----- (004A8F11) -------------------------------------------------------- void __usercall sub_4A8F11(int a1) { nullsub_1((void *)(a1 - 25156)); } //----- (004A8F1C) -------------------------------------------------------- int __cdecl sub_4A8F1C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8348)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8F50) -------------------------------------------------------- void __usercall sub_4A8F50(int a1) { nullsub_1((void *)(a1 - 8772)); } //----- (004A8F5B) -------------------------------------------------------- int __cdecl sub_4A8F5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2194)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8F90) -------------------------------------------------------- void __usercall sub_4A8F90(int a1) { nullsub_1((void *)(a1 - 8496)); } //----- (004A8F9B) -------------------------------------------------------- void __usercall sub_4A8F9B(int a1) { nullsub_1((void *)(a1 - 8496)); } //----- (004A8FA6) -------------------------------------------------------- int __cdecl sub_4A8FA6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2127)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A8FD0) -------------------------------------------------------- void __usercall sub_4A8FD0(int a1) { nullsub_1((void *)(a1 - 8724)); } //----- (004A8FDB) -------------------------------------------------------- int __cdecl sub_4A8FDB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2183)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9010) -------------------------------------------------------- void __usercall sub_4A9010(int a1) { nullsub_1((void *)(a1 - 8748)); } //----- (004A901B) -------------------------------------------------------- void __usercall sub_4A901B(int a1) { nullsub_1((void *)(a1 - 16944)); } //----- (004A9026) -------------------------------------------------------- int __cdecl sub_4A9026(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4246)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9050) -------------------------------------------------------- void __usercall sub_4A9050(int a1) { nullsub_1((void *)(a1 - 10052)); } //----- (004A905B) -------------------------------------------------------- int __cdecl sub_4A905B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2514)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9090) -------------------------------------------------------- void __usercall sub_4A9090(int a1) { nullsub_1((void *)(a1 - 8532)); } //----- (004A909B) -------------------------------------------------------- int __cdecl sub_4A909B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2138)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A90D0) -------------------------------------------------------- void __usercall sub_4A90D0(int a1) { nullsub_1((void *)(a1 - 8516)); } //----- (004A90DB) -------------------------------------------------------- int __cdecl sub_4A90DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2130)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9110) -------------------------------------------------------- void __usercall sub_4A9110(int a1) { nullsub_1((void *)(a1 - 10060)); } //----- (004A911B) -------------------------------------------------------- int __cdecl sub_4A911B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2517)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9150) -------------------------------------------------------- void __usercall sub_4A9150(int a1) { nullsub_1((void *)(a1 - 8724)); } //----- (004A915B) -------------------------------------------------------- int __cdecl sub_4A915B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2188)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9190) -------------------------------------------------------- void __usercall sub_4A9190(int a1) { nullsub_1((void *)(a1 - 8640)); } //----- (004A919B) -------------------------------------------------------- int __cdecl sub_4A919B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2164)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A91D0) -------------------------------------------------------- void __usercall sub_4A91D0(int a1) { nullsub_1((void *)(a1 - 8660)); } //----- (004A91DB) -------------------------------------------------------- int __cdecl sub_4A91DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2166)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9210) -------------------------------------------------------- void __usercall sub_4A9210(int a1) { nullsub_1((void *)(a1 - 8724)); } //----- (004A921B) -------------------------------------------------------- int __cdecl sub_4A921B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2181)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9250) -------------------------------------------------------- void __usercall sub_4A9250(int a1) { nullsub_1((void *)(a1 - 24888)); } //----- (004A925B) -------------------------------------------------------- void __usercall sub_4A925B(int a1) { nullsub_1((void *)(a1 - 8496)); } //----- (004A9266) -------------------------------------------------------- void __usercall sub_4A9266(int a1) { nullsub_1((void *)(a1 - 16692)); } //----- (004A9271) -------------------------------------------------------- void __usercall sub_4A9271(int a1) { nullsub_1((void *)(a1 - 8496)); } //----- (004A927C) -------------------------------------------------------- void __usercall sub_4A927C(int a1) { nullsub_1((void *)(a1 - 16692)); } //----- (004A9287) -------------------------------------------------------- int __cdecl sub_4A9287(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6224)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A92B0) -------------------------------------------------------- void __usercall sub_4A92B0(int a1) { nullsub_1((void *)(a1 - 8916)); } //----- (004A92BB) -------------------------------------------------------- int __cdecl sub_4A92BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2232)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A92F0) -------------------------------------------------------- void __usercall sub_4A92F0(int a1) { nullsub_1((void *)(a1 - 8816)); } //----- (004A92FB) -------------------------------------------------------- void __usercall sub_4A92FB(int a1) { nullsub_1((void *)(a1 - 17012)); } //----- (004A9306) -------------------------------------------------------- int __cdecl sub_4A9306(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4255)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9330) -------------------------------------------------------- void __usercall sub_4A9330(int a1) { nullsub_1((void *)(a1 - 8808)); } //----- (004A933B) -------------------------------------------------------- int __cdecl sub_4A933B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2206)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9370) -------------------------------------------------------- void __usercall sub_4A9370(int a1) { nullsub_1((void *)(a1 - 9808)); } //----- (004A937B) -------------------------------------------------------- int __cdecl sub_4A937B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2454)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A93B0) -------------------------------------------------------- void __usercall sub_4A93B0(int a1) { nullsub_1((void *)(a1 - 105500)); } //----- (004A93BB) -------------------------------------------------------- int __cdecl sub_4A93BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 26386)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A93F0) -------------------------------------------------------- void __usercall sub_4A93F0(int a1) { sub_43CDA0(*(_DWORD *)(a1 - 16)); } //----- (004A93F8) -------------------------------------------------------- int __cdecl sub_4A93F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9420) -------------------------------------------------------- void __usercall sub_4A9420(int a1) { nullsub_1((void *)(a1 - 8980)); } //----- (004A942B) -------------------------------------------------------- int __cdecl sub_4A942B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2248)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9460) -------------------------------------------------------- void __usercall sub_4A9460(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A946B) -------------------------------------------------------- int __cdecl sub_4A946B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2055)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A94A0) -------------------------------------------------------- void __usercall sub_4A94A0(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A94AB) -------------------------------------------------------- int __cdecl sub_4A94AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2052)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A94E0) -------------------------------------------------------- void __usercall sub_4A94E0(int a1) { nullsub_1((void *)(a1 - 8212)); } //----- (004A94EB) -------------------------------------------------------- int __cdecl sub_4A94EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2053)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9520) -------------------------------------------------------- void __usercall sub_4A9520(int a1) { sub_42FB70((void *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (004A952B) -------------------------------------------------------- int __cdecl sub_4A952B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9550) -------------------------------------------------------- int (__stdcall **__usercall sub_4A9550(int a1))(int, int) { return sub_44BA70(*(_DWORD *)(a1 - 16)); } //----- (004A9558) -------------------------------------------------------- void __usercall sub_4A9558(int a1) { *(_DWORD *)(*(_DWORD *)(a1 - 16) + 304) = &off_4B8734; } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); //----- (004A9566) -------------------------------------------------------- int __cdecl sub_4A9566(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9590) -------------------------------------------------------- int (__stdcall **__usercall sub_4A9590(int a1))(int, int) { return sub_44BA70(*(_DWORD *)(a1 - 16)); } //----- (004A9598) -------------------------------------------------------- void __usercall sub_4A9598(int a1) { sub_43CDA0(*(_DWORD *)(a1 - 16) + 312); } //----- (004A95A6) -------------------------------------------------------- int __usercall sub_4A95A6(int a1) { return sub_43C9F0(*(_DWORD *)(a1 - 20)); } // 43C9F0: using guessed type int __thiscall sub_43C9F0(_DWORD); //----- (004A95AE) -------------------------------------------------------- int __cdecl sub_4A95AE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A95D0) -------------------------------------------------------- int (__stdcall **__usercall sub_4A95D0(int a1))(int, int) { return sub_44BA70(*(_DWORD *)(a1 - 16)); } //----- (004A95D8) -------------------------------------------------------- void __usercall sub_4A95D8(int a1) { sub_43CDA0(*(_DWORD *)(a1 - 16) + 312); } //----- (004A95E6) -------------------------------------------------------- int __cdecl sub_4A95E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9610) -------------------------------------------------------- void __usercall sub_4A9610(int a1) { sub_44E8E0(*(_DWORD *)(a1 - 16) + 2097160); } //----- (004A961E) -------------------------------------------------------- int __cdecl sub_4A961E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9640) -------------------------------------------------------- void __usercall sub_4A9640(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (004A9670) -------------------------------------------------------- int __cdecl sub_4A9670(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9690) -------------------------------------------------------- void __usercall sub_4A9690(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (004A969B) -------------------------------------------------------- int __cdecl sub_4A969B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A96C0) -------------------------------------------------------- void __usercall sub_4A96C0(int a1) { nullsub_1((void *)(a1 - 14492)); } //----- (004A96CB) -------------------------------------------------------- void __usercall sub_4A96CB(int a1) { int v1; // esi@1 v1 = a1 - 6292; if ( *(_DWORD *)(a1 - 6292 + 20) >= 0x10u ) operator delete(*(void **)(a1 - 6292)); *(_DWORD *)(v1 + 20) = 15; *(_DWORD *)(v1 + 16) = 0; *(_BYTE *)v1 = 0; } //----- (004A96D6) -------------------------------------------------------- int __usercall sub_4A96D6(int a1) { int v1; // esi@1 int result; // eax@3 v1 = a1 - 6296; *(_DWORD *)(a1 - 6296) = &off_4B8A98; if ( *(_DWORD *)(a1 - 6296 + 24) >= 0x10u ) operator delete(*(void **)(a1 - 6296 + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4B8A98: using guessed type int (*off_4B8A98)(); //----- (004A96E1) -------------------------------------------------------- void __cdecl sub_4A96E1() { JUMPOUT(loc_43DB70); } //----- (004A96EC) -------------------------------------------------------- int __usercall sub_4A96EC(int a1) { int v1; // esi@1 int result; // eax@3 v1 = a1 - 6260; *(_DWORD *)(a1 - 6260) = &off_4B8ABC; if ( *(_DWORD *)(a1 - 6260 + 24) >= 0x10u ) operator delete(*(void **)(a1 - 6260 + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } // 4B8ABC: using guessed type int (*off_4B8ABC)(); //----- (004A96F7) -------------------------------------------------------- void __usercall sub_4A96F7(int a1) { nullsub_1((void *)(a1 - 14492)); } //----- (004A9702) -------------------------------------------------------- void __usercall sub_4A9702(int a1) { nullsub_1((void *)(a1 - 14492)); } //----- (004A970D) -------------------------------------------------------- int __cdecl sub_4A970D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3627)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9740) -------------------------------------------------------- int __usercall sub_4A9740(int a1) { return std::_Mutex::__Mutex(*(_DWORD *)(a1 - 20) + 4); } // 48BD9E: using guessed type int __thiscall std___Mutex____Mutex(_DWORD); //----- (004A974B) -------------------------------------------------------- int __cdecl sub_4A974B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9770) -------------------------------------------------------- int __cdecl sub_4A9770(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9790) -------------------------------------------------------- int __usercall sub_4A9790(int a1) { return std::_Lockit::__Lockit(*(_DWORD *)(a1 - 16)); } // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (004A9798) -------------------------------------------------------- void __usercall sub_4A9798(int a1) { void **v1; // esi@1 void **v2; // ecx@1 v2 = (void **)(*(_DWORD *)(a1 - 16) + 4); v1 = v2; if ( *v2 ) free(*v2); *v1 = 0; } //----- (004A97A3) -------------------------------------------------------- void __cdecl sub_4A97A3() { JUMPOUT(loc_43ECD0); } // 43ECD0: using guessed type int loc_43ECD0(); //----- (004A97AE) -------------------------------------------------------- void __cdecl sub_4A97AE() { JUMPOUT(loc_43ECD0); } // 43ECD0: using guessed type int loc_43ECD0(); //----- (004A97B9) -------------------------------------------------------- void __cdecl sub_4A97B9() { JUMPOUT(loc_43ECD0); } // 43ECD0: using guessed type int loc_43ECD0(); //----- (004A97C4) -------------------------------------------------------- int __cdecl sub_4A97C4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A97E0) -------------------------------------------------------- int __usercall sub_4A97E0(int a1) { return std::_Lockit::__Lockit(*(_DWORD *)(a1 - 16)); } // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (004A97E8) -------------------------------------------------------- void __cdecl sub_4A97E8() { JUMPOUT(loc_43ECD0); } // 43ECD0: using guessed type int loc_43ECD0(); //----- (004A97F3) -------------------------------------------------------- void __cdecl sub_4A97F3() { JUMPOUT(loc_43ECD0); } // 43ECD0: using guessed type int loc_43ECD0(); //----- (004A97FE) -------------------------------------------------------- void __cdecl sub_4A97FE() { JUMPOUT(loc_43ECD0); } // 43ECD0: using guessed type int loc_43ECD0(); //----- (004A9809) -------------------------------------------------------- void __cdecl sub_4A9809() { JUMPOUT(loc_43ECD0); } // 43ECD0: using guessed type int loc_43ECD0(); //----- (004A9814) -------------------------------------------------------- int __cdecl sub_4A9814(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9830) -------------------------------------------------------- void __usercall sub_4A9830(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (004A983B) -------------------------------------------------------- int __cdecl sub_4A983B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9860) -------------------------------------------------------- int __usercall sub_4A9860(int a1) { int result; // eax@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16) - 72; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 - 16) - 96) + 4) + *(_DWORD *)(a1 - 16) - 72 - 24) = &off_4B8C64; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 - 8) + 4) + v2 - 8) = &off_4B8C54; result = *(_DWORD *)(v2 - 24); *(_DWORD *)(*(_DWORD *)(result + 4) + v2 - 24) = &off_4B8C5C; return result; } // 4B8C54: using guessed type int (__stdcall *off_4B8C54)(char); // 4B8C5C: using guessed type int (__stdcall *off_4B8C5C)(char); // 4B8C64: using guessed type int (__stdcall *off_4B8C64)(char); //----- (004A986B) -------------------------------------------------------- int __cdecl sub_4A986B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9890) -------------------------------------------------------- void __usercall sub_4A9890(int a1) { sub_43E650((void *)(a1 + 8)); } //----- (004A9898) -------------------------------------------------------- int __cdecl sub_4A9898(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A98C0) -------------------------------------------------------- int __cdecl sub_4A98C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9910) -------------------------------------------------------- void __usercall sub_4A9910(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (004A991B) -------------------------------------------------------- int __usercall sub_4A991B(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 16) & 1; if ( *(_DWORD *)(a1 - 16) & 1 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFEu; result = sub_43F820((void *)(a1 - 56)); } return result; } //----- (004A9934) -------------------------------------------------------- void __usercall sub_4A9934(int a1) { **(_DWORD **)(a1 - 20) = &off_4B8C28; } // 4B8C28: using guessed type int (__thiscall *off_4B8C28)(void *, char); //----- (004A9990) -------------------------------------------------------- int __usercall sub_4A9990(int a1) { int result; // eax@1 result = *(_DWORD *)(*(_DWORD *)(***(_DWORD ***)(a1 - 16) + 4) + **(_DWORD **)(a1 - 16) + 56); if ( result ) result = (*(int (__thiscall **)(int))(*(_DWORD *)result + 8))(result); return result; } //----- (004A9998) -------------------------------------------------------- int __cdecl sub_4A9998(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A99C0) -------------------------------------------------------- void __cdecl sub_4A99C0() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004A99C8) -------------------------------------------------------- int __usercall sub_4A99C8(int a1) { return sub_4406A0((void *)(a1 - 40)); } //----- (004A99D0) -------------------------------------------------------- void __cdecl sub_4A99D0() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004A99D8) -------------------------------------------------------- int __cdecl sub_4A99D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9A00) -------------------------------------------------------- int __usercall sub_4A9A00(int a1) { return std::_Lockit::__Lockit(a1 - 24); } // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (004A9A08) -------------------------------------------------------- int __cdecl sub_4A9A08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9A30) -------------------------------------------------------- int __usercall sub_4A9A30(int a1) { return sub_443890(*(_DWORD *)(a1 - 16)); } // 443890: using guessed type int __thiscall sub_443890(_DWORD); //----- (004A9A38) -------------------------------------------------------- int __cdecl sub_4A9A38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9A60) -------------------------------------------------------- int __usercall sub_4A9A60(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 20) & 1; if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; JUMPOUT(loc_43DB70); } return result; } //----- (004A9A79) -------------------------------------------------------- void __cdecl sub_4A9A79() { JUMPOUT(loc_43DB70); } //----- (004A9A81) -------------------------------------------------------- int __cdecl sub_4A9A81(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9AB0) -------------------------------------------------------- void __usercall sub_4A9AB0(int a1) { *(_DWORD *)(a1 - 108) = &off_4B9394; } // 4B9394: using guessed type int (__thiscall *off_4B9394)(void *, char); //----- (004A9AB8) -------------------------------------------------------- int __cdecl sub_4A9AB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9AE0) -------------------------------------------------------- int __usercall sub_4A9AE0(int a1) { return sub_441140(*(_DWORD *)(a1 - 16)); } //----- (004A9AE8) -------------------------------------------------------- int __cdecl sub_4A9AE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9B10) -------------------------------------------------------- int __usercall sub_4A9B10(int a1) { return sub_441140(*(_DWORD *)(a1 - 1292)); } //----- (004A9B1B) -------------------------------------------------------- int __usercall sub_4A9B1B(int a1) { return sub_441140(a1 - 1288); } //----- (004A9B26) -------------------------------------------------------- int __usercall sub_4A9B26(int a1) { return sub_441140(a1 - 1288); } //----- (004A9B31) -------------------------------------------------------- int __cdecl sub_4A9B31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 324)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9B60) -------------------------------------------------------- int __usercall sub_4A9B60(int a1) { return sub_445030(a1 - 3096); } //----- (004A9B6B) -------------------------------------------------------- int __usercall sub_4A9B6B(int a1) { return sub_441140(a1 - 3096); } //----- (004A9B76) -------------------------------------------------------- int __cdecl sub_4A9B76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 776)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9BA0) -------------------------------------------------------- void __usercall sub_4A9BA0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (004A9BAB) -------------------------------------------------------- int __cdecl sub_4A9BAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9BD0) -------------------------------------------------------- void __cdecl sub_4A9BD0() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004A9BD8) -------------------------------------------------------- int __usercall sub_4A9BD8(int a1) { return sub_4406A0((void *)(a1 - 44)); } //----- (004A9BE0) -------------------------------------------------------- void __usercall sub_4A9BE0(int a1) { sub_43E650((void *)(a1 - 28)); } //----- (004A9BE8) -------------------------------------------------------- void __cdecl sub_4A9BE8() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004A9C10) -------------------------------------------------------- void __cdecl sub_4A9C10() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004A9C18) -------------------------------------------------------- int __usercall sub_4A9C18(int a1) { return sub_4406A0((void *)(a1 - 32)); } //----- (004A9C20) -------------------------------------------------------- void __cdecl sub_4A9C20() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004A9C28) -------------------------------------------------------- int __cdecl sub_4A9C28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9C50) -------------------------------------------------------- void __usercall sub_4A9C50(int a1) { sub_43E650((void *)(a1 - 112)); } //----- (004A9C58) -------------------------------------------------------- void __cdecl sub_4A9C58() { JUMPOUT(loc_43DB70); } //----- (004A9C60) -------------------------------------------------------- void __cdecl sub_4A9C60() { JUMPOUT(loc_43DB70); } //----- (004A9C68) -------------------------------------------------------- int __cdecl sub_4A9C68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 34)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9C90) -------------------------------------------------------- void __usercall sub_4A9C90(int a1) { sub_43E650((void *)(a1 - 64)); } //----- (004A9C98) -------------------------------------------------------- void __cdecl sub_4A9C98() { JUMPOUT(loc_43DB70); } //----- (004A9CA0) -------------------------------------------------------- int __cdecl sub_4A9CA0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 22)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9CD0) -------------------------------------------------------- void __usercall sub_4A9CD0(int a1) { sub_43E650((void *)(a1 - 88)); } //----- (004A9CD8) -------------------------------------------------------- void __cdecl sub_4A9CD8() { JUMPOUT(loc_43DB70); } //----- (004A9CE0) -------------------------------------------------------- void __cdecl sub_4A9CE0() { JUMPOUT(loc_43DB70); } //----- (004A9CE8) -------------------------------------------------------- void __cdecl sub_4A9CE8() { JUMPOUT(loc_43DB70); } //----- (004A9CF0) -------------------------------------------------------- int __cdecl sub_4A9CF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9D20) -------------------------------------------------------- void __usercall sub_4A9D20(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_4B99CC; sub_44ED10(v1); } // 4B99CC: using guessed type int (__thiscall *off_4B99CC)(void *, char); //----- (004A9D28) -------------------------------------------------------- int __cdecl sub_4A9D28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9D50) -------------------------------------------------------- void __cdecl sub_4A9D50() { JUMPOUT(loc_448450); } // 448450: using guessed type int loc_448450(); //----- (004A9D58) -------------------------------------------------------- void __usercall sub_4A9D58(int a1) { sub_44B6C0((void *)(*(_DWORD *)(a1 - 16) + 148)); } //----- (004A9D66) -------------------------------------------------------- int __cdecl sub_4A9D66(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9D90) -------------------------------------------------------- void __usercall sub_4A9D90(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_4B99E0; sub_44ED10(v1); } // 4B99E0: using guessed type int (__thiscall *off_4B99E0)(void *, char); //----- (004A9D98) -------------------------------------------------------- void __usercall sub_4A9D98(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 444; *(_DWORD *)v1 = &off_4B99E8; sub_44ED10(v1); } // 4B99E8: using guessed type int (__thiscall *off_4B99E8)(void *, char); //----- (004A9DA6) -------------------------------------------------------- void __usercall sub_4A9DA6(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 732; *(_DWORD *)v1 = &off_4B99F0; sub_44ED10(v1); } // 4B99F0: using guessed type int (__thiscall *off_4B99F0)(void *, char); //----- (004A9DB4) -------------------------------------------------------- void __usercall sub_4A9DB4(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 860; *(_DWORD *)v1 = &off_4B99F8; sub_44ED10(v1); } // 4B99F8: using guessed type int (__thiscall *off_4B99F8)(void *, char); //----- (004A9DC2) -------------------------------------------------------- void __usercall sub_4A9DC2(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 928; *(_DWORD *)v1 = &off_4B9A00; sub_44ED10(v1); } // 4B9A00: using guessed type int (__thiscall *off_4B9A00)(void *, char); //----- (004A9DD0) -------------------------------------------------------- void __usercall sub_4A9DD0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 1024; *(_DWORD *)v1 = &off_4B9A08; sub_44ED10(v1); } // 4B9A08: using guessed type int (__thiscall *off_4B9A08)(void *, char); //----- (004A9DDE) -------------------------------------------------------- int __cdecl sub_4A9DDE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9E00) -------------------------------------------------------- void __cdecl sub_4A9E00() { JUMPOUT(loc_448600); } // 448600: using guessed type int loc_448600(); //----- (004A9E08) -------------------------------------------------------- void __cdecl sub_4A9E08() { JUMPOUT(loc_448610); } // 448610: using guessed type int loc_448610(); //----- (004A9E16) -------------------------------------------------------- void __cdecl sub_4A9E16() { JUMPOUT(loc_448620); } // 448620: using guessed type int loc_448620(); //----- (004A9E24) -------------------------------------------------------- void __cdecl sub_4A9E24() { JUMPOUT(loc_448630); } // 448630: using guessed type int loc_448630(); //----- (004A9E32) -------------------------------------------------------- void __cdecl sub_4A9E32() { JUMPOUT(loc_448640); } // 448640: using guessed type int loc_448640(); //----- (004A9E40) -------------------------------------------------------- void __cdecl sub_4A9E40() { JUMPOUT(loc_448650); } // 448650: using guessed type int loc_448650(); //----- (004A9E4E) -------------------------------------------------------- int __cdecl sub_4A9E4E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9E70) -------------------------------------------------------- void __usercall sub_4A9E70(int a1) { sub_44B6C0((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (004A9E7B) -------------------------------------------------------- int __cdecl sub_4A9E7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9EA0) -------------------------------------------------------- void __usercall sub_4A9EA0(int a1) { sub_44B6C0((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (004A9EAB) -------------------------------------------------------- void __usercall sub_4A9EAB(int a1) { sub_448950((void *)(*(_DWORD *)(a1 - 16) + 1036)); } //----- (004A9EB9) -------------------------------------------------------- int __cdecl sub_4A9EB9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9EE0) -------------------------------------------------------- void __usercall sub_4A9EE0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (004A9EEB) -------------------------------------------------------- int __cdecl sub_4A9EEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9F10) -------------------------------------------------------- void __usercall sub_4A9F10(int a1) { sub_449200((SOCKET *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (004A9F1B) -------------------------------------------------------- int __cdecl sub_4A9F1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9F40) -------------------------------------------------------- void __usercall sub_4A9F40(int a1) { sub_449200((SOCKET *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (004A9F4B) -------------------------------------------------------- void __cdecl sub_4A9F4B() { JUMPOUT(loc_43BFA0); } // 43BFA0: using guessed type int loc_43BFA0(); //----- (004A9F59) -------------------------------------------------------- void __usercall sub_4A9F59(int a1) { *(_DWORD *)(*(_DWORD *)(a1 - 16) + 37560) = &off_4B8734; } // 4B8734: using guessed type int (__stdcall *off_4B8734)(int, int); //----- (004A9F67) -------------------------------------------------------- int __cdecl sub_4A9F67(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004A9F90) -------------------------------------------------------- void __cdecl sub_4A9F90() { JUMPOUT(loc_449B50); } // 449B50: using guessed type int loc_449B50(); //----- (004A9F9B) -------------------------------------------------------- void __cdecl sub_4A9F9B() { JUMPOUT(loc_43BFA0); } // 43BFA0: using guessed type int loc_43BFA0(); //----- (004A9FD0) -------------------------------------------------------- void __cdecl sub_4A9FD0() { JUMPOUT(loc_449B50); } // 449B50: using guessed type int loc_449B50(); //----- (004A9FDB) -------------------------------------------------------- void __cdecl sub_4A9FDB() { JUMPOUT(loc_43BFA0); } // 43BFA0: using guessed type int loc_43BFA0(); //----- (004A9FE6) -------------------------------------------------------- void __cdecl sub_4A9FE6() { JUMPOUT(loc_43BFA0); } // 43BFA0: using guessed type int loc_43BFA0(); //----- (004A9FF1) -------------------------------------------------------- void __cdecl sub_4A9FF1() { JUMPOUT(loc_43BFA0); } // 43BFA0: using guessed type int loc_43BFA0(); //----- (004A9FFC) -------------------------------------------------------- int __cdecl sub_4A9FFC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA020) -------------------------------------------------------- void __usercall sub_4AA020(int a1) { type_info::_type_info((void *)(a1 + 40)); } //----- (004AA028) -------------------------------------------------------- void __usercall sub_4AA028(int a1) { type_info::_type_info((void *)(a1 + 24)); } //----- (004AA030) -------------------------------------------------------- void __usercall sub_4AA030(int a1) { type_info::_type_info((void *)(a1 + 8)); } //----- (004AA038) -------------------------------------------------------- int __cdecl sub_4AA038(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA060) -------------------------------------------------------- void __usercall sub_4AA060(int a1) { type_info::_type_info((void *)(a1 + 8)); } //----- (004AA068) -------------------------------------------------------- int __cdecl sub_4AA068(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA090) -------------------------------------------------------- void __usercall sub_4AA090(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (004AA09B) -------------------------------------------------------- void __usercall sub_4AA09B(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (004AA0A6) -------------------------------------------------------- int __cdecl sub_4AA0A6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA0D0) -------------------------------------------------------- void __usercall sub_4AA0D0(int a1) { type_info::_type_info((void *)(a1 + 8)); } //----- (004AA0D8) -------------------------------------------------------- int __cdecl sub_4AA0D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA100) -------------------------------------------------------- void __cdecl sub_4AA100() { JUMPOUT(loc_449B50); } // 449B50: using guessed type int loc_449B50(); //----- (004AA10B) -------------------------------------------------------- int (__stdcall **__usercall sub_4AA10B(int a1))(int, int) { return sub_44A150((SOCKET *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (004AA116) -------------------------------------------------------- void __usercall sub_4AA116(int a1) { sub_44E8E0(*(_DWORD *)(a1 - 16) + 188); } //----- (004AA124) -------------------------------------------------------- int __cdecl sub_4AA124(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA140) -------------------------------------------------------- void __cdecl sub_4AA140() { JUMPOUT(loc_449B50); } // 449B50: using guessed type int loc_449B50(); //----- (004AA14B) -------------------------------------------------------- int (__stdcall **__usercall sub_4AA14B(int a1))(int, int) { return sub_44A150((SOCKET *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (004AA156) -------------------------------------------------------- int __cdecl sub_4AA156(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA180) -------------------------------------------------------- SQLRETURN __usercall sub_4AA180(int a1) { return sub_450920(*(_DWORD *)(a1 - 16)); } //----- (004AA188) -------------------------------------------------------- int __cdecl sub_4AA188(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA1B0) -------------------------------------------------------- void __usercall sub_4AA1B0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_4BC6E8; sub_44ED10(v1); } // 4BC6E8: using guessed type int (__thiscall *off_4BC6E8)(void *, char); //----- (004AA1B8) -------------------------------------------------------- int __cdecl sub_4AA1B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA1E0) -------------------------------------------------------- void __cdecl sub_4AA1E0() { JUMPOUT(loc_4500F0); } // 4500F0: using guessed type int loc_4500F0(); //----- (004AA1EA) -------------------------------------------------------- int __cdecl sub_4AA1EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA210) -------------------------------------------------------- int __usercall sub_4AA210(int a1) { return _LN21(*(void **)(a1 - 84), 0x8008u, 101, nullsub_1); } //----- (004AA226) -------------------------------------------------------- int __usercall sub_4AA226(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 84) + 3310376), 0x8008u, 4, nullsub_1); } //----- (004AA241) -------------------------------------------------------- void __usercall sub_4AA241(int a1) { nullsub_1((void *)(*(_DWORD *)(a1 - 84) + 3441480)); } //----- (004AA24F) -------------------------------------------------------- int __cdecl sub_4AA24F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 24)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA280) -------------------------------------------------------- int __cdecl sub_4AA280() { return _LN21(&unk_6FA570, 0x8008u, 101, nullsub_1); } //----- (004AA297) -------------------------------------------------------- int __cdecl sub_4AA297() { return _LN21(&unk_A22898, 0x8008u, 4, nullsub_1); } //----- (004AA2AE) -------------------------------------------------------- int __cdecl sub_4AA2AE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA2D0) -------------------------------------------------------- void __usercall sub_4AA2D0(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_4BC8D4; v1 = *(void **)(v2 + 8); if ( v1 ) operator delete(v1); } // 4BC8D4: using guessed type int (__thiscall *off_4BC8D4)(void *, char); //----- (004AA2D8) -------------------------------------------------------- int __cdecl sub_4AA2D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA300) -------------------------------------------------------- void __usercall sub_4AA300(int a1) { *(_DWORD *)(a1 - 20) = &off_4BC6F8; } // 4BC6F8: using guessed type int (__stdcall *off_4BC6F8)(int, int); //----- (004AA308) -------------------------------------------------------- int __cdecl sub_4AA308(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA330) -------------------------------------------------------- void __cdecl sub_4AA330() { JUMPOUT(loc_450AC0); } // 450AC0: using guessed type int loc_450AC0(); //----- (004AA338) -------------------------------------------------------- void __usercall sub_4AA338(int a1) { void **v1; // ecx@1 v1 = (void **)(*(_DWORD *)(a1 - 16) + 24); if ( *v1 ) operator delete(*v1); } //----- (004AA343) -------------------------------------------------------- int __cdecl sub_4AA343(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA360) -------------------------------------------------------- void __cdecl sub_4AA360() { JUMPOUT(loc_43DB70); } //----- (004AA368) -------------------------------------------------------- void __cdecl sub_4AA368() { JUMPOUT(loc_43DB70); } //----- (004AA370) -------------------------------------------------------- void __cdecl sub_4AA370() { JUMPOUT(loc_43DB70); } //----- (004AA378) -------------------------------------------------------- int __cdecl sub_4AA378(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 20)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA3A0) -------------------------------------------------------- int __usercall sub_4AA3A0(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 16) & 2; if ( *(_DWORD *)(a1 - 16) & 2 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFDu; *(_DWORD *)(a1 - 92) = &off_4B8C30; result = std::ios_base::_Ios_base_dtor(a1 - 92); } return result; } // 48BC34: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 4B8C30: using guessed type int (__thiscall *off_4B8C30)(void *, char); //----- (004AA3B9) -------------------------------------------------------- int __usercall sub_4AA3B9(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 188); *(_DWORD *)(*(_DWORD *)(result + 4) + a1 - 172 - 16) = &off_4B8C5C; return result; } // 4B8C5C: using guessed type int (__stdcall *off_4B8C5C)(char); //----- (004AA3C4) -------------------------------------------------------- void __cdecl sub_4AA3C4() { JUMPOUT(loc_43E820); } // 43E820: using guessed type int loc_43E820(); //----- (004AA3CF) -------------------------------------------------------- int __usercall sub_4AA3CF(int a1) { return sub_43ECF0(*(_DWORD *)(a1 - 200)); } //----- (004AA3DA) -------------------------------------------------------- int __usercall sub_4AA3DA(int a1) { void *v1; // esi@1 v1 = (void *)(a1 - 188 + 96); sub_43FA90(v1); *(_DWORD *)v1 = &off_4B8C30; return std::ios_base::_Ios_base_dtor(v1); } // 48BC34: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 4B8C30: using guessed type int (__thiscall *off_4B8C30)(void *, char); //----- (004AA3E5) -------------------------------------------------------- int __usercall sub_4AA3E5(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 16) & 1; if ( *(_DWORD *)(a1 - 16) & 1 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFEu; JUMPOUT(loc_43DB70); } return result; } //----- (004AA3FE) -------------------------------------------------------- void __cdecl sub_4AA3FE() { JUMPOUT(loc_43E820); } // 43E820: using guessed type int loc_43E820(); //----- (004AA40C) -------------------------------------------------------- int __usercall sub_4AA40C(int a1) { return std::_Mutex::__Mutex(*(_DWORD *)(a1 - 196) + 4); } // 48BD9E: using guessed type int __thiscall std___Mutex____Mutex(_DWORD); //----- (004AA41A) -------------------------------------------------------- int __cdecl sub_4AA41A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 51)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA440) -------------------------------------------------------- int __usercall sub_4AA440(int a1) { return sub_43C9F0(*(_DWORD *)(a1 - 16)); } // 43C9F0: using guessed type int __thiscall sub_43C9F0(_DWORD); //----- (004AA448) -------------------------------------------------------- void __usercall sub_4AA448(int a1) { sub_464270((void *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (004AA453) -------------------------------------------------------- int __cdecl sub_4AA453(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA470) -------------------------------------------------------- int __cdecl sub_4AA470(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA490) -------------------------------------------------------- void __cdecl sub_4AA490() { JUMPOUT(loc_43DB70); } //----- (004AA49B) -------------------------------------------------------- int __cdecl sub_4AA49B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 73)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA4D0) -------------------------------------------------------- void __cdecl sub_4AA4D0() { JUMPOUT(loc_43DB70); } //----- (004AA4DB) -------------------------------------------------------- void __cdecl sub_4AA4DB() { JUMPOUT(loc_43DB70); } //----- (004AA4E6) -------------------------------------------------------- int __cdecl sub_4AA4E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA510) -------------------------------------------------------- void __cdecl sub_4AA510() { JUMPOUT(loc_43DB70); } //----- (004AA51B) -------------------------------------------------------- void __cdecl sub_4AA51B() { JUMPOUT(loc_43DB70); } //----- (004AA526) -------------------------------------------------------- int __cdecl sub_4AA526(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA550) -------------------------------------------------------- void __cdecl sub_4AA550() { JUMPOUT(loc_43DB70); } //----- (004AA590) -------------------------------------------------------- void __cdecl sub_4AA590() { JUMPOUT(loc_43DB70); } //----- (004AA59B) -------------------------------------------------------- int __cdecl sub_4AA59B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA5C0) -------------------------------------------------------- void __cdecl sub_4AA5C0() { JUMPOUT(loc_43DB70); } //----- (004AA5CB) -------------------------------------------------------- int __cdecl sub_4AA5CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA5F0) -------------------------------------------------------- void __usercall sub_4AA5F0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (004AA5FB) -------------------------------------------------------- void __cdecl sub_4AA5FB() { JUMPOUT(loc_43DB70); } //----- (004AA606) -------------------------------------------------------- void __usercall sub_4AA606(int a1) { sub_48DB99(*(void **)(a1 - 16)); } //----- (004AA611) -------------------------------------------------------- int __cdecl sub_4AA611(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA630) -------------------------------------------------------- void __usercall sub_4AA630(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (004AA63B) -------------------------------------------------------- void __usercall sub_4AA63B(int a1) { sub_48DB99(*(void **)(a1 - 16)); } //----- (004AA646) -------------------------------------------------------- int __cdecl sub_4AA646(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA670) -------------------------------------------------------- void __usercall sub_4AA670(int a1) { sub_48DB99(*(void **)(a1 - 16)); } //----- (004AA67B) -------------------------------------------------------- int __cdecl sub_4AA67B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA6D0) -------------------------------------------------------- int __cdecl sub_4AA6D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA6F0) -------------------------------------------------------- void __cdecl sub_4AA6F0() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004AA6F8) -------------------------------------------------------- int __usercall sub_4AA6F8(int a1) { return sub_4406A0((void *)(a1 - 32)); } //----- (004AA700) -------------------------------------------------------- void __cdecl sub_4AA700() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004AA708) -------------------------------------------------------- int __cdecl sub_4AA708(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA730) -------------------------------------------------------- void __cdecl sub_4AA730() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004AA738) -------------------------------------------------------- void __cdecl sub_4AA738() { JUMPOUT(loc_43E800); } // 43E800: using guessed type int loc_43E800(); //----- (004AA740) -------------------------------------------------------- int __cdecl sub_4AA740(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA75B) -------------------------------------------------------- int __usercall sub_4AA75B(int a1) { return std::_Lockit::__Lockit(a1 - 16); } // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (004AA763) -------------------------------------------------------- int __cdecl sub_4AA763(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA7AC) -------------------------------------------------------- int __cdecl sub_4AA7AC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 48BF81: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 48C2DB: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (004AA7D0) -------------------------------------------------------- int __cdecl sub_4AA7D0() { sub_401F20((int)&unk_4DFA48); return atexit(sub_4AAC60); } //----- (004AA7F0) -------------------------------------------------------- int __cdecl sub_4AA7F0() { sub_448D20(&unk_6EA3E8, (const char *)0xFFFFFFFF, 0); return atexit(sub_4AAC70); } //----- (004AA810) -------------------------------------------------------- int __cdecl sub_4AA810() { return atexit(nullsub_2); } //----- (004AA820) -------------------------------------------------------- int __cdecl sub_4AA820() { sub_448490((int)&unk_6E9EC8); return atexit(sub_4AAC90); } //----- (004AA840) -------------------------------------------------------- int __cdecl sub_4AA840() { sub_4416C0((int)&unk_6EAD50); return atexit(sub_4AACA0); } //----- (004AA860) -------------------------------------------------------- int __cdecl sub_4AA860() { sub_4A6130(&dword_6EBEE0); dword_6EBEE0 = (int)&off_4B99D4; return atexit(sub_4AACC0); } // 4B99D4: using guessed type int (__thiscall *off_4B99D4)(void *, char); // 6EBEE0: using guessed type int dword_6EBEE0; //----- (004AA880) -------------------------------------------------------- int __cdecl sub_4AA880() { return atexit(nullsub_3); } //----- (004AA890) -------------------------------------------------------- int __cdecl sub_4AA890() { sub_44DC50((int)dword_6EC2C8); return atexit(sub_4AACF0); } //----- (004AA8B0) -------------------------------------------------------- int __cdecl sub_4AA8B0() { dword_6EC418 = (int)sub_44BE20; dword_6EC41C = (int)sub_44BE20; dword_6EC420 = (int)sub_44BE20; dword_6EC424 = (int)sub_44BE20; dword_6EC428 = (int)sub_44BE20; dword_6EC42C = (int)sub_44BE20; dword_6EC430 = (int)sub_44BE20; dword_6EC440 = (int)sub_44BE20; dword_6EC444 = (int)sub_44BE20; dword_6EC44C = (int)sub_44BE20; dword_6EC450 = (int)sub_44BE20; dword_6EC454 = (int)sub_44BE20; dword_6EC458 = (int)sub_44BE20; dword_6EC434 = (int)sub_44E8A0; dword_6EC438 = (int)sub_44E880; dword_6EC43C = (int)sub_44E890; dword_6EC448 = (int)sub_44E8B0; return atexit(nullsub_4); } // 6EC418: using guessed type int dword_6EC418; // 6EC41C: using guessed type int dword_6EC41C; // 6EC420: using guessed type int dword_6EC420; // 6EC424: using guessed type int dword_6EC424; // 6EC428: using guessed type int dword_6EC428; // 6EC42C: using guessed type int dword_6EC42C; // 6EC430: using guessed type int dword_6EC430; // 6EC434: using guessed type int dword_6EC434; // 6EC438: using guessed type int dword_6EC438; // 6EC43C: using guessed type int dword_6EC43C; // 6EC440: using guessed type int dword_6EC440; // 6EC444: using guessed type int dword_6EC444; // 6EC448: using guessed type int dword_6EC448; // 6EC44C: using guessed type int dword_6EC44C; // 6EC450: using guessed type int dword_6EC450; // 6EC454: using guessed type int dword_6EC454; // 6EC458: using guessed type int dword_6EC458; //----- (004AA940) -------------------------------------------------------- int __cdecl sub_4AA940() { return atexit(nullsub_5); } //----- (004AA950) -------------------------------------------------------- int __cdecl sub_4AA950() { return atexit(nullsub_6); } //----- (004AA960) -------------------------------------------------------- int __cdecl sub_4AA960() { _eh_vector_constructor_iterator_(dword_6EC478, 0x808u, 16, (int)sub_44EDC0, nullsub_1); return atexit(sub_4AAD30); } // 6EC478: using guessed type int dword_6EC478[]; //----- (004AA990) -------------------------------------------------------- int __cdecl sub_4AA990() { int result; // eax@1 signed int v1; // ecx@1 result = (int)dword_6F44F8; v1 = 15; do { *(_DWORD *)result = 0; *(_DWORD *)(result + 4) = 0; result += 8; --v1; } while ( v1 >= 0 ); return result; } // 6F44F8: using guessed type int dword_6F44F8[]; //----- (004AA9B0) -------------------------------------------------------- int __cdecl sub_4AA9B0() { sub_44EFA0((int)&unk_4DD298, "Socket_IOCP_Write"); dword_4DD7BC = 1; InitializeCriticalSection(&CriticalSection); memset(&unk_4DD3B4, 0, 0x400u); dword_4DD7B4 = 0; dword_4DD7B8 = 1; return atexit(sub_4AAD50); } // 4DD7B8: using guessed type int dword_4DD7B8; // 4DD7BC: using guessed type int dword_4DD7BC; //----- (004AAA10) -------------------------------------------------------- int __cdecl sub_4AAA10() { sub_44EFA0((int)&unk_4DD7C0, "ZoneLinktoError"); dword_4DDCE4 = 0; InitializeCriticalSection(&stru_4DD8C4); memset(&unk_4DD8DC, 0, 0x400u); dword_4DDCDC = 0; dword_4DDCE0 = 1; return atexit(sub_4AAD70); } // 4DDCE0: using guessed type int dword_4DDCE0; // 4DDCE4: using guessed type int dword_4DDCE4; //----- (004AAA70) -------------------------------------------------------- int __cdecl sub_4AAA70() { sub_44ECF0((int)&dword_6F5DD0); memset(&unk_6F5E10, 0, 0x42u); dword_6F5DD0 = (int)&off_4BC700; return atexit(sub_4AAD90); } // 4BC700: using guessed type int (__thiscall *off_4BC700)(void *, char); // 6F5DD0: using guessed type int dword_6F5DD0; //----- (004AAAA0) -------------------------------------------------------- int __cdecl sub_4AAAA0() { sub_44ECF0((int)&dword_6F5EC0); dword_6F5F00 = 0; dword_6F5F04 = 0; dword_6F5F08 = 0; dword_6F5F0C = 0; dword_6F5F10 = 0; dword_6F5F14 = 0; byte_6F5F18 = 0; dword_6F5EC0 = (int)&off_4BC708; _eh_vector_constructor_iterator_(&unk_6F5F1C, 0x24u, 500, (int)sub_44FFF0, sub_450000); return atexit(sub_4AADB0); } // 4BC708: using guessed type int (__thiscall *off_4BC708)(void *, char); // 6F5EC0: using guessed type int dword_6F5EC0; // 6F5F00: using guessed type int dword_6F5F00; // 6F5F04: using guessed type int dword_6F5F04; // 6F5F08: using guessed type int dword_6F5F08; // 6F5F0C: using guessed type int dword_6F5F0C; // 6F5F10: using guessed type int dword_6F5F10; // 6F5F14: using guessed type int dword_6F5F14; // 6F5F18: using guessed type char byte_6F5F18; //----- (004AAB40) -------------------------------------------------------- int __cdecl sub_4AAB40() { sub_44ECF0((int)&dword_6F5E58); dword_6F5E98 = 0; dword_6F5E9C = 0; dword_6F5EA0 = 0; dword_6F5EA4 = 0; dword_6F5EA8 = 0; dword_6F5EAC = 0; dword_6F5EB0 = 0; dword_6F5EB4 = 0; dword_6F5EB8 = 0; dword_6F5EBC = 0; dword_6F5E58 = (int)&off_4BC810; return atexit(sub_4AAE30); } // 4BC810: using guessed type int (__thiscall *off_4BC810)(void *, char); // 6F5E58: using guessed type int dword_6F5E58; // 6F5E98: using guessed type int dword_6F5E98; // 6F5E9C: using guessed type int dword_6F5E9C; // 6F5EA0: using guessed type int dword_6F5EA0; // 6F5EA4: using guessed type int dword_6F5EA4; // 6F5EA8: using guessed type int dword_6F5EA8; // 6F5EAC: using guessed type int dword_6F5EAC; // 6F5EB0: using guessed type int dword_6F5EB0; // 6F5EB4: using guessed type int dword_6F5EB4; // 6F5EB8: using guessed type int dword_6F5EB8; // 6F5EBC: using guessed type int dword_6F5EBC; //----- (004AABA0) -------------------------------------------------------- int __cdecl sub_4AABA0() { sub_450540(&unk_6FA570); return atexit(sub_4AAE50); } //----- (004AABC0) -------------------------------------------------------- int __cdecl sub_4AABC0() { sub_46CD50(&stru_A42914); return atexit(sub_4AAED0); } //----- (004AABD6) -------------------------------------------------------- int __cdecl sub_4AABD6() { std::_Init_locks::_Init_locks(&unk_A429A8); return atexit(sub_4AAEDA); } // 48B6DC: using guessed type int __thiscall std___Init_locks___Init_locks(_DWORD); //----- (004AABEC) -------------------------------------------------------- int __cdecl sub_4AABEC() { return atexit((void (__cdecl *)())sub_4AAEEE); } //----- (004AABF8) -------------------------------------------------------- int __cdecl sub_4AABF8() { return atexit(sub_4AAEE4); } //----- (004AAC04) -------------------------------------------------------- int __cdecl sub_4AAC04() { return atexit(sub_4AAEF8); } //----- (004AAC10) -------------------------------------------------------- int __cdecl sub_4AAC10() { return atexit(sub_4AAF03); } //----- (004AAC1C) -------------------------------------------------------- int __cdecl sub_4AAC1C() { return atexit(sub_4AAF0E); } //----- (004AAC28) -------------------------------------------------------- int __cdecl sub_4AAC28() { std::_Init_locks::_Init_locks(&unk_A42B50); return atexit(sub_4AAF19); } // 48B6DC: using guessed type int __thiscall std___Init_locks___Init_locks(_DWORD); //----- (004AAC3E) -------------------------------------------------------- int __cdecl sub_4AAC3E() { return atexit(sub_4AAF23); } //----- (004AAC60) -------------------------------------------------------- int __cdecl sub_4AAC60() { return sub_401010(&unk_4DFA48); } //----- (004AAC70) -------------------------------------------------------- void __cdecl sub_4AAC70() { sub_448C30((int)&unk_6EA3E8); } //----- (004AAC90) -------------------------------------------------------- void __cdecl sub_4AAC90() { sub_448520((int)&unk_6E9EC8); } //----- (004AACA0) -------------------------------------------------------- int __cdecl sub_4AACA0() { return _LN21(&unk_6EAD54, 0x41u, 49, nullsub_1); } //----- (004AACC0) -------------------------------------------------------- void __cdecl sub_4AACC0() { dword_6EBEE0 = (int)&off_4B99D4; sub_4A62E0(&dword_6EBEE0); } // 4B99D4: using guessed type int (__thiscall *off_4B99D4)(void *, char); // 6EBEE0: using guessed type int dword_6EBEE0; //----- (004AACF0) -------------------------------------------------------- int (__thiscall **__cdecl sub_4AACF0())(void *, char) { int (__thiscall **result)(void *, char); // eax@1 result = &off_4BA1D4; dword_6EC2C8[37] = &off_4BA1D4; dword_6EC2C8[36] = &off_4BA1D4; dword_6EC2C8[35] = &off_4BA1D4; dword_6EC2C8[34] = &off_4BA1D4; dword_6EC2C8[33] = &off_4BA1D4; dword_6EC2C8[32] = &off_4BA1D4; dword_6EC2C8[31] = &off_4BA1D4; dword_6EC2C8[30] = &off_4BA1D4; dword_6EC2C8[29] = &off_4BA1D4; dword_6EC2C8[28] = &off_4BA1D4; dword_6EC2C8[27] = &off_4BA1D4; dword_6EC2C8[26] = &off_4BA1D4; dword_6EC2C8[25] = &off_4BA1D4; dword_6EC2C8[24] = &off_4BA1D4; dword_6EC2C8[23] = &off_4BA1D4; dword_6EC2C8[22] = &off_4BA1D4; dword_6EC2C8[21] = &off_4BA1D4; dword_6EC2C8[20] = &off_4BA1D4; dword_6EC2C8[19] = &off_4BA1D4; dword_6EC2C8[18] = &off_4BA1D4; dword_6EC2C8[17] = &off_4BA1D4; dword_6EC2C8[16] = &off_4BA1D4; dword_6EC2C8[15] = &off_4BA1D4; dword_6EC2C8[14] = &off_4BA1D4; dword_6EC2C8[13] = &off_4BA1D4; dword_6EC2C8[12] = &off_4BA1D4; dword_6EC2C8[11] = &off_4BA1D4; dword_6EC2C8[10] = &off_4BA1D4; dword_6EC2C8[9] = &off_4BA1D4; dword_6EC2C8[8] = &off_4BA1D4; dword_6EC2C8[7] = &off_4BA1D4; dword_6EC2C8[6] = &off_4BA1D4; dword_6EC2C8[5] = &off_4BA1D4; dword_6EC2C8[4] = &off_4BA1D4; dword_6EC2C8[3] = &off_4BA1D4; dword_6EC2C8[2] = &off_4BA1D4; dword_6EC2C8[1] = &off_4BA1D4; dword_6EC2C8[0] = &off_4BA1D4; return result; } // 4BA1D4: using guessed type int (__thiscall *off_4BA1D4)(void *, char); //----- (004AAD30) -------------------------------------------------------- int __cdecl sub_4AAD30() { return _LN21(dword_6EC478, 0x808u, 16, nullsub_1); } // 6EC478: using guessed type int dword_6EC478[]; //----- (004AAD50) -------------------------------------------------------- int __cdecl sub_4AAD50() { int result; // eax@1 result = (int)dword_4DD7B4; if ( dword_4DD7B4 ) result = fclose(dword_4DD7B4); return result; } //----- (004AAD70) -------------------------------------------------------- int __cdecl sub_4AAD70() { int result; // eax@1 result = (int)dword_4DDCDC; if ( dword_4DDCDC ) result = fclose(dword_4DDCDC); return result; } //----- (004AAD90) -------------------------------------------------------- void __cdecl sub_4AAD90() { dword_6F5DD0 = (int)&off_4BC6E0; sub_44ED10((int)&dword_6F5DD0); } // 4BC6E0: using guessed type int (__thiscall *off_4BC6E0)(void *, char); // 6F5DD0: using guessed type int dword_6F5DD0; //----- (004AADB0) -------------------------------------------------------- void __cdecl sub_4AADB0() { dword_6F5EC0 = (int)&off_4BC708; _LN21(&unk_6F5F1C, 0x24u, 500, sub_450000); dword_6F5EC0 = (int)&off_4BC6E8; sub_44ED10((int)&dword_6F5EC0); } // 4BC6E8: using guessed type int (__thiscall *off_4BC6E8)(void *, char); // 4BC708: using guessed type int (__thiscall *off_4BC708)(void *, char); // 6F5EC0: using guessed type int dword_6F5EC0; //----- (004AAE30) -------------------------------------------------------- void __cdecl sub_4AAE30() { dword_6F5E58 = (int)&off_4BC6F0; sub_44ED10((int)&dword_6F5E58); } // 4BC6F0: using guessed type int (__thiscall *off_4BC6F0)(void *, char); // 6F5E58: using guessed type int dword_6F5E58; //----- (004AAE50) -------------------------------------------------------- int __cdecl sub_4AAE50() { nullsub_1(&unk_A428B8); _LN21(&unk_A22898, 0x8008u, 4, nullsub_1); return _LN21(&unk_6FA570, 0x8008u, 101, nullsub_1); } //----- (004AAED0) -------------------------------------------------------- void __cdecl sub_4AAED0() { int v0; // ecx@1 v0 = *((_DWORD *)&stru_A42914 + 6); if ( v0 != *((_DWORD *)&stru_A42914 + 7) ) *((_DWORD *)&stru_A42914 + 7) = v0; DeleteCriticalSection(&stru_A42914); if ( *((_DWORD *)&stru_A42914 + 6) ) operator delete(*((void **)&stru_A42914 + 6)); *((_DWORD *)&stru_A42914 + 6) = 0; *((_DWORD *)&stru_A42914 + 7) = 0; *((_DWORD *)&stru_A42914 + 8) = 0; } //----- (004AAEDA) -------------------------------------------------------- LONG __cdecl sub_4AAEDA() { LONG result; // eax@1 struct _RTL_CRITICAL_SECTION *v1; // esi@2 result = InterlockedDecrement(&dword_4DE234); if ( result < 0 ) { v1 = &stru_A42948; do { result = _Mtxdst(v1); ++v1; } while ( (signed int)v1 < (signed int)&unk_A429A8 ); } return result; } //----- (004AAEE4) -------------------------------------------------------- void __cdecl sub_4AAEE4() { sub_43E650(&dword_A429CC); } // A429CC: using guessed type int dword_A429CC; //----- (004AAEEE) -------------------------------------------------------- int __usercall sub_4AAEEE(int a1) { void *v1; // esi@2 void *v2; // ecx@2 int v4; // [sp-14h] [bp-14h]@0 int v5; // [sp-10h] [bp-10h]@0 int v6; // [sp-Ch] [bp-Ch]@0 int v7; // [sp-8h] [bp-8h]@0 int v8; // [sp-4h] [bp-4h]@1 _EH_prolog3(4); std::_Lockit::_Lockit(0); *(_DWORD *)(a1 - 4) = 0; while ( dword_A429AC ) { v1 = dword_A429AC; v2 = dword_A429AC; dword_A429AC = *(void **)dword_A429AC; std::_Fac_node::__Fac_node(v2); operator delete(v1); } *(_DWORD *)(a1 - 4) = -1; std::_Lockit::__Lockit(a1 - 16); return _EH_epilog3(v4, v5, v6, v7, v8); } // 48B736: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 48B75E: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 48B775: using guessed type int __thiscall std___Fac_node____Fac_node(_DWORD); // 4937D4: using guessed type _DWORD __cdecl _EH_prolog3(char); // 49383D: using guessed type int __stdcall _EH_epilog3(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (004AAEF8) -------------------------------------------------------- void __cdecl sub_4AAEF8() { off_4DE304 = (int (__thiscall *)(void *, char))&off_4C8FB4; } // 4C8FB4: using guessed type int (__thiscall *off_4C8FB4)(void *, char); // 4DE304: using guessed type int (__thiscall *off_4DE304)(void *, char); //----- (004AAF03) -------------------------------------------------------- void __cdecl sub_4AAF03() { off_4DE30C = (int (__thiscall *)(void *, char))&off_4C8FB4; } // 4C8FB4: using guessed type int (__thiscall *off_4C8FB4)(void *, char); // 4DE30C: using guessed type int (__thiscall *off_4DE30C)(void *, char); //----- (004AAF0E) -------------------------------------------------------- void __cdecl sub_4AAF0E() { off_4DE314 = (int (__thiscall *)(void *, char))&off_4C8FB4; } // 4C8FB4: using guessed type int (__thiscall *off_4C8FB4)(void *, char); // 4DE314: using guessed type int (__thiscall *off_4DE314)(void *, char); //----- (004AAF19) -------------------------------------------------------- void __cdecl sub_4AAF19() { JUMPOUT(unknown_libname_2); } // 48B70D: using guessed type int unknown_libname_2(); //----- (004AAF23) -------------------------------------------------------- int __cdecl sub_4AAF23() { return _Init_atexit::__Init_atexit(&unk_A42B51); } // 48BE91: using guessed type int __thiscall _Init_atexit____Init_atexit(_DWORD); //----- (004AAF2D) -------------------------------------------------------- int __cdecl sub_4AAF2D() { dword_A42B54 = (int)&off_4B8A50; return sub_48E063(&dword_A42B54); } // 4B8A50: using guessed type int (__thiscall *off_4B8A50)(void *, char); // A42B54: using guessed type int dword_A42B54; #error "There were 3 decompilation failure(s) on 2865 function(s)"