/* 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; }