decomp DBCServer_Release and inspect/document database

This commit is contained in:
Benjamin Palko 2026-10-14 23:22:03 -04:00
parent 4b267cbe05
commit 7834b98bf0
28222 changed files with 843300 additions and 144 deletions

View file

@ -0,0 +1,65 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140007340 FUN_140007340
* Pseudocode, not original source. */
void FUN_140007340(longlong param_1,longlong param_2,undefined8 param_3,longlong param_4)
{
int iVar1;
int iVar2;
longlong lVar3;
longlong lVar4;
longlong lVar5;
int iVar6;
longlong lVar7;
int *piVar8;
int *piVar9;
int iVar10;
iVar10 = (int)param_3;
FUN_14006b350((int *)(param_1 + 0x110));
if (*(longlong *)(param_1 + 0xd0) == 0) {
piVar8 = (int *)0x0;
}
else {
piVar8 = *(int **)(param_1 + 0xc0);
}
while( true ) {
if (piVar8 == (int *)0x0) {
FUN_14006b3e0(param_1 + 0x110);
return;
}
if (piVar8 == (int *)0x0) break;
piVar9 = piVar8;
if (piVar8 != (int *)0x0) {
piVar9 = *(int **)(piVar8 + 4);
}
iVar1 = *piVar8;
piVar8 = piVar9;
if (iVar10 != iVar1) {
iVar2 = *(int *)(param_2 + 0x18);
if (iVar2 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
iVar6 = *(int *)(param_2 + 0x18);
FUN_140063f80(param_2,iVar6 + 1,param_3,param_4);
iVar6 = iVar6 - iVar2;
if ((0 < iVar6) && (iVar6 = iVar6 + -1, lVar7 = (longlong)iVar6, -1 < iVar6)) {
lVar5 = (lVar7 + iVar2) * 4 + 4;
do {
lVar3 = FUN_140008250(param_2);
lVar4 = FUN_140008250(param_2);
*(undefined4 *)(lVar4 + lVar5) = *(undefined4 *)(lVar3 + -4 + lVar5);
lVar5 = lVar5 + -4;
lVar7 = lVar7 + -1;
} while (-1 < lVar7);
}
lVar7 = FUN_140008250(param_2);
*(int *)(lVar7 + (longlong)iVar2 * 4) = iVar1;
}
}
/* WARNING: Subroutine does not return */
FUN_1400064e0(0x80004005);
}

View file

@ -0,0 +1,61 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140007480 FUN_140007480
* Pseudocode, not original source. */
void FUN_140007480(longlong param_1,longlong param_2,undefined8 param_3,longlong param_4)
{
undefined4 uVar1;
int iVar2;
longlong lVar3;
longlong lVar4;
longlong lVar5;
int iVar6;
longlong lVar7;
undefined4 *puVar8;
undefined4 *puVar9;
FUN_14006b350((int *)(param_1 + 0x110));
if (*(longlong *)(param_1 + 0xd0) == 0) {
puVar8 = (undefined4 *)0x0;
}
else {
puVar8 = *(undefined4 **)(param_1 + 0xc0);
}
while( true ) {
if (puVar8 == (undefined4 *)0x0) {
FUN_14006b3e0(param_1 + 0x110);
return;
}
if (puVar8 == (undefined4 *)0x0) break;
puVar9 = (undefined4 *)0x0;
if (puVar8 != (undefined4 *)0x0) {
puVar9 = *(undefined4 **)(puVar8 + 4);
}
uVar1 = *puVar8;
iVar2 = *(int *)(param_2 + 0x18);
if (iVar2 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
iVar6 = *(int *)(param_2 + 0x18);
FUN_140063f80(param_2,iVar6 + 1,param_3,param_4);
iVar6 = iVar6 - iVar2;
if ((0 < iVar6) && (iVar6 = iVar6 + -1, lVar7 = (longlong)iVar6, -1 < iVar6)) {
lVar5 = (lVar7 + iVar2) * 4 + 4;
do {
lVar3 = FUN_140008250(param_2);
lVar4 = FUN_140008250(param_2);
*(undefined4 *)(lVar4 + lVar5) = *(undefined4 *)(lVar3 + -4 + lVar5);
lVar5 = lVar5 + -4;
lVar7 = lVar7 + -1;
} while (-1 < lVar7);
}
lVar7 = FUN_140008250(param_2);
*(undefined4 *)(lVar7 + (longlong)iVar2 * 4) = uVar1;
puVar8 = puVar9;
}
/* WARNING: Subroutine does not return */
FUN_1400064e0(0x80004005);
}

View file

@ -0,0 +1,53 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400075d0 FUN_1400075d0
* Pseudocode, not original source. */
undefined8 FUN_1400075d0(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4)
{
undefined8 uVar1;
LPVOID pvVar2;
LPVOID pvVar3;
ulonglong uVar4;
undefined *puVar5;
char *local_60;
DWORD local_58;
longlong local_50;
undefined **local_48;
longlong *local_40;
LPVOID local_38;
ulonglong local_30;
undefined8 local_28;
local_60 = "REQ_MSG_WHISPER";
local_50 = *(longlong *)**(undefined8 **)(param_1 + 0x80) + 0x68;
local_58 = timeGetTime();
FUN_14006b350((int *)(param_1 + 0x108));
local_48 = Proud::CFastArray<Proud::HostID,0>::vftable;
local_40 = (longlong *)0x0;
local_38 = (LPVOID)0x0;
local_30 = 0;
local_28 = 0;
FUN_140007480(param_1 + -8,(longlong)&local_48,param_3,param_4);
pvVar3 = local_38;
uVar4 = local_30 & 0xffffffff;
pvVar2 = local_38;
if ((int)local_30 == 0) {
pvVar2 = (LPVOID)0x0;
}
puVar5 = &DAT_1401ac5d0;
(**(code **)(*(longlong *)(param_1 + 0x58) + 0x28))();
if (pvVar3 != (LPVOID)0x0) {
if (local_40 == (longlong *)0x0) {
FUN_14006cc60(pvVar3);
}
else {
(**(code **)(*local_40 + 0x18))();
pvVar2 = pvVar3;
}
}
FUN_14006b3e0(param_1 + 0x108);
uVar1 = FUN_1400486e0(&local_60,pvVar2,uVar4,puVar5);
return CONCAT71((int7)((ulonglong)uVar1 >> 8),1);
}

View file

@ -0,0 +1,54 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140007770 FUN_140007770
* Pseudocode, not original source. */
undefined8
FUN_140007770(longlong param_1,undefined8 param_2,undefined8 param_3,uint *param_4,ulonglong param_5
)
{
int *piVar1;
uint uVar2;
uint *puVar3;
undefined8 uVar4;
undefined *puVar5;
undefined *puVar6;
ulonglong uVar7;
char *local_20;
DWORD local_18;
longlong local_10;
local_20 = "REQ_MSG_WHISPER_ACK";
local_10 = *(longlong *)**(undefined8 **)(param_1 + 0x80) + 0x68;
local_18 = timeGetTime();
piVar1 = (int *)(param_1 + 0x108);
FUN_14006b350(piVar1);
uVar2 = *param_4;
uVar7 = (ulonglong)*(uint *)(param_1 + 0xd0);
puVar6 = (undefined *)((ulonglong)uVar2 % uVar7);
puVar5 = puVar6;
if (*(longlong *)(param_1 + 0xb0) != 0) {
puVar3 = *(uint **)(*(longlong *)(param_1 + 0xb0) + (longlong)puVar6 * 8);
while( true ) {
if ((puVar3 == (uint *)0x0) ||
(puVar5 = (undefined *)((ulonglong)puVar3[8] % uVar7), (int)puVar6 != (int)puVar5))
goto LAB_1400078af;
if (*puVar3 == uVar2) break;
puVar3 = *(uint **)(puVar3 + 4);
}
if (*(longlong *)(puVar3 + 2) != 0) {
puVar6 = &DAT_1401ac5d0;
puVar5 = (undefined *)(ulonglong)uVar2;
(**(code **)(*(longlong *)(param_1 + 0x58) + 0x40))();
FUN_14006b3e0((longlong)piVar1);
goto LAB_1400078b8;
}
}
LAB_1400078af:
FUN_14006b3e0((longlong)piVar1);
param_5 = uVar7;
LAB_1400078b8:
uVar4 = FUN_1400486e0(&local_20,puVar5,puVar6,param_5);
return CONCAT71((int7)((ulonglong)uVar4 >> 8),1);
}

View file

@ -0,0 +1,51 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400078e0 FUN_1400078e0
* Pseudocode, not original source. */
undefined8 FUN_1400078e0(longlong param_1,ulonglong param_2,undefined8 param_3,longlong param_4)
{
undefined8 uVar1;
LPVOID pvVar2;
LPVOID pvVar3;
ulonglong uVar4;
undefined *puVar5;
char *local_50;
DWORD local_48;
longlong local_40;
undefined **local_38;
longlong *local_30;
LPVOID local_28;
ulonglong local_20;
undefined8 local_18;
local_50 = "REQ_MSG_GUILD_CHATTING";
local_40 = *(longlong *)**(undefined8 **)(param_1 + 0x80) + 0x68;
local_48 = timeGetTime();
local_38 = Proud::CFastArray<Proud::HostID,0>::vftable;
local_30 = (longlong *)0x0;
local_28 = (LPVOID)0x0;
local_20 = 0;
local_18 = 0;
FUN_140007340(param_1 + -8,(longlong)&local_38,param_2 & 0xffffffff,param_4);
pvVar3 = local_28;
uVar4 = local_20 & 0xffffffff;
pvVar2 = local_28;
if ((int)local_20 == 0) {
pvVar2 = (LPVOID)0x0;
}
puVar5 = &DAT_1401ac5d0;
(**(code **)(*(longlong *)(param_1 + 0x58) + 0x48))();
if (pvVar3 != (LPVOID)0x0) {
if (local_30 == (longlong *)0x0) {
FUN_14006cc60(pvVar3);
}
else {
(**(code **)(*local_30 + 0x18))();
pvVar2 = pvVar3;
}
}
uVar1 = FUN_1400486e0(&local_50,pvVar2,uVar4,puVar5);
return CONCAT71((int7)((ulonglong)uVar1 >> 8),1);
}

View file

@ -0,0 +1,51 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140007a30 FUN_140007a30
* Pseudocode, not original source. */
undefined8 FUN_140007a30(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4)
{
undefined8 uVar1;
LPVOID pvVar2;
LPVOID pvVar3;
ulonglong uVar4;
undefined *puVar5;
char *local_50;
DWORD local_48;
longlong local_40;
undefined **local_38;
longlong *local_30;
LPVOID local_28;
ulonglong local_20;
undefined8 local_18;
local_50 = "REQ_MSG_ALL_CHATTING";
local_40 = *(longlong *)**(undefined8 **)(param_1 + 0x80) + 0x68;
local_48 = timeGetTime();
local_38 = Proud::CFastArray<Proud::HostID,0>::vftable;
local_30 = (longlong *)0x0;
local_28 = (LPVOID)0x0;
local_20 = 0;
local_18 = 0;
FUN_140007480(param_1 + -8,(longlong)&local_38,param_3,param_4);
pvVar3 = local_28;
uVar4 = local_20 & 0xffffffff;
pvVar2 = local_28;
if ((int)local_20 == 0) {
pvVar2 = (LPVOID)0x0;
}
puVar5 = &DAT_1401ac5d0;
(**(code **)(*(longlong *)(param_1 + 0x58) + 0x58))();
if (pvVar3 != (LPVOID)0x0) {
if (local_30 == (longlong *)0x0) {
FUN_14006cc60(pvVar3);
}
else {
(**(code **)(*local_30 + 0x18))();
pvVar2 = pvVar3;
}
}
uVar1 = FUN_1400486e0(&local_50,pvVar2,uVar4,puVar5);
return CONCAT71((int7)((ulonglong)uVar1 >> 8),1);
}

View file

@ -0,0 +1,51 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140007b80 FUN_140007b80
* Pseudocode, not original source. */
undefined8 FUN_140007b80(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4)
{
undefined8 uVar1;
LPVOID pvVar2;
LPVOID pvVar3;
ulonglong uVar4;
undefined *puVar5;
char *local_50;
DWORD local_48;
longlong local_40;
undefined **local_38;
longlong *local_30;
LPVOID local_28;
ulonglong local_20;
undefined8 local_18;
local_50 = "REQ_MSG_ALL_ENCHANT_NOTICE";
local_40 = *(longlong *)**(undefined8 **)(param_1 + 0x80) + 0x68;
local_48 = timeGetTime();
local_38 = Proud::CFastArray<Proud::HostID,0>::vftable;
local_30 = (longlong *)0x0;
local_28 = (LPVOID)0x0;
local_20 = 0;
local_18 = 0;
FUN_140007480(param_1 + -8,(longlong)&local_38,param_3,param_4);
pvVar3 = local_28;
uVar4 = local_20 & 0xffffffff;
pvVar2 = local_28;
if ((int)local_20 == 0) {
pvVar2 = (LPVOID)0x0;
}
puVar5 = &DAT_1401ac5d0;
(**(code **)(*(longlong *)(param_1 + 0x58) + 0x68))();
if (pvVar3 != (LPVOID)0x0) {
if (local_30 == (longlong *)0x0) {
FUN_14006cc60(pvVar3);
}
else {
(**(code **)(*local_30 + 0x18))();
pvVar2 = pvVar3;
}
}
uVar1 = FUN_1400486e0(&local_50,pvVar2,uVar4,puVar5);
return CONCAT71((int7)((ulonglong)uVar1 >> 8),1);
}

View file

@ -0,0 +1,51 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140007ca0 FUN_140007ca0
* Pseudocode, not original source. */
undefined8 FUN_140007ca0(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4)
{
undefined8 uVar1;
LPVOID pvVar2;
LPVOID pvVar3;
ulonglong uVar4;
undefined *puVar5;
char *local_50;
DWORD local_48;
longlong local_40;
undefined **local_38;
longlong *local_30;
LPVOID local_28;
ulonglong local_20;
undefined8 local_18;
local_50 = "REQ_MSG_ALL_UNIQUE_ITEM_GET_NOTICE";
local_40 = *(longlong *)**(undefined8 **)(param_1 + 0x80) + 0x68;
local_48 = timeGetTime();
local_38 = Proud::CFastArray<Proud::HostID,0>::vftable;
local_30 = (longlong *)0x0;
local_28 = (LPVOID)0x0;
local_20 = 0;
local_18 = 0;
FUN_140007480(param_1 + -8,(longlong)&local_38,param_3,param_4);
pvVar3 = local_28;
uVar4 = local_20 & 0xffffffff;
pvVar2 = local_28;
if ((int)local_20 == 0) {
pvVar2 = (LPVOID)0x0;
}
puVar5 = &DAT_1401ac5d0;
(**(code **)(*(longlong *)(param_1 + 0x58) + 0xa8))();
if (pvVar3 != (LPVOID)0x0) {
if (local_30 == (longlong *)0x0) {
FUN_14006cc60(pvVar3);
}
else {
(**(code **)(*local_30 + 0x18))();
pvVar2 = pvVar3;
}
}
uVar1 = FUN_1400486e0(&local_50,pvVar2,uVar4,puVar5);
return CONCAT71((int7)((ulonglong)uVar1 >> 8),1);
}

View file

@ -0,0 +1,51 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140007dd0 FUN_140007dd0
* Pseudocode, not original source. */
undefined8 FUN_140007dd0(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4)
{
undefined8 uVar1;
LPVOID pvVar2;
LPVOID pvVar3;
ulonglong uVar4;
undefined *puVar5;
char *local_50;
DWORD local_48;
longlong local_40;
undefined **local_38;
longlong *local_30;
LPVOID local_28;
ulonglong local_20;
undefined8 local_18;
local_50 = "REQ_MSG_NEW_MAIL_NOTIFY";
local_40 = *(longlong *)**(undefined8 **)(param_1 + 0x80) + 0x68;
local_48 = timeGetTime();
local_38 = Proud::CFastArray<Proud::HostID,0>::vftable;
local_30 = (longlong *)0x0;
local_28 = (LPVOID)0x0;
local_20 = 0;
local_18 = 0;
FUN_140007480(param_1 + -8,(longlong)&local_38,param_3,param_4);
pvVar3 = local_28;
uVar4 = local_20 & 0xffffffff;
pvVar2 = local_28;
if ((int)local_20 == 0) {
pvVar2 = (LPVOID)0x0;
}
puVar5 = &DAT_1401ac5d0;
(**(code **)(*(longlong *)(param_1 + 0x58) + 0x78))();
if (pvVar3 != (LPVOID)0x0) {
if (local_30 == (longlong *)0x0) {
FUN_14006cc60(pvVar3);
}
else {
(**(code **)(*local_30 + 0x18))();
pvVar2 = pvVar3;
}
}
uVar1 = FUN_1400486e0(&local_50,pvVar2,uVar4,puVar5);
return CONCAT71((int7)((ulonglong)uVar1 >> 8),1);
}

View file

@ -0,0 +1,51 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140007ed0 FUN_140007ed0
* Pseudocode, not original source. */
undefined8 FUN_140007ed0(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4)
{
undefined8 uVar1;
LPVOID pvVar2;
LPVOID pvVar3;
ulonglong uVar4;
undefined *puVar5;
char *local_50;
DWORD local_48;
longlong local_40;
undefined **local_38;
longlong *local_30;
LPVOID local_28;
ulonglong local_20;
undefined8 local_18;
local_50 = "REQ_MSG_CHANNEL_CHATTING";
local_40 = *(longlong *)**(undefined8 **)(param_1 + 0x80) + 0x68;
local_48 = timeGetTime();
local_38 = Proud::CFastArray<Proud::HostID,0>::vftable;
local_30 = (longlong *)0x0;
local_28 = (LPVOID)0x0;
local_20 = 0;
local_18 = 0;
FUN_140007480(param_1 + -8,(longlong)&local_38,param_3,param_4);
pvVar3 = local_28;
uVar4 = local_20 & 0xffffffff;
pvVar2 = local_28;
if ((int)local_20 == 0) {
pvVar2 = (LPVOID)0x0;
}
puVar5 = &DAT_1401ac5d0;
(**(code **)(*(longlong *)(param_1 + 0x58) + 0xb8))();
if (pvVar3 != (LPVOID)0x0) {
if (local_30 == (longlong *)0x0) {
FUN_14006cc60(pvVar3);
}
else {
(**(code **)(*local_30 + 0x18))();
pvVar2 = pvVar3;
}
}
uVar1 = FUN_1400486e0(&local_50,pvVar2,uVar4,puVar5);
return CONCAT71((int7)((ulonglong)uVar1 >> 8),1);
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,180 @@
{
"analysis_profile": {
"digest": "3decca45d3460a9d91b48bfb293ee703f84841379edceee6350b1ea3393d3fe1",
"parameters": {
"upstream_analysis_profile": {
"digest": "de1d200f7c777e7d47b9def837d80cf1e4326106753fd45afae1b8f0c68936f6",
"parameters": {
"analyzer_preset": "ghidra-default",
"annotation_policy": "atomic-function-entry-metadata-v1",
"architecture": "x86_64",
"available_architectures": [
"x86_64"
],
"call_relationship_coverage": "function-body-call-coverage-v5",
"compiler_spec_id": "auto-default",
"decompiler_jump_loads": true,
"executable_role": "application",
"function_body_evidence": "complete-inclusive-ranges-v1",
"function_boundary_observations": "ghidra-function-boundary-limitations-v3",
"function_dossier_coverage": "observed-facets-and-call-relationships-v1",
"function_references": "complete-body-and-entry-reference-manager-v2",
"import_mode": "ephemeral-source-immutable",
"instruction_flow_evidence": "decoded-return-pcode-v1",
"instruction_references": "exact-address-incoming-v1",
"jump_table_evidence": "typed-case-default-blocks-v1",
"language_id": "auto-from-header",
"load_image_observations": "source-mappings-entry-context-v2",
"loader": "auto-from-header",
"location_resolution": "explicit-address-exact-entry-symbol-first-v3",
"managed": false,
"native_aot_metadata": {
"contract_revision": "rtr-9.1-x64-pe-read-only-v3",
"report_bytes": 4194304,
"source_bytes": 134217728,
"work_units": 67108864,
"working_memory_bytes": 67108864
},
"no_return_repair": "returning-imports-decoded-return-v2",
"pdb_observations": "program-info-v1",
"procedure_file_offset_resolution": "address-first-unique-target-source-mapping-v2",
"process_launch": "inspected-jvm-launch-support-v1",
"string_inventory_evidence": "defined-data-coverage-v1",
"target_format": "pe",
"target_kind": "executable"
},
"provider": {
"id": "ghidra",
"name": "Ghidra",
"version": "12.1.2"
}
},
"workflow_revision": 3
},
"provider": {
"id": "rea-workflow",
"name": "REA composed investigation workflow",
"version": "1"
}
},
"authority": "shipped-artifact",
"confidence": "derived",
"environment": null,
"evidence_id": "ev_9fe3a449c6aa867adaabf1b34be9967bba78f98a7d72bc69f9fab835fb7db03b",
"evidence_links": [],
"limitations": [
"Derived by an REA composed workflow.",
"A headless Ghidra session contains exactly one imported Program, unlike Hopper's multi-document GUI session.",
"Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.",
"Charset is reported, while a non-missing terminator cannot distinguish a present terminator from a fixed or Pascal layout.",
"Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use <percent-encoded-space>:0x<hex>.",
"External functions and local thunks are distinct; procedure metadata identifies both and preserves a thunk target when Ghidra resolves one.",
"Memory-block end addresses are exclusive; permissions come from Ghidra MemoryBlock flags rather than inference from section names.",
"Only Ghidra-defined string Data is observed; packed or undefined string bytes may be absent. Completeness applies to that inventory, and an empty search does not establish that text is absent from the artifact. If an address is known, use read_bytes and xrefs to inspect bytes and references.",
"The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.",
"The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.",
"The target references PDB Agent_Release_x64.pdb (GUID a4775113-cf21-4c1c-9d58-7e61100fab96, age (hex) 1, signature unknown, version RSDS); Ghidra reports load state unknown. Original names and types may be missing; an empty name search does not prove a procedure is absent. Use list_procedures and address-based analysis to inspect recovered functions. REA does not admit a caller-selected PDB companion.",
"This session uses Ghidra 12.1.2. The bridge is verified against 12.1.4; other 12.1.x builds are accepted and the observed version is reported."
],
"locations": [],
"normalized_result": {
"document": "target-6f2be7b8eb79.exe",
"image_base": "0x140000000",
"procedure_count": 6814,
"segment_count": 9,
"segments": [
{
"address_space": "ram",
"end": "0x140000400",
"image_base": "0x140000000",
"length": 1024,
"name": "Headers",
"start": "0x140000000"
},
{
"address_space": "ram",
"end": "0x1400f1a00",
"image_base": "0x140000000",
"length": 985600,
"name": ".text",
"start": "0x140001000"
},
{
"address_space": "ram",
"end": "0x140154200",
"image_base": "0x140000000",
"length": 401920,
"name": ".rdata",
"start": "0x1400f2000"
},
{
"address_space": "ram",
"end": "0x140163450",
"image_base": "0x140000000",
"length": 58448,
"name": ".data",
"start": "0x140155000"
},
{
"address_space": "ram",
"end": "0x14016ee00",
"image_base": "0x140000000",
"length": 44544,
"name": ".pdata",
"start": "0x140164000"
},
{
"address_space": "ram",
"end": "0x14016f200",
"image_base": "0x140000000",
"length": 512,
"name": ".tls",
"start": "0x14016f000"
},
{
"address_space": "ram",
"end": "0x140170200",
"image_base": "0x140000000",
"length": 512,
"name": ".rsrc",
"start": "0x140170000"
},
{
"address_space": "ram",
"end": "0x140173600",
"image_base": "0x140000000",
"length": 9728,
"name": ".reloc",
"start": "0x140171000"
},
{
"address_space": "ram",
"end": "0xff00001850",
"image_base": "0x140000000",
"length": 6224,
"name": "tdb",
"start": "0xff00000000"
}
],
"string_count": 1472
},
"operation": "binary_overview",
"parameters": {},
"predicate_type": "rea.analysis",
"provider": {
"id": "rea-workflow",
"name": "REA composed investigation workflow",
"version": "1"
},
"raw_result": null,
"relationship_coverage": null,
"subject": {
"architecture": "x86_64",
"digest": {
"sha256": "6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469"
},
"format": "pe",
"local_path": "/home/baobeld/Development/rusty-hearts/re-project/binaries/Agent_Release_x64.exe",
"name": "Agent_Release_x64.exe"
}
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,82 @@
# MessageServer_Release_x64.exe — finding ledger
- SHA-256 `7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1`, 1,850,368 bytes
- PE32+ x86-64, Windows CUI, MSVC linker 10.0 (VS2010), timestamp 2013-02-06 09:50:56 UTC
- PDB reference `c:\work\Project\Output\exe\MessageServer_Release_x64.pdb` (GUID cde07e33-d76f-49e7-887c-43afecaef251, age 1) — PDB not available
- Imports: WS2_32, MSWSOCK, WINMM, KERNEL32, USER32, ADVAPI32, OLEAUT32, MSVCP100, RPCRT4, MSVCR100, BugTrapU-x64, ole32, dbghelp
- Ghidra 12.1.2 via REA 6.5.0: 7,728 procedures, 1,803 defined strings (`ev_3112fedf…`)
- Full Evidence: `evidence-bundle.json` (18 records). Static analysis only — nothing observed at runtime.
## Status: first pass (RMI protocol surface). Startup, config parsing, DBC link not yet decompiled.
## Language: C++ (MSVC 2010) — confirmed
180 RTTI descriptors (`.?AV…`), `__CxxFrameHandler3`, MSVCP100 import.
## Third-party libraries (all already documented in `third-party/README.md`)
| Library | Signal in this binary |
|---|---|
| ProudNet (static) | 51 `Proud::` RTTI classes (`CNetServerImpl`, `CNetClientImpl`, …), assert strings |
| TinyXML 2.5.x (static) | `TiXml*` RTTI; error table incl. `Memory allocation failed.` (removed in 2.6) |
| BugTrap | `BugTrapU-x64.dll` import, `BT_SetAppVersion`, `BT_SetSupportEMail` |
| dbghelp | import |
| ATL | `CAtlException` RTTI |
No new library found.
## Outputs
| Path | Content |
|---|---|
| `full/functions/<addr>.c`, `full/index.tsv` | Ghidra headless pseudocode for 7,370 functions (2 failed: `0x14000cfa0` overlapping varnodes, `0x140039f20` timeout) |
| `full/vtables.tsv` | 2,624 RTTI vftable slots |
| `<addr>.pseudo.c` | Copies of the analysed functions below |
## Findings
| # | Conclusion | Type | Evidence |
|---|---|---|---|
| 1 | Server-to-server chat/notice relay. RTTI classes: `RNP::Servers2MsgStub` (inbound), `RNP::Msg2ServersProxy` (outbound), `MagiMsgNetwork`/`MagiMsgServer` app classes | Observed (RTTI); role is inference | `full/vtables.tsv` |
| 2 | `Servers2MsgStub::ProcessReceivedMessage` (`0x140011930`) dispatches 8 RMI IDs 0x3a99–0x3aa0 (table below) | Observed | `0x140011930.pseudo.c`, `ev_1d95f4cc…` |
| 3 | Handlers are overridden in `MagiMsgNetwork` vftable `0x14015a9e8` slots 7–14 | Observed | `full/vtables.tsv` |
| 4 | Whisper / all-chat / enchant notice / mail notify / unique-item notice / channel chat: collect **every** connected host ID from the host list (`this+0xc0`, lock `this+0x110`) and forward via the proxy — i.e. broadcast to all connected servers; target filtering is left to receivers | Observed (code); "receivers filter" is **inference** | `0x140007480.pseudo.c`, `0x1400075d0.pseudo.c`, `ev_f3d6252d…`, `ev_227d432a…` |
| 5 | Guild chat: same broadcast but **excludes the sending host** | Observed | `0x140007340.pseudo.c`, `0x1400078e0.pseudo.c` |
| 6 | Whisper ACK: unicast — looks up a key from the payload in a hash table (`this+0xb0`, bucket count `this+0xd0`) and forwards only if found | Observed; meaning of the key (server ID vs. char ID) **unknown** | `0x140007770.pseudo.c` |
| 7 | Each handler logs/profiles via `FUN_1400486e0(name, …)` with `timeGetTime()` | Observed call; purpose **inference** | handlers |
| 8 | Also links to DBC (`Servers2DbcProxy` 512 slots, `Dbc2ServersStub`, `MGDBCMsgSession`) and to Agent (`Agent2ServerStub`, `Server2AgentProxy`, `MGSAgentSession`) | Observed (RTTI) | `full/vtables.tsv` |
| 9 | Config files referenced: `option\agent.xml`, `option\customoption.xml`, `option\patch.xml`, `option\service_control.xml` | Observed (strings); which are read **unknown** | strings |
### RMI table (Servers2Msg)
| RMI ID | Name | Handler | Routing | Proxy vfn offset |
|---|---|---|---|---|
| 0x3a99 | REQ_MSG_WHISPER | `0x1400075d0` | all hosts | +0x28 |
| 0x3a9a | REQ_MSG_WHISPER_ACK | `0x140007770` | lookup → one host | +0x40 |
| 0x3a9b | REQ_MSG_GUILD_CHATTING | `0x1400078e0` | all except sender | +0x48 |
| 0x3a9c | REQ_MSG_ALL_CHATTING | `0x140007a30` | all hosts | +0x58 |
| 0x3a9d | REQ_MSG_ALL_ENCHANT_NOTICE | `0x140007b80` | all hosts | +0x68 |
| 0x3a9e | REQ_MSG_NEW_MAIL_NOTIFY | `0x140007dd0` | all hosts | +0x78 |
| 0x3a9f | REQ_MSG_ALL_UNIQUE_ITEM_GET_NOTICE | `0x140007ca0` | all hosts | +0xa8 |
| 0x3aa0 | REQ_MSG_CHANNEL_CHATTING | `0x140007ed0` | all hosts | +0xb8 |
## Config, startup and DBC (second pass)
Shared framework findings are written up in `docs/SHARED_FRAMEWORK.md`. The
MessageServer-specific points are:
| # | Conclusion | Type | Evidence |
|---|---|---|---|
| 10 | Startup (`0x140004f00`) runs these steps in order: AGENT, DB_LOAD (4 DBC session pools: GAME/LOG/CHAT/EMERGENCY), SESSION_CONNECT, SERVER_RUN. The main loop pumps `DBCSessionManager` and `AgentSession`, and retries failed connects | Observed | `full/functions/0x140004f00.c` |
| 11 | Its default config file is `option\msg_serveroption.xml`. If `argv[1]` is numeric it runs in agent mode | Observed | `0x14012e5c0`, `0x14005c7b0` |
| 12 | The option loader parses peers agentmanager, db_cache, db_log_cache, msg/gm/auction/manager/match/agent_server and api. It ignores gate/dungeon/pvp/guild/lobby | Observed | `0x14005dc20` |
| 13 | The Dbc2Servers dispatcher `0x140039f20` failed to decompile (timeout) | Observed | `full/index.tsv` |
| 14 | `0x140007480`/`0x140007340` iterate the host list at `+0xc0`. Where hosts are added to that list remains **unknown** | Open | |
## Proposed names (not applied)
| Address | Name |
|---|---|
| `0x140011930` | `Servers2MsgStub::ProcessReceivedMessage` |
| `0x140007480` | `MagiMsgNetwork::CollectAllHosts` |
| `0x140007340` | `MagiMsgNetwork::CollectAllHostsExcept` |
| `0x1400075d0`…`0x140007ed0` | `MagiMsgNetwork::On<RMI name>` per table |
## Open questions
- Where host IDs are inserted into `this+0xc0` list and `this+0xb0` map (connect handlers / registration RMI).
- What `dbc_chat` / `Servers2DbcProxy` is used for (chat logging?).
- Startup/main loop, config parsing.
- Payload layouts of each RMI (proxy marshalling functions `0x140010290`…`0x140011590`).

View file

@ -0,0 +1,15 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001020 FUN_140001020
* Pseudocode, not original source. */
exception * FUN_140001020(exception *param_1,uint param_2)
{
*(undefined ***)param_1 = std::bad_alloc::vftable;
std::exception::~exception(param_1);
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,65 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001060 FUN_140001060
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
undefined8 FUN_140001060(longlong param_1)
{
PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo;
DWORD DVar1;
BOOL BVar2;
wchar_t *pwVar3;
wchar_t *pwVar4;
ulonglong uVar5;
HANDLE pvVar6;
undefined1 auStack_268 [32];
undefined8 local_248;
undefined8 local_240;
WCHAR local_228;
undefined1 local_226 [526];
ulonglong local_18;
local_18 = DAT_1401ac5a0 ^ (ulonglong)auStack_268;
DVar1 = GetCurrentProcessId();
*(DWORD *)(param_1 + 0x450) = DVar1;
local_228 = L'\0';
memset(local_226,0,0x206);
DVar1 = GetModuleFileNameW((HMODULE)0x0,&local_228,0x104);
if (0 < (int)DVar1) {
pwVar3 = wcsrchr(&local_228,L'\\');
pwVar4 = wcsrchr(&local_228,L'.');
uVar5 = (longlong)pwVar4 + (-2 - (longlong)pwVar3) >> 1;
if (0x104 < uVar5) {
uVar5 = 0x104;
}
memcpy((void *)(param_1 + 0x3c),pwVar3 + 1,uVar5 * 2);
FUN_140001260(param_1,param_1 + 0x3c);
pvVar6 = GetStdHandle(0xfffffff5);
*(HANDLE *)(param_1 + 8) = pvVar6;
if (pvVar6 != (HANDLE)0xffffffffffffffff) {
FUN_1400011d0(param_1);
pvVar6 = *(HANDLE *)(param_1 + 8);
if (pvVar6 != (HANDLE)0xffffffffffffffff) {
lpConsoleScreenBufferInfo = (PCONSOLE_SCREEN_BUFFER_INFO)(param_1 + 0x10);
local_248 = 0;
local_240 = 0;
(lpConsoleScreenBufferInfo->dwSize).X = 0;
(lpConsoleScreenBufferInfo->dwSize).Y = 0;
(lpConsoleScreenBufferInfo->dwCursorPosition).X = 0;
(lpConsoleScreenBufferInfo->dwCursorPosition).Y = 0;
*(undefined8 *)(param_1 + 0x18) = 0;
*(undefined4 *)(param_1 + 0x20) = 0;
*(undefined2 *)(param_1 + 0x24) = 0;
BVar2 = GetConsoleScreenBufferInfo(pvVar6,lpConsoleScreenBufferInfo);
if (BVar2 != 0) {
*(undefined2 *)(param_1 + 0x454) = *(undefined2 *)(param_1 + 0x18);
}
}
return 1;
}
}
return 0;
}

View file

@ -0,0 +1,26 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400011d0 FUN_1400011d0
* Pseudocode, not original source. */
BOOL FUN_1400011d0(longlong param_1)
{
BOOL BVar1;
DWORD local_res10 [2];
if (*(HANDLE *)(param_1 + 8) == (HANDLE)0xffffffffffffffff) {
return 0;
}
BVar1 = GetConsoleScreenBufferInfo
(*(HANDLE *)(param_1 + 8),(PCONSOLE_SCREEN_BUFFER_INFO)(param_1 + 0x26));
if (BVar1 == 0) {
return 0;
}
FillConsoleOutputAttribute
(*(HANDLE *)(param_1 + 8),*(ushort *)(param_1 + 0x2e) & 0xf | 0x10,
(int)*(short *)(param_1 + 0x28) * (int)*(short *)(param_1 + 0x26),(COORD)0x0,
local_res10);
BVar1 = SetConsoleTextAttribute(*(HANDLE *)(param_1 + 8),0x17);
return BVar1;
}

View file

@ -0,0 +1,30 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001260 FUN_140001260
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_140001260(longlong param_1,longlong param_2)
{
longlong lVar1;
ulonglong uVar2;
undefined1 auStack_248 [32];
wchar_t local_228;
undefined1 local_226 [526];
ulonglong local_18;
local_18 = DAT_1401ac5a0 ^ (ulonglong)auStack_248;
uVar2 = (ulonglong)*(uint *)(param_1 + 0x450);
lVar1 = param_1 + 0x3c;
if (param_2 != 0) {
lVar1 = param_2;
}
FUN_140001bd0((wchar_t *)(param_1 + 0x246),L"%s [%u]",lVar1,uVar2);
local_228 = L'\0';
memset(local_226,0,0x206);
FUN_140001ba0(&local_228,L"%s",(wchar_t *)(param_1 + 0x246),uVar2);
SetConsoleTitleW(&local_228);
return;
}

View file

@ -0,0 +1,13 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001300 FUN_140001300
* Pseudocode, not original source. */
void FUN_140001300(undefined8 param_1,undefined8 param_2,undefined8 param_3)
{
FUN_14011b730(DAT_1401ba9e8,L"Invalid parameter detected in function %s. File: %s Line: %d\n",
param_2,param_3);
FUN_14011b730(DAT_1401ba9e8,L"Expression: %s\n",param_1,param_3);
return;
}

View file

@ -0,0 +1,159 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001350 FUN_140001350
* Pseudocode, not original source. */
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
undefined8 FUN_140001350(int param_1,longlong param_2,undefined8 param_3,char *param_4)
{
short sVar1;
FILE *_File;
undefined4 uVar2;
DWORD DVar3;
_invalid_parameter_handler _Handler;
ulonglong uVar4;
char *pcVar5;
short *psVar6;
HANDLE *ppvVar7;
undefined8 *puVar8;
undefined4 *HeapInformation;
undefined *puVar9;
LPCWSTR pWVar10;
undefined4 local_res18 [2];
undefined8 local_res20;
undefined **local_2108;
undefined4 local_2100;
void *local_20f8;
undefined8 local_20f0;
undefined8 local_20e8;
undefined8 local_20d8;
undefined8 local_20d0;
undefined4 local_20c8;
undefined8 *local_20c0;
undefined8 local_20b8;
undefined8 local_20b0;
undefined8 local_20a8;
undefined8 local_20a0;
undefined8 local_2098;
undefined8 local_2090;
undefined4 local_2088 [16];
undefined8 local_2048;
HANDLE local_2038;
undefined1 local_2030 [8192];
undefined8 uStack_30;
uStack_30 = 0x14000136b;
local_2048 = 0xfffffffffffffffe;
DAT_1401bcf04 = timeGetTime();
FUN_140009e00(&local_res20);
uVar2 = FUN_140009e40(&local_res20);
if ((char)uVar2 != '\0') {
FUN_140009eb0();
FUN_140001660();
FUN_140001060((longlong)DAT_1401ba9f0);
if (1 < param_1) {
uVar4 = 0xffffffffffffffff;
psVar6 = *(short **)(param_2 + 8);
do {
if (uVar4 == 0) break;
uVar4 = uVar4 - 1;
sVar1 = *psVar6;
psVar6 = psVar6 + 1;
} while (sVar1 != 0);
FUN_140001830((ulonglong *)&DAT_1401b3540,*(short **)(param_2 + 8),~uVar4 - 1);
}
local_2038 = (HANDLE)0x0;
HeapInformation = (undefined4 *)0x2000;
memset(local_2030,0,0x2000);
DVar3 = GetProcessHeaps(0x400,&local_2038);
pcVar5 = (char *)0x4;
if (DVar3 != 0) {
ppvVar7 = &local_2038;
uVar4 = (ulonglong)DVar3;
do {
local_res18[0] = 2;
HeapInformation = local_res18;
param_4 = pcVar5;
HeapSetInformation(*ppvVar7,HeapCompatibilityInformation,HeapInformation,4);
ppvVar7 = ppvVar7 + 1;
uVar4 = uVar4 - 1;
} while (uVar4 != 0);
}
_Handler = _set_invalid_parameter_handler(FUN_140001300);
local_2100 = 0;
local_20f8 = (void *)0x0;
local_20f0 = 0;
local_20e8 = 0;
local_20d8 = 0;
local_20d0 = 0;
local_2108 = MagiMsgServer::vftable;
local_20c8 = 1;
local_20c0 = (undefined8 *)0x0;
local_20b8 = 0;
local_20b0 = 0;
uVar4 = FUN_140079250();
uVar4 = uVar4 & 0xffffffff;
puVar9 = (undefined *)CONCAT71((int7)((ulonglong)HeapInformation >> 8),1);
FUN_14006b270(local_2088,uVar4,puVar9,param_4);
local_20a8 = 0;
local_20a0 = 0;
local_2098 = 0;
local_2090 = 0;
pWVar10 = (LPCWSTR)&DAT_1401b3540;
if (7 < DAT_1401b3558) {
pWVar10 = DAT_1401b3540;
}
FUN_1400047a0(pWVar10,uVar4,puVar9,param_4);
FUN_140004f00((longlong)&local_2108,uVar4,puVar9,param_4);
if (local_20c0 != (undefined8 *)0x0) {
uVar4 = 1;
(**(code **)*local_20c0)();
}
local_20c0 = (undefined8 *)0x0;
if (DAT_1401bd040 != (undefined8 *)0x0) {
uVar4 = 1;
(**(code **)*DAT_1401bd040)();
}
if (DAT_1401bd030 != (undefined8 *)0x0) {
uVar4 = 1;
(**(code **)*DAT_1401bd030)();
}
puVar8 = DAT_1401ba9e8;
EnterCriticalSection(DAT_1401bd028);
_File = (FILE *)puVar8[0x17];
if (_File != (FILE *)0x0) {
fclose(_File);
}
puVar8 = puVar8 + 0x19;
do {
if ((FILE *)*puVar8 != (FILE *)0x0) {
fclose((FILE *)*puVar8);
}
puVar8 = puVar8 + 1;
pcVar5 = pcVar5 + -1;
} while (pcVar5 != (char *)0x0);
LeaveCriticalSection(DAT_1401bd028);
if (DAT_1401ba9e8 != (undefined8 *)0x0) {
uVar4 = 1;
(**(code **)*DAT_1401ba9e8)();
}
if (DAT_1401ba9f0 != (undefined8 *)0x0) {
uVar4 = 1;
(**(code **)*DAT_1401ba9f0)();
}
_set_invalid_parameter_handler(_Handler);
local_2108 = MagiMsgServer::vftable;
FUN_14006b400(local_2088,uVar4,puVar9,param_4);
local_2108 = MagiServerBase::vftable;
if (local_20f8 != (void *)0x0) {
operator_delete(local_20f8);
}
local_20f8 = (void *)0x0;
local_20f0 = 0;
local_20e8 = 0;
}
FUN_140009e10(&local_res20);
return 0;
}

View file

@ -0,0 +1,16 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001630 FUN_140001630
* Pseudocode, not original source. */
void FUN_140001630(undefined8 *param_1)
{
if (7 < (ulonglong)param_1[3]) {
operator_delete((void *)*param_1);
}
param_1[3] = 7;
param_1[2] = 0;
*(undefined2 *)param_1 = 0;
return;
}

View file

@ -0,0 +1,32 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001660 FUN_140001660
* Pseudocode, not original source. */
void FUN_140001660(void)
{
undefined8 *puVar1;
puVar1 = operator_new(0x458);
if (puVar1 != (undefined8 *)0x0) {
puVar1[2] = 0;
*(undefined8 *)((longlong)puVar1 + 0x26) = 0;
puVar1[3] = 0;
*(undefined8 *)((longlong)puVar1 + 0x2e) = 0;
*(undefined4 *)(puVar1 + 4) = 0;
*(undefined4 *)((longlong)puVar1 + 0x36) = 0;
*(undefined2 *)((longlong)puVar1 + 0x24) = 0;
*(undefined2 *)((longlong)puVar1 + 0x3a) = 0;
*puVar1 = CConsoleControl::vftable;
puVar1[1] = 0xffffffffffffffff;
*(undefined4 *)(puVar1 + 0x8a) = 0;
memset((void *)((longlong)puVar1 + 0x3c),0,0x20a);
memset((void *)((longlong)puVar1 + 0x246),0,0x20a);
DAT_1401ba9f0 = puVar1;
*(undefined2 *)((longlong)puVar1 + 0x454) = 0x17;
return;
}
DAT_1401ba9f0 = (undefined8 *)0x0;
return;
}

View file

@ -0,0 +1,15 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001710 FUN_140001710
* Pseudocode, not original source. */
undefined8 * FUN_140001710(undefined8 *param_1,byte param_2)
{
DAT_1401ba9f0 = 0;
*param_1 = MBISingleton<CConsoleControl>::vftable;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,48 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001750 FUN_140001750
* Pseudocode, not original source. */
longlong * FUN_140001750(longlong *param_1,longlong *param_2,ulonglong param_3,ulonglong param_4)
{
code *pcVar1;
char cVar2;
longlong *plVar3;
ulonglong uVar4;
if (param_3 <= (ulonglong)param_2[2]) {
uVar4 = param_2[2] - param_3;
if (param_4 < uVar4) {
uVar4 = param_4;
}
if (param_1 == param_2) {
FUN_140001920(param_1,uVar4 + param_3,0xffffffffffffffff);
FUN_140001920(param_1,0,param_3);
}
else {
cVar2 = FUN_1400019c0(param_1,uVar4);
if (cVar2 != '\0') {
if (7 < (ulonglong)param_2[3]) {
param_2 = (longlong *)*param_2;
}
plVar3 = param_1;
if (7 < (ulonglong)param_1[3]) {
plVar3 = (longlong *)*param_1;
}
memcpy(plVar3,(void *)((longlong)param_2 + param_3 * 2),uVar4 * 2);
param_1[2] = uVar4;
plVar3 = param_1;
if (7 < (ulonglong)param_1[3]) {
plVar3 = (longlong *)*param_1;
}
*(undefined2 *)((longlong)plVar3 + uVar4 * 2) = 0;
}
}
return param_1;
}
std::_Xout_of_range("invalid string position");
pcVar1 = (code *)swi(3);
plVar3 = (longlong *)(*pcVar1)();
return plVar3;
}

View file

@ -0,0 +1,51 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001830 FUN_140001830
* Pseudocode, not original source. */
ulonglong * FUN_140001830(ulonglong *param_1,void *param_2,ulonglong param_3)
{
ulonglong uVar1;
char cVar2;
ulonglong *puVar3;
if (param_2 != (void *)0x0) {
uVar1 = param_1[3];
puVar3 = param_1;
if (7 < uVar1) {
puVar3 = (ulonglong *)*param_1;
}
if (puVar3 <= param_2) {
puVar3 = param_1;
if (7 < uVar1) {
puVar3 = (ulonglong *)*param_1;
}
if (param_2 < (void *)((longlong)puVar3 + param_1[2] * 2)) {
puVar3 = param_1;
if (7 < uVar1) {
puVar3 = (ulonglong *)*param_1;
}
puVar3 = (ulonglong *)
FUN_140001750((longlong *)param_1,(longlong *)param_1,
(longlong)param_2 - (longlong)puVar3 >> 1,param_3);
return puVar3;
}
}
}
cVar2 = FUN_1400019c0(param_1,param_3);
if (cVar2 != '\0') {
puVar3 = param_1;
if (7 < param_1[3]) {
puVar3 = (ulonglong *)*param_1;
}
memcpy(puVar3,param_2,param_3 * 2);
param_1[2] = param_3;
puVar3 = param_1;
if (7 < param_1[3]) {
puVar3 = (ulonglong *)*param_1;
}
*(undefined2 *)(param_3 * 2 + (longlong)puVar3) = 0;
}
return param_1;
}

View file

@ -0,0 +1,43 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001920 FUN_140001920
* Pseudocode, not original source. */
undefined8 * FUN_140001920(undefined8 *param_1,ulonglong param_2,ulonglong param_3)
{
longlong lVar1;
code *pcVar2;
undefined8 *puVar3;
undefined8 *puVar4;
ulonglong uVar5;
if ((ulonglong)param_1[2] < param_2) {
std::_Xout_of_range("invalid string position");
pcVar2 = (code *)swi(3);
puVar3 = (undefined8 *)(*pcVar2)();
return puVar3;
}
uVar5 = param_1[2] - param_2;
if (uVar5 < param_3) {
param_3 = uVar5;
}
if (param_3 != 0) {
puVar4 = param_1;
puVar3 = param_1;
if (7 < (ulonglong)param_1[3]) {
puVar4 = (undefined8 *)*param_1;
puVar3 = (undefined8 *)*param_1;
}
memmove((void *)((longlong)puVar4 + param_2 * 2),
(void *)((longlong)puVar3 + (param_2 + param_3) * 2),(uVar5 - param_3) * 2);
lVar1 = param_1[2];
param_1[2] = lVar1 - param_3;
puVar3 = param_1;
if (7 < (ulonglong)param_1[3]) {
puVar3 = (undefined8 *)*param_1;
}
*(undefined2 *)((longlong)puVar3 + (lVar1 - param_3) * 2) = 0;
}
return param_1;
}

View file

@ -0,0 +1,30 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400019c0 FUN_1400019c0
* Pseudocode, not original source. */
undefined1 FUN_1400019c0(undefined8 *param_1,ulonglong param_2)
{
code *pcVar1;
undefined1 uVar2;
if (0x7ffffffffffffffe < param_2) {
std::_Xlength_error("string too long");
pcVar1 = (code *)swi(3);
uVar2 = (*pcVar1)();
return uVar2;
}
if ((ulonglong)param_1[3] < param_2) {
FUN_140001a40(param_1,param_2,param_1[2]);
return param_2 != 0;
}
if (param_2 == 0) {
param_1[2] = 0;
if (7 < (ulonglong)param_1[3]) {
param_1 = (undefined8 *)*param_1;
}
*(undefined2 *)param_1 = 0;
}
return param_2 != 0;
}

View file

@ -0,0 +1,43 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001a40 FUN_140001a40
* Pseudocode, not original source. */
void FUN_140001a40(undefined8 *param_1,ulonglong param_2,longlong param_3)
{
ulonglong uVar1;
undefined8 *_Dst;
ulonglong uVar2;
undefined8 *_Src;
ulonglong uVar3;
uVar3 = param_2 | 7;
if (uVar3 < 0x7fffffffffffffff) {
uVar1 = param_1[3];
uVar2 = uVar1 >> 1;
param_2 = uVar3;
if ((uVar3 / 3 < uVar2) && (param_2 = uVar2 + uVar1, 0x7ffffffffffffffe - uVar2 < uVar1)) {
param_2 = 0x7ffffffffffffffe;
}
}
_Dst = FUN_140001b30(param_2 + 1);
if (param_3 != 0) {
_Src = param_1;
if (7 < (ulonglong)param_1[3]) {
_Src = (undefined8 *)*param_1;
}
memcpy(_Dst,_Src,param_3 * 2);
}
if (7 < (ulonglong)param_1[3]) {
operator_delete((void *)*param_1);
}
*param_1 = _Dst;
param_1[3] = param_2;
param_1[2] = param_3;
if (7 < param_2) {
param_1 = _Dst;
}
*(undefined2 *)((longlong)param_1 + param_3 * 2) = 0;
return;
}

View file

@ -0,0 +1,25 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001b30 FUN_140001b30
* Pseudocode, not original source. */
void * FUN_140001b30(ulonglong param_1)
{
void *pvVar1;
char *local_res8 [4];
undefined **local_28 [5];
if (param_1 == 0) {
return (void *)0x0;
}
if ((param_1 < 0x8000000000000000) && (pvVar1 = operator_new(param_1 * 2), pvVar1 != (void *)0x0))
{
return pvVar1;
}
local_res8[0] = (char *)0x0;
std::exception::exception((exception *)local_28,local_res8);
local_28[0] = std::bad_alloc::vftable;
/* WARNING: Subroutine does not return */
_CxxThrowException(local_28,(ThrowInfo *)&DAT_1401a9330);
}

View file

@ -0,0 +1,16 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001ba0 FUN_140001ba0
* Pseudocode, not original source. */
void FUN_140001ba0(wchar_t *param_1,wchar_t *param_2,undefined8 param_3,undefined8 param_4)
{
undefined8 local_res18;
undefined8 local_res20;
local_res18 = param_3;
local_res20 = param_4;
vswprintf_s(param_1,0x104,param_2,(va_list)&local_res18);
return;
}

View file

@ -0,0 +1,16 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001bd0 FUN_140001bd0
* Pseudocode, not original source. */
void FUN_140001bd0(wchar_t *param_1,wchar_t *param_2,undefined8 param_3,undefined8 param_4)
{
undefined8 local_res18;
undefined8 local_res20;
local_res18 = param_3;
local_res20 = param_4;
vswprintf_s(param_1,0x105,param_2,(va_list)&local_res18);
return;
}

View file

@ -0,0 +1,12 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001c00 FUN_140001c00
* Pseudocode, not original source. */
exception * FUN_140001c00(exception *param_1,exception *param_2)
{
std::exception::exception(param_1,param_2);
*(undefined ***)param_1 = std::bad_alloc::vftable;
return param_1;
}

View file

@ -0,0 +1,20 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001c30 FUN_140001c30
* Pseudocode, not original source. */
undefined8 * FUN_140001c30(undefined8 *param_1,uint param_2)
{
*param_1 = MagiServerBase::vftable;
if ((void *)param_1[2] != (void *)0x0) {
operator_delete((void *)param_1[2]);
}
param_1[2] = 0;
param_1[3] = 0;
param_1[4] = 0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,17 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001c90 FUN_140001c90
* Pseudocode, not original source. */
void FUN_140001c90(undefined8 *param_1)
{
*param_1 = MagiServerBase::vftable;
if ((void *)param_1[2] != (void *)0x0) {
operator_delete((void *)param_1[2]);
}
param_1[2] = 0;
param_1[3] = 0;
param_1[4] = 0;
return;
}

View file

@ -0,0 +1,38 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001cd0 FUN_140001cd0
* Pseudocode, not original source. */
void FUN_140001cd0(longlong param_1,undefined8 param_2)
{
ulonglong *puVar1;
undefined8 *puVar2;
undefined8 *puVar3;
undefined8 local_res10 [3];
puVar2 = *(undefined8 **)(param_1 + 0x18);
puVar1 = (ulonglong *)(param_1 + 0x10);
local_res10[0] = param_2;
if ((local_res10 < puVar2) && (puVar3 = (undefined8 *)*puVar1, puVar3 <= local_res10)) {
if (puVar2 == *(undefined8 **)(param_1 + 0x20)) {
FUN_14000fff0((longlong *)puVar1);
}
if (*(undefined8 **)(param_1 + 0x18) != (undefined8 *)0x0) {
**(undefined8 **)(param_1 + 0x18) =
*(undefined8 *)(*puVar1 + ((longlong)local_res10 - (longlong)puVar3 >> 3) * 8);
*(longlong *)(param_1 + 0x18) = *(longlong *)(param_1 + 0x18) + 8;
return;
}
}
else {
if (puVar2 == *(undefined8 **)(param_1 + 0x20)) {
FUN_14000fff0((longlong *)puVar1);
}
if (*(undefined8 **)(param_1 + 0x18) != (undefined8 *)0x0) {
**(undefined8 **)(param_1 + 0x18) = param_2;
}
}
*(longlong *)(param_1 + 0x18) = *(longlong *)(param_1 + 0x18) + 8;
return;
}

View file

@ -0,0 +1,29 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001d70 FUN_140001d70
* Pseudocode, not original source. */
void FUN_140001d70(longlong param_1)
{
FUN_140001e60(param_1,0x15);
FUN_140001e60(param_1,0xd);
FUN_140001e60(param_1,0xc);
FUN_140001e60(param_1,0x11);
FUN_140001e60(param_1,0x12);
FUN_140001e60(param_1,0x13);
FUN_140001e60(param_1,10);
FUN_140001e60(param_1,6);
FUN_140001e60(param_1,0xb);
FUN_140001e60(param_1,9);
FUN_140001e60(param_1,7);
FUN_140001e60(param_1,8);
FUN_140001e60(param_1,5);
FUN_140001e60(param_1,1);
FUN_140001e60(param_1,2);
FUN_140001e60(param_1,3);
/* WARNING: Could not recover jumptable at 0x000140001e52. Too many branches */
/* WARNING: Treating indirect jump as call */
wprintf(L"\n------------------------------------------------------------------------------\n");
return;
}

View file

@ -0,0 +1,53 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001e60 FUN_140001e60
* Pseudocode, not original source. */
void FUN_140001e60(longlong param_1,uint param_2)
{
int iVar1;
longlong *plVar2;
ulonglong uVar3;
ulonglong uVar4;
ulonglong uVar5;
longlong lVar6;
ulonglong uVar7;
uVar3 = 0;
iVar1 = (int)(*(longlong *)(param_1 + 0x18) - *(longlong *)(param_1 + 0x10) >> 3);
if (0 < iVar1) {
plVar2 = *(longlong **)(param_1 + 0x10);
uVar4 = uVar3;
uVar5 = uVar3;
lVar6 = (longlong)iVar1;
uVar7 = uVar3;
do {
if ((*plVar2 != 0) && (*(byte *)(*plVar2 + 0x40) == param_2)) {
uVar5 = (ulonglong)((int)uVar5 + 1);
uVar7 = uVar4;
}
uVar4 = (ulonglong)((int)uVar4 + 1);
plVar2 = plVar2 + 1;
lVar6 = lVar6 + -1;
} while (lVar6 != 0);
if ((int)uVar5 != 0) {
uVar4 = uVar3;
if ((int)uVar5 < 2) {
FUN_140002690((*(longlong **)(param_1 + 0x10))[(int)uVar7],-1);
}
else {
do {
if ((*(longlong *)(*(longlong *)(param_1 + 0x10) + uVar3 * 8) != 0) &&
(lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x10) + uVar3 * 8),
*(byte *)(lVar6 + 0x40) == param_2)) {
FUN_140002690(lVar6,(int)uVar4);
uVar4 = (ulonglong)((int)uVar4 + 1);
}
uVar3 = uVar3 + 1;
} while ((longlong)uVar3 < (longlong)iVar1);
}
}
}
return;
}

View file

@ -0,0 +1,30 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140001f40 FUN_140001f40
* Pseudocode, not original source. */
undefined8 *
FUN_140001f40(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
*(undefined2 *)(param_1 + 1) = 0;
*param_1 = MagiCommonSession::vftable;
param_1[2] = 0;
*(undefined4 *)(param_1 + 3) = 0x1000001;
*(undefined1 *)((longlong)param_1 + 0x1c) = 1;
param_1[4] = 0;
param_1[5] = 0x4008000000000000;
FUN_14006cb70(param_1,param_2,param_3,param_4);
param_1[6] = PTR_DAT_1401ac010;
*(undefined8 *)((longlong)param_1 + 0x3c) = 0;
if ((DAT_1401bd4f4 & 1) == 0) {
DAT_1401bd4f4 = DAT_1401bd4f4 | 1;
FUN_14011b100();
atexit((_func_5014 *)&LAB_14012f3d0);
}
if (DAT_1401bd4a0 == 1000) {
*(undefined1 *)((longlong)param_1 + 0x1c) = 0;
param_1[5] = 0x4024000000000000;
}
return param_1;
}

View file

@ -0,0 +1,18 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002000 FUN_140002000
* Pseudocode, not original source. */
undefined8 *
FUN_140002000(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)
{
*param_1 = MagiCommonSession::vftable;
FUN_1400031e0(param_1 + 6,param_2,param_3,param_4);
*param_1 = Proud::INetClientEvent::vftable;
FUN_1400780b0(param_1);
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,14 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002060 FUN_140002060
* Pseudocode, not original source. */
void FUN_140002060(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
*param_1 = MagiCommonSession::vftable;
FUN_1400031e0(param_1 + 6,param_2,param_3,param_4);
*param_1 = Proud::INetClientEvent::vftable;
FUN_1400780b0(param_1);
return;
}

View file

@ -0,0 +1,108 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400020b0 FUN_1400020b0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_1400020b0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
char cVar1;
undefined *puVar2;
int *piVar3;
int *piVar4;
undefined **ppuVar5;
int *piVar6;
undefined8 *puVar7;
undefined *puVar8;
undefined1 auStack_b8 [32];
int *local_98;
undefined1 local_90;
int *local_88;
undefined1 local_80;
undefined8 local_78;
undefined *local_68;
undefined2 local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined8 local_48 [6];
ulonglong local_18;
local_78 = 0xfffffffffffffffe;
local_18 = DAT_1401ac5a0 ^ (ulonglong)auStack_b8;
puVar2 = *(undefined **)(param_1 + 0x30);
if ((((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1401ac010)) &&
(0 < *(int *)(puVar2 + -8))) &&
(((*(char *)(param_1 + 0x18) != '\0' && (*(char *)(param_1 + 0x19) == '\0')) &&
((*(char *)(param_1 + 0x1a) == '\0' && (*(longlong *)(param_1 + 0x10) != 0)))))) {
*(undefined2 *)(param_1 + 0x19) = 1;
ppuVar5 = &local_68;
FUN_1400780f0(ppuVar5,param_2,param_3,param_4);
local_5c = DAT_1401bcff0;
local_58 = _DAT_1401bcff4;
local_54 = _DAT_1401bcff8;
local_50 = _DAT_1401bcffc;
if (local_68 == (undefined *)0x0) {
local_68 = PTR_DAT_1401ac010;
}
if (*(undefined **)(param_1 + 0x30) != local_68) {
piVar3 = (int *)FUN_14006cb70(ppuVar5,param_2,param_3,param_4);
piVar6 = piVar3;
local_88 = piVar3;
FUN_14006b350(piVar3);
puVar2 = local_68;
local_80 = 1;
if (((local_68 != (undefined *)0x0) && (local_68 != PTR_DAT_1401ac010)) &&
(puVar8 = local_68 + -8, puVar8 != (undefined *)0x0)) {
piVar4 = (int *)FUN_14006cb70(piVar6,param_2,param_3,param_4);
local_98 = piVar4;
FUN_14006b350(piVar4);
local_90 = 1;
piVar6 = (int *)(puVar2 + -4);
*piVar6 = *piVar6 + -1;
if (*piVar6 == 0) {
FUN_14006cc60(puVar8);
}
FUN_14006b3e0((longlong)piVar4);
}
local_68 = *(undefined **)(param_1 + 0x30);
if (((local_68 != PTR_DAT_1401ac010) && (local_68 != (undefined *)0x0)) &&
(local_68 != (undefined *)0x8)) {
*(int *)(local_68 + -4) = *(int *)(local_68 + -4) + 1;
}
FUN_14006b3e0((longlong)piVar3);
}
local_60 = *(undefined2 *)(param_1 + 0x38);
(**(code **)(**(longlong **)(param_1 + 0x10) + 0x88))();
ppuVar5 = &local_68;
(**(code **)(**(longlong **)(param_1 + 0x10) + 0x78))();
cVar1 = *(char *)(param_1 + 0x19);
while (cVar1 != '\0') {
Sleep(10);
ppuVar5 = (undefined **)0x0;
(**(code **)(**(longlong **)(param_1 + 0x10) + 0x98))();
cVar1 = *(char *)(param_1 + 0x19);
}
puVar7 = local_48;
FUN_140078360(puVar7);
puVar2 = local_68;
if (((local_68 != (undefined *)0x0) && (local_68 != PTR_DAT_1401ac010)) &&
(puVar8 = local_68 + -8, puVar8 != (undefined *)0x0)) {
piVar3 = (int *)FUN_14006cb70(puVar7,ppuVar5,param_3,param_4);
local_98 = piVar3;
FUN_14006b350(piVar3);
local_90 = 1;
piVar6 = (int *)(puVar2 + -4);
*piVar6 = *piVar6 + -1;
if (*piVar6 == 0) {
FUN_14006cc60(puVar8);
}
FUN_14006b3e0((longlong)piVar3);
}
}
return;
}

View file

@ -0,0 +1,12 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400022e0 FUN_1400022e0
* Pseudocode, not original source. */
void FUN_1400022e0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
FUN_140078360(param_1 + 4);
FUN_1400031e0(param_1,param_2,param_3,param_4);
return;
}

View file

@ -0,0 +1,53 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002310 FUN_140002310
* Pseudocode, not original source. */
ulonglong FUN_140002310(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
char cVar1;
int iVar2;
undefined8 uVar3;
undefined4 extraout_var_00;
ulonglong uVar4;
double dVar5;
__time64_t local_res8;
__time64_t local_res18 [2];
uint7 extraout_var;
_time64(&local_res8);
do {
(**(code **)(**(longlong **)(param_1 + 0x10) + 0x88))();
*(undefined2 *)(param_1 + 0x1a) = 0x100;
*(undefined1 *)(param_1 + 0x19) = 1;
uVar3 = (**(code **)(**(longlong **)(param_1 + 0x10) + 0x78))
(*(longlong **)(param_1 + 0x10),param_2);
if ((char)uVar3 == '\x01') {
cVar1 = *(char *)(param_1 + 0x19);
while (cVar1 != '\0') {
Sleep(10);
uVar3 = (**(code **)(**(longlong **)(param_1 + 0x10) + 0x98))
(*(longlong **)(param_1 + 0x10),0);
cVar1 = *(char *)(param_1 + 0x19);
}
if (*(char *)(param_1 + 0x1a) == '\x01') {
return CONCAT71((int7)((ulonglong)uVar3 >> 8),1);
}
}
uVar4 = (ulonglong)DAT_1401bd4f4;
if ((DAT_1401bd4f4 & 1) == 0) {
DAT_1401bd4f4 = DAT_1401bd4f4 | 1;
FUN_14011b100();
iVar2 = atexit((_func_5014 *)&LAB_14012f3d0);
uVar4 = CONCAT44(extraout_var_00,iVar2);
}
if (DAT_1401bd4a0 == 1000) goto LAB_140002418;
_time64(local_res18);
dVar5 = _difftime64(local_res18[0],local_res8);
} while (((int)dVar5 < 300) && (Sleep(1), *(char *)(param_1 + 0x1a) == '\0'));
FUN_14000aa90(4,L"ERROR >> MagiCommonSession::ProcConnect | Time over!",param_3,param_4);
uVar4 = (ulonglong)extraout_var << 8;
LAB_140002418:
return uVar4 & 0xffffffffffffff00;
}

View file

@ -0,0 +1,55 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002430 FUN_140002430
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_140002430(longlong param_1)
{
undefined2 *puVar1;
undefined *puVar2;
ulonglong uVar3;
undefined1 auStack_68 [32];
undefined8 local_48;
undefined2 local_40;
undefined6 uStack_3e;
undefined8 local_30;
ulonglong local_28;
ulonglong local_18;
local_48 = 0xfffffffffffffffe;
local_18 = DAT_1401ac5a0 ^ (ulonglong)auStack_68;
puVar2 = *(undefined **)(param_1 + 0x30);
if ((((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1401ac010)) &&
(0 < *(int *)(puVar2 + -8))) && (*(char *)(param_1 + 0x18) != '\0')) {
if (*(char *)(param_1 + 0x1b) == '\0') {
if ((*(char *)(param_1 + 0x1a) != '\0') && (*(longlong *)(param_1 + 0x10) != 0)) {
(**(code **)(**(longlong **)(param_1 + 0x10) + 0x98))(*(longlong **)(param_1 + 0x10),0);
}
}
else if (*(char *)(param_1 + 0x1c) != '\0') {
Sleep((DWORD)(longlong)*(double *)(param_1 + 0x28));
local_28 = 7;
local_30 = 0;
local_40 = 0;
FUN_140002930(param_1,(ulonglong *)&local_40);
puVar2 = *(undefined **)(param_1 + 0x30);
if (*(undefined **)(param_1 + 0x30) == (undefined *)0x0) {
puVar2 = PTR_DAT_1401ac010;
}
puVar1 = &local_40;
if (7 < local_28) {
puVar1 = (undefined2 *)CONCAT62(uStack_3e,local_40);
}
uVar3 = (ulonglong)*(ushort *)(param_1 + 0x38);
wprintf(L"%s : RETRY CONNECT : IP[ %s ] PORT[ %d ]\n");
FUN_1400020b0(param_1,puVar1,puVar2,uVar3);
if (7 < local_28) {
operator_delete((void *)CONCAT62(uStack_3e,local_40));
}
}
}
return;
}

View file

@ -0,0 +1,70 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002540 FUN_140002540
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_140002540(longlong param_1,double param_2)
{
longlong *plVar1;
undefined2 *puVar2;
undefined *puVar3;
ulonglong uVar4;
double dVar5;
undefined1 auStack_68 [32];
undefined8 local_48;
undefined2 local_40;
undefined6 uStack_3e;
undefined8 local_30;
ulonglong local_28;
ulonglong local_18;
local_48 = 0xfffffffffffffffe;
local_18 = DAT_1401ac5a0 ^ (ulonglong)auStack_68;
puVar3 = *(undefined **)(param_1 + 0x30);
if (((puVar3 != (undefined *)0x0) && (puVar3 != PTR_DAT_1401ac010)) && (0 < *(int *)(puVar3 + -8))
) {
if (*(char *)(param_1 + 0x18) == '\0') {
if (*(char *)(param_1 + 0x1a) != '\0') {
plVar1 = *(longlong **)(param_1 + 0x10);
if (plVar1 != (longlong *)0x0) {
(**(code **)(*plVar1 + 0x98))(plVar1,0);
}
Sleep(100);
}
}
else if (*(char *)(param_1 + 0x1b) == '\0') {
if ((*(char *)(param_1 + 0x1a) != '\0') &&
(plVar1 = *(longlong **)(param_1 + 0x10), plVar1 != (longlong *)0x0)) {
(**(code **)(*plVar1 + 0x98))(plVar1,0);
}
}
else {
dVar5 = param_2 - *(double *)(param_1 + 0x20);
if ((*(double *)(param_1 + 0x28) <= dVar5 && dVar5 != *(double *)(param_1 + 0x28)) &&
(*(double *)(param_1 + 0x20) = param_2, *(char *)(param_1 + 0x1c) != '\0')) {
local_28 = 7;
local_30 = 0;
local_40 = 0;
FUN_140002930(param_1,(ulonglong *)&local_40);
puVar3 = *(undefined **)(param_1 + 0x30);
if (*(undefined **)(param_1 + 0x30) == (undefined *)0x0) {
puVar3 = PTR_DAT_1401ac010;
}
puVar2 = &local_40;
if (7 < local_28) {
puVar2 = (undefined2 *)CONCAT62(uStack_3e,local_40);
}
uVar4 = (ulonglong)*(ushort *)(param_1 + 0x38);
wprintf(L"%s : RETRY CONNECT : ADDRESS[ %s ] PORT[ %d ]\n");
FUN_1400020b0(param_1,puVar2,puVar3,uVar4);
if (7 < local_28) {
operator_delete((void *)CONCAT62(uStack_3e,local_40));
}
}
}
}
return;
}

View file

@ -0,0 +1,131 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002690 FUN_140002690
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */
void FUN_140002690(longlong param_1,int param_2)
{
ulonglong uVar1;
code *pcVar2;
undefined2 *puVar3;
undefined2 *puVar4;
wchar_t *pwVar5;
ulonglong uVar6;
undefined1 auStack_e8 [32];
uint local_c8;
uint local_c0;
undefined8 local_b8;
ulonglong local_b0 [2];
ulonglong local_a0;
ulonglong local_98;
undefined2 local_88;
undefined6 uStack_86;
undefined8 local_78;
ulonglong local_70;
ulonglong local_60 [2];
ulonglong local_50;
ulonglong local_48;
ulonglong local_38;
local_b8 = 0xfffffffffffffffe;
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_e8;
local_48 = 7;
local_50 = 0;
local_60[0]._0_2_ = 0;
local_70 = 7;
local_78 = 0;
local_88 = 0;
local_98 = 7;
local_a0 = 0;
local_b0[0]._0_2_ = 0;
FUN_140002930(param_1,local_60);
uVar6 = 0xffffffffffffffff;
if (local_50 != 0xffffffffffffffff) {
uVar6 = local_50;
}
if (-local_a0 - 1 <= uVar6) {
std::_Xlength_error("string too long");
pcVar2 = (code *)swi(3);
(*pcVar2)();
return;
}
if (uVar6 != 0) {
uVar1 = local_a0 + uVar6;
if (0x7ffffffffffffffe < uVar1) {
std::_Xlength_error("string too long");
pcVar2 = (code *)swi(3);
(*pcVar2)();
return;
}
if (local_98 < uVar1) {
FUN_140001a40(local_b0,uVar1,local_a0);
}
else if (uVar1 == 0) {
local_a0 = 0;
puVar4 = (undefined2 *)local_b0;
if (7 < local_98) {
puVar4 = (undefined2 *)CONCAT62(local_b0[0]._2_6_,(undefined2)local_b0[0]);
}
*puVar4 = 0;
}
if (uVar1 != 0) {
puVar4 = (undefined2 *)local_60;
if (7 < local_48) {
puVar4 = (undefined2 *)CONCAT62(local_60[0]._2_6_,(undefined2)local_60[0]);
}
puVar3 = (undefined2 *)local_b0;
if (7 < local_98) {
puVar3 = (undefined2 *)CONCAT62(local_b0[0]._2_6_,(undefined2)local_b0[0]);
}
memcpy(puVar3 + local_a0,puVar4,uVar6 * 2);
puVar4 = (undefined2 *)local_b0;
if (7 < local_98) {
puVar4 = (undefined2 *)CONCAT62(local_b0[0]._2_6_,(undefined2)local_b0[0]);
}
local_a0 = uVar1;
puVar4[uVar1] = 0;
}
}
FUN_140002b60(local_b0,9);
if (*(char *)(param_1 + 0x18) == '\0') {
uVar6 = 10;
pwVar5 = L"[ DisUse ]";
}
else {
uVar6 = 7;
pwVar5 = L"[ Use ]";
}
FUN_140001830((ulonglong *)&local_88,pwVar5,uVar6);
if (param_2 < 1) {
wprintf(L"\n-%s %s---------------------------------------------------------\n");
}
local_c8 = *(uint *)(param_1 + 0x3c);
if (param_2 == -1) {
wprintf(L"Session S[ %d ] : ADDRESS[ %s ] PORT[ %d ] CODE[ %d ]\n");
}
else {
local_c0 = local_c8;
local_c8 = (uint)*(ushort *)(param_1 + 0x38);
wprintf(L"Session [%d] S[ %d ] : ADDRESS[ %s ] PORT[ %d ] CODE[ %d ]\n");
}
if (7 < local_98) {
operator_delete((void *)CONCAT62(local_b0[0]._2_6_,(undefined2)local_b0[0]));
}
local_98 = 7;
local_a0 = 0;
local_b0[0]._0_2_ = 0;
if (7 < local_70) {
operator_delete((void *)CONCAT62(uStack_86,local_88));
}
local_70 = 7;
local_78 = 0;
local_88 = 0;
if (7 < local_48) {
operator_delete((void *)CONCAT62(local_60[0]._2_6_,(undefined2)local_60[0]));
}
return;
}

View file

@ -0,0 +1,71 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002930 FUN_140002930
* Pseudocode, not original source. */
void FUN_140002930(longlong param_1,ulonglong *param_2)
{
wchar_t *pwVar1;
switch(*(undefined1 *)(param_1 + 0x40)) {
case 1:
FUN_140001830(param_2,L"Lobby",5);
return;
case 2:
FUN_140001830(param_2,L"Dungeon",7);
return;
case 3:
FUN_140001830(param_2,&DAT_1401593d0,3);
return;
case 4:
FUN_140001830(param_2,&DAT_1401593d8,3);
return;
case 5:
FUN_140001830(param_2,L"Guild",5);
return;
case 6:
FUN_140001830(param_2,L"Message",7);
return;
case 7:
FUN_140001830(param_2,&DAT_140159400,2);
return;
case 8:
FUN_140001830(param_2,L"Gate",4);
return;
case 9:
FUN_140001830(param_2,L"Manager",7);
return;
case 10:
FUN_140001830(param_2,L"Auction",7);
return;
case 0xb:
FUN_140001830(param_2,L"Match",5);
return;
case 0xc:
pwVar1 = L"DBC_GAME";
break;
case 0xd:
FUN_140001830(param_2,L"Agent",5);
return;
default:
goto switchD_140002959_caseD_d;
case 0x11:
FUN_140001830(param_2,L"DBC_LOG",7);
return;
case 0x12:
pwVar1 = L"DBC_CHAT";
break;
case 0x13:
FUN_140001830(param_2,L"DBC_EMERGENCY",0xd);
return;
case 0x15:
FUN_140001830(param_2,L"Agentmanager",0xc);
return;
case 0x16:
pwVar1 = L"MiniGame";
}
FUN_140001830(param_2,pwVar1,8);
switchD_140002959_caseD_d:
return;
}

View file

@ -0,0 +1,59 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002b60 FUN_140002b60
* Pseudocode, not original source. */
ulonglong * FUN_140002b60(ulonglong *param_1,ulonglong param_2)
{
ulonglong uVar1;
code *pcVar2;
char cVar3;
ulonglong *puVar4;
uVar1 = param_1[3];
puVar4 = param_1;
if (7 < uVar1) {
puVar4 = (ulonglong *)*param_1;
}
if (puVar4 < (ulonglong *)((longlong)L" Sessoion" + 1U)) {
puVar4 = param_1;
if (7 < uVar1) {
puVar4 = (ulonglong *)*param_1;
}
if (L" Sessoion" < (wchar_t *)((longlong)puVar4 + param_1[2] * 2)) {
puVar4 = param_1;
if (7 < uVar1) {
puVar4 = (ulonglong *)*param_1;
}
puVar4 = (ulonglong *)
FUN_140002c70((longlong *)param_1,param_1,
(longlong)L" Sessoion" - (longlong)puVar4 >> 1,param_2);
return puVar4;
}
}
if (param_2 < -param_1[2] - 1) {
if (param_2 != 0) {
uVar1 = param_1[2] + param_2;
cVar3 = FUN_1400019c0(param_1,uVar1);
if (cVar3 != '\0') {
puVar4 = param_1;
if (7 < param_1[3]) {
puVar4 = (ulonglong *)*param_1;
}
memcpy((void *)((longlong)puVar4 + param_1[2] * 2),L" Sessoion",param_2 * 2);
param_1[2] = uVar1;
puVar4 = param_1;
if (7 < param_1[3]) {
puVar4 = (ulonglong *)*param_1;
}
*(undefined2 *)((longlong)puVar4 + uVar1 * 2) = 0;
}
}
return param_1;
}
std::_Xlength_error("string too long");
pcVar2 = (code *)swi(3);
puVar4 = (ulonglong *)(*pcVar2)();
return puVar4;
}

View file

@ -0,0 +1,52 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002c70 FUN_140002c70
* Pseudocode, not original source. */
longlong * FUN_140002c70(longlong *param_1,undefined8 *param_2,ulonglong param_3,ulonglong param_4)
{
code *pcVar1;
char cVar2;
longlong *plVar3;
ulonglong uVar4;
if ((ulonglong)param_2[2] < param_3) {
std::_Xout_of_range("invalid string position");
pcVar1 = (code *)swi(3);
plVar3 = (longlong *)(*pcVar1)();
return plVar3;
}
uVar4 = param_2[2] - param_3;
if (uVar4 < param_4) {
param_4 = uVar4;
}
if (param_4 < -param_1[2] - 1U) {
if (param_4 != 0) {
uVar4 = param_1[2] + param_4;
cVar2 = FUN_1400019c0(param_1,uVar4);
if (cVar2 != '\0') {
if (7 < (ulonglong)param_2[3]) {
param_2 = (undefined8 *)*param_2;
}
plVar3 = param_1;
if (7 < (ulonglong)param_1[3]) {
plVar3 = (longlong *)*param_1;
}
memcpy((void *)((longlong)plVar3 + param_1[2] * 2),(void *)((longlong)param_2 + param_3 * 2)
,param_4 * 2);
param_1[2] = uVar4;
plVar3 = param_1;
if (7 < (ulonglong)param_1[3]) {
plVar3 = (longlong *)*param_1;
}
*(undefined2 *)((longlong)plVar3 + uVar4 * 2) = 0;
}
}
return param_1;
}
std::_Xlength_error("string too long");
pcVar1 = (code *)swi(3);
plVar3 = (longlong *)(*pcVar1)();
return plVar3;
}

View file

@ -0,0 +1,76 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002d60 FUN_140002d60
* Pseudocode, not original source. */
void FUN_140002d60(longlong *param_1,int param_2)
{
undefined *puVar1;
int *piVar2;
int iVar3;
undefined4 in_register_00000014;
undefined *puVar4;
undefined8 in_R8;
ulonglong uVar5;
undefined8 in_R9;
puVar4 = PTR_DAT_1401ac010;
puVar1 = (undefined *)*param_1;
if ((undefined *)*param_1 == (undefined *)0x0) {
puVar1 = PTR_DAT_1401ac010;
}
*param_1 = (longlong)puVar1;
if (param_2 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
if (param_2 == 0) {
FUN_1400031e0(param_1,CONCAT44(in_register_00000014,param_2),in_R8,in_R9);
return;
}
iVar3 = 0;
if (puVar1 != (undefined *)0x0) {
if (puVar1 == puVar4) {
iVar3 = 0;
}
else {
iVar3 = *(int *)(puVar1 + -8);
}
}
if (param_2 != iVar3) {
piVar2 = (int *)FUN_14006cbf0((longlong)param_2 * 2 + 10);
if (piVar2 != (int *)0x0) {
*piVar2 = 0;
piVar2[1] = 1;
}
puVar1 = PTR_DAT_1401ac010;
*piVar2 = param_2;
puVar4 = (undefined *)*param_1;
if (puVar4 == (undefined *)0x0) {
iVar3 = 0;
}
else if (puVar4 == puVar1) {
iVar3 = 0;
}
else {
iVar3 = *(int *)(puVar4 + -8);
}
if (iVar3 <= param_2) {
if ((puVar4 == (undefined *)0x0) || (puVar4 == puVar1)) {
param_2 = 0;
}
else {
param_2 = *(int *)(puVar4 + -8);
}
}
if (puVar4 == (undefined *)0x0) {
puVar4 = puVar1;
}
uVar5 = (ulonglong)(uint)param_2;
FUN_14006ca20(piVar2 + 2,puVar4,param_2);
FUN_1400031e0(param_1,puVar4,uVar5,in_R9);
*param_1 = (longlong)(piVar2 + 2);
}
return;
}

View file

@ -0,0 +1,73 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002e40 FUN_140002e40
* Pseudocode, not original source. */
void FUN_140002e40(longlong *param_1)
{
int iVar1;
undefined *puVar2;
undefined8 *puVar3;
uint *puVar4;
uint uVar5;
uint uVar6;
undefined *puVar7;
ulonglong uVar8;
undefined8 in_R9;
puVar7 = (undefined *)*param_1;
if (puVar7 == (undefined *)0x0) {
*param_1 = (longlong)PTR_DAT_1401ac010;
}
else if ((puVar7 != PTR_DAT_1401ac010) && ((int *)(puVar7 + -8) != (int *)0x0)) {
if (*(int *)(puVar7 + -4) < 2) {
return;
}
iVar1 = *(int *)(puVar7 + -8);
if (iVar1 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
puVar4 = (uint *)FUN_14006cbf0((longlong)iVar1 * 2 + 10);
uVar5 = 0;
if (puVar4 != (uint *)0x0) {
*puVar4 = 0;
puVar4[1] = 1;
}
puVar2 = PTR_DAT_1401ac010;
puVar7 = (undefined *)*param_1;
if (puVar7 == (undefined *)0x0) {
uVar6 = 0;
}
else {
uVar6 = uVar5;
if (puVar7 != PTR_DAT_1401ac010) {
uVar6 = *(uint *)(puVar7 + -8);
}
}
*puVar4 = uVar6;
puVar7 = (undefined *)*param_1;
if ((puVar7 != (undefined *)0x0) && (puVar7 != puVar2)) {
uVar5 = *(uint *)(puVar7 + -8);
}
if (puVar7 == (undefined *)0x0) {
puVar7 = puVar2;
}
uVar8 = (ulonglong)uVar5;
FUN_14006ca20(puVar4 + 2,puVar7,uVar5);
FUN_1400031e0(param_1,puVar7,uVar8,in_R9);
*param_1 = (longlong)(puVar4 + 2);
return;
}
puVar3 = (undefined8 *)FUN_14006cbf0(10);
*puVar3 = 0;
*(undefined2 *)(puVar3 + 1) = 0;
if (puVar3 != (undefined8 *)0x0) {
*(undefined4 *)puVar3 = 0;
*(undefined4 *)((longlong)puVar3 + 4) = 1;
}
*(undefined2 *)(puVar3 + 1) = 0;
*param_1 = (longlong)(puVar3 + 1);
return;
}

View file

@ -0,0 +1,39 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002f30 FUN_140002f30
* Pseudocode, not original source. */
undefined * FUN_140002f30(longlong *param_1,int param_2)
{
int iVar1;
undefined *puVar2;
int iVar3;
puVar2 = (undefined *)*param_1;
iVar3 = 0;
if ((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1401ac010)) {
iVar3 = *(int *)(puVar2 + -8);
}
if (((param_2 <= iVar3) && (param_2 = 0, puVar2 != (undefined *)0x0)) &&
(puVar2 != PTR_DAT_1401ac010)) {
param_2 = *(int *)(puVar2 + -8);
}
iVar3 = 1;
if (1 < param_2) {
iVar3 = param_2;
}
iVar1 = 0;
if ((puVar2 != (undefined *)0x0) && (iVar1 = 0, puVar2 != PTR_DAT_1401ac010)) {
iVar1 = *(int *)(puVar2 + -8);
}
if (iVar1 < iVar3) {
FUN_140002d60(param_1,iVar3);
}
FUN_140002e40(param_1);
puVar2 = (undefined *)*param_1;
if ((undefined *)*param_1 == (undefined *)0x0) {
puVar2 = PTR_DAT_1401ac010;
}
return puVar2;
}

View file

@ -0,0 +1,34 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002fb0 FUN_140002fb0
* Pseudocode, not original source. */
void FUN_140002fb0(longlong *param_1,int param_2)
{
undefined *puVar1;
int iVar2;
int iVar3;
puVar1 = (undefined *)*param_1;
iVar3 = 0;
if (0 < param_2) {
iVar3 = param_2;
}
iVar2 = 0;
if ((puVar1 != (undefined *)0x0) && (iVar2 = 0, puVar1 != PTR_DAT_1401ac010)) {
iVar2 = *(int *)(puVar1 + -8);
}
if ((iVar2 <= iVar3) && (iVar3 = 0, puVar1 != (undefined *)0x0)) {
if (puVar1 == PTR_DAT_1401ac010) {
return;
}
iVar3 = *(int *)(puVar1 + -8);
}
if (((puVar1 != PTR_DAT_1401ac010) && (puVar1 != (undefined *)0x0)) &&
((int *)(puVar1 + -8) != (int *)0x0)) {
*(int *)(puVar1 + -8) = iVar3;
*(undefined2 *)(puVar1 + (longlong)iVar3 * 2) = 0;
}
return;
}

View file

@ -0,0 +1,40 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003010 FUN_140003010
* Pseudocode, not original source. */
void FUN_140003010(longlong *param_1)
{
undefined *puVar1;
int iVar2;
int iVar3;
short *psVar4;
psVar4 = (short *)*param_1;
if ((short *)*param_1 == (short *)0x0) {
psVar4 = (short *)PTR_DAT_1401ac010;
}
iVar2 = FUN_14006c9f0(psVar4);
iVar3 = 0;
if (0 < iVar2) {
iVar3 = iVar2;
}
puVar1 = (undefined *)*param_1;
iVar2 = 0;
if ((puVar1 != (undefined *)0x0) && (iVar2 = 0, puVar1 != PTR_DAT_1401ac010)) {
iVar2 = *(int *)(puVar1 + -8);
}
if ((iVar2 <= iVar3) && (iVar3 = 0, puVar1 != (undefined *)0x0)) {
if (puVar1 == PTR_DAT_1401ac010) {
return;
}
iVar3 = *(int *)(puVar1 + -8);
}
if (((puVar1 != PTR_DAT_1401ac010) && (puVar1 != (undefined *)0x0)) &&
((int *)(puVar1 + -8) != (int *)0x0)) {
*(int *)(puVar1 + -8) = iVar3;
*(undefined2 *)(puVar1 + (longlong)iVar3 * 2) = 0;
}
return;
}

View file

@ -0,0 +1,26 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003090 FUN_140003090
* Pseudocode, not original source. */
longlong * FUN_140003090(longlong *param_1,short *param_2,undefined8 param_3,undefined8 param_4)
{
int iVar1;
undefined *puVar2;
int iVar3;
int iVar4;
FUN_14006cb70(param_1,param_2,param_3,param_4);
*param_1 = (longlong)PTR_DAT_1401ac010;
iVar1 = FUN_14006c9f0(param_2);
iVar3 = (int)param_3;
iVar4 = iVar1;
if ((0 < iVar3) && (iVar4 = iVar3, iVar1 < iVar3)) {
iVar4 = iVar1;
}
puVar2 = FUN_140002f30(param_1,iVar4);
FUN_14006ca20(puVar2,param_2,iVar4);
FUN_140003010(param_1);
return param_1;
}

View file

@ -0,0 +1,32 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003110 FUN_140003110
* Pseudocode, not original source. */
void FUN_140003110(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)
{
undefined *puVar1;
int *piVar2;
longlong *plVar3;
puVar1 = (undefined *)*param_1;
if ((undefined *)*param_1 == (undefined *)0x0) {
puVar1 = PTR_DAT_1401ac010;
}
*param_1 = (longlong)puVar1;
if ((undefined *)*param_2 != puVar1) {
plVar3 = param_2;
piVar2 = (int *)FUN_14006cb70(param_1,param_2,param_3,param_4);
FUN_14006b350(piVar2);
FUN_1400031e0(param_1,plVar3,param_3,param_4);
puVar1 = (undefined *)*param_2;
*param_1 = (longlong)puVar1;
if (((puVar1 != PTR_DAT_1401ac010) && (puVar1 != (undefined *)0x0)) &&
(puVar1 != (undefined *)0x8)) {
*(int *)(puVar1 + -4) = *(int *)(puVar1 + -4) + 1;
}
FUN_14006b3e0((longlong)piVar2);
}
return;
}

View file

@ -0,0 +1,14 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400031b0 FUN_1400031b0
* Pseudocode, not original source. */
void FUN_1400031b0(longlong *param_1)
{
if ((char)param_1[1] != '\0') {
FUN_14006b3e0(*param_1);
*(undefined1 *)(param_1 + 1) = 0;
}
return;
}

View file

@ -0,0 +1,30 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400031e0 FUN_1400031e0
* Pseudocode, not original source. */
void FUN_1400031e0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
int *piVar1;
undefined *puVar2;
int *piVar3;
puVar2 = (undefined *)*param_1;
if (((puVar2 == (undefined *)0x0) || (puVar2 == PTR_DAT_1401ac010)) ||
(puVar2 + -8 == (undefined *)0x0)) {
*param_1 = (longlong)PTR_DAT_1401ac010;
}
else {
piVar3 = (int *)FUN_14006cb70(puVar2,param_2,param_3,param_4);
FUN_14006b350(piVar3);
piVar1 = (int *)(puVar2 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14006cc60(puVar2 + -8);
}
FUN_14006b3e0((longlong)piVar3);
*param_1 = (longlong)PTR_DAT_1401ac010;
}
return;
}

View file

@ -0,0 +1,12 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003280 FUN_140003280
* Pseudocode, not original source. */
void FUN_140003280(undefined8 *param_1)
{
*param_1 = Proud::INetClientEvent::vftable;
FUN_1400780b0(param_1);
return;
}

View file

@ -0,0 +1,14 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003290 FUN_140003290
* Pseudocode, not original source. */
undefined8 * FUN_140003290(undefined8 *param_1,uint param_2)
{
FUN_1400780b0(param_1);
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,21 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400032c0 std::bad_alloc::`scalar_deleting_destructor'
* Pseudocode, not original source. */
/* Library Function - Single Match
public: virtual void * __ptr64 __cdecl std::bad_alloc::`scalar deleting destructor'(unsigned
int) __ptr64
Libraries: Visual Studio 2012 Release, Visual Studio 2015 Release */
void * __thiscall std::bad_alloc::_scalar_deleting_destructor_(bad_alloc *this,uint param_1)
{
*(undefined ***)this = Proud::INetClientEvent::vftable;
FUN_1400780b0((undefined8 *)this);
if ((param_1 & 1) != 0) {
operator_delete(this);
}
return this;
}

View file

@ -0,0 +1,14 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003300 FUN_140003300
* Pseudocode, not original source. */
undefined8 * FUN_140003300(undefined8 *param_1,uint param_2)
{
FUN_14011b4b0(param_1);
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,12 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003330 FUN_140003330
* Pseudocode, not original source. */
void FUN_140003330(undefined8 *param_1)
{
DAT_1401ba9e8 = 0;
*param_1 = MBISingleton<MBCLog>::vftable;
return;
}

View file

@ -0,0 +1,13 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003350 FUN_140003350
* Pseudocode, not original source. */
void FUN_140003350(void)
{
/* WARNING: Could not recover jumptable at 0x000140003357. Too many branches */
/* WARNING: Treating indirect jump as call */
LeaveCriticalSection(DAT_1401bd028);
return;
}

View file

@ -0,0 +1,15 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003360 FUN_140003360
* Pseudocode, not original source. */
undefined8 * FUN_140003360(undefined8 *param_1,byte param_2)
{
DAT_1401ba9e8 = 0;
*param_1 = MBISingleton<MBCLog>::vftable;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,22 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400033a0 FUN_1400033a0
* Pseudocode, not original source. */
undefined8 * FUN_1400033a0(undefined8 *param_1,uint param_2)
{
LPCRITICAL_SECTION lpCriticalSection;
lpCriticalSection = DAT_1401bd028;
*param_1 = MBMultiThreadSync<MBCLog>::vftable;
if (lpCriticalSection != (LPCRITICAL_SECTION)0x0) {
DeleteCriticalSection(lpCriticalSection);
operator_delete(lpCriticalSection);
}
DAT_1401bd028 = (LPCRITICAL_SECTION)0x0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,14 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003410 FUN_140003410
* Pseudocode, not original source. */
void FUN_140003410(wchar_t *param_1,size_t param_2,wchar_t *param_3,undefined8 param_4)
{
undefined8 local_res20;
local_res20 = param_4;
_vsnwprintf_s(param_1,0x20,param_2,param_3,(va_list)&local_res20);
return;
}

View file

@ -0,0 +1,14 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003440 FUN_140003440
* Pseudocode, not original source. */
void FUN_140003440(wchar_t *param_1,size_t param_2,wchar_t *param_3,undefined8 param_4)
{
undefined8 local_res20;
local_res20 = param_4;
_vsnwprintf_s(param_1,0x104,param_2,param_3,(va_list)&local_res20);
return;
}

View file

@ -0,0 +1,14 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003470 FUN_140003470
* Pseudocode, not original source. */
void FUN_140003470(char *param_1,size_t param_2,char *param_3,undefined8 param_4)
{
undefined8 local_res20;
local_res20 = param_4;
_vsnprintf_s(param_1,0x104,param_2,param_3,(va_list)&local_res20);
return;
}

View file

@ -0,0 +1,11 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400034a0 FUN_1400034a0
* Pseudocode, not original source. */
void FUN_1400034a0(longlong param_1,uint param_2)
{
FUN_140003300((undefined8 *)(param_1 + -8),param_2);
return;
}

View file

@ -0,0 +1,13 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400034b0 FUN_1400034b0
* Pseudocode, not original source. */
void FUN_1400034b0(undefined8 *param_1)
{
if ((undefined8 *)*param_1 != &DAT_1401bcf30) {
operator_delete__((void *)param_1[1]);
}
return;
}

View file

@ -0,0 +1,10 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400034d0 FUN_1400034d0
* Pseudocode, not original source. */
undefined8 FUN_1400034d0(void)
{
return 0;
}

View file

@ -0,0 +1,15 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400034e0 FUN_1400034e0
* Pseudocode, not original source. */
void FUN_1400034e0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
*param_1 = TiXmlDocument::vftable;
if ((undefined8 *)param_1[0xc] != &DAT_1401bcf30) {
operator_delete__((void *)param_1[0xd]);
}
FUN_14000b7d0(param_1,param_2,param_3,param_4);
return;
}

View file

@ -0,0 +1,22 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003520 FUN_140003520
* Pseudocode, not original source. */
undefined8 *
FUN_140003520(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)
{
ulonglong uVar1;
*param_1 = TiXmlDocument::vftable;
uVar1 = param_2;
if ((undefined8 *)param_1[0xc] != &DAT_1401bcf30) {
operator_delete__((void *)param_1[0xd]);
}
FUN_14000b7d0(param_1,uVar1,param_3,param_4);
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,55 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003580 FUN_140003580
* Pseudocode, not original source. */
undefined1 * FUN_140003580(undefined1 *param_1)
{
*(undefined8 *)(param_1 + 0x18) = 0xf;
*(undefined8 *)(param_1 + 0x10) = 0;
*param_1 = 0;
*(undefined8 *)(param_1 + 0x40) = 0xf;
*(undefined8 *)(param_1 + 0x38) = 0;
param_1[0x28] = 0;
*(undefined8 *)(param_1 + 0x68) = 0xf;
*(undefined8 *)(param_1 + 0x60) = 0;
param_1[0x50] = 0;
*(undefined8 *)(param_1 + 0x90) = 0xf;
*(undefined8 *)(param_1 + 0x88) = 0;
param_1[0x78] = 0;
*(undefined8 *)(param_1 + 0xb8) = 0xf;
*(undefined8 *)(param_1 + 0xb0) = 0;
param_1[0xa0] = 0;
*(undefined8 *)(param_1 + 0xe0) = 0xf;
*(undefined8 *)(param_1 + 0xd8) = 0;
param_1[200] = 0;
*(undefined8 *)(param_1 + 0x108) = 0xf;
*(undefined8 *)(param_1 + 0x100) = 0;
param_1[0xf0] = 0;
*(undefined8 *)(param_1 + 0x130) = 0xf;
*(undefined8 *)(param_1 + 0x128) = 0;
param_1[0x118] = 0;
*(undefined8 *)(param_1 + 0x158) = 0xf;
*(undefined8 *)(param_1 + 0x150) = 0;
param_1[0x140] = 0;
*(undefined4 *)(param_1 + 0x168) = 0;
*(undefined8 *)(param_1 + 0x188) = 0xf;
*(undefined8 *)(param_1 + 0x180) = 0;
param_1[0x170] = 0;
*(undefined8 *)(param_1 + 0x1b0) = 0xf;
*(undefined8 *)(param_1 + 0x1a8) = 0;
param_1[0x198] = 0;
*(undefined8 *)(param_1 + 0x1d8) = 0xf;
*(undefined8 *)(param_1 + 0x1d0) = 0;
param_1[0x1c0] = 0;
*(undefined8 *)(param_1 + 0x1e8) = 0;
*(undefined4 *)(param_1 + 0x1f0) = 0;
*(undefined8 *)(param_1 + 500) = 100;
*(undefined8 *)(param_1 + 0x218) = 0xf;
*(undefined8 *)(param_1 + 0x210) = 0;
param_1[0x200] = 0;
FUN_140003e60((ulonglong *)(param_1 + 0x200),&DAT_140159678,3);
*(undefined4 *)(param_1 + 0x228) = 1000;
return param_1;
}

View file

@ -0,0 +1,88 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400036f0 FUN_1400036f0
* Pseudocode, not original source. */
void FUN_1400036f0(undefined8 *param_1)
{
if (0xf < (ulonglong)param_1[0x43]) {
operator_delete((void *)param_1[0x40]);
}
param_1[0x43] = 0xf;
param_1[0x42] = 0;
*(undefined1 *)(param_1 + 0x40) = 0;
if (0xf < (ulonglong)param_1[0x3b]) {
operator_delete((void *)param_1[0x38]);
}
param_1[0x3b] = 0xf;
param_1[0x3a] = 0;
*(undefined1 *)(param_1 + 0x38) = 0;
if (0xf < (ulonglong)param_1[0x36]) {
operator_delete((void *)param_1[0x33]);
}
param_1[0x36] = 0xf;
param_1[0x35] = 0;
*(undefined1 *)(param_1 + 0x33) = 0;
if (0xf < (ulonglong)param_1[0x31]) {
operator_delete((void *)param_1[0x2e]);
}
param_1[0x31] = 0xf;
param_1[0x30] = 0;
*(undefined1 *)(param_1 + 0x2e) = 0;
if (0xf < (ulonglong)param_1[0x2b]) {
operator_delete((void *)param_1[0x28]);
}
param_1[0x2b] = 0xf;
param_1[0x2a] = 0;
*(undefined1 *)(param_1 + 0x28) = 0;
if (0xf < (ulonglong)param_1[0x26]) {
operator_delete((void *)param_1[0x23]);
}
param_1[0x26] = 0xf;
param_1[0x25] = 0;
*(undefined1 *)(param_1 + 0x23) = 0;
if (0xf < (ulonglong)param_1[0x21]) {
operator_delete((void *)param_1[0x1e]);
}
param_1[0x21] = 0xf;
param_1[0x20] = 0;
*(undefined1 *)(param_1 + 0x1e) = 0;
if (0xf < (ulonglong)param_1[0x1c]) {
operator_delete((void *)param_1[0x19]);
}
param_1[0x1c] = 0xf;
param_1[0x1b] = 0;
*(undefined1 *)(param_1 + 0x19) = 0;
if (0xf < (ulonglong)param_1[0x17]) {
operator_delete((void *)param_1[0x14]);
}
param_1[0x17] = 0xf;
param_1[0x16] = 0;
*(undefined1 *)(param_1 + 0x14) = 0;
if (0xf < (ulonglong)param_1[0x12]) {
operator_delete((void *)param_1[0xf]);
}
param_1[0x12] = 0xf;
param_1[0x11] = 0;
*(undefined1 *)(param_1 + 0xf) = 0;
if (0xf < (ulonglong)param_1[0xd]) {
operator_delete((void *)param_1[10]);
}
param_1[0xd] = 0xf;
param_1[0xc] = 0;
*(undefined1 *)(param_1 + 10) = 0;
if (0xf < (ulonglong)param_1[8]) {
operator_delete((void *)param_1[5]);
}
param_1[8] = 0xf;
param_1[7] = 0;
*(undefined1 *)(param_1 + 5) = 0;
if (0xf < (ulonglong)param_1[3]) {
operator_delete((void *)*param_1);
}
param_1[3] = 0xf;
param_1[2] = 0;
*(undefined1 *)param_1 = 0;
return;
}

View file

@ -0,0 +1,39 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003950 FUN_140003950
* Pseudocode, not original source. */
longlong * FUN_140003950(longlong *param_1,longlong *param_2)
{
FUN_140003da0(param_1,param_2,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 5,param_2 + 5,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 10,param_2 + 10,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 0xf,param_2 + 0xf,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 0x14,param_2 + 0x14,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 0x19,param_2 + 0x19,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 0x1e,param_2 + 0x1e,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 0x23,param_2 + 0x23,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 0x28,param_2 + 0x28,0,0xffffffffffffffff);
*(int *)(param_1 + 0x2d) = (int)param_2[0x2d];
FUN_140003da0(param_1 + 0x2e,param_2 + 0x2e,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 0x33,param_2 + 0x33,0,0xffffffffffffffff);
FUN_140003da0(param_1 + 0x38,param_2 + 0x38,0,0xffffffffffffffff);
*(char *)(param_1 + 0x3d) = (char)param_2[0x3d];
*(undefined1 *)((longlong)param_1 + 0x1e9) = *(undefined1 *)((longlong)param_2 + 0x1e9);
*(undefined1 *)((longlong)param_1 + 0x1ea) = *(undefined1 *)((longlong)param_2 + 0x1ea);
*(undefined1 *)((longlong)param_1 + 0x1eb) = *(undefined1 *)((longlong)param_2 + 0x1eb);
*(undefined1 *)((longlong)param_1 + 0x1ec) = *(undefined1 *)((longlong)param_2 + 0x1ec);
*(undefined1 *)((longlong)param_1 + 0x1ed) = *(undefined1 *)((longlong)param_2 + 0x1ed);
*(undefined1 *)((longlong)param_1 + 0x1ee) = *(undefined1 *)((longlong)param_2 + 0x1ee);
*(undefined1 *)((longlong)param_1 + 0x1ef) = *(undefined1 *)((longlong)param_2 + 0x1ef);
*(char *)(param_1 + 0x3e) = (char)param_2[0x3e];
*(undefined1 *)((longlong)param_1 + 0x1f1) = *(undefined1 *)((longlong)param_2 + 0x1f1);
*(undefined1 *)((longlong)param_1 + 0x1f2) = *(undefined1 *)((longlong)param_2 + 0x1f2);
*(undefined1 *)((longlong)param_1 + 499) = *(undefined1 *)((longlong)param_2 + 499);
*(undefined4 *)((longlong)param_1 + 500) = *(undefined4 *)((longlong)param_2 + 500);
*(int *)(param_1 + 0x3f) = (int)param_2[0x3f];
FUN_140003da0(param_1 + 0x40,param_2 + 0x40,0,0xffffffffffffffff);
*(int *)(param_1 + 0x45) = (int)param_2[0x45];
return param_1;
}

View file

@ -0,0 +1,16 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003b80 FUN_140003b80
* Pseudocode, not original source. */
void FUN_140003b80(undefined8 *param_1)
{
if (0xf < (ulonglong)param_1[3]) {
operator_delete((void *)*param_1);
}
param_1[3] = 0xf;
param_1[2] = 0;
*(undefined1 *)param_1 = 0;
return;
}

View file

@ -0,0 +1,24 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003bc0 FUN_140003bc0
* Pseudocode, not original source. */
void FUN_140003bc0(longlong *param_1)
{
undefined8 *puVar1;
undefined8 *puVar2;
puVar2 = (undefined8 *)*param_1;
if (puVar2 != (undefined8 *)0x0) {
puVar1 = (undefined8 *)param_1[1];
for (; puVar2 != puVar1; puVar2 = puVar2 + 0x46) {
FUN_1400036f0(puVar2);
}
operator_delete((void *)*param_1);
}
*param_1 = 0;
param_1[1] = 0;
param_1[2] = 0;
return;
}

View file

@ -0,0 +1,33 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003c20 FUN_140003c20
* Pseudocode, not original source. */
void FUN_140003c20(ulonglong *param_1,longlong *param_2)
{
longlong *plVar1;
longlong *plVar2;
plVar1 = (longlong *)param_1[1];
if ((param_2 < plVar1) && (plVar2 = (longlong *)*param_1, plVar2 <= param_2)) {
if (plVar1 == (longlong *)param_1[2]) {
FUN_140003ce0((longlong *)param_1);
}
if ((longlong *)param_1[1] != (longlong *)0x0) {
FUN_140004350((longlong *)param_1[1],
(longlong *)
((((longlong)param_2 - (longlong)plVar2) / 0x230) * 0x230 + *param_1));
}
}
else {
if (plVar1 == (longlong *)param_1[2]) {
FUN_140003ce0((longlong *)param_1);
}
if ((longlong *)param_1[1] != (longlong *)0x0) {
FUN_140004350((longlong *)param_1[1],param_2);
}
}
param_1[1] = param_1[1] + 0x230;
return;
}

View file

@ -0,0 +1,38 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003ce0 FUN_140003ce0
* Pseudocode, not original source. */
void FUN_140003ce0(longlong *param_1)
{
code *pcVar1;
ulonglong uVar2;
ulonglong uVar3;
uVar3 = (param_1[1] - *param_1) / 0x230;
if (0x75075075075074 < uVar3) {
std::_Xlength_error("vector<T> too long");
pcVar1 = (code *)swi(3);
(*pcVar1)();
return;
}
uVar3 = uVar3 + 1;
uVar2 = (param_1[2] - *param_1) / 0x230;
if (uVar2 < uVar3) {
if (0x75075075075075 - (uVar2 >> 1) < uVar2) {
uVar2 = 0;
if (uVar3 != 0) {
uVar2 = uVar3;
}
FUN_140003f30(param_1,uVar2);
return;
}
uVar2 = uVar2 + (uVar2 >> 1);
if (uVar2 < uVar3) {
uVar2 = uVar3;
}
FUN_140003f30(param_1,uVar2);
}
return;
}

View file

@ -0,0 +1,48 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003da0 FUN_140003da0
* Pseudocode, not original source. */
longlong * FUN_140003da0(longlong *param_1,longlong *param_2,ulonglong param_3,ulonglong param_4)
{
code *pcVar1;
char cVar2;
longlong *plVar3;
ulonglong _Size;
if (param_3 <= (ulonglong)param_2[2]) {
_Size = param_2[2] - param_3;
if (param_4 < _Size) {
_Size = param_4;
}
if (param_1 == param_2) {
FUN_1400040a0(param_1,_Size + param_3,0xffffffffffffffff);
FUN_1400040a0(param_1,0,param_3);
}
else {
cVar2 = FUN_140004140(param_1,_Size);
if (cVar2 != '\0') {
if (0xf < (ulonglong)param_2[3]) {
param_2 = (longlong *)*param_2;
}
plVar3 = param_1;
if (0xf < (ulonglong)param_1[3]) {
plVar3 = (longlong *)*param_1;
}
memcpy(plVar3,(void *)((longlong)param_2 + param_3),_Size);
param_1[2] = _Size;
plVar3 = param_1;
if (0xf < (ulonglong)param_1[3]) {
plVar3 = (longlong *)*param_1;
}
*(undefined1 *)((longlong)plVar3 + _Size) = 0;
}
}
return param_1;
}
std::_Xout_of_range("invalid string position");
pcVar1 = (code *)swi(3);
plVar3 = (longlong *)(*pcVar1)();
return plVar3;
}

View file

@ -0,0 +1,51 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003e60 FUN_140003e60
* Pseudocode, not original source. */
ulonglong * FUN_140003e60(ulonglong *param_1,void *param_2,ulonglong param_3)
{
ulonglong uVar1;
char cVar2;
ulonglong *puVar3;
if (param_2 != (void *)0x0) {
uVar1 = param_1[3];
puVar3 = param_1;
if (0xf < uVar1) {
puVar3 = (ulonglong *)*param_1;
}
if (puVar3 <= param_2) {
puVar3 = param_1;
if (0xf < uVar1) {
puVar3 = (ulonglong *)*param_1;
}
if (param_2 < (void *)((longlong)puVar3 + param_1[2])) {
puVar3 = param_1;
if (0xf < uVar1) {
puVar3 = (ulonglong *)*param_1;
}
puVar3 = (ulonglong *)
FUN_140003da0((longlong *)param_1,(longlong *)param_1,
(longlong)param_2 - (longlong)puVar3,param_3);
return puVar3;
}
}
}
cVar2 = FUN_140004140(param_1,param_3);
if (cVar2 != '\0') {
puVar3 = param_1;
if (0xf < param_1[3]) {
puVar3 = (ulonglong *)*param_1;
}
memcpy(puVar3,param_2,param_3);
param_1[2] = param_3;
puVar3 = param_1;
if (0xf < param_1[3]) {
puVar3 = (ulonglong *)*param_1;
}
*(undefined1 *)((longlong)puVar3 + param_3) = 0;
}
return param_1;
}

View file

@ -0,0 +1,48 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140003f30 FUN_140003f30
* Pseudocode, not original source. */
void FUN_140003f30(longlong *param_1,ulonglong param_2)
{
undefined8 *puVar1;
code *pcVar2;
longlong *plVar3;
longlong lVar4;
undefined8 *puVar5;
longlong *local_res10;
undefined **local_30 [3];
if (0x75075075075075 < param_2) {
std::_Xlength_error("vector<T> too long");
pcVar2 = (code *)swi(3);
(*pcVar2)();
return;
}
if ((ulonglong)((param_1[2] - *param_1) / 0x230) < param_2) {
local_res10 = (longlong *)0x0;
if ((param_2 != 0) &&
(local_res10 = operator_new(param_2 * 0x230), local_res10 == (longlong *)0x0)) {
std::exception::exception((exception *)local_30,(char **)&local_res10);
local_30[0] = std::bad_alloc::vftable;
/* WARNING: Subroutine does not return */
_CxxThrowException(local_30,(ThrowInfo *)&DAT_1401a9330);
}
plVar3 = local_res10;
FUN_140004660((longlong *)*param_1,(longlong *)param_1[1],local_res10);
puVar1 = (undefined8 *)param_1[1];
puVar5 = (undefined8 *)*param_1;
lVar4 = (longlong)puVar1 - (longlong)puVar5;
if (puVar5 != (undefined8 *)0x0) {
for (; puVar5 != puVar1; puVar5 = puVar5 + 0x46) {
FUN_1400036f0(puVar5);
}
operator_delete((void *)*param_1);
}
param_1[2] = (longlong)(plVar3 + param_2 * 0x46);
param_1[1] = (longlong)(plVar3 + (lVar4 / 0x230) * 0x46);
*param_1 = (longlong)plVar3;
}
return;
}

View file

@ -0,0 +1,43 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400040a0 FUN_1400040a0
* Pseudocode, not original source. */
longlong * FUN_1400040a0(longlong *param_1,ulonglong param_2,ulonglong param_3)
{
code *pcVar1;
longlong *plVar2;
longlong *plVar3;
ulonglong uVar4;
longlong lVar5;
if ((ulonglong)param_1[2] < param_2) {
std::_Xout_of_range("invalid string position");
pcVar1 = (code *)swi(3);
plVar2 = (longlong *)(*pcVar1)();
return plVar2;
}
uVar4 = param_1[2] - param_2;
if (uVar4 < param_3) {
param_3 = uVar4;
}
if (param_3 != 0) {
plVar2 = param_1;
plVar3 = param_1;
if (0xf < (ulonglong)param_1[3]) {
plVar2 = (longlong *)*param_1;
plVar3 = (longlong *)*param_1;
}
memmove((void *)((longlong)plVar2 + param_2),(void *)((longlong)plVar3 + param_3 + param_2),
uVar4 - param_3);
lVar5 = param_1[2] - param_3;
param_1[2] = lVar5;
if (0xf < (ulonglong)param_1[3]) {
*(undefined1 *)(*param_1 + lVar5) = 0;
return param_1;
}
*(undefined1 *)((longlong)param_1 + lVar5) = 0;
}
return param_1;
}

View file

@ -0,0 +1,30 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140004140 FUN_140004140
* Pseudocode, not original source. */
undefined1 FUN_140004140(undefined8 *param_1,ulonglong param_2)
{
code *pcVar1;
undefined1 uVar2;
if (param_2 == 0xffffffffffffffff) {
std::_Xlength_error("string too long");
pcVar1 = (code *)swi(3);
uVar2 = (*pcVar1)();
return uVar2;
}
if ((ulonglong)param_1[3] < param_2) {
FUN_1400041b0(param_1,param_2,param_1[2]);
return param_2 != 0;
}
if (param_2 == 0) {
param_1[2] = 0;
if (0xf < (ulonglong)param_1[3]) {
param_1 = (undefined8 *)*param_1;
}
*(undefined1 *)param_1 = 0;
}
return param_2 != 0;
}

View file

@ -0,0 +1,53 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400041b0 FUN_1400041b0
* Pseudocode, not original source. */
void FUN_1400041b0(undefined8 *param_1,ulonglong param_2,size_t param_3)
{
ulonglong uVar1;
undefined8 *_Dst;
ulonglong uVar2;
undefined8 *_Src;
ulonglong uVar3;
char *local_res20;
undefined **local_40 [4];
uVar3 = param_2 | 0xf;
if (uVar3 != 0xffffffffffffffff) {
uVar1 = param_1[3];
uVar2 = uVar1 >> 1;
param_2 = uVar3;
if ((uVar3 / 3 < uVar2) && (param_2 = 0xfffffffffffffffe, uVar1 <= -uVar2 - 2)) {
param_2 = uVar2 + uVar1;
}
}
_Dst = (undefined8 *)0x0;
if ((param_2 + 1 != 0) && (_Dst = operator_new(param_2 + 1), _Dst == (undefined8 *)0x0)) {
local_res20 = (char *)0x0;
std::exception::exception((exception *)local_40,&local_res20);
local_40[0] = std::bad_alloc::vftable;
/* WARNING: Subroutine does not return */
_CxxThrowException(local_40,(ThrowInfo *)&DAT_1401a9330);
}
if (param_3 != 0) {
_Src = param_1;
if (0xf < (ulonglong)param_1[3]) {
_Src = (undefined8 *)*param_1;
}
memcpy(_Dst,_Src,param_3);
}
if (0xf < (ulonglong)param_1[3]) {
operator_delete((void *)*param_1);
}
*(undefined1 *)param_1 = 0;
*param_1 = _Dst;
param_1[3] = param_2;
param_1[2] = param_3;
if (0xf < param_2) {
param_1 = _Dst;
}
*(undefined1 *)((longlong)param_1 + param_3) = 0;
return;
}

View file

@ -0,0 +1,22 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400042f0 FUN_1400042f0
* Pseudocode, not original source. */
void * FUN_1400042f0(__uint64 param_1)
{
void *pvVar1;
char *local_res8 [4];
undefined **local_28 [5];
pvVar1 = (void *)0x0;
if ((param_1 != 0) && (pvVar1 = operator_new(param_1), pvVar1 == (void *)0x0)) {
local_res8[0] = (char *)0x0;
std::exception::exception((exception *)local_28,local_res8);
local_28[0] = std::bad_alloc::vftable;
/* WARNING: Subroutine does not return */
_CxxThrowException(local_28,(ThrowInfo *)&DAT_1401a9330);
}
return pvVar1;
}

View file

@ -0,0 +1,78 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140004350 FUN_140004350
* Pseudocode, not original source. */
longlong * FUN_140004350(longlong *param_1,longlong *param_2)
{
param_1[3] = 0xf;
param_1[2] = 0;
*(undefined1 *)param_1 = 0;
FUN_140003da0(param_1,param_2,0,0xffffffffffffffff);
param_1[8] = 0xf;
param_1[7] = 0;
*(undefined1 *)(param_1 + 5) = 0;
FUN_140003da0(param_1 + 5,param_2 + 5,0,0xffffffffffffffff);
param_1[0xd] = 0xf;
param_1[0xc] = 0;
*(undefined1 *)(param_1 + 10) = 0;
FUN_140003da0(param_1 + 10,param_2 + 10,0,0xffffffffffffffff);
param_1[0x12] = 0xf;
param_1[0x11] = 0;
*(undefined1 *)(param_1 + 0xf) = 0;
FUN_140003da0(param_1 + 0xf,param_2 + 0xf,0,0xffffffffffffffff);
param_1[0x17] = 0xf;
param_1[0x16] = 0;
*(undefined1 *)(param_1 + 0x14) = 0;
FUN_140003da0(param_1 + 0x14,param_2 + 0x14,0,0xffffffffffffffff);
param_1[0x1c] = 0xf;
param_1[0x1b] = 0;
*(undefined1 *)(param_1 + 0x19) = 0;
FUN_140003da0(param_1 + 0x19,param_2 + 0x19,0,0xffffffffffffffff);
param_1[0x21] = 0xf;
param_1[0x20] = 0;
*(undefined1 *)(param_1 + 0x1e) = 0;
FUN_140003da0(param_1 + 0x1e,param_2 + 0x1e,0,0xffffffffffffffff);
param_1[0x26] = 0xf;
param_1[0x25] = 0;
*(undefined1 *)(param_1 + 0x23) = 0;
FUN_140003da0(param_1 + 0x23,param_2 + 0x23,0,0xffffffffffffffff);
param_1[0x2b] = 0xf;
param_1[0x2a] = 0;
*(undefined1 *)(param_1 + 0x28) = 0;
FUN_140003da0(param_1 + 0x28,param_2 + 0x28,0,0xffffffffffffffff);
*(int *)(param_1 + 0x2d) = (int)param_2[0x2d];
param_1[0x31] = 0xf;
param_1[0x30] = 0;
*(undefined1 *)(param_1 + 0x2e) = 0;
FUN_140003da0(param_1 + 0x2e,param_2 + 0x2e,0,0xffffffffffffffff);
param_1[0x36] = 0xf;
param_1[0x35] = 0;
*(undefined1 *)(param_1 + 0x33) = 0;
FUN_140003da0(param_1 + 0x33,param_2 + 0x33,0,0xffffffffffffffff);
param_1[0x3b] = 0xf;
param_1[0x3a] = 0;
*(undefined1 *)(param_1 + 0x38) = 0;
FUN_140003da0(param_1 + 0x38,param_2 + 0x38,0,0xffffffffffffffff);
*(char *)(param_1 + 0x3d) = (char)param_2[0x3d];
*(undefined1 *)((longlong)param_1 + 0x1e9) = *(undefined1 *)((longlong)param_2 + 0x1e9);
*(undefined1 *)((longlong)param_1 + 0x1ea) = *(undefined1 *)((longlong)param_2 + 0x1ea);
*(undefined1 *)((longlong)param_1 + 0x1eb) = *(undefined1 *)((longlong)param_2 + 0x1eb);
*(undefined1 *)((longlong)param_1 + 0x1ec) = *(undefined1 *)((longlong)param_2 + 0x1ec);
*(undefined1 *)((longlong)param_1 + 0x1ed) = *(undefined1 *)((longlong)param_2 + 0x1ed);
*(undefined1 *)((longlong)param_1 + 0x1ee) = *(undefined1 *)((longlong)param_2 + 0x1ee);
*(undefined1 *)((longlong)param_1 + 0x1ef) = *(undefined1 *)((longlong)param_2 + 0x1ef);
*(char *)(param_1 + 0x3e) = (char)param_2[0x3e];
*(undefined1 *)((longlong)param_1 + 0x1f1) = *(undefined1 *)((longlong)param_2 + 0x1f1);
*(undefined1 *)((longlong)param_1 + 0x1f2) = *(undefined1 *)((longlong)param_2 + 0x1f2);
*(undefined1 *)((longlong)param_1 + 499) = *(undefined1 *)((longlong)param_2 + 499);
*(undefined4 *)((longlong)param_1 + 500) = *(undefined4 *)((longlong)param_2 + 500);
*(int *)(param_1 + 0x3f) = (int)param_2[0x3f];
param_1[0x43] = 0xf;
param_1[0x42] = 0;
*(undefined1 *)(param_1 + 0x40) = 0;
FUN_140003da0(param_1 + 0x40,param_2 + 0x40,0,0xffffffffffffffff);
*(int *)(param_1 + 0x45) = (int)param_2[0x45];
return param_1;
}

View file

@ -0,0 +1,16 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140004660 FUN_140004660
* Pseudocode, not original source. */
longlong * FUN_140004660(longlong *param_1,longlong *param_2,longlong *param_3)
{
for (; param_1 != param_2; param_1 = param_1 + 0x46) {
if (param_3 != (longlong *)0x0) {
FUN_140004350(param_3,param_1);
}
param_3 = param_3 + 0x46;
}
return param_3;
}

View file

@ -0,0 +1,23 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400046c0 FUN_1400046c0
* Pseudocode, not original source. */
undefined8 *
FUN_1400046c0(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)
{
*param_1 = MagiMsgServer::vftable;
FUN_14006b400((undefined4 *)(param_1 + 0x10),param_2,param_3,param_4);
*param_1 = MagiServerBase::vftable;
if ((void *)param_1[2] != (void *)0x0) {
operator_delete((void *)param_1[2]);
}
param_1[2] = 0;
param_1[3] = 0;
param_1[4] = 0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}

View file

@ -0,0 +1,19 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140004740 FUN_140004740
* Pseudocode, not original source. */
void FUN_140004740(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
*param_1 = MagiMsgServer::vftable;
FUN_14006b400((undefined4 *)(param_1 + 0x10),param_2,param_3,param_4);
*param_1 = MagiServerBase::vftable;
if ((void *)param_1[2] != (void *)0x0) {
operator_delete((void *)param_1[2]);
}
param_1[2] = 0;
param_1[3] = 0;
param_1[4] = 0;
return;
}

View file

@ -0,0 +1,69 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400047a0 FUN_1400047a0
* Pseudocode, not original source. */
void FUN_1400047a0(LPCWSTR param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
longlong lVar1;
char *pcVar2;
undefined8 *puVar3;
undefined8 *puVar4;
undefined8 *puVar5;
wchar_t *pwVar6;
undefined8 uVar7;
if ((DAT_1401bd4f4 & 1) == 0) {
DAT_1401bd4f4 = DAT_1401bd4f4 | 1;
FUN_14011b100();
atexit((_func_5014 *)&LAB_14012f3d0);
if ((DAT_1401bd4f4 & 1) == 0) {
DAT_1401bd4f4 = DAT_1401bd4f4 | 1;
FUN_14011b100();
atexit((_func_5014 *)&LAB_14012f3d0);
}
}
if ((DAT_1401bd4a0 != 200) && (DAT_1401bd4a0 != 100)) {
if ((DAT_1401bd4f4 & 1) == 0) {
DAT_1401bd4f4 = DAT_1401bd4f4 | 1;
FUN_14011b100();
atexit((_func_5014 *)&LAB_14012f3d0);
}
if (DAT_1401bd4a0 != 1000) goto LAB_14000485b;
}
setlocale(0,"kor");
LAB_14000485b:
pcVar2 = setlocale(0,(char *)0x0);
printf("Locale is: %s\n");
FUN_14006fc10('\0');
puVar3 = operator_new(0xe8);
puVar5 = (undefined8 *)0x0;
puVar4 = puVar5;
if (puVar3 != (undefined8 *)0x0) {
puVar4 = FUN_14011b5d0(puVar3);
}
DAT_1401ba9e8 = puVar4;
FUN_14011b8a0((longlong)puVar4,pcVar2,param_3,param_4);
puVar4 = DAT_1401ba9e8;
EnterCriticalSection(DAT_1401bd028);
uVar7 = 0xc;
pwVar6 = L"Protocol_Msg";
FUN_140001830(puVar4 + 3,L"Protocol_Msg",0xc);
LeaveCriticalSection(DAT_1401bd028);
puVar3 = operator_new(0x98);
puVar4 = puVar5;
if (puVar3 != (undefined8 *)0x0) {
puVar4 = FUN_1401194b0(puVar3,pwVar6,uVar7,param_4);
}
DAT_1401bd030 = puVar4;
puVar4 = operator_new(8);
if (puVar4 != (undefined8 *)0x0) {
puVar5 = FUN_140063440(puVar4,pwVar6,uVar7,param_4);
}
lVar1 = DAT_1401bd038;
DAT_1401bd040 = puVar5;
*(undefined1 *)(DAT_1401bd038 + 0x1e8) = 6;
FUN_14005c7b0(lVar1,param_1,uVar7,param_4);
return;
}

View file

@ -0,0 +1,216 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140004960 FUN_140004960
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
undefined8 FUN_140004960(longlong param_1)
{
undefined1 uVar1;
longlong *plVar2;
longlong lVar3;
uint uVar4;
ushort uVar5;
int iVar6;
int iVar7;
longlong lVar8;
longlong lVar9;
ulonglong uVar10;
ulonglong uVar11;
undefined **ppuVar12;
longlong lVar13;
undefined1 auStack_e8 [32];
undefined8 local_c8;
undefined8 local_c0;
undefined8 local_b8;
undefined8 local_b0;
undefined8 local_a8;
undefined8 local_a0;
undefined8 local_98;
undefined8 local_90;
undefined8 local_88;
undefined8 local_80;
undefined4 local_78;
undefined8 local_68;
undefined1 local_60;
undefined7 uStack_5f;
undefined8 local_50;
ulonglong local_48;
ulonglong local_38;
local_68 = 0xfffffffffffffffe;
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_e8;
iVar6 = _kbhit();
if (iVar6 != 0) {
lVar13 = 0;
do {
iVar6 = _getch();
iVar6 = (int)(char)iVar6;
if (*(int *)(param_1 + 0x40) == 0) {
iVar7 = toupper(iVar6);
switch(iVar7) {
case 0x45:
DAT_1401bcf14 = 1;
printf("%s\n");
return 0;
case 0x46:
DAT_1401bcf10 = 1;
printf("%s\n");
break;
default:
printf("........... Message : Unknown Control Command.\n");
break;
case 0x4c:
*(undefined4 *)(param_1 + 0x40) = 1;
printf("%s\n");
break;
case 0x4d:
FUN_140062910(DAT_1401bd020);
lVar9 = DAT_1401bd020;
if (*(longlong *)(param_1 + 0x30) != 0) {
*(undefined1 *)(*(longlong *)(param_1 + 0x30) + 0x18) =
*(undefined1 *)(DAT_1401bd020 + 0x16);
}
uVar4 = DAT_1401bcf24;
plVar2 = *(longlong **)(param_1 + 0x60);
uVar11 = (ulonglong)DAT_1401bcf24;
if ((plVar2 != (longlong *)0x0) &&
(uVar1 = *(undefined1 *)(lVar9 + 8), lVar8 = lVar13, uVar10 = uVar11,
0 < (int)DAT_1401bcf24)) {
do {
lVar3 = *plVar2;
if (*(longlong *)(lVar8 + lVar3) != 0) {
*(undefined1 *)(*(longlong *)(lVar8 + lVar3) + 0x18) = uVar1;
}
uVar10 = uVar10 - 1;
lVar8 = lVar8 + 8;
} while (uVar10 != 0);
}
plVar2 = *(longlong **)(param_1 + 0x68);
if ((plVar2 != (longlong *)0x0) &&
(uVar1 = *(undefined1 *)(lVar9 + 9), lVar8 = lVar13, uVar10 = uVar11, 0 < (int)uVar4))
{
do {
lVar3 = *plVar2;
if (*(longlong *)(lVar8 + lVar3) != 0) {
*(undefined1 *)(*(longlong *)(lVar8 + lVar3) + 0x18) = uVar1;
}
uVar10 = uVar10 - 1;
lVar8 = lVar8 + 8;
} while (uVar10 != 0);
}
plVar2 = *(longlong **)(param_1 + 0x70);
if ((plVar2 != (longlong *)0x0) &&
(uVar1 = *(undefined1 *)(lVar9 + 10), lVar8 = lVar13, uVar10 = uVar11, 0 < (int)uVar4))
{
do {
lVar3 = *plVar2;
if (*(longlong *)(lVar8 + lVar3) != 0) {
*(undefined1 *)(*(longlong *)(lVar8 + lVar3) + 0x18) = uVar1;
}
uVar10 = uVar10 - 1;
lVar8 = lVar8 + 8;
} while (uVar10 != 0);
}
plVar2 = *(longlong **)(param_1 + 0x78);
if ((plVar2 != (longlong *)0x0) &&
(uVar1 = *(undefined1 *)(lVar9 + 0xb), lVar9 = lVar13, 0 < (int)uVar4)) {
do {
lVar8 = *plVar2;
if (*(longlong *)(lVar8 + lVar9) != 0) {
*(undefined1 *)(*(longlong *)(lVar8 + lVar9) + 0x18) = uVar1;
}
uVar11 = uVar11 - 1;
lVar9 = lVar9 + 8;
} while (uVar11 != 0);
}
printf("%s\n");
break;
case 0x50:
lVar9 = *(longlong *)(param_1 + 0x58);
if (lVar9 != 0) {
local_88 = 0;
local_c0 = 0;
local_c8 = 0;
local_b0 = 0;
local_b8 = 0;
local_90 = 0;
local_98 = 0;
local_a0 = 0;
local_a8 = 0;
local_80 = 0;
local_78 = 0;
if (*(longlong *)(lVar9 + 0x40) != 0) {
(**(code **)(**(longlong **)(lVar9 + 0x40) + 0xb0))
(*(longlong **)(lVar9 + 0x40),&local_c8);
printf("--------------------------------------------------\n");
printf("%I64d totalTcpReceiveCount\n");
printf("%I64d totalTcpReceiveBytes\n");
printf("%I64d totalTcpSendCount\n");
printf("%I64d totalTcpSendBytes\n");
printf("%d p2pConnectionPairCount\n");
printf("%d p2pDirectConnectionPairCount\n");
printf("%d clientCount\n");
printf("--------------------------------------------------\n");
}
}
printf("%s\n");
break;
case 0x52:
DAT_1401bcf18 = (uint)(DAT_1401bcf18 == 0);
printf("%s %s\n");
break;
case 0x54:
DAT_1401bcf0f = DAT_1401bcf0f == '\0';
printf("%s %s\n");
break;
case 0x56:
if ((DAT_1401bd4f4 & 1) == 0) {
DAT_1401bd4f4 = DAT_1401bd4f4 | 1;
FUN_14011b100();
atexit((_func_5014 *)&LAB_14012f3d0);
}
FUN_140119840();
printf("%s\n");
}
}
else {
iVar7 = toupper(iVar6);
if (iVar7 == 0x55) {
*(undefined4 *)(param_1 + 0x40) = 0;
printf("%s\n");
ppuVar12 = &PTR_s_Server_Shutdown__1401b3458;
do {
uVar5 = GetAsyncKeyState(0xa0);
if (((uVar5 & 0x8001) != 0) || (*(char *)(ppuVar12 + 1) == '\0')) {
printf(" \'%c\'\t: %s\n");
}
ppuVar12 = ppuVar12 + 3;
} while ((longlong)ppuVar12 < 0x1401b3548);
}
}
iVar6 = toupper(iVar6);
if (iVar6 == 0x49) {
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
GetCurrentProcessId();
printf("ProcessID : %d\n");
printf("SVN : %d\n");
printf("Resource : %d\n");
printf("Build Date : %s\n");
FUN_140118c70((ulonglong *)&local_60);
printf("PROTOCOL : %s\n");
if (0xf < local_48) {
operator_delete((void *)CONCAT71(uStack_5f,local_60));
}
local_48 = 0xf;
local_50 = 0;
local_60 = 0;
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
}
iVar6 = _kbhit();
} while (iVar6 != 0);
}
return 2;
}

View file

@ -0,0 +1,935 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140004f00 FUN_140004f00
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
undefined8 FUN_140004f00(longlong param_1,undefined8 param_2,undefined *param_3,char *param_4)
{
longlong *plVar1;
double dVar2;
undefined1 auVar3 [16];
undefined1 auVar4 [16];
undefined1 auVar5 [16];
undefined1 auVar6 [16];
bool bVar7;
_Container_base0 *p_Var8;
DWORD DVar9;
DWORD DVar10;
int iVar11;
_Container_base0 *p_Var12;
_Container_base0 *p_Var13;
ulonglong uVar14;
undefined8 *puVar15;
undefined8 uVar16;
longlong *plVar17;
longlong *plVar18;
longlong *plVar19;
longlong *plVar20;
char *pcVar21;
longlong lVar22;
short **ppsVar23;
char *_Src;
undefined *puVar24;
char *pcVar25;
undefined *puVar26;
char *pcVar27;
longlong lVar28;
undefined4 uVar29;
undefined4 uVar30;
undefined4 uVar31;
undefined4 uVar32;
undefined4 uVar33;
undefined1 auStack_488 [32];
longlong *local_468;
longlong *local_460;
_Container_base0 *local_458;
_Container_base0 *local_450;
_Container_base0 *local_448;
longlong *local_440;
longlong local_438;
_Container_base0 *local_430;
longlong *local_428;
longlong *local_420;
undefined4 local_418 [2];
undefined4 local_410 [2];
undefined4 local_408 [2];
void *local_400;
longlong local_3f8;
undefined8 local_3f0;
undefined8 *local_3e0;
undefined8 *local_3d8;
undefined8 *local_3d0;
undefined8 *local_3c8;
undefined8 *local_3c0;
undefined8 *local_3b8;
undefined8 *local_3b0;
undefined8 *local_3a8;
undefined8 *local_3a0;
_Container_base0 *local_398;
undefined1 local_390;
int *local_388;
undefined1 local_380;
char *local_378;
DWORD local_370;
undefined8 local_368;
char *local_360;
DWORD local_358;
undefined2 local_348;
undefined1 local_346 [158];
undefined1 local_2a8 [160];
short *local_208;
undefined2 local_200;
undefined6 uStack_1fe;
undefined8 local_1f0;
ulonglong local_1e8;
undefined2 local_1d8;
undefined6 uStack_1d6;
undefined8 local_1c8;
ulonglong local_1c0;
short *local_1a8;
undefined2 local_1a0;
undefined6 uStack_19e;
undefined8 local_190;
ulonglong local_188;
undefined2 local_178;
undefined6 uStack_176;
undefined8 local_168;
ulonglong local_160;
short *local_148;
undefined2 local_140;
undefined6 uStack_13e;
undefined8 local_130;
ulonglong local_128;
undefined2 local_118;
undefined6 uStack_116;
undefined8 local_108;
ulonglong local_100;
short *local_e8;
undefined2 local_e0;
undefined6 uStack_de;
undefined8 local_d0;
ulonglong local_c8;
undefined2 local_b8;
undefined6 uStack_b6;
undefined8 local_a8;
ulonglong local_a0;
ulonglong local_88;
local_368 = 0xfffffffffffffffe;
local_88 = DAT_1401ac5a0 ^ (ulonglong)auStack_488;
local_438 = param_1;
FUN_14000a810(L"# Msg Server Startup #\n\n",param_2,param_3,param_4);
CoInitialize((LPVOID)0x0);
FUN_14000a950(L"+ Prepare Startup\n",param_2,param_3,param_4);
local_428 = operator_new(0x148);
p_Var13 = (_Container_base0 *)0x0;
p_Var12 = p_Var13;
if (local_428 != (undefined8 *)0x0) {
p_Var12 = (_Container_base0 *)FUN_140006690(local_428,param_2,param_3,param_4);
}
if (p_Var12 == (_Container_base0 *)0x0) {
local_440 = (longlong *)0x0;
}
else {
local_440 = (longlong *)FUN_14006cbf0(0x10);
local_440[1] = 1;
*local_440 = (longlong)p_Var12;
}
local_448 = operator_new(0xf0);
p_Var12 = p_Var13;
if (local_448 != (_Container_base0 *)0x0) {
if ((local_440 != (longlong *)0x0) && (*local_440 != 0)) {
p_Var12 = (_Container_base0 *)(*local_440 + 0x28);
}
p_Var12 = (_Container_base0 *)FUN_140064310((undefined8 *)local_448,p_Var12,param_3,param_4);
}
if (p_Var12 == (_Container_base0 *)0x0) {
local_458 = (_Container_base0 *)0x0;
}
else {
p_Var13 = (_Container_base0 *)FUN_14006cbf0(0x48);
local_448 = p_Var13;
local_430 = p_Var13;
if (p_Var13 != (_Container_base0 *)0x0) {
uVar14 = FUN_140079250();
param_3 = (undefined *)CONCAT71((int7)((ulonglong)param_3 >> 8),1);
FUN_14006b270((undefined4 *)p_Var13,uVar14 & 0xffffffff,param_3,param_4);
}
local_458 = p_Var13;
FUN_14006b350((int *)p_Var13);
*(longlong *)(p_Var13 + 0x40) = 1;
*(_Container_base0 **)(p_Var13 + 0x38) = p_Var12;
FUN_14006b3e0((longlong)p_Var13);
}
puVar15 = operator_new(0x20);
if (puVar15 == (undefined8 *)0x0) {
local_468 = (longlong *)0x0;
}
else {
*puVar15 = 0;
puVar15[1] = 0;
puVar15[2] = 0;
local_468 = (longlong *)FUN_14006cbf0(0x10);
local_468[1] = 1;
*local_468 = (longlong)puVar15;
}
plVar17 = local_468;
local_420 = local_468;
puVar15 = operator_new(0x20);
if (puVar15 == (undefined8 *)0x0) {
local_460 = (longlong *)0x0;
}
else {
*puVar15 = 0;
puVar15[1] = 0;
puVar15[2] = 0;
local_460 = (longlong *)FUN_14006cbf0(0x10);
local_460[1] = 1;
*local_460 = (longlong)puVar15;
}
plVar20 = local_460;
local_430 = (_Container_base0 *)local_460;
puVar15 = operator_new(0x20);
if (puVar15 == (undefined8 *)0x0) {
local_450 = (_Container_base0 *)0x0;
}
else {
*puVar15 = 0;
puVar15[1] = 0;
puVar15[2] = 0;
local_450 = (_Container_base0 *)FUN_14006cbf0(0x10);
*(longlong *)(local_450 + 8) = 1;
*(undefined8 **)local_450 = puVar15;
}
p_Var12 = local_450;
local_448 = local_450;
puVar15 = operator_new(0x20);
if (puVar15 == (undefined8 *)0x0) {
local_428 = (longlong *)0x0;
}
else {
*puVar15 = 0;
puVar15[1] = 0;
puVar15[2] = 0;
local_428 = (longlong *)FUN_14006cbf0(0x10);
local_428[1] = 1;
*local_428 = (longlong)puVar15;
}
plVar1 = local_428;
lVar22 = 0;
lVar28 = lVar22;
if (p_Var13 != (_Container_base0 *)0x0) {
lVar28 = *(longlong *)(p_Var13 + 0x38);
}
*(longlong *)(param_1 + 0x30) = lVar28;
lVar28 = lVar22;
if (local_440 != (longlong *)0x0) {
lVar28 = *local_440;
}
*(longlong *)(param_1 + 0x58) = lVar28;
lVar28 = lVar22;
if (plVar17 != (longlong *)0x0) {
lVar28 = *plVar17;
}
*(longlong *)(param_1 + 0x60) = lVar28;
lVar28 = lVar22;
if (plVar20 != (longlong *)0x0) {
lVar28 = *plVar20;
}
*(longlong *)(param_1 + 0x68) = lVar28;
lVar28 = lVar22;
if (p_Var12 != (_Container_base0 *)0x0) {
lVar28 = *(longlong *)p_Var12;
}
*(longlong *)(param_1 + 0x70) = lVar28;
lVar28 = lVar22;
if (local_428 != (longlong *)0x0) {
lVar28 = *local_428;
}
*(longlong *)(param_1 + 0x78) = lVar28;
local_408[0] = 1;
*(undefined4 *)(param_1 + 8) = 1;
printf("STEP : AGENT \n");
lVar28 = *(longlong *)(param_1 + 0x30);
if ((lVar28 != 0) && (*(char *)(lVar28 + 0x1a) != '\0')) {
param_4 = (char *)local_408;
param_3 = &DAT_1401ac5d0;
lVar22 = 1;
(**(code **)(*(longlong *)(lVar28 + 0x68) + 0xb0))();
}
if ((*(longlong *)(param_1 + 0x30) == 0) ||
(uVar16 = FUN_140064850(*(longlong *)(param_1 + 0x30),lVar22,param_3,(longlong)param_4),
plVar19 = local_428, (char)uVar16 != '\0')) {
FUN_140009330(*(ulonglong **)(param_1 + 0x60),*(uint *)(DAT_1401bd038 + 0x144),0xc,
(longlong)param_4);
FUN_140009330(*(ulonglong **)(param_1 + 0x68),*(uint *)(DAT_1401bd038 + 0x144),0x11,
(longlong)param_4);
FUN_140009330(*(ulonglong **)(param_1 + 0x70),*(uint *)(DAT_1401bd038 + 0x144),0x12,
(longlong)param_4);
uVar16 = 0x13;
ppsVar23 = (short **)(ulonglong)*(uint *)(DAT_1401bd038 + 0x144);
FUN_140009330(*(ulonglong **)(param_1 + 0x78),*(uint *)(DAT_1401bd038 + 0x144),0x13,
(longlong)param_4);
FUN_140006b20(*(longlong *)(param_1 + 0x58),ppsVar23,uVar16,(longlong)param_4);
*(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0xa0) = *(undefined8 *)(param_1 + 0x30);
local_418[0] = 3;
*(undefined4 *)(param_1 + 8) = 3;
printf("STEP : DB_LOAD \n");
lVar28 = *(longlong *)(param_1 + 0x30);
if ((lVar28 != 0) && (*(char *)(lVar28 + 0x1a) != '\0')) {
param_4 = (char *)local_418;
ppsVar23 = (short **)0x1;
(**(code **)(*(longlong *)(lVar28 + 0x68) + 0xb0))
((longlong *)(lVar28 + 0x68),1,&DAT_1401ac5d0);
}
local_410[0] = 4;
*(undefined4 *)(param_1 + 8) = 4;
printf("STEP : SESSION_CONNECT \n");
lVar28 = *(longlong *)(param_1 + 0x30);
if ((lVar28 != 0) && (*(char *)(lVar28 + 0x1a) != '\0')) {
param_4 = (char *)local_410;
ppsVar23 = (short **)0x1;
(**(code **)(*(longlong *)(lVar28 + 0x68) + 0xb0))
((longlong *)(lVar28 + 0x68),1,&DAT_1401ac5d0);
}
local_e8 = (short *)0x0;
local_c8 = 7;
local_d0 = 0;
local_e0 = 0;
local_a0 = 7;
local_a8 = 0;
local_b8 = 0;
if (*(longlong *)(DAT_1401bd038 + 0x1c8) != 0) {
auVar3._8_8_ = 0;
auVar3._0_8_ = *(ulonglong *)(DAT_1401bd038 + 0x1b0);
ppsVar23 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xc)) % auVar3,0);
local_3e0 = (undefined8 *)(*(longlong *)(DAT_1401bd038 + 0x1a8) + (longlong)ppsVar23 * 8);
for (local_3d8 = (undefined8 *)*local_3e0; local_3d8 != (undefined8 *)0x0;
local_3d8 = (undefined8 *)*local_3d8) {
if (*(char *)(local_3d8 + 1) == '\f') {
if (local_3d8 != (undefined8 *)0x0) goto LAB_140005542;
break;
}
}
}
local_3e0 = (undefined8 *)0x0;
local_3d8 = (undefined8 *)0x0;
LAB_140005542:
if ((local_3d8 != (undefined8 *)0x0) &&
(puVar15 = (undefined8 *)local_3d8[2], puVar15 != (undefined8 *)local_3d8[3])) {
local_e8 = (short *)*puVar15;
FUN_140001750((longlong *)&local_e0,puVar15 + 1,0,0xffffffffffffffff);
param_4 = (char *)0xffffffffffffffff;
uVar14 = 0;
FUN_140001750((longlong *)&local_b8,puVar15 + 6,0,0xffffffffffffffff);
plVar19 = (longlong *)0x0;
plVar18 = plVar19;
if (plVar17 != (longlong *)0x0) {
plVar18 = (longlong *)*plVar17;
}
ppsVar23 = &local_e8;
FUN_1400096b0(plVar18,ppsVar23,uVar14,param_4);
if (plVar17 != (longlong *)0x0) {
plVar19 = (longlong *)*plVar17;
}
FUN_140009b10(plVar19,(wchar_t *)ppsVar23,uVar14,param_4);
}
if (7 < local_a0) {
operator_delete((void *)CONCAT62(uStack_b6,local_b8));
}
local_a0 = 7;
local_a8 = 0;
local_b8 = 0;
if (7 < local_c8) {
operator_delete((void *)CONCAT62(uStack_de,local_e0));
}
local_c8 = 7;
local_d0 = 0;
local_e0 = 0;
local_1a8 = (short *)0x0;
local_188 = 7;
local_190 = 0;
local_1a0 = 0;
local_160 = 7;
local_168 = 0;
local_178 = 0;
if (*(longlong *)(DAT_1401bd038 + 0x1c8) != 0) {
auVar4._8_8_ = 0;
auVar4._0_8_ = *(ulonglong *)(DAT_1401bd038 + 0x1b0);
ppsVar23 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x11)) % auVar4,0);
local_3a8 = (undefined8 *)(*(longlong *)(DAT_1401bd038 + 0x1a8) + (longlong)ppsVar23 * 8);
for (local_3a0 = (undefined8 *)*local_3a8; local_3a0 != (undefined8 *)0x0;
local_3a0 = (undefined8 *)*local_3a0) {
if (*(char *)(local_3a0 + 1) == '\x11') {
if (local_3a0 != (undefined8 *)0x0) goto LAB_1400056c2;
break;
}
}
}
local_3a8 = (undefined8 *)0x0;
local_3a0 = (undefined8 *)0x0;
LAB_1400056c2:
if ((local_3a0 != (undefined8 *)0x0) &&
(puVar15 = (undefined8 *)local_3a0[2], puVar15 != (undefined8 *)local_3a0[3])) {
local_1a8 = (short *)*puVar15;
FUN_140001750((longlong *)&local_1a0,puVar15 + 1,0,0xffffffffffffffff);
param_4 = (char *)0xffffffffffffffff;
uVar14 = 0;
FUN_140001750((longlong *)&local_178,puVar15 + 6,0,0xffffffffffffffff);
plVar17 = (longlong *)0x0;
plVar19 = plVar17;
if (plVar20 != (longlong *)0x0) {
plVar19 = (longlong *)*plVar20;
}
ppsVar23 = &local_1a8;
FUN_1400096b0(plVar19,ppsVar23,uVar14,param_4);
if (plVar20 != (longlong *)0x0) {
plVar17 = (longlong *)*plVar20;
}
FUN_140009b10(plVar17,(wchar_t *)ppsVar23,uVar14,param_4);
}
if (7 < local_160) {
operator_delete((void *)CONCAT62(uStack_176,local_178));
}
local_160 = 7;
local_168 = 0;
local_178 = 0;
if (7 < local_188) {
operator_delete((void *)CONCAT62(uStack_19e,local_1a0));
}
local_188 = 7;
local_190 = 0;
local_1a0 = 0;
local_208 = (short *)0x0;
local_1e8 = 7;
local_1f0 = 0;
local_200 = 0;
local_1c0 = 7;
local_1c8 = 0;
local_1d8 = 0;
if (*(longlong *)(DAT_1401bd038 + 0x1c8) != 0) {
auVar5._8_8_ = 0;
auVar5._0_8_ = *(ulonglong *)(DAT_1401bd038 + 0x1b0);
ppsVar23 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x12)) % auVar5,0);
local_3b8 = (undefined8 *)(*(longlong *)(DAT_1401bd038 + 0x1a8) + (longlong)ppsVar23 * 8);
for (local_3b0 = (undefined8 *)*local_3b8; local_3b0 != (undefined8 *)0x0;
local_3b0 = (undefined8 *)*local_3b0) {
if (*(char *)(local_3b0 + 1) == '\x12') {
if (local_3b0 != (undefined8 *)0x0) goto LAB_140005842;
break;
}
}
}
local_3b8 = (undefined8 *)0x0;
local_3b0 = (undefined8 *)0x0;
LAB_140005842:
if ((local_3b0 != (undefined8 *)0x0) &&
(puVar15 = (undefined8 *)local_3b0[2], puVar15 != (undefined8 *)local_3b0[3])) {
local_208 = (short *)*puVar15;
FUN_140001750((longlong *)&local_200,puVar15 + 1,0,0xffffffffffffffff);
param_4 = (char *)0xffffffffffffffff;
uVar16 = 0;
FUN_140001750((longlong *)&local_1d8,puVar15 + 6,0,0xffffffffffffffff);
plVar17 = (longlong *)0x0;
plVar20 = plVar17;
if (p_Var12 != (_Container_base0 *)0x0) {
plVar20 = *(longlong **)p_Var12;
}
ppsVar23 = &local_208;
FUN_1400096b0(plVar20,ppsVar23,uVar16,param_4);
if (p_Var12 != (_Container_base0 *)0x0) {
plVar17 = *(longlong **)p_Var12;
}
FUN_140009890(plVar17,(undefined **)ppsVar23,uVar16,param_4);
}
if (7 < local_1c0) {
operator_delete((void *)CONCAT62(uStack_1d6,local_1d8));
}
local_1c0 = 7;
local_1c8 = 0;
local_1d8 = 0;
if (7 < local_1e8) {
operator_delete((void *)CONCAT62(uStack_1fe,local_200));
}
local_1e8 = 7;
local_1f0 = 0;
local_200 = 0;
local_148 = (short *)0x0;
local_128 = 7;
local_130 = 0;
local_140 = 0;
local_100 = 7;
local_108 = 0;
local_118 = 0;
if (*(longlong *)(DAT_1401bd038 + 0x1c8) != 0) {
auVar6._8_8_ = 0;
auVar6._0_8_ = *(ulonglong *)(DAT_1401bd038 + 0x1b0);
ppsVar23 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x13)) % auVar6,0);
local_3d0 = (undefined8 *)(*(longlong *)(DAT_1401bd038 + 0x1a8) + (longlong)ppsVar23 * 8);
for (local_3c8 = (undefined8 *)*local_3d0; local_3c8 != (undefined8 *)0x0;
local_3c8 = (undefined8 *)*local_3c8) {
if (*(char *)(local_3c8 + 1) == '\x13') {
if (local_3c8 != (undefined8 *)0x0) goto LAB_1400059c2;
break;
}
}
}
local_3d0 = (undefined8 *)0x0;
local_3c8 = (undefined8 *)0x0;
LAB_1400059c2:
if ((local_3c8 != (undefined8 *)0x0) &&
(puVar15 = (undefined8 *)local_3c8[2], puVar15 != (undefined8 *)local_3c8[3])) {
local_148 = (short *)*puVar15;
FUN_140001750((longlong *)&local_140,puVar15 + 1,0,0xffffffffffffffff);
param_4 = (char *)0xffffffffffffffff;
uVar16 = 0;
FUN_140001750((longlong *)&local_118,puVar15 + 6,0,0xffffffffffffffff);
plVar17 = (longlong *)0x0;
plVar20 = plVar17;
if (plVar1 != (longlong *)0x0) {
plVar20 = (longlong *)*plVar1;
}
ppsVar23 = &local_148;
FUN_1400096b0(plVar20,ppsVar23,uVar16,param_4);
if (plVar1 != (longlong *)0x0) {
plVar17 = (longlong *)*plVar1;
}
FUN_140009890(plVar17,(undefined **)ppsVar23,uVar16,param_4);
}
plVar17 = (longlong *)0x0;
uVar14 = local_100;
if (7 < local_100) {
operator_delete((void *)CONCAT62(uStack_116,local_118));
uVar14 = local_100;
}
local_100 = 7;
local_108 = 0;
local_118 = 0;
if (7 < local_128) {
operator_delete((void *)CONCAT62(uStack_13e,local_140));
}
local_128 = 7;
local_130 = 0;
local_140 = 0;
*(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0x80) = *(undefined8 *)(param_1 + 0x60);
*(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0x88) = *(undefined8 *)(param_1 + 0x68);
*(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0x90) = *(undefined8 *)(param_1 + 0x70);
*(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0x98) = *(undefined8 *)(param_1 + 0x78);
FUN_14000a810(L"\n",ppsVar23,uVar14,param_4);
FUN_14000a810(L"# Msg Server Running... #\n",ppsVar23,uVar14,param_4);
puVar15 = operator_new(0x18);
if (puVar15 != (undefined8 *)0x0) {
plVar17 = FUN_140118ee0(puVar15);
}
plVar20 = DAT_1401bd030;
if ((undefined8 *)DAT_1401bd030[2] != (undefined8 *)0x0) {
(*(code *)**(undefined8 **)DAT_1401bd030[2])();
}
plVar20[2] = (longlong)plVar17;
if (plVar17 != (longlong *)0x0) {
lVar28 = (**(code **)(*plVar17 + 8))(plVar17);
plVar20[6] = lVar28;
plVar20[7] = lVar28;
}
plVar20[0x12] = 0x3ff0000000000000;
puVar15 = operator_new(0x28);
local_3c0 = puVar15;
if (puVar15 == (undefined8 *)0x0) {
puVar15 = (undefined8 *)0x0;
}
else {
*puVar15 = Magi::Timer::vftable;
plVar17 = DAT_1401bd030;
puVar15[1] = DAT_1401bd030;
puVar15[2] = 0;
puVar15[3] = 0;
*(undefined1 *)(puVar15 + 4) = 0;
*(undefined4 *)((longlong)puVar15 + 0x24) = 0x3f800000;
(**(code **)(*plVar17 + 0x10))();
}
lVar28 = local_438;
*(undefined8 **)(local_438 + 0x48) = puVar15;
local_348 = 0;
memset(local_346,0,0x9e);
puVar26 = (undefined *)0xa0;
memset(local_2a8,0,0xa0);
uVar29 = 0;
uVar30 = 0;
_Src = (char *)0x0;
if (p_Var13 != (_Container_base0 *)0x0) {
_Src = *(char **)(p_Var13 + 0x38);
}
FUN_140001cd0(lVar28,_Src);
plVar17 = (longlong *)(lVar28 + 0x60);
lVar22 = 4;
do {
iVar11 = *(int *)(DAT_1401bd038 + 0x144);
pcVar25 = (char *)0x0;
if (0 < (longlong)iVar11) {
do {
if ((longlong *)*plVar17 != (longlong *)0x0) {
_Src = *(char **)(*(longlong *)*plVar17 + (longlong)pcVar25 * 8);
FUN_140001cd0(lVar28,_Src);
}
pcVar25 = pcVar25 + 1;
} while ((longlong)pcVar25 < (longlong)iVar11);
}
plVar17 = plVar17 + 1;
lVar22 = lVar22 + -1;
} while (lVar22 != 0);
local_3c0 = (undefined8 *)CONCAT44(local_3c0._4_4_,5);
*(undefined4 *)(lVar28 + 8) = 5;
if (DAT_1401bcf04 != 0) {
printf("********************************\n");
DVar9 = timeGetTime();
_Src = (char *)((ulonglong)(DVar9 - DAT_1401bcf04) / 1000);
printf("** Server Load Time : %u sec\n");
printf("********************************\n");
}
printf("STEP : SERVER_RUN \n");
lVar22 = *(longlong *)(lVar28 + 0x30);
if ((lVar22 != 0) && (*(char *)(lVar22 + 0x1a) != '\0')) {
param_4 = (char *)&local_3c0;
puVar26 = &DAT_1401ac5d0;
_Src = (char *)0x1;
(**(code **)(*(longlong *)(lVar22 + 0x68) + 0xb0))();
}
puVar15 = (undefined8 *)(lVar28 + 0x60);
pcVar25 = (char *)0x0;
uVar31 = uVar29;
uVar33 = uVar30;
while ((DAT_1401bcf14 == 0 && (*(char *)(*(longlong *)(lVar28 + 0x58) + 0x30) == '\0'))) {
if (*(char *)(*(longlong *)(lVar28 + 0x58) + 0x34) != '\0') {
lVar22 = *(longlong *)(lVar28 + 0x30);
if (lVar22 != 0) {
printf("Server Lock Check Succeed !!!\n");
puVar26 = &DAT_1401ac5d0;
_Src = (char *)0x1;
(**(code **)(*(longlong *)(lVar22 + 0x68) + 0x70))();
}
*(undefined1 *)(*(longlong *)(lVar28 + 0x58) + 0x34) = 0;
}
FUN_1401192a0((longlong)DAT_1401bd030);
dVar2 = *(double *)(*(longlong *)(lVar28 + 0x48) + 0x10);
local_360 = "DBCSessionManager->Process";
DVar9 = timeGetTime();
local_358 = DVar9;
if ((longlong *)*puVar15 != (longlong *)0x0) {
FUN_140009500((longlong *)*puVar15,dVar2);
}
if (*(longlong **)(lVar28 + 0x68) != (longlong *)0x0) {
FUN_140009500(*(longlong **)(lVar28 + 0x68),dVar2);
}
DVar10 = timeGetTime();
if (0x32 < DVar10 - DVar9) {
param_4 = "DBCSessionManager->Process";
puVar26 = (undefined *)(ulonglong)(DVar10 - DVar9);
_Src = "% 9d [ ms ] %s\n";
FUN_14011b2e0(DAT_1401ba9e8,"% 9d [ ms ] %s\n",puVar26,"DBCSessionManager->Process");
}
local_378 = "AgentSession->Process";
local_370 = timeGetTime();
if ((*(longlong *)(lVar28 + 0x30) != 0) &&
(_Src = DAT_1401bd038, DAT_1401bd038[0x150] != '\0')) {
FUN_140002540(*(longlong *)(lVar28 + 0x30),dVar2);
lVar22 = *(longlong *)(lVar28 + 0x30);
if ((lVar22 != 0) &&
((*(char *)(lVar22 + 0x1a) != '\0' && (*(double *)(lVar28 + 0x38) + 1.0 <= dVar2)))) {
*(double *)(lVar28 + 0x38) = dVar2;
FUN_140064b50(lVar22,*(undefined4 *)(*(longlong *)(lVar28 + 0x58) + 0x10c));
}
local_400 = (void *)0x0;
local_3f8 = 0;
local_3f0 = 0;
lVar22 = *(longlong *)(lVar28 + 0x30);
local_388 = (int *)(lVar22 + 0xb8);
FUN_14006b350(local_388);
local_380 = 1;
FUN_140064d80((longlong *)&local_400,(longlong *)(lVar22 + 0x98));
_Src = *(char **)(lVar22 + 0xa0);
pcVar21 = *(char **)(lVar22 + 0x98);
if (pcVar21 != _Src) {
puVar26 = (undefined *)0x0;
memmove(pcVar21,_Src,0);
*(char **)(lVar22 + 0xa0) = pcVar21;
lVar28 = local_438;
}
FUN_14006b3e0((longlong)local_388);
local_380 = 0;
pcVar21 = pcVar25;
pcVar27 = pcVar25;
if (local_3f8 - (longlong)local_400 >> 2 != 0) {
do {
param_4 = (char *)(ulonglong)*(uint *)((longlong)local_400 + (longlong)pcVar21);
iVar11 = (int)(*(longlong *)(lVar28 + 0x18) - *(longlong *)(lVar28 + 0x10) >> 3);
puVar26 = (undefined *)(longlong)iVar11;
_Src = pcVar25;
if (0 < iVar11) {
plVar17 = *(longlong **)(lVar28 + 0x10);
do {
if ((*plVar17 != 0) &&
(*(uint *)(*plVar17 + 0x3c) == *(uint *)((longlong)local_400 + (longlong)pcVar21)
)) {
*(undefined1 *)((*(longlong **)(lVar28 + 0x10))[(longlong)_Src] + 0x1c) = 1;
break;
}
_Src = _Src + 1;
plVar17 = plVar17 + 1;
} while ((longlong)_Src < (longlong)puVar26);
}
pcVar27 = (char *)(ulonglong)((int)pcVar27 + 1);
pcVar21 = pcVar21 + 4;
} while (pcVar27 < (char *)(local_3f8 - (longlong)local_400 >> 2));
}
if (local_400 != (void *)0x0) {
std::_Container_base0::_Orphan_all((_Container_base0 *)&local_400);
operator_delete(local_400);
}
local_400 = (void *)0x0;
local_3f8 = 0;
local_3f0 = 0;
}
DVar9 = timeGetTime();
if (0x32 < DVar9 - local_370) {
param_4 = "AgentSession->Process";
puVar26 = (undefined *)(ulonglong)(DVar9 - local_370);
_Src = "% 9d [ ms ] %s\n";
FUN_14011b2e0(DAT_1401ba9e8,"% 9d [ ms ] %s\n",puVar26,"AgentSession->Process");
}
if (DAT_1401bcf0f != '\0') {
printf("RetryConnectSession\n");
iVar11 = (int)(*(longlong *)(lVar28 + 0x18) - *(longlong *)(lVar28 + 0x10) >> 3);
_Src = (char *)(longlong)iVar11;
pcVar21 = pcVar25;
if (0 < iVar11) {
do {
if (*(longlong *)(*(longlong *)(lVar28 + 0x10) + (longlong)pcVar21 * 8) != 0) {
*(undefined1 *)
(*(longlong *)(*(longlong *)(lVar28 + 0x10) + (longlong)pcVar21 * 8) + 0x1c) = 1;
}
pcVar21 = pcVar21 + 1;
} while ((longlong)pcVar21 < (longlong)_Src);
}
DAT_1401bcf0f = DAT_1401bcf0f == '\0';
}
uVar32 = (undefined4)((ulonglong)dVar2 >> 0x20);
if (0.10000000149011612 <= dVar2 - (double)CONCAT44(uVar33,uVar31)) {
DAT_1401bcf1c = DAT_1401bcf1c + 1;
FUN_140004960(lVar28);
uVar31 = SUB84(dVar2,0);
uVar33 = uVar32;
}
if (1.0 <= dVar2 - (double)CONCAT44(uVar30,uVar29)) {
if (DAT_1401bcf18 != 0) {
puVar26 = (undefined *)(ulonglong)*(uint *)(*(longlong *)(lVar28 + 0x58) + 0x10c);
_Src = (char *)(ulonglong)DAT_1401bcf1c;
printf("FPS : [%d], Connect[%d]\n");
}
DAT_1401bcf20 = DAT_1401bcf1c;
DAT_1401bcf1c = 0;
uVar29 = SUB84(dVar2,0);
uVar30 = uVar32;
}
if (DAT_1401bcf10 != 0) {
DAT_1401bcf10 = 0;
wprintf(L"-MSG SERVER [CODE:%d]----------------------------------------------------\n",
(ulonglong)*(uint *)(DAT_1401bd038 + 0x154));
lVar22 = *(longlong *)(lVar28 + 0x58);
puVar24 = *(undefined **)(lVar22 + 0x48);
if (*(undefined **)(lVar22 + 0x48) == (undefined *)0x0) {
puVar24 = PTR_DAT_1401ac010;
}
puVar26 = (undefined *)(ulonglong)*(uint *)(lVar22 + 0x50);
wprintf(L"PRIVATE NETWORK : ADDRESS[ %s ] PORT[ %d ]\n",puVar24);
_Src = (char *)(ulonglong)*(uint *)(lVar22 + 0x54);
if ((0 < (int)*(uint *)(lVar22 + 0x54)) &&
(puVar26 = (undefined *)(ulonglong)*(uint *)(lVar22 + 0x58),
*(uint *)(lVar22 + 0x58) != 0)) {
wprintf(L"UDP : PORT [ %d ] COUNT [ %d ]\n");
}
FUN_140001d70(lVar28);
}
*(double *)(lVar28 + 0x50) = dVar2;
Sleep(1);
}
FUN_14000a950(L"+ Prepare Stop\n",_Src,puVar26,param_4);
plVar17 = local_420;
p_Var12 = local_430;
p_Var13 = local_448;
lVar22 = *(longlong *)(lVar28 + 0x58);
puVar15 = *(undefined8 **)(lVar22 + 0x40);
if (puVar15 != (undefined8 *)0x0) {
_Src = (char *)0x1;
(**(code **)*puVar15)();
}
*(undefined8 *)(lVar22 + 0x40) = 0;
CoUninitialize();
FUN_14000a810(L"# Msg Server Stoped... #\n",_Src,puVar26,param_4);
if (*(char *)(*(longlong *)(lVar28 + 0x58) + 0x30) == '\0') {
FUN_14000a950(L"Press any key... \n",_Src,puVar26,param_4);
getchar();
}
plVar20 = local_428;
if (plVar1 != (longlong *)0x0) {
plVar1 = plVar1 + 1;
*plVar1 = *plVar1 + -1;
plVar17 = local_468;
p_Var12 = (_Container_base0 *)local_460;
p_Var13 = local_450;
if (*plVar1 == 0) {
p_Var13 = (_Container_base0 *)*local_428;
local_448 = p_Var13;
if (p_Var13 != (_Container_base0 *)0x0) {
FUN_140009470((longlong *)p_Var13);
if (DAT_1401bcf28 != (void *)0x0) {
operator_delete__(DAT_1401bcf28);
DAT_1401bcf28 = (void *)0x0;
}
if (*(longlong *)p_Var13 != 0) {
std::_Container_base0::_Orphan_all(p_Var13);
operator_delete(*(void **)p_Var13);
}
*(undefined8 *)p_Var13 = 0;
*(undefined8 *)(p_Var13 + 8) = 0;
*(undefined8 *)(p_Var13 + 0x10) = 0;
operator_delete(p_Var13);
}
FUN_14006cc60(plVar20);
plVar17 = local_468;
p_Var12 = (_Container_base0 *)local_460;
p_Var13 = local_450;
}
}
p_Var8 = local_450;
if (p_Var13 != (_Container_base0 *)0x0) {
p_Var13 = p_Var13 + 8;
*(longlong *)p_Var13 = *(longlong *)p_Var13 + -1;
plVar17 = local_468;
p_Var12 = (_Container_base0 *)local_460;
if (*(longlong *)p_Var13 == 0) {
FUN_140006460((undefined8 *)local_450);
FUN_14006cc60(p_Var8);
plVar17 = local_468;
p_Var12 = (_Container_base0 *)local_460;
}
}
plVar20 = local_460;
if (p_Var12 != (_Container_base0 *)0x0) {
plVar1 = (longlong *)((longlong)p_Var12 + 8);
*plVar1 = *plVar1 + -1;
plVar17 = local_468;
if (*plVar1 == 0) {
FUN_140006460(local_460);
FUN_14006cc60(plVar20);
plVar17 = local_468;
}
}
plVar20 = local_468;
if (plVar17 != (longlong *)0x0) {
plVar17 = plVar17 + 1;
*plVar17 = *plVar17 + -1;
if (*plVar17 == 0) {
FUN_140006460(local_468);
FUN_14006cc60(plVar20);
}
}
FUN_140006360((longlong *)&local_458,_Src,puVar26,param_4);
}
else {
if (plVar1 != (longlong *)0x0) {
plVar1 = plVar1 + 1;
*plVar1 = *plVar1 + -1;
p_Var13 = local_458;
plVar17 = local_468;
plVar20 = local_460;
p_Var12 = local_450;
if (*plVar1 == 0) {
FUN_140006460(local_428);
FUN_14006cc60(plVar19);
p_Var13 = local_458;
plVar17 = local_468;
plVar20 = local_460;
p_Var12 = local_450;
}
}
p_Var8 = local_450;
if (p_Var12 != (_Container_base0 *)0x0) {
p_Var12 = p_Var12 + 8;
*(longlong *)p_Var12 = *(longlong *)p_Var12 + -1;
p_Var13 = local_458;
plVar17 = local_468;
plVar20 = local_460;
if (*(longlong *)p_Var12 == 0) {
FUN_140006460((undefined8 *)local_450);
FUN_14006cc60(p_Var8);
p_Var13 = local_458;
plVar17 = local_468;
plVar20 = local_460;
}
}
plVar1 = local_460;
if (plVar20 != (longlong *)0x0) {
plVar20 = plVar20 + 1;
*plVar20 = *plVar20 + -1;
p_Var13 = local_458;
plVar17 = local_468;
if (*plVar20 == 0) {
FUN_140006460(local_460);
FUN_14006cc60(plVar1);
p_Var13 = local_458;
plVar17 = local_468;
}
}
plVar20 = local_468;
if (plVar17 != (longlong *)0x0) {
plVar17 = plVar17 + 1;
*plVar17 = *plVar17 + -1;
p_Var13 = local_458;
if (*plVar17 == 0) {
FUN_140006460(local_468);
FUN_14006cc60(plVar20);
p_Var13 = local_458;
}
}
if (p_Var13 != (_Container_base0 *)0x0) {
local_398 = p_Var13;
FUN_14006b350((int *)p_Var13);
bVar7 = true;
local_390 = 1;
p_Var12 = p_Var13 + 0x40;
*(longlong *)p_Var12 = *(longlong *)p_Var12 + -1;
if (*(longlong *)p_Var12 == 0) {
FUN_14006b3e0((longlong)p_Var13);
bVar7 = false;
local_390 = 0;
local_448 = p_Var13;
if (*(undefined8 **)(p_Var13 + 0x38) != (undefined8 *)0x0) {
lVar22 = 1;
(**(code **)**(undefined8 **)(p_Var13 + 0x38))();
}
FUN_14006b400((undefined4 *)p_Var13,lVar22,param_3,param_4);
FUN_14006cc60(p_Var13);
}
if (bVar7) {
FUN_14006b3e0((longlong)p_Var13);
local_390 = 0;
}
}
}
plVar17 = local_440;
if (local_440 != (longlong *)0x0) {
plVar20 = local_440 + 1;
*plVar20 = *plVar20 + -1;
if (*plVar20 == 0) {
puVar15 = (undefined8 *)*local_440;
if (puVar15 != (undefined8 *)0x0) {
(**(code **)*puVar15)(puVar15,1);
}
FUN_14006cc60(plVar17);
}
}
return 0;
}

