/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14007cae0 FUN_14007cae0 * Pseudocode, not original source. */ /* WARNING: Function: __chkstk replaced with injection: alloca_probe */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Removing unreachable block (ram,0x00014007d18c) */ void FUN_14007cae0(longlong param_1,uint *param_2,wchar_t *param_3,longlong param_4) { uint uVar1; char *pcVar2; code *pcVar3; LPVOID pvVar4; int iVar5; ulonglong uVar6; undefined8 uVar7; longlong lVar8; ulonglong uVar9; undefined4 *puVar10; int *piVar11; uint uVar12; wchar_t *pwVar13; undefined1 *puVar14; longlong lVar15; longlong *plVar16; ulonglong uVar17; undefined1 *puVar18; undefined1 *puVar19; uint uVar20; undefined8 *puVar21; longlong lVar22; undefined8 *puVar23; SIZE_T *pSVar24; longlong lVar25; ulonglong uVar26; undefined1 auStack_1b88 [32]; int local_1b68 [2]; longlong *local_1b60; longlong *local_1b58; undefined **local_1b50; longlong *local_1b48; LPVOID local_1b40; undefined8 local_1b38; undefined8 local_1b30; uint local_1b28; int local_1b20 [2]; longlong local_1b18; longlong local_1b10; uint local_1b08; int local_1b04; int *local_1af8; undefined1 local_1af0; undefined4 local_1ae8; undefined4 uStack_1ae4; undefined4 local_1ad8; undefined4 uStack_1ad4; int *local_1ad0; undefined1 local_1ac8; SIZE_T local_1ac0; undefined1 local_1ab8; longlong local_1ab0; uint uStack_1aa8; undefined4 uStack_1aa4; SIZE_T local_1aa0; undefined1 local_1a98; longlong local_1a90; uint uStack_1a88; undefined4 uStack_1a84; undefined8 local_1a80; exception local_1a78 [88]; undefined8 local_1a20; undefined4 local_1a18 [2]; longlong local_1a10; longlong local_1a08; uint local_1a00; int local_19fc; undefined1 local_19f0 [136]; longlong local_1968; undefined8 uStack_1960; longlong *local_ce8; undefined4 local_ce0; int local_cdc; undefined1 local_cd8 [3200]; undefined1 *local_58; undefined4 local_50; int local_4c; ulonglong local_48; undefined8 uStack_40; uStack_40 = 0x14007caf6; puVar18 = auStack_1b88; puVar19 = auStack_1b88; local_1a80 = 0xfffffffffffffffe; local_48 = DAT_14016f5a0 ^ (ulonglong)local_1b68; uVar17 = 0; local_1b48 = (longlong *)0x0; local_1b40 = (LPVOID)0x0; local_1b38 = 0; local_1b30 = 0; local_1b50 = Proud::BypassDestList::vftable; pwVar13 = param_3; uVar6 = thunk_FUN_140075b20(param_2,(longlong)&local_1b50,param_3,param_4); puVar14 = auStack_1b88; if (((char)uVar6 == '\0') || (uVar6 = FUN_140075580(param_2,&local_1b58,pwVar13,param_4), plVar16 = local_1b58, puVar14 = auStack_1b88, (char)uVar6 == '\0')) { LAB_14007d2db: pvVar4 = local_1b40; plVar16 = local_1b48; local_1b50 = Proud::CFastArray::vftable; if (local_1b40 == (LPVOID)0x0) goto LAB_14007d30b; puVar19 = puVar14; if (local_1b48 != (longlong *)0x0) { pcVar3 = *(code **)(*local_1b48 + 0x18); *(undefined8 *)(puVar14 + -8) = 0x14007d304; (*pcVar3)(plVar16,pvVar4); goto LAB_14007d30b; } } else { uVar20 = (uint)local_1b58; if ((-1 < (int)uVar20) && ((int)uVar20 < DAT_14016f140)) { uVar1 = *param_2; uVar12 = (int)uVar1 >> 0x1f & 7; iVar5 = FUN_14004d230((longlong)param_2,(ulonglong)uVar12,pwVar13,param_4); if (((int)(uVar12 + uVar1) >> 3) + uVar20 != iVar5) { param_4 = 2; FUN_14006c410(*(longlong **)(param_1 + 0x148),param_3, "msg.GetReadOffset() + payloadLength == msg.GetLength()",2); } FUN_140074fb0(local_1b20); uVar6 = (ulonglong)plVar16 & 0xffffffff; uVar7 = FUN_140075210(param_2,local_1b20,uVar20,param_4); if ((char)uVar7 == '\0') { FUN_14006c410(*(longlong **)(param_1 + 0x148),param_3,"0",2); local_1b58 = &local_1b18; FUN_14008a320(&local_1b18); puVar14 = auStack_1b88; if (local_1b10 != 0) { if (local_1b04 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } local_1b08 = 0; puVar14 = auStack_1b88; } } else { lVar8 = (longlong)(int)local_1b38; local_1b60 = (longlong *)CONCAT44(local_1b60._4_4_,(int)local_1b38); if ((int)local_1b38 < 1) { local_1b58 = &local_1b18; FUN_14008a320(&local_1b18); puVar14 = auStack_1b88; if (local_1b10 != 0) { if (local_1b04 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } local_1b08 = 0; puVar14 = auStack_1b88; } } else { lVar25 = lVar8 * 0x18; uVar26 = lVar25 + 0x10; if (uVar26 < 0x401) { uVar9 = lVar25 + 0x1f; if (uVar9 <= uVar26) { uVar9 = 0xffffffffffffff0; } lVar25 = -(uVar9 & 0xfffffffffffffff0); puVar18 = auStack_1b88 + lVar25; puVar10 = (undefined4 *)((longlong)local_1b68 + lVar25); puVar23 = (undefined8 *)0x0; if (puVar10 != (undefined4 *)0x0) { *puVar10 = 0xcccc; puVar18 = auStack_1b88 + lVar25; LAB_14007ccbb: puVar23 = (undefined8 *)(puVar10 + 4); } } else { puVar10 = malloc(uVar26); puVar23 = (undefined8 *)0x0; if (puVar10 != (undefined4 *)0x0) { *puVar10 = 0xdddd; puVar18 = auStack_1b88; goto LAB_14007ccbb; } } pwVar13 = (wchar_t *)**(longlong **)(param_1 + 0x148); pcVar3 = *(code **)(pwVar13 + 0x2c); *(undefined8 *)(puVar18 + -8) = 0x14007cccc; piVar11 = (int *)(*pcVar3)(); local_1ad0 = piVar11; *(undefined8 *)(puVar18 + -8) = 0x14007ccdb; FUN_14003d040(piVar11); local_1ac8 = 1; if (DAT_14017614f != '\0') { uVar6 = **(ulonglong **)(param_1 + 0x148); pwVar13 = L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_ReliableRelay1"; pcVar3 = *(code **)(uVar6 + 200); *(undefined8 *)(puVar18 + -8) = 0x14007cd03; (*pcVar3)(); } pcVar3 = *(code **)(*(longlong *)param_3 + 0x10); *(undefined8 *)(puVar18 + -8) = 0x14007cd0d; local_1b28 = (*pcVar3)(); local_1b68[0] = 0; puVar21 = puVar23; uVar26 = uVar17; if (0 < lVar8) { do { pvVar4 = local_1b40; if ((longlong)uVar17 < 0) { LAB_14007cdae: /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007cdb3; FUN_14003def0(param_3,pwVar13,uVar6,param_4); } if ((int)local_1b38 <= (int)uVar26) goto LAB_14007cdae; uVar20 = *(uint *)((longlong)local_1b40 + uVar17 * 8); pwVar13 = (wchar_t *)(ulonglong)uVar20; lVar8 = *(longlong *)(param_1 + 0x148); *(undefined8 *)(puVar18 + -8) = 0x14007cd4f; lVar8 = FUN_14004f000(lVar8,uVar20); if (lVar8 != 0) { *(undefined8 *)(puVar18 + -8) = 0x14007cd63; FUN_140091240(lVar8 + 0xc0); local_1ae8 = *(undefined4 *)((longlong)pvVar4 + uVar17 * 8 + 4); local_1ad8 = *(undefined4 *)((longlong)pvVar4 + uVar17 * 8); *puVar21 = CONCAT44(uStack_1ae4,local_1ae8); puVar21[1] = lVar8; puVar21[2] = CONCAT44(uStack_1ad4,local_1ad8); local_1b68[0] = local_1b68[0] + 1; puVar21 = puVar21 + 3; } uVar17 = uVar17 + 1; param_3 = (wchar_t *)(longlong)(int)local_1b60; uVar26 = (ulonglong)((int)uVar26 + 1); } while ((longlong)uVar17 < (longlong)param_3); } piVar11 = local_1ad0; iVar5 = local_1b68[0]; *(undefined8 *)(puVar18 + -8) = 0x14007cdc0; FUN_14003d0d0((longlong)piVar11); local_1ac8 = 0; lVar8 = (longlong)iVar5; while ((0 < lVar8 && (lVar25 = 0, 0 < lVar8))) { lVar22 = lVar8 * 0x18 + -0x18; do { uVar6 = puVar23[lVar25 * 3]; local_1b60 = (longlong *)puVar23[lVar25 * 3 + 1]; local_1a20 = puVar23[lVar25 * 3 + 2]; pcVar3 = *(code **)(*(longlong *)(puVar23[lVar25 * 3 + 1] + 0x108) + 0x10); *(undefined8 *)(puVar18 + -8) = 0x14007ce1b; piVar11 = (int *)(*pcVar3)(); local_1af0 = 0; local_1af8 = piVar11; *(undefined8 *)(puVar18 + -8) = 0x14007ce32; FUN_140074fb0(local_1a18); pSVar24 = (SIZE_T *)0x80; puVar14 = local_19f0; *(undefined8 *)(puVar18 + -8) = 0x14007ce4c; FUN_140074c30((longlong)local_1a18,(longlong)puVar14,0x80,param_4); *(undefined8 *)(puVar18 + -8) = 0x14007ce5b; FUN_140029d80((longlong)local_1a18,CONCAT71((int7)((ulonglong)puVar14 >> 8),0x17), (SIZE_T)pSVar24,param_4); uVar17 = (ulonglong)local_1b28; *(undefined8 *)(puVar18 + -8) = 0x14007ce6a; FUN_140029e60((longlong)local_1a18,uVar17,(SIZE_T)pSVar24,param_4); *(undefined8 *)(puVar18 + -8) = 0x14007ce78; FUN_140029e60((longlong)local_1a18,uVar6 & 0xffffffff,(SIZE_T)pSVar24,param_4); *(undefined8 *)(puVar18 + -8) = 0x14007ce8b; FUN_140074a00((longlong *)&local_1ae8,(longlong)local_1a18); lVar15 = (longlong)(int)local_1b58; *(undefined8 *)(puVar18 + -8) = 0x14007ce9c; FUN_140076380((longlong)local_1a18,lVar15,(SIZE_T)pSVar24,param_4); local_4c = 200; local_50 = 0; local_58 = local_cd8; local_cdc = 200; local_ce0 = 0; local_ce8 = &local_1968; if (local_1a10 == 0) { uVar20 = local_1a00; if (local_1a08 == 0) { /* WARNING: Subroutine does not return */ *(undefined8 *)(puVar18 + -8) = 0x14007d24d; FUN_14008a420(0,lVar15,pSVar24,param_4); } } else { uVar20 = *(uint *)(local_1a10 + 0x18); } lVar15 = local_1a08; if (local_1a08 == 0) { if (local_1a10 == 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007d247; FUN_14008a420(0,(ulonglong)uVar20,pSVar24,param_4); } lVar15 = 0; if (*(int *)(local_1a10 + 0x18) != 0) { lVar15 = *(longlong *)(local_1a10 + 0x10); } } local_ce0 = 1; uStack_1960 = CONCAT44(uStack_1aa4,uVar20); plVar16 = &local_1968; local_1ab0 = lVar15; uStack_1aa8 = uVar20; local_1968 = lVar15; *(undefined8 *)(puVar18 + -8) = 0x14007cf53; FUN_14004dc30((longlong)local_cd8,(longlong)plVar16,pSVar24,param_4); if (local_ce8 == (longlong *)0x0) { *(undefined8 *)(puVar18 + -8) = 0x14007d22e; FUN_14003db10(local_1a78,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_140170368 ,pSVar24,param_4); /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007d241; _CxxThrowException(local_1a78,(ThrowInfo *)&DAT_14016c210); } if (local_cdc < 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007d21a; FUN_14003dec0(); } local_cdc = 200; local_ce0 = 0; local_ce8 = &local_1968; if (local_1b18 == 0) { uVar20 = local_1b08; if (local_1b10 == 0) { /* WARNING: Subroutine does not return */ *(undefined8 *)(puVar18 + -8) = 0x14007d214; FUN_14008a420(0,plVar16,pSVar24,param_4); } } else { uVar20 = *(uint *)(local_1b18 + 0x18); } lVar15 = local_1b10; if (local_1b10 == 0) { if (local_1b18 == 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007d20e; FUN_14008a420(0,(ulonglong)uVar20,pSVar24,param_4); } lVar15 = 0; if (*(int *)(local_1b18 + 0x18) != 0) { lVar15 = *(longlong *)(local_1b18 + 0x10); } } local_ce0 = 1; uStack_1960 = CONCAT44(uStack_1a84,uVar20); local_1a90 = lVar15; uStack_1a88 = uVar20; local_1968 = lVar15; *(undefined8 *)(puVar18 + -8) = 0x14007cffd; FUN_14004dc30((longlong)local_cd8,(longlong)&local_1968,pSVar24,param_4); if (local_ce8 == (longlong *)0x0) { *(undefined8 *)(puVar18 + -8) = 0x14007d1f5; FUN_14003db10(local_1a78,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_140170368 ,pSVar24,param_4); /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007d208; _CxxThrowException(local_1a78,(ThrowInfo *)&DAT_14016c210); } if (local_cdc < 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007d1e1; FUN_14003dec0(); } if (lVar25 == 0) { local_1af0 = 1; *(undefined8 *)(puVar18 + -8) = 0x14007d0b5; FUN_14003d040(piVar11); plVar16 = local_1b60; local_1aa0 = 0; local_1a98 = 1; pSVar24 = &local_1aa0; pcVar2 = *(char **)((longlong)local_1b60 + 0x748); *(undefined8 *)(puVar18 + -8) = 0x14007d0e1; FUN_140091090(pcVar2,(longlong)local_cd8,pSVar24,param_4); *(undefined8 *)(puVar18 + -8) = 0x14007d0e9; FUN_14003d0d0((longlong)piVar11); local_1af0 = 0; *(undefined8 *)(puVar18 + -8) = 0x14007d0fa; FUN_140091250((longlong)plVar16 + 0xc0); puVar23[1] = 0; *puVar23 = *(undefined8 *)(lVar22 + (longlong)puVar23); puVar23[1] = *(undefined8 *)(lVar22 + 8 + (longlong)puVar23); puVar23[2] = *(undefined8 *)(lVar22 + 0x10 + (longlong)puVar23); LAB_14007d11b: local_1b68[0] = local_1b68[0] + -1; lVar8 = lVar8 + -1; lVar22 = lVar22 + -0x18; } else { *(undefined8 *)(puVar18 + -8) = 0x14007d02a; local_1af0 = FUN_14003d090(piVar11); if ((bool)local_1af0) { local_1ac0 = 0; local_1ab8 = 1; pSVar24 = &local_1ac0; pcVar2 = *(char **)((longlong)local_1b60 + 0x748); *(undefined8 *)(puVar18 + -8) = 0x14007d068; FUN_140091090(pcVar2,(longlong)local_cd8,pSVar24,param_4); *(undefined8 *)(puVar18 + -8) = 0x14007d070; FUN_14003d0d0((longlong)piVar11); local_1af0 = 0; lVar15 = (longlong)local_1b60 + 0xc0; *(undefined8 *)(puVar18 + -8) = 0x14007d085; FUN_140091250(lVar15); puVar23[lVar25 * 3 + 1] = 0; puVar23[lVar25 * 3] = *(undefined8 *)(lVar22 + (longlong)puVar23); puVar23[lVar25 * 3 + 1] = *(undefined8 *)(lVar22 + 8 + (longlong)puVar23); puVar23[lVar25 * 3 + 2] = *(undefined8 *)(lVar22 + 0x10 + (longlong)puVar23); goto LAB_14007d11b; } } if (local_58 == (undefined1 *)0x0) { *(undefined8 *)(puVar18 + -8) = 0x14007d1c8; FUN_14003db10(local_1a78,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_140170368 ,pSVar24,param_4); /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007d1db; _CxxThrowException(local_1a78,(ThrowInfo *)&DAT_14016c210); } if (local_4c < 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007d1b4; FUN_14003dec0(); } local_50 = 0; *(undefined8 *)(puVar18 + -8) = 0x14007d152; FUN_140074a20((longlong *)&local_1ae8); local_1b60 = &local_1a10; *(undefined8 *)(puVar18 + -8) = 0x14007d16a; FUN_14008a320(&local_1a10); if (local_1a08 != 0) { if (local_19fc < 0) { /* WARNING: Subroutine does not return */ *(undefined8 *)(puVar18 + -8) = 0x14007d1ae; FUN_14003dec0(); } local_1a00 = 0; } lVar25 = lVar25 + 1; } while (lVar25 < lVar8); } if ((puVar23 != (undefined8 *)0x0) && (*(int *)(puVar23 + -2) == 0xdddd)) { *(undefined8 *)(puVar18 + -8) = 0x14007d265; free(puVar23 + -2); } local_1b58 = &local_1b18; *(undefined8 *)(puVar18 + -8) = 0x14007d277; FUN_14008a320(&local_1b18); puVar14 = puVar18; if (local_1b10 != 0) { if (local_1b04 < 0) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar18 + -8) = &UNK_14007d28a; FUN_14003dec0(); } local_1b08 = 0; } } } goto LAB_14007d2db; } FUN_14006c410(*(longlong **)(param_1 + 0x148),param_3,"0",2); local_1b50 = Proud::CFastArray::vftable; puVar14 = auStack_1b88; if (local_1b40 == (LPVOID)0x0) goto LAB_14007d30b; if (local_1b48 != (longlong *)0x0) { (**(code **)(*local_1b48 + 0x18))(); puVar14 = auStack_1b88; goto LAB_14007d30b; } } pvVar4 = local_1b40; local_1b50 = Proud::CFastArray::vftable; *(undefined8 *)(puVar19 + -8) = 0x14007d30b; FUN_14003e8b0(pvVar4); puVar14 = puVar19; LAB_14007d30b: *(undefined8 *)(puVar14 + -8) = 0x14007d31a; return; }