/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400cef50 FUN_1400cef50 * Pseudocode, not original source. */ /* WARNING: Removing unreachable block (ram,0x0001400cf055) */ /* WARNING: Removing unreachable block (ram,0x0001400cf063) */ /* WARNING: Removing unreachable block (ram,0x0001400cf05b) */ /* WARNING: Removing unreachable block (ram,0x0001400cf06a) */ void FUN_1400cef50(undefined8 *param_1,int param_2,byte *param_3,longlong param_4,uint *param_5) { byte *pbVar1; byte *pbVar2; byte *pbVar3; longlong lVar4; uint uVar5; SIZE_T SVar6; SIZE_T SVar7; byte *pbVar8; undefined **local_50; undefined8 local_48; byte *local_40; undefined8 local_38; undefined8 local_30; SVar7 = (SIZE_T)param_2; pbVar8 = (byte *)0x0; local_48 = 0; local_40 = (byte *)0x0; local_38 = 0; local_30 = 0; local_50 = Proud::ByteArray::vftable; pbVar3 = (byte *)(param_4 + 4); FUN_1400146f0((longlong)&local_50,1,(SIZE_T)param_3); pbVar1 = local_40; if ((int)local_38 == 0) { pbVar1 = pbVar8; } SVar6 = 1; FUN_140006500((undefined8 *)pbVar1,(undefined8 *)pbVar3,1); lVar4 = (longlong)(int)local_38; FUN_1400146f0((longlong)&local_50,(int)local_38 + 4,SVar6); pbVar1 = local_40; if ((int)local_38 == 0) { pbVar1 = pbVar8; } SVar6 = 4; FUN_140006500((undefined8 *)(pbVar1 + lVar4),(undefined8 *)(param_4 + 0xc),4); if (param_2 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } if (param_2 != 0) { lVar4 = (longlong)(int)local_38; FUN_1400146f0((longlong)&local_50,(int)local_38 + param_2,SVar6); pbVar1 = local_40; if ((int)local_38 == 0) { pbVar1 = pbVar8; } FUN_140006500((undefined8 *)(pbVar1 + lVar4),param_1,SVar7); SVar6 = SVar7; } pbVar1 = pbVar8; if (*pbVar3 != 0) { do { lVar4 = (longlong)(int)local_38; if ((int)local_38 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } FUN_1400146f0((longlong)&local_50,(int)local_38 + 1,SVar6); pbVar2 = local_40; if ((int)local_38 == 0) { pbVar2 = pbVar8; } pbVar2[lVar4] = 0; uVar5 = (int)pbVar1 + 1; pbVar1 = (byte *)(ulonglong)uVar5; } while ((int)uVar5 < (int)(uint)*pbVar3); } pbVar3 = local_40; if ((int)local_38 == 0) { pbVar3 = pbVar8; } FUN_1400ce590(param_5,pbVar3,param_3,(longlong)(int)local_38,0); FUN_140078360(&local_50); return; }