370 lines
12 KiB
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;
|
|
}
|
|
|