211 lines
7.4 KiB
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;
|
|
}
|
|
|