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

370 lines
12 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401edcf0 FUN_1401edcf0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1401edcf0(undefined *param_1,int *param_2)
{
undefined *puVar1;
int *piVar2;
int iVar3;
longlong lVar4;
undefined *puVar5;
longlong *plVar6;
ulonglong uVar7;
char cVar8;
undefined8 uVar9;
undefined8 uVar10;
undefined1 auStack_ec8 [32];
undefined1 local_ea8 [8];
undefined *local_ea0;
undefined1 local_e98 [4];
undefined4 local_e94;
longlong local_e90;
longlong local_e88;
undefined4 local_e80;
int local_e7c;
undefined *local_e70;
undefined *local_e68;
undefined *local_e60;
undefined **local_e58;
undefined8 local_e50;
undefined8 local_e48;
undefined8 local_e40;
undefined8 local_e38;
undefined **local_e30;
undefined8 local_e28;
undefined8 local_e20;
undefined8 local_e18;
undefined8 local_e10;
undefined **local_e08;
undefined8 local_e00;
undefined8 local_df8;
undefined8 local_df0;
undefined8 local_de8;
longlong *local_dd0;
undefined **local_dc8;
undefined8 local_dc0;
undefined8 local_db8;
ulonglong local_db0;
undefined8 local_da8;
undefined **local_da0;
undefined8 local_d98;
undefined8 local_d90;
ulonglong local_d88;
undefined8 local_d80;
undefined8 local_d78;
undefined1 local_d70;
undefined8 local_d68;
undefined1 local_d60;
undefined8 local_d58;
undefined1 local_d50;
undefined4 local_d48;
int iStack_d44;
undefined8 local_d40;
undefined8 local_d38;
undefined8 local_d30;
undefined8 local_d28;
undefined8 local_d20;
undefined8 local_d18;
undefined1 local_d10;
undefined8 local_d08;
undefined1 local_d00;
undefined8 local_ce0;
undefined1 local_cb8 [3216];
ulonglong local_28;
local_ce0 = 0xfffffffffffffffe;
local_28 = DAT_1403463c0 ^ (ulonglong)auStack_ec8;
local_ea0 = param_1;
(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x78) + 0x10))();
cVar8 = FUN_14016b370(param_2,local_ea8,1);
if (cVar8 == '\0') {
FUN_14016d8c0();
local_e70 = PTR_DAT_1403440a0;
FUN_1401df890(*(undefined8 *)(param_1 + 0x108),8,3,&local_e70);
puVar5 = local_e70;
if (((local_e70 != (undefined *)0x0) && (local_e70 != PTR_DAT_1403440a0)) &&
(puVar1 = local_e70 + -8, puVar1 != (undefined *)0x0)) {
uVar9 = FUN_14016d8c0();
local_d68 = uVar9;
FUN_14016db50(uVar9);
local_d60 = 1;
piVar2 = (int *)(puVar5 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14016d970(puVar1);
}
FUN_14016dbe0(uVar9);
local_d60 = 0;
}
local_e70 = PTR_DAT_1403440a0;
LAB_1401eddee:
if (*(int *)(param_1 + 0x100) < 4) {
*(undefined4 *)(param_1 + 0x40) = 0;
*(undefined4 *)(param_1 + 0x100) = 4;
uVar9 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x70) + 0x1c0))();
*(undefined8 *)(param_1 + 0x80) = uVar9;
param_1[0xc0] = 0;
}
return;
}
FUN_1401c2a30(&local_d48);
cVar8 = FUN_14016be80(param_2,&local_d48);
if (cVar8 == '\0') {
FUN_14016d8c0();
local_e60 = PTR_DAT_1403440a0;
FUN_1401df890(*(undefined8 *)(param_1 + 0x108),8,3,&local_e60);
puVar5 = local_e60;
if (((local_e60 != (undefined *)0x0) && (local_e60 != PTR_DAT_1403440a0)) &&
(puVar1 = local_e60 + -8, puVar1 != (undefined *)0x0)) {
uVar9 = FUN_14016d8c0();
local_d78 = uVar9;
FUN_14016db50(uVar9);
local_d70 = 1;
piVar2 = (int *)(puVar5 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14016d970(puVar1);
}
FUN_14016dbe0(uVar9);
local_d70 = 0;
}
local_e60 = PTR_DAT_1403440a0;
goto LAB_1401eddee;
}
lVar4 = *(longlong *)(param_1 + 0x108);
*(ulonglong *)(lVar4 + 0x6a0) = CONCAT44(iStack_d44,local_d48);
*(undefined8 *)(lVar4 + 0x6a8) = local_d40;
*(undefined8 *)(lVar4 + 0x6b0) = local_d38;
*(undefined8 *)(lVar4 + 0x6b8) = local_d30;
*(undefined8 *)(lVar4 + 0x6c0) = local_d28;
*(undefined8 *)(lVar4 + 0x6c8) = local_d20;
if (*(char *)(*(longlong *)(param_1 + 0x108) + 0x6cc) != '\0') {
uVar9 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x70) + 0x1c0))();
*(undefined8 *)(*(longlong *)(param_1 + 0x108) + 0x638) = uVar9;
}
uVar9 = 0;
local_e00 = 0;
local_df8 = 0;
local_df0 = 0;
local_de8 = 0;
local_e08 = Proud::ByteArray::vftable;
cVar8 = FUN_14016ba10(param_2,&local_dd0);
plVar6 = local_dd0;
if (((cVar8 != '\0') && (-1 < (int)local_dd0)) && ((int)local_dd0 <= DAT_140344d70)) {
FUN_14004f0e0(&local_e08,(ulonglong)local_dd0 & 0xffffffff);
uVar10 = local_df8;
if ((int)local_df0 == 0) {
uVar10 = uVar9;
}
cVar8 = FUN_14016b370(param_2,uVar10,(ulonglong)plVar6 & 0xffffffff);
if (cVar8 != '\0') {
local_e50 = 0;
local_e48 = 0;
local_e40 = 0;
local_e38 = 0;
local_e58 = Proud::ByteArray::vftable;
local_e28 = 0;
local_e20 = 0;
local_e18 = 0;
local_e10 = 0;
local_e30 = Proud::ByteArray::vftable;
FUN_1401c14a0(&local_e58,*(undefined4 *)(*(longlong *)(param_1 + 0x108) + 0x6bc));
uVar10 = local_e48;
if ((int)local_e40 == 0) {
uVar10 = uVar9;
}
FUN_1401af310(*(longlong *)(param_1 + 0x108) + 0xd8,uVar10,
*(uint *)(*(longlong *)(param_1 + 0x108) + 0x6bc) >> 3,0x10);
FUN_1401c14a0(&local_e30,*(undefined4 *)(*(longlong *)(param_1 + 0x108) + 0x6c0));
uVar10 = local_e20;
if ((int)local_e18 == 0) {
uVar10 = uVar9;
}
FUN_1401c0b90(*(longlong *)(param_1 + 0x108) + 0x4a8,uVar10,
*(uint *)(*(longlong *)(param_1 + 0x108) + 0x6c0) >> 3);
uVar10 = FUN_140198890();
FUN_14016db50(uVar10);
if (iStack_d44 < DAT_140344d70) {
iStack_d44 = DAT_140344d70;
}
DAT_140344d70 = iStack_d44;
FUN_14016dbe0(uVar10);
if (*(longlong *)(param_2 + 2) == 0) {
if (*(longlong *)(param_2 + 4) == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
iVar3 = param_2[6];
}
else {
iVar3 = *(int *)(*(longlong *)(param_2 + 2) + 0x18);
}
if ((int)(*param_2 + (*param_2 >> 0x1f & 7U)) >> 3 != iVar3) {
FUN_14016d8c0();
local_ea0 = PTR_DAT_1403440a0;
FUN_1401df890(*(undefined8 *)(param_1 + 0x108),8,3,&local_ea0);
puVar5 = local_ea0;
if (((local_ea0 != (undefined *)0x0) && (local_ea0 != PTR_DAT_1403440a0)) &&
(puVar1 = local_ea0 + -8, puVar1 != (undefined *)0x0)) {
uVar9 = FUN_14016d8c0();
local_d08 = uVar9;
FUN_14016db50(uVar9);
local_d00 = 1;
piVar2 = (int *)(puVar5 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14016d970(puVar1);
}
FUN_14016dbe0(uVar9);
}
FUN_1401ea690(param_1,4);
FUN_14019a9e0(&local_e30);
FUN_14019a9e0(&local_e58);
goto LAB_1401ee687;
}
*(undefined1 *)(*(longlong *)(param_1 + 0x108) + 0x1790) = local_ea8[0];
lVar4 = *(longlong *)(param_1 + 0x108);
uVar10 = FUN_1401c71f0(lVar4);
FUN_1401f9b00(uVar10,*(undefined1 *)(lVar4 + 0x6b8));
local_dc0 = 0;
local_db8 = 0;
local_db0 = 0;
local_da8 = 0;
local_dc8 = Proud::ByteArray::vftable;
local_d98 = 0;
local_d90 = 0;
local_d88 = 0;
local_d80 = 0;
local_da0 = Proud::ByteArray::vftable;
FUN_1401c14a0(&local_e58,*(undefined4 *)(*(longlong *)(param_1 + 0x108) + 0x6bc));
uVar10 = local_e48;
if ((int)local_e40 == 0) {
uVar10 = uVar9;
}
FUN_1401af310(*(longlong *)(param_1 + 0x108) + 0x708,uVar10,
*(uint *)(*(longlong *)(param_1 + 0x108) + 0x6bc) >> 3,0x10);
FUN_1401c1660(&local_dc8,&local_e58,&local_e08);
FUN_1401c14a0(&local_e30,*(undefined4 *)(*(longlong *)(param_1 + 0x108) + 0x6c0));
uVar10 = local_e20;
if ((int)local_e18 == 0) {
uVar10 = uVar9;
}
FUN_1401c0b90(*(longlong *)(param_1 + 0x108) + 0xad8,uVar10,
*(uint *)(*(longlong *)(param_1 + 0x108) + 0x6c0) >> 3);
FUN_1401b13d0(&local_e30,&local_da0,*(longlong *)(param_1 + 0x108) + 0x708);
FUN_14016b440(local_e98);
FUN_14016abe0(local_e98);
FUN_14016b5a0(local_e98,0x800);
FUN_14016b5a0(local_e98,0);
FUN_14004eef0(local_e98,5);
uVar7 = local_db0;
iVar3 = (int)local_db0;
FUN_14016cac0(local_e98,(longlong)(int)local_db0);
uVar10 = local_db8;
if ((int)local_db0 == 0) {
uVar10 = uVar9;
}
if (iVar3 != 0) {
local_e94 = 0;
if (local_e90 == 0) {
if (local_e88 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0(0,uVar10);
}
LAB_1401ee3f2:
FUN_14004efd0(&local_e88,uVar10,uVar7 & 0xffffffff);
}
else {
if (local_e88 != 0) goto LAB_1401ee3f2;
if (local_e90 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0(0,uVar10);
}
FUN_14004f200(local_e90,uVar10,uVar7 & 0xffffffff);
}
FUN_14004f270(local_e98);
}
uVar7 = local_d88;
iVar3 = (int)local_d88;
FUN_14016cac0(local_e98,(longlong)(int)local_d88);
uVar10 = local_d90;
if ((int)local_d88 == 0) {
uVar10 = uVar9;
}
if (iVar3 != 0) {
local_e94 = 0;
if (local_e90 == 0) {
if (local_e88 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0(0,uVar10);
}
LAB_1401ee470:
FUN_14004efd0(&local_e88,uVar10,uVar7 & 0xffffffff);
}
else {
if (local_e88 != 0) goto LAB_1401ee470;
if (local_e90 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0(0,uVar10);
}
FUN_14004f200(local_e90,uVar10,uVar7 & 0xffffffff);
}
FUN_14004f270(local_e98);
}
uVar9 = FUN_14016e080(local_cb8,local_e98);
local_d58 = 0;
local_d50 = 1;
uVar10 = FUN_1401c71f0(*(undefined8 *)(param_1 + 0x108));
FUN_1401f9d30(uVar10,uVar9,&local_d58);
FUN_14016ddc0(local_cb8);
local_dd0 = &local_e90;
FUN_14016d0e0(&local_e90);
if (local_e88 != 0) {
if (local_e7c < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
local_e80 = 0;
}
FUN_14019a9e0(&local_da0);
FUN_14019a9e0(&local_dc8);
FUN_14019a9e0(&local_e30);
FUN_14019a9e0(&local_e58);
goto LAB_1401ee687;
}
}
FUN_14016d8c0();
local_e68 = PTR_DAT_1403440a0;
FUN_1401df890(*(undefined8 *)(param_1 + 0x108),8,3,&local_e68);
puVar5 = local_e68;
if (((local_e68 != (undefined *)0x0) && (local_e68 != PTR_DAT_1403440a0)) &&
(puVar1 = local_e68 + -8, puVar1 != (undefined *)0x0)) {
uVar9 = FUN_14016d8c0();
local_d18 = uVar9;
FUN_14016db50(uVar9);
local_d10 = 1;
piVar2 = (int *)(puVar5 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14016d970(puVar1);
}
FUN_14016dbe0(uVar9);
local_d10 = 0;
}
local_e68 = PTR_DAT_1403440a0;
if (*(int *)(param_1 + 0x100) < 4) {
*(undefined4 *)(param_1 + 0x40) = 0;
*(undefined4 *)(param_1 + 0x100) = 4;
uVar9 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x70) + 0x1c0))();
*(undefined8 *)(param_1 + 0x80) = uVar9;
param_1[0xc0] = 0;
}
LAB_1401ee687:
FUN_14019a9e0(&local_e08);
return;
}