/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14004b260 FUN_14004b260 * 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,0x00014004b6c0) */ void FUN_14004b260(longlong *param_1,wchar_t *param_2,SIZE_T *param_3,undefined8 param_4) { ulonglong _Size; uint uVar1; longlong lVar2; code *pcVar3; char *pcVar4; double dVar5; int *piVar6; ulonglong uVar7; undefined4 *puVar8; longlong lVar9; undefined8 uVar10; undefined1 *puVar11; undefined1 *puVar12; longlong lVar13; longlong lVar14; undefined8 *puVar15; undefined1 auStack_dd8 [32]; int local_db8 [2]; longlong local_db0; longlong local_da8; uint local_da0; int local_d9c; int *local_d90; bool local_d88; longlong *local_d80; SIZE_T local_d78; undefined1 local_d70; SIZE_T local_d68; undefined1 local_d60; longlong local_d58; uint uStack_d50; undefined4 uStack_d4c; int *local_d48; undefined1 local_d40; longlong local_d38; uint uStack_d30; undefined4 uStack_d2c; undefined8 local_d28; exception local_d20 [72]; longlong local_cd8; undefined8 uStack_cd0; longlong *local_58; undefined4 local_50; int local_4c; ulonglong local_48; puVar11 = auStack_dd8; puVar12 = auStack_dd8; local_d28 = 0xfffffffffffffffe; local_48 = DAT_1401555a0 ^ (ulonglong)local_db8; piVar6 = (int *)(**(code **)(*param_1 + 0x58))(); local_d48 = piVar6; FUN_14002e6e0(piVar6); local_d40 = 1; if (DAT_14015bfcf != '\0') { param_3 = (SIZE_T *)*param_1; param_2 = L"Proud::CNetServerImpl::PurgeTooOldUnmatureClient"; (*(code *)param_3[0x19])(param_1); } if ((int)param_1[0x2e1] < 1) { FUN_14002e770((longlong)piVar6); goto LAB_14004b778; } lVar14 = (longlong)(int)param_1[0x2e1] * 8; _Size = lVar14 + 0x10; if (_Size < 0x401) { uVar7 = lVar14 + 0x1f; if (uVar7 <= _Size) { uVar7 = 0xffffffffffffff0; } lVar14 = -(uVar7 & 0xfffffffffffffff0); puVar11 = auStack_dd8 + lVar14; puVar8 = (undefined4 *)((longlong)local_db8 + lVar14); puVar15 = (undefined8 *)0x0; puVar12 = auStack_dd8 + lVar14; if (puVar8 != (undefined4 *)0x0) { *puVar8 = 0xcccc; LAB_14004b358: puVar15 = (undefined8 *)(puVar8 + 4); puVar12 = puVar11; } } else { puVar8 = malloc(_Size); puVar15 = (undefined8 *)0x0; puVar12 = auStack_dd8; if (puVar8 != (undefined4 *)0x0) { *puVar8 = 0xdddd; goto LAB_14004b358; } } *(undefined8 *)(puVar12 + -8) = 0x14004b368; dVar5 = FUN_14003a420((char *)(param_1 + 0xec)); lVar13 = 0; lVar14 = lVar13; if (param_1[0x2e1] != 0) { lVar14 = param_1[0x2df]; } for (; lVar14 != 0; lVar14 = *(longlong *)(lVar14 + 0x18)) { lVar2 = *(longlong *)(lVar14 + 0x10); if ((DAT_14015c008 < dVar5 - *(double *)(lVar2 + 0x690)) && (*(char *)(lVar2 + 0x698) == '\0')) { *(undefined8 *)(puVar12 + -8) = 0x14004b3bc; FUN_14009c460(lVar2 + 0xc0); puVar15[lVar13] = lVar2; lVar13 = lVar13 + 1; } } *(undefined8 *)(puVar12 + -8) = 0x14004b3d4; FUN_14002e770((longlong)piVar6); local_d40 = 0; while ((0 < lVar13 && (lVar14 = 0, 0 < lVar13))) { do { lVar2 = puVar15[lVar14]; pcVar3 = *(code **)(*(longlong *)(lVar2 + 0x108) + 0x10); *(undefined8 *)(puVar12 + -8) = 0x14004b402; piVar6 = (int *)(*pcVar3)(); local_d88 = false; local_d90 = piVar6; if (lVar14 == 0) { local_d88 = true; *(undefined8 *)(puVar12 + -8) = 0x14004b57d; FUN_14002e6e0(piVar6); *(undefined8 *)(puVar12 + -8) = 0x14004b586; FUN_1400806d0(local_db8); *(undefined8 *)(puVar12 + -8) = 0x14004b590; FUN_1400801a0((longlong)local_db8,param_2,(SIZE_T)param_3,param_4); *(undefined8 *)(puVar12 + -8) = 0x14004b59e; FUN_140080830(local_db8,0x800,(SIZE_T)param_3,param_4); uVar10 = 0; *(undefined8 *)(puVar12 + -8) = 0x14004b5a9; FUN_140080830(local_db8,0,(SIZE_T)param_3,param_4); uVar10 = CONCAT71((int7)((ulonglong)uVar10 >> 8),3); *(undefined8 *)(puVar12 + -8) = 0x14004b5b5; FUN_14001ba80((longlong)local_db8,uVar10,(SIZE_T)param_3,param_4); 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 *)(puVar12 + -8) = 0x14004b75f; FUN_140095370(0,uVar10,param_3,param_4); } } else { uVar1 = *(uint *)(local_db0 + 0x18); } lVar9 = local_da8; if (local_da8 == 0) { if (local_db0 == 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar12 + -8) = &UNK_14004b759; FUN_140095370(0,(ulonglong)uVar1,param_3,param_4); } lVar9 = 0; if (*(int *)(local_db0 + 0x18) != 0) { lVar9 = *(longlong *)(local_db0 + 0x10); } } local_50 = 1; uStack_cd0 = CONCAT44(uStack_d2c,uVar1); local_d68 = 0; local_d60 = 1; param_3 = &local_d68; param_2 = (wchar_t *)&local_cd8; pcVar4 = *(char **)(lVar2 + 0x748); local_d38 = lVar9; uStack_d30 = uVar1; local_cd8 = lVar9; *(undefined8 *)(puVar12 + -8) = 0x14004b650; FUN_14009c2b0(pcVar4,(longlong)param_2,param_3,param_4); if (local_58 == (longlong *)0x0) { *(undefined8 *)(puVar12 + -8) = 0x14004b740; FUN_14002f1e0(local_d20,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401569a0, param_3,param_4); /* WARNING: Subroutine does not return */ *(undefined **)(puVar12 + -8) = &UNK_14004b753; _CxxThrowException(local_d20,(ThrowInfo *)&DAT_140151b88); } if (local_4c < 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar12 + -8) = &UNK_14004b72c; FUN_14002f590(); } *(undefined1 *)(lVar2 + 0x698) = 1; *(undefined8 *)(puVar12 + -8) = 0x14004b67d; FUN_14002e770((longlong)piVar6); local_d88 = false; *(undefined8 *)(puVar12 + -8) = 0x14004b68f; FUN_14009c470(lVar2 + 0xc0); *puVar15 = puVar15[lVar13 + -1]; lVar13 = lVar13 + -1; local_d80 = &local_db0; *(undefined8 *)(puVar12 + -8) = 0x14004b6ae; FUN_140095270(&local_db0); if ((local_da8 != 0) && (local_d9c < 0)) { /* WARNING: Subroutine does not return */ *(undefined8 *)(puVar12 + -8) = 0x14004b726; FUN_14002f590(); } } else { *(undefined8 *)(puVar12 + -8) = 0x14004b41e; local_d88 = FUN_14002e730(piVar6); if (local_d88) { *(undefined8 *)(puVar12 + -8) = 0x14004b435; FUN_1400806d0(local_db8); *(undefined8 *)(puVar12 + -8) = 0x14004b43f; FUN_1400801a0((longlong)local_db8,param_2,(SIZE_T)param_3,param_4); *(undefined8 *)(puVar12 + -8) = 0x14004b44d; FUN_140080830(local_db8,0x800,(SIZE_T)param_3,param_4); uVar10 = 0; *(undefined8 *)(puVar12 + -8) = 0x14004b458; FUN_140080830(local_db8,0,(SIZE_T)param_3,param_4); uVar10 = CONCAT71((int7)((ulonglong)uVar10 >> 8),3); *(undefined8 *)(puVar12 + -8) = 0x14004b464; FUN_14001ba80((longlong)local_db8,uVar10,(SIZE_T)param_3,param_4); 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 *)(puVar12 + -8) = 0x14004b720; FUN_140095370(0,uVar10,0,param_4); } } else { uVar1 = *(uint *)(local_db0 + 0x18); } lVar9 = local_da8; if (local_da8 == 0) { if (local_db0 == 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar12 + -8) = &UNK_14004b71a; FUN_140095370(0,(ulonglong)uVar1,0,param_4); } lVar9 = 0; if (*(int *)(local_db0 + 0x18) != 0) { lVar9 = *(longlong *)(local_db0 + 0x10); } } local_50 = 1; uStack_cd0 = CONCAT44(uStack_d4c,uVar1); local_d78 = 0; local_d70 = 1; param_3 = &local_d78; param_2 = (wchar_t *)&local_cd8; pcVar4 = *(char **)(lVar2 + 0x748); local_d58 = lVar9; uStack_d50 = uVar1; local_cd8 = lVar9; *(undefined8 *)(puVar12 + -8) = 0x14004b4fa; FUN_14009c2b0(pcVar4,(longlong)param_2,param_3,param_4); if (local_58 == (longlong *)0x0) { *(undefined8 *)(puVar12 + -8) = 0x14004b701; FUN_14002f1e0(local_d20,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401569a0, param_3,param_4); /* WARNING: Subroutine does not return */ *(undefined **)(puVar12 + -8) = &UNK_14004b714; _CxxThrowException(local_d20,(ThrowInfo *)&DAT_140151b88); } if (local_4c < 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar12 + -8) = &UNK_14004b6ed; FUN_14002f590(); } *(undefined1 *)(lVar2 + 0x698) = 1; *(undefined8 *)(puVar12 + -8) = 0x14004b527; FUN_14002e770((longlong)piVar6); local_d88 = false; *(undefined8 *)(puVar12 + -8) = 0x14004b539; FUN_14009c470(lVar2 + 0xc0); puVar15[lVar14] = puVar15[lVar13 + -1]; lVar13 = lVar13 + -1; local_d80 = &local_db0; *(undefined8 *)(puVar12 + -8) = 0x14004b559; FUN_140095270(&local_db0); if ((local_da8 != 0) && (local_d9c < 0)) { /* WARNING: Subroutine does not return */ *(undefined8 *)(puVar12 + -8) = 0x14004b6e7; FUN_14002f590(); } } } lVar14 = lVar14 + 1; } while (lVar14 < lVar13); } if ((puVar15 != (undefined8 *)0x0) && (*(int *)(puVar15 + -2) == 0xdddd)) { *(undefined8 *)(puVar12 + -8) = 0x14004b777; free(puVar15 + -2); } LAB_14004b778: *(undefined8 *)(puVar12 + -8) = 0x14004b787; return; }