View file

@ -0,0 +1,23 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140006300 FUN_140006300
* Pseudocode, not original source. */
void FUN_140006300(longlong *param_1)
{
longlong *plVar1;
undefined8 *puVar2;
if ((*param_1 != 0) &&
(*(longlong *)(*param_1 + 8) = *(longlong *)(*param_1 + 8) + -1,
*(longlong *)(*param_1 + 8) == 0)) {
plVar1 = (longlong *)*param_1;
puVar2 = (undefined8 *)*plVar1;
if (puVar2 != (undefined8 *)0x0) {
(**(code **)*puVar2)(puVar2,1);
}
FUN_14006cc60(plVar1);
}
return;
}

View file

@ -0,0 +1,34 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140006360 FUN_140006360
* Pseudocode, not original source. */
void FUN_140006360(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
int *piVar1;
undefined4 *puVar2;
bool bVar3;
piVar1 = (int *)*param_1;
if (piVar1 != (int *)0x0) {
FUN_14006b350(piVar1);
bVar3 = true;
*(longlong *)(*param_1 + 0x40) = *(longlong *)(*param_1 + 0x40) + -1;
if (*(longlong *)(*param_1 + 0x40) == 0) {
FUN_14006b3e0((longlong)piVar1);
bVar3 = false;
puVar2 = (undefined4 *)*param_1;
if (*(undefined8 **)(puVar2 + 0xe) != (undefined8 *)0x0) {
param_2 = 1;
(**(code **)**(undefined8 **)(puVar2 + 0xe))();
}
FUN_14006b400(puVar2,param_2,param_3,param_4);
FUN_14006cc60(puVar2);
}
if (bVar3) {
FUN_14006b3e0((longlong)piVar1);
}
}
return;
}

