/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14017fb20 FUN_14017fb20 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Function: __chkstk replaced with injection: alloca_probe */ /* WARNING: Removing unreachable block (ram,0x00014017ff80) */ void FUN_14017fb20(longlong *param_1) { ulonglong _Size; undefined4 uVar1; longlong lVar2; code *pcVar3; undefined8 uVar4; double dVar5; undefined8 uVar6; ulonglong uVar7; undefined4 *puVar8; longlong lVar9; undefined1 *puVar10; undefined1 *puVar11; longlong lVar12; longlong lVar13; undefined8 *puVar14; undefined1 auStack_dd8 [32]; undefined4 local_db8 [2]; longlong local_db0; longlong local_da8; undefined4 local_da0; int local_d9c; undefined8 local_d90; char local_d88; longlong *local_d80; undefined8 local_d78; undefined1 local_d70; undefined8 local_d68; undefined1 local_d60; undefined8 local_d58; undefined4 uStack_d50; undefined4 uStack_d4c; undefined8 local_d48; undefined1 local_d40; undefined8 local_d38; undefined4 uStack_d30; undefined4 uStack_d2c; undefined8 local_d28; undefined1 local_d20 [72]; undefined4 local_cd8; undefined4 uStack_cd4; undefined4 uStack_cd0; undefined4 uStack_ccc; undefined4 *local_58; undefined4 local_50; int local_4c; ulonglong local_48; puVar10 = auStack_dd8; puVar11 = auStack_dd8; local_d28 = 0xfffffffffffffffe; local_48 = DAT_1403463c0 ^ (ulonglong)local_db8; uVar6 = (**(code **)(*param_1 + 0x58))(); local_d48 = uVar6; FUN_14016db50(uVar6); local_d40 = 1; if (DAT_14034c86f != '\0') { (**(code **)(*param_1 + 200))(param_1,L"Proud::CNetServerImpl::PurgeTooOldUnmatureClient"); } if ((int)param_1[0x2e1] < 1) { FUN_14016dbe0(uVar6); goto LAB_140180038; } lVar13 = (longlong)(int)param_1[0x2e1] * 8; _Size = lVar13 + 0x10; if (_Size < 0x401) { uVar7 = lVar13 + 0x1f; if (uVar7 <= _Size) { uVar7 = 0xffffffffffffff0; } lVar13 = -(uVar7 & 0xfffffffffffffff0); puVar10 = auStack_dd8 + lVar13; puVar8 = (undefined4 *)((longlong)local_db8 + lVar13); puVar14 = (undefined8 *)0x0; puVar11 = auStack_dd8 + lVar13; if (puVar8 != (undefined4 *)0x0) { *puVar8 = 0xcccc; LAB_14017fc18: puVar14 = (undefined8 *)(puVar8 + 4); puVar11 = puVar10; } } else { puVar8 = malloc(_Size); puVar14 = (undefined8 *)0x0; puVar11 = auStack_dd8; if (puVar8 != (undefined4 *)0x0) { *puVar8 = 0xdddd; goto LAB_14017fc18; } } *(undefined8 *)(puVar11 + -8) = 0x14017fc28; dVar5 = (double)FUN_1401a1eb0(param_1 + 0xec); lVar12 = 0; lVar13 = lVar12; if (param_1[0x2e1] != 0) { lVar13 = param_1[0x2df]; } for (; lVar13 != 0; lVar13 = *(longlong *)(lVar13 + 0x18)) { lVar2 = *(longlong *)(lVar13 + 0x10); if ((DAT_14034c8a8 < dVar5 - *(double *)(lVar2 + 0x690)) && (*(char *)(lVar2 + 0x698) == '\0')) { *(undefined8 *)(puVar11 + -8) = 0x14017fc7c; FUN_1401baa10(lVar2 + 0xc0); puVar14[lVar12] = lVar2; lVar12 = lVar12 + 1; } } *(undefined8 *)(puVar11 + -8) = 0x14017fc94; FUN_14016dbe0(uVar6); local_d40 = 0; while ((0 < lVar12 && (lVar13 = 0, 0 < lVar12))) { do { lVar2 = puVar14[lVar13]; pcVar3 = *(code **)(*(longlong *)(lVar2 + 0x108) + 0x10); *(undefined8 *)(puVar11 + -8) = 0x14017fcc2; uVar6 = (*pcVar3)(); local_d88 = 0; local_d90 = uVar6; if (lVar13 == 0) { local_d88 = 1; *(undefined8 *)(puVar11 + -8) = 0x14017fe3d; FUN_14016db50(uVar6); *(undefined8 *)(puVar11 + -8) = 0x14017fe46; FUN_14016b440(local_db8); *(undefined8 *)(puVar11 + -8) = 0x14017fe50; FUN_14016abe0(local_db8); *(undefined8 *)(puVar11 + -8) = 0x14017fe5e; FUN_14016b5a0(local_db8,0x800); *(undefined8 *)(puVar11 + -8) = 0x14017fe69; FUN_14016b5a0(local_db8,0); *(undefined8 *)(puVar11 + -8) = 0x14017fe75; FUN_14004eef0(local_db8,3); local_4c = 200; local_50 = 0; local_58 = &local_cd8; if (local_db0 == 0) { uVar1 = local_da0; if (local_da8 == 0) { /* WARNING: Subroutine does not return */ *(undefined8 *)(puVar11 + -8) = 0x14018001f; FUN_14016d1e0(); } } else { uVar1 = *(undefined4 *)(local_db0 + 0x18); } lVar9 = local_da8; if (local_da8 == 0) { if (local_db0 == 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar11 + -8) = &UNK_140180019; FUN_14016d1e0(); } lVar9 = 0; if (*(int *)(local_db0 + 0x18) != 0) { lVar9 = *(longlong *)(local_db0 + 0x10); } } local_50 = 1; local_d38._0_4_ = (undefined4)lVar9; local_d38._4_4_ = (undefined4)((ulonglong)lVar9 >> 0x20); local_cd8 = (undefined4)local_d38; uStack_cd4 = local_d38._4_4_; uStack_ccc = uStack_d2c; local_d68 = 0; local_d60 = 1; uVar4 = *(undefined8 *)(lVar2 + 0x748); local_d38 = lVar9; uStack_d30 = uVar1; uStack_cd0 = uVar1; *(undefined8 *)(puVar11 + -8) = 0x14017ff10; FUN_1401ba860(uVar4,&local_cd8); if (local_58 == (undefined4 *)0x0) { *(undefined8 *)(puVar11 + -8) = 0x140180000; FUN_14016d300(local_d20,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0); /* WARNING: Subroutine does not return */ *(undefined **)(puVar11 + -8) = &UNK_140180013; _CxxThrowException(local_d20,(ThrowInfo *)&DAT_1403417f8); } if (local_4c < 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar11 + -8) = &UNK_14017ffec; FUN_14016d6b0(); } *(undefined1 *)(lVar2 + 0x698) = 1; *(undefined8 *)(puVar11 + -8) = 0x14017ff3d; FUN_14016dbe0(uVar6); local_d88 = '\0'; *(undefined8 *)(puVar11 + -8) = 0x14017ff4f; FUN_1401baa20(lVar2 + 0xc0); *puVar14 = puVar14[lVar12 + -1]; lVar12 = lVar12 + -1; local_d80 = &local_db0; *(undefined8 *)(puVar11 + -8) = 0x14017ff6e; FUN_14016d0e0(&local_db0); if ((local_da8 != 0) && (local_d9c < 0)) { /* WARNING: Subroutine does not return */ *(undefined8 *)(puVar11 + -8) = 0x14017ffe6; FUN_14016d6b0(); } } else { *(undefined8 *)(puVar11 + -8) = 0x14017fcde; local_d88 = FUN_14016dba0(); if (local_d88 != '\0') { *(undefined8 *)(puVar11 + -8) = 0x14017fcf5; FUN_14016b440(local_db8); *(undefined8 *)(puVar11 + -8) = 0x14017fcff; FUN_14016abe0(local_db8); *(undefined8 *)(puVar11 + -8) = 0x14017fd0d; FUN_14016b5a0(local_db8,0x800); *(undefined8 *)(puVar11 + -8) = 0x14017fd18; FUN_14016b5a0(local_db8,0); *(undefined8 *)(puVar11 + -8) = 0x14017fd24; FUN_14004eef0(local_db8,3); local_4c = 200; local_50 = 0; local_58 = &local_cd8; if (local_db0 == 0) { uVar1 = local_da0; if (local_da8 == 0) { /* WARNING: Subroutine does not return */ *(undefined8 *)(puVar11 + -8) = 0x14017ffe0; FUN_14016d1e0(); } } else { uVar1 = *(undefined4 *)(local_db0 + 0x18); } lVar9 = local_da8; if (local_da8 == 0) { if (local_db0 == 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar11 + -8) = &UNK_14017ffda; FUN_14016d1e0(); } lVar9 = 0; if (*(int *)(local_db0 + 0x18) != 0) { lVar9 = *(longlong *)(local_db0 + 0x10); } } local_50 = 1; local_d58._0_4_ = (undefined4)lVar9; local_d58._4_4_ = (undefined4)((ulonglong)lVar9 >> 0x20); local_cd8 = (undefined4)local_d58; uStack_cd4 = local_d58._4_4_; uStack_ccc = uStack_d4c; local_d78 = 0; local_d70 = 1; uVar4 = *(undefined8 *)(lVar2 + 0x748); local_d58 = lVar9; uStack_d50 = uVar1; uStack_cd0 = uVar1; *(undefined8 *)(puVar11 + -8) = 0x14017fdba; FUN_1401ba860(uVar4,&local_cd8); if (local_58 == (undefined4 *)0x0) { *(undefined8 *)(puVar11 + -8) = 0x14017ffc1; FUN_14016d300(local_d20,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0); /* WARNING: Subroutine does not return */ *(undefined **)(puVar11 + -8) = &UNK_14017ffd4; _CxxThrowException(local_d20,(ThrowInfo *)&DAT_1403417f8); } if (local_4c < 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar11 + -8) = &UNK_14017ffad; FUN_14016d6b0(); } *(undefined1 *)(lVar2 + 0x698) = 1; *(undefined8 *)(puVar11 + -8) = 0x14017fde7; FUN_14016dbe0(uVar6); local_d88 = '\0'; *(undefined8 *)(puVar11 + -8) = 0x14017fdf9; FUN_1401baa20(lVar2 + 0xc0); puVar14[lVar13] = puVar14[lVar12 + -1]; lVar12 = lVar12 + -1; local_d80 = &local_db0; *(undefined8 *)(puVar11 + -8) = 0x14017fe19; FUN_14016d0e0(&local_db0); if ((local_da8 != 0) && (local_d9c < 0)) { /* WARNING: Subroutine does not return */ *(undefined8 *)(puVar11 + -8) = 0x14017ffa7; FUN_14016d6b0(); } } } lVar13 = lVar13 + 1; } while (lVar13 < lVar12); } if ((puVar14 != (undefined8 *)0x0) && (*(int *)(puVar14 + -2) == 0xdddd)) { *(undefined8 *)(puVar11 + -8) = 0x140180037; free(puVar14 + -2); } LAB_140180038: *(undefined8 *)(puVar11 + -8) = 0x140180047; return; }