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

136 lines
3.9 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14005c7b0 FUN_14005c7b0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
ulonglong FUN_14005c7b0(longlong param_1,LPCWSTR param_2,undefined8 param_3,undefined8 param_4)
{
WCHAR WVar1;
ulonglong uVar2;
DWORD DVar3;
errno_t eVar4;
int iVar5;
ulonglong *puVar6;
ulonglong uVar7;
char *_Str;
LPCWSTR pWVar8;
ulonglong *puVar9;
undefined1 auStack_f8 [32];
undefined8 local_d8;
undefined4 local_d0;
__time64_t local_c8 [2];
short local_b8;
short local_b6;
undefined2 local_b4;
undefined2 local_b2;
undefined2 local_b0;
undefined2 local_ae;
undefined2 local_ac;
undefined2 local_aa;
tm local_a8;
undefined1 local_80;
undefined7 uStack_7f;
undefined8 local_70;
ulonglong local_68;
undefined8 local_58;
undefined8 local_50;
undefined1 local_48;
undefined7 uStack_47;
undefined8 local_38;
ulonglong local_30;
ulonglong local_20;
local_c8[1] = 0xfffffffffffffffe;
local_20 = DAT_1401ac5a0 ^ (ulonglong)auStack_f8;
DVar3 = GetCurrentProcessId();
*(DWORD *)(param_1 + 0x1ec) = DVar3;
local_c8[0] = _time64((__time64_t *)0x0);
local_d8 = 0;
local_d0 = 0;
eVar4 = _localtime64_s(&local_a8,local_c8);
if (eVar4 == 0) {
local_b8 = (short)local_a8.tm_year + 0x76c;
local_b6 = (short)local_a8.tm_mon + 1;
local_b4 = (undefined2)local_a8.tm_wday;
local_b2 = (undefined2)local_a8.tm_mday;
local_b0 = (undefined2)local_a8.tm_hour;
local_ae = (undefined2)local_a8.tm_min;
local_ac = (undefined2)local_a8.tm_sec;
local_aa = 0;
iVar5 = Ordinal_184(&local_b8,&local_d8);
local_58 = 0;
local_50 = 0;
if (iVar5 != 0) {
Ordinal_185(local_d8,&local_58);
}
}
*(undefined8 *)(param_1 + 0x1f0) = local_d8;
if (((ushort)*param_2 < 0x30) || (0x39 < (ushort)*param_2)) {
uVar7 = FUN_14005dc20(param_1,param_2);
}
else {
wprintf(L"\t-AGNET MODE-\t \n");
local_a8.tm_wday = 7;
local_a8.tm_yday = 0;
local_a8.tm_mon = 0;
local_a8.tm_year = 0;
local_a8.tm_sec._0_2_ = 0;
uVar7 = 0xffffffffffffffff;
pWVar8 = param_2;
do {
if (uVar7 == 0) break;
uVar7 = uVar7 - 1;
WVar1 = *pWVar8;
pWVar8 = pWVar8 + 1;
} while (WVar1 != L'\0');
FUN_140001830((ulonglong *)&local_a8,param_2,~uVar7 - 1);
puVar6 = FUN_140118aa0((ulonglong *)&local_48,(LPCWSTR)&local_a8);
if (0xf < puVar6[3]) {
puVar6 = (ulonglong *)*puVar6;
}
local_68 = 0xf;
local_70 = 0;
local_80 = '\0';
uVar7 = 0xffffffffffffffff;
puVar9 = puVar6;
do {
if (uVar7 == 0) break;
uVar7 = uVar7 - 1;
uVar2 = *puVar9;
puVar9 = (ulonglong *)((longlong)puVar9 + 1);
} while ((char)uVar2 != '\0');
uVar7 = ~uVar7 - 1;
FUN_140003e60((ulonglong *)&local_80,puVar6,uVar7);
if (0xf < local_30) {
operator_delete((void *)CONCAT71(uStack_47,local_48));
}
local_30 = 0xf;
local_38 = 0;
local_48 = 0;
if (7 < (ulonglong)local_a8._24_8_) {
operator_delete((void *)CONCAT26(local_a8.tm_min._2_2_,
CONCAT24((undefined2)local_a8.tm_min,
CONCAT22(local_a8.tm_sec._2_2_,
(undefined2)local_a8.tm_sec))));
}
local_a8.tm_wday = 7;
local_a8.tm_yday = 0;
local_a8.tm_mon = 0;
local_a8.tm_year = 0;
local_a8.tm_sec._0_2_ = 0;
_Str = &local_80;
if (0xf < local_68) {
_Str = (char *)CONCAT71(uStack_7f,local_80);
}
iVar5 = atoi(_Str);
uVar7 = FUN_14005ceb0(param_1,iVar5,uVar7,param_4);
if (0xf < local_68) {
operator_delete((void *)CONCAT71(uStack_7f,local_80));
}
uVar7 = uVar7 & 0xff;
}
return uVar7;
}