server-re/decomp/MessageServer_Release_x64/full/functions/0x14007e330.c

387 lines
12 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14007e330 FUN_14007e330
* Pseudocode, not original source. */
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00014007e81b) */
/* WARNING: Removing unreachable block (ram,0x00014007e6bf) */
/* WARNING: Removing unreachable block (ram,0x00014007e97b) */
void FUN_14007e330(SIZE_T *param_1,wchar_t *param_2,SIZE_T param_3,undefined *param_4)
{
code *pcVar1;
longlong lVar2;
int *piVar3;
longlong lVar4;
ulonglong uVar5;
undefined4 *puVar6;
longlong *plVar7;
ulonglong uVar8;
longlong lVar9;
undefined1 *puVar10;
undefined1 *puVar11;
undefined1 *puVar12;
undefined1 *puVar13;
int iVar14;
longlong lVar15;
SIZE_T SVar16;
undefined8 *puVar17;
longlong *plVar18;
double dVar19;
undefined1 auStack_a8 [32];
int *local_88;
bool local_80;
longlong *local_78;
int *local_70;
undefined1 local_68;
SIZE_T local_60;
SIZE_T local_58;
undefined8 local_50;
ulonglong local_48;
puVar10 = auStack_a8;
puVar13 = auStack_a8;
local_50 = 0xfffffffffffffffe;
local_48 = DAT_1401ac5a0 ^ (ulonglong)&local_88;
piVar3 = (int *)(**(code **)(*param_1 + 0x58))();
local_70 = piVar3;
FUN_14006b350(piVar3);
local_68 = 1;
if (DAT_1401b42cf != '\0') {
param_3 = *param_1;
param_2 = L"Proud::CNetServerImpl::TcpAndUdp_DoForLongInterval";
(**(code **)(param_3 + 200))(param_1);
}
lVar4 = (longlong)(int)param_1[0xdc];
puVar17 = (undefined8 *)0x0;
if (0 < (int)param_1[0xdc]) {
uVar8 = lVar4 * 8 + 0x10;
if (uVar8 < 0x401) {
uVar5 = lVar4 * 8 + 0x1f;
if (uVar5 <= uVar8) {
uVar5 = 0xffffffffffffff0;
}
lVar9 = -(uVar5 & 0xfffffffffffffff0);
puVar10 = auStack_a8 + lVar9;
puVar6 = (undefined4 *)((longlong)&local_88 + lVar9);
puVar17 = (undefined8 *)0x0;
puVar13 = auStack_a8 + lVar9;
if (puVar6 != (undefined4 *)0x0) {
*puVar6 = 0xcccc;
LAB_14007e41e:
puVar17 = (undefined8 *)(puVar6 + 4);
puVar13 = puVar10;
}
}
else {
puVar6 = malloc(uVar8);
puVar17 = (undefined8 *)0x0;
puVar13 = auStack_a8;
if (puVar6 != (undefined4 *)0x0) {
*puVar6 = 0xdddd;
goto LAB_14007e41e;
}
}
iVar14 = 0;
lVar9 = 0;
piVar3 = local_70;
if (0 < lVar4) {
do {
if ((lVar9 < 0) || ((int)param_1[0xdc] <= iVar14)) {
/* WARNING: Subroutine does not return */
*(undefined **)(puVar13 + -8) = &UNK_14007e46f;
FUN_14006be30(uVar8,param_2,param_3,param_4);
}
plVar18 = *(longlong **)(param_1[0xdb] + lVar9 * 8);
lVar15 = 0;
if (plVar18 != (longlong *)0x0) {
lVar15 = *plVar18;
}
uVar8 = lVar15 + 0x40;
*(undefined8 *)(puVar13 + -8) = 0x14007e45a;
FUN_1400d8960(uVar8);
puVar17[lVar9] = lVar15;
iVar14 = iVar14 + 1;
lVar9 = lVar9 + 1;
piVar3 = local_70;
} while (lVar9 < lVar4);
}
}
local_58 = param_1[0x193];
plVar18 = (longlong *)0x0;
if (0 < (int)local_58) {
lVar9 = (longlong)(int)local_58 * 8;
uVar8 = lVar9 + 0x10;
if (uVar8 < 0x401) {
uVar5 = lVar9 + 0x1f;
if (uVar5 <= uVar8) {
uVar5 = 0xffffffffffffff0;
}
*(undefined8 *)(puVar13 + -8) = 0x14007e4bc;
lVar9 = -(uVar5 & 0xfffffffffffffff0);
puVar11 = puVar13 + lVar9;
puVar6 = (undefined4 *)(puVar13 + lVar9 + 0x20);
plVar18 = (longlong *)0x0;
puVar13 = puVar13 + lVar9;
if (puVar6 != (undefined4 *)0x0) {
*puVar6 = 0xcccc;
puVar13 = puVar11;
LAB_14007e4e6:
plVar18 = (longlong *)(puVar6 + 4);
}
}
else {
*(undefined8 *)(puVar13 + -8) = 0x14007e4d8;
puVar6 = malloc(uVar8);
plVar18 = (longlong *)0x0;
if (puVar6 != (undefined4 *)0x0) {
*puVar6 = 0xdddd;
goto LAB_14007e4e6;
}
}
plVar7 = plVar18;
if (param_1[0x193] == 0) {
SVar16 = 0;
}
else {
SVar16 = param_1[0x191];
}
for (; piVar3 = local_70, SVar16 != 0; SVar16 = *(SIZE_T *)(SVar16 + 0x10)) {
lVar9 = *(longlong *)(SVar16 + 8);
*(undefined8 *)(puVar13 + -8) = 0x14007e517;
FUN_1400d8960(lVar9 + 0xc0);
*plVar7 = lVar9;
plVar7 = plVar7 + 1;
}
}
local_60 = param_1[0x2e1];
local_78 = (longlong *)0x0;
if ((int)local_60 < 1) goto LAB_14007e5e6;
lVar9 = (longlong)(int)local_60 * 8;
uVar8 = lVar9 + 0x10;
if (uVar8 < 0x401) {
uVar5 = lVar9 + 0x1f;
if (uVar5 <= uVar8) {
uVar5 = 0xffffffffffffff0;
}
*(undefined8 *)(puVar13 + -8) = 0x14007e571;
lVar9 = -(uVar5 & 0xfffffffffffffff0);
puVar12 = puVar13 + lVar9;
plVar7 = (longlong *)(puVar13 + lVar9 + 0x20);
puVar13 = puVar13 + lVar9;
local_78 = plVar7;
if (plVar7 != (longlong *)0x0) {
*(undefined4 *)plVar7 = 0xcccc;
puVar13 = puVar12;
LAB_14007e59f:
local_78 = plVar7 + 2;
}
}
else {
*(undefined8 *)(puVar13 + -8) = 0x14007e590;
plVar7 = malloc(uVar8);
local_78 = plVar7;
if (plVar7 != (longlong *)0x0) {
*(undefined4 *)plVar7 = 0xdddd;
goto LAB_14007e59f;
}
}
plVar7 = local_78;
if (param_1[0x2e1] == 0) {
SVar16 = 0;
}
else {
SVar16 = param_1[0x2df];
}
for (; piVar3 = local_70, SVar16 != 0; SVar16 = *(SIZE_T *)(SVar16 + 0x18)) {
lVar9 = *(longlong *)(SVar16 + 0x10);
*(undefined8 *)(puVar13 + -8) = 0x14007e5d5;
FUN_1400d8960(lVar9 + 0xc0);
*plVar7 = lVar9;
plVar7 = plVar7 + 1;
}
LAB_14007e5e6:
pcVar1 = *(code **)(param_1[0x23] + 8);
*(undefined8 *)(puVar13 + -8) = 0x14007e5f3;
dVar19 = (double)(*pcVar1)();
*(undefined8 *)(puVar13 + -8) = 0x14007e5ff;
FUN_14006b3e0((longlong)piVar3);
local_68 = 0;
if (puVar17 != (undefined8 *)0x0) {
while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) {
do {
lVar15 = puVar17[lVar9];
pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x88) + 0x10);
*(undefined8 *)(puVar13 + -8) = 0x14007e631;
piVar3 = (int *)(*pcVar1)();
local_80 = false;
local_88 = piVar3;
if (lVar9 == 0) {
local_80 = true;
*(undefined8 *)(puVar13 + -8) = 0x14007e68b;
FUN_14006b350(piVar3);
*(undefined8 *)(puVar13 + -8) = 0x14007e697;
FUN_1400d8c60(lVar15,param_2,param_3,param_4);
*(undefined8 *)(puVar13 + -8) = 0x14007e69f;
FUN_14006b3e0((longlong)piVar3);
local_80 = false;
*(undefined8 *)(puVar13 + -8) = 0x14007e6af;
FUN_1400d8970(lVar15 + 0x40);
*puVar17 = puVar17[lVar4 + -1];
LAB_14007e6b7:
lVar4 = lVar4 + -1;
}
else {
*(undefined8 *)(puVar13 + -8) = 0x14007e649;
local_80 = FUN_14006b3a0(piVar3);
if (local_80) {
*(undefined8 *)(puVar13 + -8) = 0x14007e65f;
FUN_1400d8c60(lVar15,param_2,param_3,param_4);
*(undefined8 *)(puVar13 + -8) = 0x14007e667;
FUN_14006b3e0((longlong)piVar3);
local_80 = false;
*(undefined8 *)(puVar13 + -8) = 0x14007e677;
FUN_1400d8970(lVar15 + 0x40);
puVar17[lVar9] = puVar17[lVar4 + -1];
goto LAB_14007e6b7;
}
}
lVar9 = lVar9 + 1;
} while (lVar9 < lVar4);
}
if (*(int *)(puVar17 + -2) == 0xdddd) {
*(undefined8 *)(puVar13 + -8) = 0x14007e6f2;
free(puVar17 + -2);
}
}
if (plVar18 != (longlong *)0x0) {
lVar4 = (longlong)(int)local_58;
while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) {
do {
lVar15 = plVar18[lVar9];
pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x108) + 0x10);
*(undefined8 *)(puVar13 + -8) = 0x14007e732;
piVar3 = (int *)(*pcVar1)();
local_80 = false;
local_88 = piVar3;
if (lVar9 == 0) {
local_80 = true;
*(undefined8 *)(puVar13 + -8) = 0x14007e7bc;
FUN_14006b350(piVar3);
lVar2 = *(longlong *)(lVar15 + 0x748);
*(undefined8 *)(puVar13 + -8) = 0x14007e7cd;
FUN_1400d83e0(lVar2,dVar19);
if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) &&
(lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) {
lVar2 = *(longlong *)(lVar2 + 0x168);
*(undefined8 *)(puVar13 + -8) = 0x14007e7f2;
FUN_1400d5d10(lVar2,dVar19,param_3,param_4);
}
*(undefined8 *)(puVar13 + -8) = 0x14007e7fa;
FUN_14006b3e0((longlong)piVar3);
local_80 = false;
*(undefined8 *)(puVar13 + -8) = 0x14007e80c;
FUN_1400d8970(lVar15 + 0xc0);
*plVar18 = plVar18[lVar4 + -1];
LAB_14007e814:
lVar4 = lVar4 + -1;
}
else {
*(undefined8 *)(puVar13 + -8) = 0x14007e74a;
local_80 = FUN_14006b3a0(piVar3);
if (local_80) {
lVar2 = *(longlong *)(lVar15 + 0x748);
*(undefined8 *)(puVar13 + -8) = 0x14007e769;
FUN_1400d83e0(lVar2,dVar19);
if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) &&
(lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) {
lVar2 = *(longlong *)(lVar2 + 0x168);
*(undefined8 *)(puVar13 + -8) = 0x14007e78e;
FUN_1400d5d10(lVar2,dVar19,param_3,param_4);
}
*(undefined8 *)(puVar13 + -8) = 0x14007e796;
FUN_14006b3e0((longlong)piVar3);
local_80 = false;
*(undefined8 *)(puVar13 + -8) = 0x14007e7a8;
FUN_1400d8970(lVar15 + 0xc0);
plVar18[lVar9] = plVar18[lVar4 + -1];
goto LAB_14007e814;
}
}
lVar9 = lVar9 + 1;
} while (lVar9 < lVar4);
}
if ((int)plVar18[-2] == 0xdddd) {
*(undefined8 *)(puVar13 + -8) = 0x14007e84e;
free(plVar18 + -2);
}
}
plVar18 = local_78;
if (local_78 != (longlong *)0x0) {
lVar4 = (longlong)(int)local_60;
while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) {
do {
lVar15 = plVar18[lVar9];
pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x108) + 0x10);
*(undefined8 *)(puVar13 + -8) = 0x14007e892;
piVar3 = (int *)(*pcVar1)();
local_80 = false;
local_88 = piVar3;
if (lVar9 == 0) {
local_80 = true;
*(undefined8 *)(puVar13 + -8) = 0x14007e91c;
FUN_14006b350(piVar3);
lVar2 = *(longlong *)(lVar15 + 0x748);
*(undefined8 *)(puVar13 + -8) = 0x14007e92d;
FUN_1400d83e0(lVar2,dVar19);
if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) &&
(lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) {
lVar2 = *(longlong *)(lVar2 + 0x168);
*(undefined8 *)(puVar13 + -8) = 0x14007e952;
FUN_1400d5d10(lVar2,dVar19,param_3,param_4);
}
*(undefined8 *)(puVar13 + -8) = 0x14007e95a;
FUN_14006b3e0((longlong)piVar3);
local_80 = false;
*(undefined8 *)(puVar13 + -8) = 0x14007e96c;
FUN_1400d8970(lVar15 + 0xc0);
*plVar18 = plVar18[lVar4 + -1];
LAB_14007e974:
lVar4 = lVar4 + -1;
}
else {
*(undefined8 *)(puVar13 + -8) = 0x14007e8aa;
local_80 = FUN_14006b3a0(piVar3);
if (local_80) {
lVar2 = *(longlong *)(lVar15 + 0x748);
*(undefined8 *)(puVar13 + -8) = 0x14007e8c9;
FUN_1400d83e0(lVar2,dVar19);
if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) &&
(lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) {
lVar2 = *(longlong *)(lVar2 + 0x168);
*(undefined8 *)(puVar13 + -8) = 0x14007e8ee;
FUN_1400d5d10(lVar2,dVar19,param_3,param_4);
}
*(undefined8 *)(puVar13 + -8) = 0x14007e8f6;
FUN_14006b3e0((longlong)piVar3);
local_80 = false;
*(undefined8 *)(puVar13 + -8) = 0x14007e908;
FUN_1400d8970(lVar15 + 0xc0);
plVar18[lVar9] = plVar18[lVar4 + -1];
goto LAB_14007e974;
}
}
lVar9 = lVar9 + 1;
} while (lVar9 < lVar4);
}
if ((int)plVar18[-2] == 0xdddd) {
*(undefined8 *)(puVar13 + -8) = 0x14007e9ae;
free(plVar18 + -2);
}
}
*(undefined8 *)(puVar13 + -8) = 0x14007e9bb;
return;
}