230 lines
6.7 KiB
C
230 lines
6.7 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x140042cf0 FUN_140042cf0
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_140042cf0(longlong param_1)
|
|
|
|
{
|
|
undefined *puVar1;
|
|
char cVar2;
|
|
undefined8 *puVar3;
|
|
undefined8 *puVar4;
|
|
void *pvVar5;
|
|
longlong *plVar6;
|
|
ulonglong uVar7;
|
|
undefined8 *puVar8;
|
|
longlong lVar9;
|
|
char *pcVar10;
|
|
longlong lVar11;
|
|
undefined8 *puVar12;
|
|
undefined1 auStack_358 [32];
|
|
void *local_338;
|
|
undefined8 *local_330;
|
|
undefined8 local_328;
|
|
undefined1 local_320;
|
|
undefined7 uStack_31f;
|
|
undefined8 local_310;
|
|
ulonglong local_308;
|
|
void *local_2f8 [3];
|
|
ulonglong local_2e0;
|
|
undefined **local_2c8;
|
|
char local_2c0 [136];
|
|
char local_238;
|
|
undefined1 local_237 [255];
|
|
CHAR local_138 [272];
|
|
ulonglong local_28;
|
|
|
|
puVar1 = PTR_s_option_dbc_serveroption_xml_140349cb8;
|
|
local_328 = 0xfffffffffffffffe;
|
|
local_28 = DAT_1403463c0 ^ (ulonglong)auStack_358;
|
|
if ((DAT_14039d154 & 1) == 0) {
|
|
DAT_14039d154 = DAT_14039d154 | 1;
|
|
FUN_14021b8f0();
|
|
atexit((_func_5014 *)&LAB_1402741c0);
|
|
}
|
|
local_338 = operator_new(0xe8);
|
|
puVar12 = (undefined8 *)0x0;
|
|
puVar3 = puVar12;
|
|
if (local_338 != (void *)0x0) {
|
|
puVar3 = (undefined8 *)FUN_140219a30(local_338);
|
|
}
|
|
DAT_140353188 = puVar3;
|
|
FUN_140219cb0(puVar3);
|
|
local_338 = operator_new(0x98);
|
|
puVar3 = puVar12;
|
|
if (local_338 != (void *)0x0) {
|
|
puVar3 = (undefined8 *)FUN_14021c130(local_338);
|
|
}
|
|
DAT_140353180 = puVar3;
|
|
local_338 = operator_new(8);
|
|
puVar3 = puVar12;
|
|
if (local_338 != (void *)0x0) {
|
|
puVar3 = (undefined8 *)FUN_14015d580();
|
|
}
|
|
local_308 = 0xf;
|
|
local_310 = 0;
|
|
local_320 = 0;
|
|
uVar7 = 0xffffffffffffffff;
|
|
pcVar10 = puVar1;
|
|
do {
|
|
if (uVar7 == 0) break;
|
|
uVar7 = uVar7 - 1;
|
|
cVar2 = *pcVar10;
|
|
pcVar10 = pcVar10 + 1;
|
|
} while (cVar2 != '\0');
|
|
DAT_1403531a0 = puVar3;
|
|
FUN_14004c670(&local_320,puVar1,~uVar7 - 1);
|
|
FUN_1402193a0(local_2f8,&local_320);
|
|
if (0xf < local_308) {
|
|
operator_delete((void *)CONCAT71(uStack_31f,local_320));
|
|
}
|
|
local_308 = 0xf;
|
|
local_310 = 0;
|
|
local_320 = 0;
|
|
*(undefined1 *)(DAT_140353190 + 0x1e8) = 0xc;
|
|
FUN_1401551e0();
|
|
local_338 = operator_new(0xf0);
|
|
puVar3 = puVar12;
|
|
if (local_338 != (void *)0x0) {
|
|
puVar3 = (undefined8 *)FUN_14015b1d0(local_338);
|
|
}
|
|
*(undefined8 **)(param_1 + 0x70) = puVar3;
|
|
local_338 = (void *)CONCAT44(local_338._4_4_,1);
|
|
*(undefined4 *)(param_1 + 0x48) = 1;
|
|
printf("STEP : AGENT \n");
|
|
lVar11 = *(longlong *)(param_1 + 0x70);
|
|
if ((lVar11 != 0) && (*(char *)(lVar11 + 0x1a) != '\0')) {
|
|
(**(code **)(*(longlong *)(lVar11 + 0x68) + 0xb0))
|
|
((longlong *)(lVar11 + 0x68),1,&DAT_1403440f0,&local_338);
|
|
}
|
|
if ((*(longlong *)(param_1 + 0x70) == 0) || (cVar2 = FUN_14015b710(), cVar2 != '\0')) {
|
|
puVar4 = operator_new(0x1f48);
|
|
lVar11 = 0x7d;
|
|
puVar3 = puVar12;
|
|
if (puVar4 != (undefined8 *)0x0) {
|
|
*(undefined4 *)(puVar4 + 1000) = 0;
|
|
lVar9 = 0x7d;
|
|
puVar8 = puVar4;
|
|
do {
|
|
*puVar8 = 0;
|
|
puVar8[1] = 0;
|
|
puVar8[2] = 0;
|
|
puVar8[3] = 0;
|
|
puVar8[4] = 0;
|
|
puVar8[5] = 0;
|
|
puVar8[6] = 0;
|
|
puVar8[7] = 0;
|
|
lVar9 = lVar9 + -1;
|
|
puVar3 = puVar4;
|
|
puVar8 = puVar8 + 8;
|
|
} while (lVar9 != 0);
|
|
}
|
|
*(undefined8 **)(param_1 + 200) = puVar3;
|
|
if (*(longlong *)(DAT_140353190 + 0x118) != 0) {
|
|
puVar4 = operator_new(0x1f48);
|
|
puVar3 = puVar12;
|
|
if (puVar4 != (undefined8 *)0x0) {
|
|
*(undefined4 *)(puVar4 + 1000) = 0;
|
|
puVar8 = puVar4;
|
|
do {
|
|
*puVar8 = 0;
|
|
puVar8[1] = 0;
|
|
puVar8[2] = 0;
|
|
puVar8[3] = 0;
|
|
puVar8[4] = 0;
|
|
puVar8[5] = 0;
|
|
puVar8[6] = 0;
|
|
puVar8[7] = 0;
|
|
lVar11 = lVar11 + -1;
|
|
puVar3 = puVar4;
|
|
puVar8 = puVar8 + 8;
|
|
} while (lVar11 != 0);
|
|
}
|
|
*(undefined8 **)(param_1 + 0xd8) = puVar3;
|
|
}
|
|
puVar4 = operator_new(0x49510);
|
|
puVar3 = puVar12;
|
|
local_330 = puVar4;
|
|
if (puVar4 != (undefined8 *)0x0) {
|
|
*puVar4 = 0;
|
|
puVar4[0x21] = 500;
|
|
puVar4[0x22] = param_1;
|
|
puVar4[0x23] = 0;
|
|
memset(puVar4 + 1,0,0x100);
|
|
FUN_1400a7aa0(puVar4);
|
|
puVar3 = puVar4;
|
|
}
|
|
*(undefined8 **)(param_1 + 0xe0) = puVar3;
|
|
puVar4 = operator_new(0x49510);
|
|
puVar3 = puVar12;
|
|
local_330 = puVar4;
|
|
if (puVar4 != (undefined8 *)0x0) {
|
|
*puVar4 = 0;
|
|
puVar4[0x21] = 500;
|
|
puVar4[0x22] = param_1;
|
|
puVar4[0x23] = 0;
|
|
memset(puVar4 + 1,0,0x100);
|
|
FUN_1400a7aa0(puVar4,3);
|
|
puVar3 = puVar4;
|
|
}
|
|
*(undefined8 **)(param_1 + 0xe8) = puVar3;
|
|
puVar3 = operator_new(0x58);
|
|
if (puVar3 != (undefined8 *)0x0) {
|
|
*puVar3 = 0;
|
|
puVar3[1] = 0;
|
|
puVar3[2] = 0;
|
|
*(undefined4 *)(puVar3 + 3) = 0;
|
|
InitializeCriticalSection((LPCRITICAL_SECTION)(puVar3 + 4));
|
|
puVar12 = puVar3;
|
|
}
|
|
*(undefined8 **)(param_1 + 0xf0) = puVar12;
|
|
FUN_1400a7aa0(*(undefined8 *)(param_1 + 0xe0),2);
|
|
FUN_1400a80c0(*(undefined8 *)(param_1 + 0xe0));
|
|
FUN_1400a7aa0(*(undefined8 *)(param_1 + 0xe8));
|
|
FUN_1400a80c0(*(undefined8 *)(param_1 + 0xe8));
|
|
memset((void *)(param_1 + 0x188),0,0x41c);
|
|
memset((void *)(param_1 + 0x5a4),0,0x13c);
|
|
FUN_140043590(param_1);
|
|
puVar3 = *(undefined8 **)(param_1 + 0xf0);
|
|
EnterCriticalSection((LPCRITICAL_SECTION)(puVar3 + 4));
|
|
if ((void *)*puVar3 != (void *)0x0) {
|
|
operator_delete__((void *)*puVar3);
|
|
*puVar3 = 0;
|
|
}
|
|
pvVar5 = operator_new(300000);
|
|
*puVar3 = pvVar5;
|
|
puVar3[1] = 300000;
|
|
puVar3[2] = 0;
|
|
*(undefined4 *)(puVar3 + 3) = 0;
|
|
LeaveCriticalSection((LPCRITICAL_SECTION)(puVar3 + 4));
|
|
FUN_14016f940(0);
|
|
plVar6 = (longlong *)FUN_140190ca0();
|
|
*(longlong **)(param_1 + 0x88) = plVar6;
|
|
(**(code **)(*plVar6 + 0x130))(plVar6,param_1);
|
|
(**(code **)(**(longlong **)(param_1 + 0x88) + 0x10))
|
|
(*(longlong **)(param_1 + 0x88),param_1 + 8);
|
|
(**(code **)(**(longlong **)(param_1 + 0x88) + 8))();
|
|
local_2c8 = CServerConfig::vftable;
|
|
local_238 = '\0';
|
|
memset(local_237,0,0xff);
|
|
GetCurrentDirectoryA(0x104,local_138);
|
|
sprintf(&local_238,"%s\\%s");
|
|
strcpy_s(local_2c0,0x80,&local_238);
|
|
lVar11 = DAT_140353190;
|
|
*(undefined4 *)(param_1 + 0x98) = *(undefined4 *)(DAT_140353190 + 0x80);
|
|
puVar3 = (undefined8 *)(lVar11 + 0x30);
|
|
if (7 < *(ulonglong *)(lVar11 + 0x48)) {
|
|
puVar3 = (undefined8 *)*puVar3;
|
|
}
|
|
FUN_14004c050(param_1 + 0x90,puVar3);
|
|
FUN_140154310(param_1 + 0x88);
|
|
local_2c8 = CConfig::vftable;
|
|
}
|
|
if (7 < local_2e0) {
|
|
operator_delete(local_2f8[0]);
|
|
}
|
|
return;
|
|
}
|
|
|