/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400e25f0 FUN_1400e25f0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1400e25f0(longlong param_1,uint *param_2,undefined8 param_3,undefined8 param_4) { undefined8 uVar1; int *piVar2; longlong *plVar3; longlong **pplVar4; longlong *plVar5; undefined ***pppuVar6; undefined8 *puVar7; undefined1 auStack_da8 [32]; longlong *local_d88; longlong *local_d80; uint uStack_d78; undefined4 uStack_d74; int local_d70 [2]; longlong local_d68; longlong *local_d60; uint local_d58; int local_d54; int *local_d48; undefined1 local_d40; undefined **local_d38; uint local_d30; undefined2 local_d2c; undefined4 local_d28 [2]; undefined8 local_d20; undefined1 local_d18; undefined4 local_d14; undefined1 local_d10; undefined1 local_d0f; undefined8 local_d08; exception local_d00 [72]; longlong *local_cb8; undefined8 uStack_cb0; undefined8 **local_38; undefined4 local_30; int local_2c; ulonglong local_28; local_d08 = 0xfffffffffffffffe; local_28 = DAT_1401ac5a0 ^ (ulonglong)auStack_da8; uVar1 = FUN_1400bc930(param_2,&local_d80,8); if ((char)uVar1 != '\0') { piVar2 = (int *)(**(code **)(**(longlong **)(param_1 + 0x108) + 0x58))(); local_d48 = piVar2; FUN_14006b350(piVar2); local_d40 = 1; local_d38 = Proud::AddrPort::vftable; local_d30 = param_2[0xe]; local_d2c = (undefined2)param_2[0xf]; pppuVar6 = &local_d38; pplVar4 = &local_d88; plVar3 = FUN_1400ab340(*(longlong *)(param_1 + 0x108),pplVar4,(longlong)pppuVar6); plVar5 = (longlong *)0x0; if ((longlong *)*plVar3 != (longlong *)0x0) { plVar5 = *(longlong **)*plVar3; } if ((local_d88 != (longlong *)0x0) && (local_d88[1] = local_d88[1] + -1, piVar2 = local_d48, local_d88[1] == 0)) { if ((undefined8 *)*local_d88 != (undefined8 *)0x0) { pplVar4 = (longlong **)0x1; (*(code *)**(undefined8 **)*local_d88)(); } FUN_14006cc60(local_d88); piVar2 = local_d48; } if ((plVar5 != (longlong *)0x0) && (*(int *)((longlong)plVar5 + 0x56c) != 1)) { FUN_1400bca00(local_d70); FUN_1400bc4d0((longlong)local_d70,pplVar4,(SIZE_T)pppuVar6,param_4); FUN_1400bcb60(local_d70,0x800,(SIZE_T)pppuVar6,param_4); uVar1 = 0; FUN_1400bcb60(local_d70,0,(SIZE_T)pppuVar6,param_4); uVar1 = CONCAT71((int7)((ulonglong)uVar1 >> 8),0x21); FUN_140054a10((longlong)local_d70,uVar1,(SIZE_T)pppuVar6,param_4); FUN_140054760((longlong)local_d70,local_d80,(SIZE_T)pppuVar6,param_4); local_2c = 200; local_30 = 0; local_38 = &local_cb8; if (local_d68 == 0) { uStack_d78 = local_d58; if (local_d60 == (longlong *)0x0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(0,uVar1,pppuVar6,param_4); } } else { uStack_d78 = *(uint *)(local_d68 + 0x18); } local_d80 = local_d60; if (local_d60 == (longlong *)0x0) { if (local_d68 == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(0,(ulonglong)uStack_d78,pppuVar6,param_4); } local_d80 = (longlong *)0x0; if (*(int *)(local_d68 + 0x18) != 0) { local_d80 = *(longlong **)(local_d68 + 0x10); } } local_30 = 1; uStack_cb0 = CONCAT44(uStack_d74,uStack_d78); local_d28[0] = 0; local_d20 = 0; local_d18 = 1; local_d14 = 0xffffffff; local_d10 = 1; local_d0f = DAT_1401ac1cc; puVar7 = (undefined8 *)local_d28; local_cb8 = local_d80; FUN_1400eff60(plVar5 + 0xcd,(longlong)&local_cb8,puVar7); if (local_38 == (longlong **)0x0) { FUN_14006ba50(local_d00,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,puVar7, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_d00,(ThrowInfo *)&DAT_1401a93e8); } if (local_2c < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } local_30 = 0; local_d80 = &local_d68; FUN_1400d1800(&local_d68); if (local_d60 != (longlong *)0x0) { if (local_d54 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } local_d58 = 0; } } FUN_14006b3e0((longlong)piVar2); } return; }