/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400db230 FUN_1400db230 * Pseudocode, not original source. */ void FUN_1400db230(longlong param_1,longlong *param_2,int param_3) { int iVar1; longlong lVar2; longlong lVar3; longlong *plVar4; undefined8 *puVar5; longlong lVar6; int iVar7; undefined4 uStack_24; if ((100 < (ulonglong)param_2[2]) && ((void *)*param_2 != (void *)0x0)) { operator_delete__((void *)*param_2); *param_2 = 0; } param_2[1] = 0; param_2[2] = 100; lVar2 = *(longlong *)(param_1 + 0x28); iVar7 = 0; if (lVar2 != 0) { if (*(int *)(lVar2 + 0x18) == 0) { lVar6 = 0; } else { lVar6 = *(longlong *)(lVar2 + 0x10); } iVar7 = *(int *)(lVar2 + 0x18) - *(int *)(param_1 + 0x30); FUN_1400d47c0(param_2,lVar6 + *(int *)(param_1 + 0x30),iVar7); } puVar5 = *(undefined8 **)(param_1 + 0x10); while( true ) { if ((puVar5 == (undefined8 *)0x0) || (param_3 <= iVar7)) { return; } if (puVar5 == (undefined8 *)0x0) { /* WARNING: Subroutine does not return */ FUN_1400064e0(0x80004005); } lVar2 = puVar5[2]; iVar1 = *(int *)(lVar2 + 0x18); if (iVar1 == 0) { lVar6 = 0; } else { lVar6 = *(longlong *)(lVar2 + 0x10); } lVar3 = param_2[1]; if (lVar3 < 0) break; FUN_1400d3a20(param_2,lVar3 + 1,-1); if (param_2[1] <= lVar3) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } if ((ulonglong)param_2[2] < 0x65) { plVar4 = param_2 + (lVar3 + 2) * 2; } else { plVar4 = (longlong *)(lVar3 * 0x10 + *param_2); } *plVar4 = CONCAT44(uStack_24,iVar1); plVar4[1] = lVar6; iVar7 = iVar7 + *(int *)(lVar2 + 0x18); puVar5 = (undefined8 *)*puVar5; } /* WARNING: Subroutine does not return */ FUN_14006be00(); }