server-re/decomp/DBCServer_Release_x64/full/functions/0x1401dd3e0.c

242 lines
8.5 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401dd3e0 FUN_1401dd3e0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001401dd718) */
/* WARNING: Removing unreachable block (ram,0x0001401dd619) */
/* WARNING: Removing unreachable block (ram,0x0001401dd629) */
/* WARNING: Removing unreachable block (ram,0x0001401dd723) */
/* WARNING: Removing unreachable block (ram,0x0001401dd63d) */
/* WARNING: Removing unreachable block (ram,0x0001401dd645) */
/* WARNING: Removing unreachable block (ram,0x0001401dd64f) */
/* WARNING: Removing unreachable block (ram,0x0001401dd70d) */
void FUN_1401dd3e0(longlong param_1,char param_2)
{
longlong *plVar1;
int *piVar2;
longlong *plVar3;
longlong *plVar4;
undefined8 *puVar5;
longlong lVar6;
longlong lVar7;
undefined8 uVar8;
undefined1 auStack_1a8 [40];
longlong local_180;
longlong *local_178;
undefined8 local_170;
undefined8 local_168;
undefined8 local_160;
undefined8 local_158;
undefined8 local_150;
undefined8 local_148;
undefined1 local_140;
undefined8 local_138;
undefined4 local_100;
uint uStack_fc;
undefined4 local_f8;
uint uStack_f4;
undefined1 local_f0 [24];
undefined1 local_d8 [24];
undefined1 local_c0 [56];
undefined *local_88 [4];
undefined1 local_68 [48];
ulonglong local_38;
local_138 = 0xfffffffffffffffe;
local_38 = DAT_1403463c0 ^ (ulonglong)auStack_1a8;
(**(code **)(*(longlong *)(param_1 + 0x78) + 0x10))();
lVar7 = 0;
local_158 = 0;
FUN_1401c8610(param_1 + 0x1570,&local_158);
if ((*(longlong **)(param_1 + 0x15d8) != (longlong *)0x0) &&
(lVar6 = **(longlong **)(param_1 + 0x15d8), lVar6 != 0)) {
if (*(char *)(lVar6 + 0x40) == '\0') {
lVar6 = lVar7;
if (*(longlong **)(param_1 + 0x15d8) != (longlong *)0x0) {
lVar6 = **(longlong **)(param_1 + 0x15d8);
}
if (*(char *)(lVar6 + 0x80) == '\0') goto LAB_1401dd4bb;
}
local_170 = 0;
FUN_1401eb200(&local_170,param_1 + 0x15d8);
lVar6 = lVar7;
if (*(longlong *)(param_1 + 0x5d8) != 0) {
lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x5d8) + 0x38);
}
FUN_1401f0190(lVar6,&local_170);
}
LAB_1401dd4bb:
if ((*(longlong **)(param_1 + 0x1520) != (longlong *)0x0) &&
(lVar6 = **(longlong **)(param_1 + 0x1520), lVar6 != 0)) {
if (*(char *)(lVar6 + 0x40) == '\0') {
lVar6 = lVar7;
if (*(longlong **)(param_1 + 0x1520) != (longlong *)0x0) {
lVar6 = **(longlong **)(param_1 + 0x1520);
}
if (*(char *)(lVar6 + 0x80) == '\0') goto LAB_1401dd52f;
}
local_168 = 0;
FUN_1401eb200(&local_168,param_1 + 0x1520);
lVar6 = lVar7;
if (*(longlong *)(param_1 + 0x5d8) != 0) {
lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x5d8) + 0x38);
}
FUN_1401f0190(lVar6,&local_168);
}
LAB_1401dd52f:
local_150 = 0;
FUN_1401eb200(param_1 + 0x15d8,&local_150);
local_160 = 0;
FUN_1401eb200(param_1 + 0x1520,&local_160);
FUN_1401d86d0(param_1);
plVar3 = *(longlong **)(param_1 + 0x1708);
do {
if (plVar3 == (longlong *)0x0) {
FUN_1401d3ed0(param_1 + 0x1700);
if (param_2 != '\0') {
FUN_1401db880(param_1 + 0x15e0);
}
FUN_1401af7f0(param_1 + 0xd8);
FUN_14004f0e0(param_1 + 0x4a8,0);
*(undefined4 *)(param_1 + 0x4d8) = 0;
*(undefined1 *)(param_1 + 0x4e8) = 0;
*(undefined4 *)(param_1 + 0x4ec) = 0;
*(undefined8 *)(param_1 + 0x4f0) = 0;
*(undefined8 *)(param_1 + 0x4f8) = 0;
*(undefined8 *)(param_1 + 0x500) = 0;
*(undefined8 *)(param_1 + 0x5c8) = 0;
FUN_1401db2b0(param_1 + 0x5e0);
uVar8 = FUN_140198870();
*(undefined8 *)(param_1 + 0x640) = uVar8;
*(undefined8 *)(param_1 + 0x648) = DAT_140344cc0;
*(undefined8 *)(param_1 + 0x510) = DAT_140344d30;
*(undefined1 *)(param_1 + 0x650) = 0;
uStack_fc = uStack_fc & 0xffffff00;
local_100 = 0;
local_f8 = 0;
*(undefined8 *)(param_1 + 0x658) = 0;
*(undefined8 *)(param_1 + 0x660) = 0;
*(undefined8 *)(param_1 + 0x668) = 0;
*(undefined8 *)(param_1 + 0x670) = 0;
*(undefined8 *)(param_1 + 0x678) = 0;
*(undefined8 *)(param_1 + 0x680) = 0;
*(ulonglong *)(param_1 + 0x688) = (ulonglong)uStack_fc << 0x20;
*(ulonglong *)(param_1 + 0x690) = (ulonglong)uStack_f4 << 0x20;
*(undefined4 *)(param_1 + 0x698) = DAT_140344d40;
puVar5 = (undefined8 *)FUN_1401c2a30(local_c0);
*(undefined8 *)(param_1 + 0x6a0) = *puVar5;
*(undefined8 *)(param_1 + 0x6a8) = puVar5[1];
*(undefined8 *)(param_1 + 0x6b0) = puVar5[2];
*(undefined8 *)(param_1 + 0x6b8) = puVar5[3];
*(undefined8 *)(param_1 + 0x6c0) = puVar5[4];
*(undefined8 *)(param_1 + 0x6c8) = puVar5[5];
*(undefined4 *)(param_1 + 0x6d0) = 0;
*(undefined4 *)(param_1 + 0x6d4) = 0;
*(undefined4 *)(param_1 + 0x6d8) = 0;
*(undefined4 *)(param_1 + 0x6dc) = 0;
FUN_1401d40a0(param_1 + 0x6e0);
*(undefined4 *)(param_1 + 0x700) = 0;
*(undefined1 *)(param_1 + 0x1528) = 0;
FUN_1401d40a0(param_1 + 0x1530);
*(undefined4 *)(param_1 + 0x1578) = 0;
uVar8 = FUN_1401bbb30(local_88);
FUN_1401c8a20(param_1 + 0x1588,uVar8);
FUN_14019a9e0(local_68);
if (((local_88[0] != (undefined *)0x0) && (local_88[0] != PTR_DAT_1403440a0)) &&
(local_88[0] + -8 != (undefined *)0x0)) {
uVar8 = FUN_14016d8c0();
local_148 = uVar8;
FUN_14016db50(uVar8);
local_140 = 1;
piVar2 = (int *)(local_88[0] + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14016d970(local_88[0] + -8);
}
FUN_14016dbe0(uVar8);
local_140 = 0;
}
local_88[0] = PTR_DAT_1403440a0;
FUN_1401db880(param_1 + 0x1600);
FUN_1401a1e70(param_1 + 0x1620);
*(undefined8 *)(param_1 + 0x1648) = 0;
FUN_1401d5a70(param_1 + 0x1650);
FUN_1401d5a70(param_1 + 0x16a8);
puVar5 = (undefined8 *)FUN_1401c59f0(local_f0,DAT_140344db0);
*(undefined8 *)(param_1 + 0x1778) = *puVar5;
*(undefined8 *)(param_1 + 0x1780) = puVar5[1];
*(undefined8 *)(param_1 + 0x1788) = puVar5[2];
puVar5 = (undefined8 *)FUN_1401c59f0(local_d8,DAT_140344dd0);
*(undefined8 *)(param_1 + 0x1878) = *puVar5;
*(undefined8 *)(param_1 + 0x1880) = puVar5[1];
*(undefined8 *)(param_1 + 0x1888) = puVar5[2];
*(undefined8 *)(param_1 + 0x1798) = 0x3ff0000000000000;
*(undefined8 *)(param_1 + 0x1890) = 0;
*(undefined8 *)(param_1 + 0x18c0) = 0;
*(undefined2 *)(param_1 + 0x18c8) = 0;
*(undefined1 *)(param_1 + 0x18ca) = 0;
*(undefined8 *)(param_1 + 0x1870) = 0;
*(undefined8 *)(param_1 + 0x17a0) = 0;
*(undefined8 *)(param_1 + 0x17a8) = 0;
*(undefined8 *)(param_1 + 0xd0) = 0;
return;
}
local_178 = (longlong *)0x0;
if (plVar3[2] != 0) {
*(longlong *)(plVar3[2] + 8) = *(longlong *)(plVar3[2] + 8) + 1;
local_178 = (longlong *)plVar3[2];
}
lVar6 = lVar7;
if (local_178 != (longlong *)0x0) {
lVar6 = *local_178;
}
if (*(char *)(lVar6 + 0x40) == '\0') {
lVar6 = lVar7;
if (local_178 != (longlong *)0x0) {
lVar6 = *local_178;
}
if (*(char *)(lVar6 + 0x80) != '\0') goto code_r0x0001401dd5ef;
}
else {
code_r0x0001401dd5ef:
local_180 = 0;
if (plVar3[2] != 0) {
*(longlong *)(plVar3[2] + 8) = *(longlong *)(plVar3[2] + 8) + 1;
local_180 = plVar3[2];
}
lVar6 = lVar7;
if (*(longlong *)(param_1 + 0x5d8) != 0) {
lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x5d8) + 0x38);
}
FUN_1401f0190(lVar6,&local_180);
}
if (plVar3 == *(longlong **)(param_1 + 0x1708)) {
*(longlong *)(param_1 + 0x1708) = *plVar3;
}
else {
*(longlong *)plVar3[1] = *plVar3;
}
if (plVar3 == *(longlong **)(param_1 + 0x1710)) {
*(longlong *)(param_1 + 0x1710) = plVar3[1];
}
else {
*(longlong *)(*plVar3 + 8) = plVar3[1];
}
FUN_1401d2090(param_1 + 0x1700);
plVar4 = local_178;
if (local_178 != (longlong *)0x0) {
plVar1 = local_178 + 1;
*plVar1 = *plVar1 + -1;
if (*plVar1 == 0) {
if ((undefined8 *)*local_178 != (undefined8 *)0x0) {
(*(code *)**(undefined8 **)*local_178)();
}
FUN_14016d970(plVar4);
}
}
} while( true );
}