/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14000b500 FUN_14000b500 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_14000b500(undefined8 *param_1,longlong *param_2) { ulonglong uVar1; char cVar2; byte bVar3; longlong *plVar4; undefined *_Src; int *piVar5; int iVar6; longlong lVar7; size_t _Size; undefined8 uVar8; ulonglong uVar9; ulonglong uVar10; char *pcVar11; undefined1 auStack_78 [32]; char local_58 [32]; ulonglong local_38; local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_78; piVar5 = (int *)*param_1; iVar6 = 0; uVar8 = *(undefined8 *)piVar5; if (0 < (int)uVar8) { do { _Src = PTR_s__amp__1401b33f0; lVar7 = (longlong)iVar6; bVar3 = *(byte *)((longlong)piVar5 + lVar7 + 0x10); if (bVar3 == 0x26) { if ((((int)uVar8 + -2 <= iVar6) || (*(char *)((longlong)(iVar6 + 1) + 0x10 + (longlong)piVar5) != '#')) || (*(char *)((longlong)(iVar6 + 2) + 0x10 + (longlong)piVar5) != 'x')) { plVar4 = (longlong *)*param_2; uVar9 = (ulonglong)DAT_1401b33f8; uVar10 = *plVar4 + uVar9; if (((ulonglong)plVar4[1] < uVar10) && (uVar1 = plVar4[1] + uVar10, (ulonglong)plVar4[1] < uVar1)) { FUN_14000ae90(param_2,uVar1); } memmove((void *)(*(longlong *)*param_2 + 0x10 + *param_2),_Src,uVar9); *(ulonglong *)*param_2 = uVar10; *(undefined1 *)(*param_2 + 0x10 + uVar10) = 0; goto LAB_14000b768; } if (iVar6 < (int)uVar8 + -1) { do { plVar4 = (longlong *)*param_2; uVar9 = *plVar4 + 1; if (((ulonglong)plVar4[1] < uVar9) && (uVar10 = plVar4[1] + uVar9, (ulonglong)plVar4[1] < uVar10)) { FUN_14000ae90(param_2,uVar10); } memmove((void *)(*(longlong *)*param_2 + 0x10 + *param_2), (void *)((longlong)iVar6 + 0x10 + (longlong)piVar5),1); *(ulonglong *)*param_2 = uVar9; iVar6 = iVar6 + 1; *(undefined1 *)(*param_2 + 0x10 + uVar9) = 0; piVar5 = (int *)*param_1; } while ((*(char *)((longlong)piVar5 + lVar7 + 0x11) != ';') && (lVar7 = lVar7 + 1, iVar6 < *piVar5 + -1)); } } else { if (bVar3 == 0x3c) { FUN_14000b060(param_2,PTR_DAT_1401b3400,(ulonglong)DAT_1401b3408); } else if (bVar3 == 0x3e) { FUN_14000b060(param_2,PTR_DAT_1401b3410,(ulonglong)DAT_1401b3418); } else if (bVar3 == 0x22) { FUN_14000b060(param_2,PTR_s__quot__1401b3420,(ulonglong)DAT_1401b3428); } else if (bVar3 == 0x27) { FUN_14000b060(param_2,PTR_s__apos__1401b3430,(ulonglong)DAT_1401b3438); } else if (bVar3 < 0x20) { FUN_14000ae60(local_58,0x20,"&#x%02X;",(ulonglong)bVar3); lVar7 = -1; pcVar11 = local_58; do { if (lVar7 == 0) break; lVar7 = lVar7 + -1; cVar2 = *pcVar11; pcVar11 = pcVar11 + 1; } while (cVar2 != '\0'); _Size = (size_t)(int)(~(uint)lVar7 - 1); plVar4 = (longlong *)*param_2; uVar9 = *plVar4 + _Size; if (((ulonglong)plVar4[1] < uVar9) && (uVar10 = plVar4[1] + uVar9, (ulonglong)plVar4[1] < uVar10)) { FUN_14000ae90(param_2,uVar10); } memmove((void *)(*(longlong *)*param_2 + 0x10 + *param_2),local_58,_Size); *(ulonglong *)*param_2 = uVar9; *(undefined1 *)(*param_2 + 0x10 + uVar9) = 0; } else { FUN_14000b0e0(param_2,bVar3); } LAB_14000b768: iVar6 = iVar6 + 1; } piVar5 = (int *)*param_1; uVar8 = *(undefined8 *)piVar5; } while (iVar6 < (int)uVar8); } return; }