116 lines
4 KiB
C
116 lines
4 KiB
C
/* 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;
|
|
}
|
|
|