View file

@ -0,0 +1,19 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140006410 FUN_140006410
* Pseudocode, not original source. */
void FUN_140006410(longlong *param_1)
{
undefined8 *puVar1;
if ((*param_1 != 0) &&
(*(longlong *)(*param_1 + 8) = *(longlong *)(*param_1 + 8) + -1,
*(longlong *)(*param_1 + 8) == 0)) {
puVar1 = (undefined8 *)*param_1;
FUN_140006460(puVar1);
FUN_14006cc60(puVar1);
}
return;
}

View file

@ -0,0 +1,27 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140006460 FUN_140006460
* Pseudocode, not original source. */
void FUN_140006460(undefined8 *param_1)
{
longlong *plVar1;
plVar1 = (longlong *)*param_1;
if (plVar1 != (longlong *)0x0) {
FUN_140009470(plVar1);
if (DAT_1401bcf28 != (void *)0x0) {
operator_delete__(DAT_1401bcf28);
DAT_1401bcf28 = (void *)0x0;
}
if ((void *)*plVar1 != (void *)0x0) {
operator_delete((void *)*plVar1);
}
*plVar1 = 0;
plVar1[1] = 0;
plVar1[2] = 0;
operator_delete(plVar1);
}
return;
}

View file

@ -0,0 +1,14 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400064e0 FUN_1400064e0
* Pseudocode, not original source. */
void FUN_1400064e0(undefined4 param_1)
{
undefined4 local_res8 [8];
local_res8[0] = param_1;
/* WARNING: Subroutine does not return */
_CxxThrowException(local_res8,(ThrowInfo *)&DAT_1401a9388);
}

Some files were not shown because too many files have changed in this diff Show more