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

211 lines
7.4 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400da710 FUN_1400da710
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1400da710(longlong param_1,short **param_2,undefined *param_3,ulonglong param_4)
{
int *piVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
int *piVar6;
short *psVar7;
uint uVar8;
int iVar9;
double dVar10;
undefined1 auStack_ab8 [32];
short *local_a98;
short *local_a90;
int *local_a88;
undefined1 local_a80;
int local_a7c;
int *local_a78;
undefined1 local_a70;
undefined8 local_a68;
undefined8 local_a58 [324];
ulonglong local_38;
local_a68 = 0xfffffffffffffffe;
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_ab8;
FUN_1400766e0(local_a58,param_2,param_3,param_4);
FUN_140076800((longlong)local_a58);
if (*(char *)(param_1 + 0x1040) == '\0') {
do {
dVar10 = (double)FUN_140076d50((longlong)local_a58);
piVar1 = (int *)(param_1 + 0x28);
iVar9 = 0;
iVar5 = 0;
param_3 = (undefined *)0x0;
if (dVar10 <= 0.9) {
piVar6 = piVar1;
local_a88 = piVar1;
local_a7c = FUN_1400da540(piVar1);
local_a80 = 1;
param_2 = (short **)(param_1 + 0x80);
uVar8 = *(uint *)param_2;
param_4 = (ulonglong)uVar8;
do {
if (uVar8 != *(uint *)param_2) {
FUN_14006cb70(piVar6,param_2,param_3,param_4);
local_a98 = (short *)PTR_DAT_1401ac010;
iVar2 = FUN_14006c9f0((short *)&DAT_140148290);
iVar4 = iVar5;
if ((local_a98 != (short *)0x0) && (local_a98 != (short *)PTR_DAT_1401ac010)) {
iVar4 = *(int *)(local_a98 + -4);
}
iVar3 = iVar2;
if (((iVar2 <= iVar4) && (iVar3 = iVar9, local_a98 != (short *)0x0)) &&
(local_a98 != (short *)PTR_DAT_1401ac010)) {
iVar3 = *(int *)(local_a98 + -4);
}
iVar9 = 1;
if (1 < iVar3) {
iVar9 = iVar3;
}
iVar4 = iVar5;
if ((local_a98 != (short *)0x0) && (local_a98 != (short *)PTR_DAT_1401ac010)) {
iVar4 = *(int *)(local_a98 + -4);
}
if (iVar4 < iVar9) {
FUN_140002d60((longlong *)&local_a98,iVar9);
}
FUN_140002e40((longlong *)&local_a98);
psVar7 = local_a98;
if (local_a98 == (short *)0x0) {
psVar7 = (short *)PTR_DAT_1401ac010;
}
FUN_14006ca20(psVar7,&DAT_140148290,iVar2);
psVar7 = local_a98;
if (local_a98 == (short *)0x0) {
psVar7 = (short *)PTR_DAT_1401ac010;
}
iVar4 = FUN_14006c9f0(psVar7);
param_3 = PTR_DAT_1401ac010;
iVar9 = 0;
if (0 < iVar4) {
iVar9 = iVar4;
}
iVar4 = iVar5;
if ((local_a98 != (short *)0x0) && (local_a98 != (short *)PTR_DAT_1401ac010)) {
iVar4 = *(int *)(local_a98 + -4);
}
if ((iVar9 < iVar4) || (iVar9 = iVar5, local_a98 == (short *)0x0)) {
LAB_1400daa7e:
if (((local_a98 != (short *)PTR_DAT_1401ac010) && (local_a98 != (short *)0x0)) &&
((int *)(local_a98 + -4) != (int *)0x0)) {
*(int *)(local_a98 + -4) = iVar9;
local_a98[iVar9] = 0;
}
}
else if (local_a98 != (short *)PTR_DAT_1401ac010) {
iVar9 = *(int *)(local_a98 + -4);
goto LAB_1400daa7e;
}
param_2 = &local_a98;
FUN_14009b550(*(SIZE_T **)(param_1 + 0x1088),(wchar_t *)param_2,(SIZE_T)param_3,param_4)
;
*(undefined1 *)(param_1 + 0x1040) = 1;
FUN_1400da5c0(piVar1);
goto LAB_1400daabf;
}
param_3 = param_3 + 1;
param_2 = (short **)((longlong)param_2 + 4);
} while ((longlong)param_3 < 1000);
if (1 < local_a7c) {
*(undefined1 *)(param_1 + 0x1080) = 1;
}
FUN_1400da5c0(piVar1);
local_a80 = 0;
}
else {
piVar6 = piVar1;
local_a78 = piVar1;
FUN_1400da5f0(piVar1);
local_a70 = 1;
param_2 = (short **)(param_1 + 0x80);
iVar4 = *(int *)param_2;
param_4 = (ulonglong)(iVar4 + 1U);
do {
iVar2 = *(int *)param_2;
*(uint *)param_2 = iVar2 + 1U;
if (iVar4 + 1U != iVar2 + 1U) {
FUN_14006cb70(piVar6,param_2,param_3,param_4);
local_a90 = (short *)PTR_DAT_1401ac010;
iVar2 = FUN_14006c9f0((short *)&DAT_140148300);
iVar4 = iVar9;
if ((local_a90 != (short *)0x0) && (local_a90 != (short *)PTR_DAT_1401ac010)) {
iVar4 = *(int *)(local_a90 + -4);
}
iVar3 = iVar2;
if (((iVar2 <= iVar4) && (iVar3 = iVar9, local_a90 != (short *)0x0)) &&
(local_a90 != (short *)PTR_DAT_1401ac010)) {
iVar3 = *(int *)(local_a90 + -4);
}
iVar4 = 1;
if (1 < iVar3) {
iVar4 = iVar3;
}
iVar3 = iVar9;
if ((local_a90 != (short *)0x0) && (local_a90 != (short *)PTR_DAT_1401ac010)) {
iVar3 = *(int *)(local_a90 + -4);
}
if (iVar3 < iVar4) {
FUN_140002d60((longlong *)&local_a90,iVar4);
}
FUN_140002e40((longlong *)&local_a90);
psVar7 = local_a90;
if (local_a90 == (short *)0x0) {
psVar7 = (short *)PTR_DAT_1401ac010;
}
FUN_14006ca20(psVar7,&DAT_140148300,iVar2);
psVar7 = local_a90;
if (local_a90 == (short *)0x0) {
psVar7 = (short *)PTR_DAT_1401ac010;
}
iVar2 = FUN_14006c9f0(psVar7);
param_3 = PTR_DAT_1401ac010;
iVar4 = 0;
if (0 < iVar2) {
iVar4 = iVar2;
}
if ((local_a90 != (short *)0x0) && (local_a90 != (short *)PTR_DAT_1401ac010)) {
iVar9 = *(int *)(local_a90 + -4);
}
if ((iVar4 < iVar9) || (iVar4 = iVar5, local_a90 == (short *)0x0)) {
LAB_1400da94d:
if (((local_a90 != (short *)PTR_DAT_1401ac010) && (local_a90 != (short *)0x0)) &&
((int *)(local_a90 + -4) != (int *)0x0)) {
*(int *)(local_a90 + -4) = iVar4;
local_a90[iVar4] = 0;
}
}
else if (local_a90 != (short *)PTR_DAT_1401ac010) {
iVar4 = *(int *)(local_a90 + -4);
goto LAB_1400da94d;
}
param_2 = &local_a90;
FUN_14009b550(*(SIZE_T **)(param_1 + 0x1088),(wchar_t *)param_2,(SIZE_T)param_3,param_4)
;
*(undefined1 *)(param_1 + 0x1040) = 1;
FUN_1400da680(piVar1);
goto LAB_1400daabf;
}
uVar8 = (int)param_3 + 1;
param_3 = (undefined *)(ulonglong)uVar8;
param_2 = (short **)((longlong)param_2 + 4);
} while ((int)uVar8 < 1000);
FUN_1400da680(piVar1);
local_a70 = 0;
}
Sleep(0);
} while (*(char *)(param_1 + 0x1040) == '\0');
}
LAB_1400daabf:
FUN_140076720(local_a58,param_2,param_3,param_4);
return;
}