/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400f4aa0 FUN_1400f4aa0 * Pseudocode, not original source. */ /* WARNING: Function: __chkstk replaced with injection: alloca_probe */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1400f4aa0(longlong param_1,uint *param_2,undefined8 param_3,undefined8 param_4) { uint uVar1; longlong lVar2; longlong *plVar3; undefined1 *puVar4; int iVar5; ulonglong uVar6; undefined4 *puVar7; longlong lVar8; ulonglong uVar9; SIZE_T SVar10; undefined8 uVar11; SIZE_T *pSVar12; undefined1 auStackY_2808 [32]; undefined4 uStack_27cc; int local_27c8 [2]; longlong local_27c0; undefined4 local_27b8; undefined4 uStack_27b4; undefined4 local_27b0; int local_27ac; longlong local_27a0 [2]; undefined1 local_2790; undefined4 local_278c; undefined1 local_2788; undefined1 local_2787; undefined8 local_2780; exception local_2778 [72]; exception local_2730 [72]; exception local_26e8 [72]; SIZE_T local_26a0 [400]; SIZE_T *local_1a20; undefined4 local_1a18; undefined4 local_1a14; undefined4 local_1a08 [2]; longlong local_1a00; longlong local_19f8; uint local_19f0; int local_19ec; undefined1 local_19e0 [136]; longlong local_1958; undefined8 uStack_1950; longlong *local_cd8; undefined4 local_cd0; int local_ccc; undefined1 local_cc8 [3200]; undefined1 *local_48; int local_40; int local_3c; ulonglong local_38; undefined8 uStack_30; uStack_30 = 0x1400f4aba; local_2780 = 0xfffffffffffffffe; local_38 = DAT_1401ac5a0 ^ (ulonglong)auStackY_2808; uVar1 = *param_2; uVar6 = (ulonglong)uVar1; iVar5 = DAT_1401b6198; if (uVar1 == 1) { uVar9 = 0; if (DAT_1401ae262 != '\0') { iVar5 = 1; } } else { uVar9 = (ulonglong)(uVar1 - 2); if ((uVar1 - 2 == 0) && (DAT_1401ae261 != '\0')) { iVar5 = 1; } } if (*(char *)(*(longlong *)(param_1 + 0x10) + 0x608) == '\0') { local_ccc = 200; local_cd0 = 0; local_cd8 = &local_1958; FUN_1400bca00(local_27c8); FUN_1400bc4d0((longlong)local_27c8,uVar6,uVar9,param_4); FUN_1400bcb60(local_27c8,0x800,uVar9,param_4); FUN_1400bcb60(local_27c8,0,uVar9,param_4); FUN_1400df0c0((byte *)param_2,(longlong)&local_1958,(SIZE_T)local_27c8,param_4); local_27a0[1] = 0; local_2790 = 1; local_278c = 0xffffffff; local_2788 = 1; local_2787 = DAT_1401ac1cc; plVar3 = local_27a0; local_27a0[0]._0_4_ = iVar5; FUN_1400eff60((longlong *)(*(longlong *)(param_1 + 0x10) + 0x668),(longlong)&local_1958,plVar3); FUN_1400d1800(&local_27c0); if (CONCAT44(uStack_27b4,local_27b8) != 0) { if (local_27ac < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } local_27b0 = 0; } if (local_cd8 == (longlong *)0x0) { FUN_14006ba50(local_2778,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,plVar3, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_2778,(ThrowInfo *)&DAT_1401a93e8); } if (local_ccc < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } } else if (uVar1 == 1) { FUN_1400bca00(local_1a08); SVar10 = 0x80; puVar4 = local_19e0; FUN_1400bc680((longlong)local_1a08,(longlong)puVar4,0x80,param_4); FUN_140054a10((longlong)local_1a08,CONCAT71((int7)((ulonglong)puVar4 >> 8),0x16),SVar10,param_4) ; FUN_140014500((longlong)local_1a08,(ulonglong)*(uint *)(*(longlong *)(param_1 + 0x10) + 0x56c), SVar10,param_4); FUN_140014500((longlong)local_1a08,(ulonglong)param_2[1],SVar10,param_4); puVar7 = local_1a08; plVar3 = local_27a0; FUN_1400bc450(plVar3,(longlong)puVar7); if (*(longlong *)(param_2 + 2) == 0) { if (*(longlong *)(param_2 + 4) == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(plVar3,puVar7,SVar10,param_4); } uVar1 = param_2[6]; } else { uVar1 = *(uint *)(*(longlong *)(param_2 + 2) + 0x18); } lVar8 = (longlong)(int)uVar1; FUN_1400bddd0((longlong)local_1a08,lVar8,SVar10,param_4); local_3c = 200; lVar2 = 0; local_40 = 0; local_48 = local_cc8; local_ccc = 200; local_cd0 = 0; local_cd8 = &local_1958; if (local_1a00 == 0) { if (local_19f8 == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(0,lVar8,SVar10,param_4); } } else { local_19f0 = *(uint *)(local_1a00 + 0x18); } local_1958 = local_19f8; if (local_19f8 == 0) { if (local_1a00 == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(0,(ulonglong)local_19f0,SVar10,param_4); } local_1958 = lVar2; if (*(int *)(local_1a00 + 0x18) != 0) { local_1958 = *(longlong *)(local_1a00 + 0x10); } } local_cd0 = 1; uStack_1950 = CONCAT44(uStack_27cc,local_19f0); plVar3 = &local_1958; puVar4 = local_cc8; FUN_14007cb60((longlong)puVar4,(longlong)plVar3,SVar10,param_4); if (local_cd8 == (longlong *)0x0) { FUN_14006ba50(local_2778,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,SVar10, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_2778,(ThrowInfo *)&DAT_1401a93e8); } if (local_ccc < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } local_cd0 = 0; lVar8 = *(longlong *)(param_2 + 2); if (lVar8 == 0) { if (*(longlong *)(param_2 + 4) == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(puVar4,plVar3,SVar10,param_4); } uVar1 = param_2[6]; } else { uVar1 = *(uint *)(lVar8 + 0x18); } if (*(longlong *)(param_2 + 4) == 0) { if (lVar8 == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900((ulonglong)uVar1,plVar3,SVar10,param_4); } if (*(int *)(lVar8 + 0x18) != 0) { lVar2 = *(longlong *)(lVar8 + 0x10); } } else { lVar2 = *(longlong *)(param_2 + 4); if (lVar2 == 0) { FUN_14006ba50(local_26e8,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,SVar10, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_26e8,(ThrowInfo *)&DAT_1401a93e8); } } if (local_48 == (undefined1 *)0x0) { FUN_14006ba50(local_2730,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,0,param_4 ); /* WARNING: Subroutine does not return */ _CxxThrowException(local_2730,(ThrowInfo *)&DAT_1401a93e8); } if (local_40 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } iVar5 = local_40 + 1; if ((iVar5 < 0) || (local_3c < iVar5)) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } *(longlong *)(local_48 + (longlong)local_40 * 0x10) = lVar2; *(ulonglong *)(local_48 + (longlong)local_40 * 0x10 + 8) = CONCAT44(uStack_27cc,uVar1); local_1a14 = 200; local_1a18 = 0; local_1a20 = local_26a0; local_40 = iVar5; FUN_1400a20e0((longlong *)&local_48,&local_1a20,local_48,param_4); local_27c8[0] = DAT_1401b6198; local_27c0 = DAT_1401b6190; local_27b8 = CONCAT31(local_27b8._1_3_,DAT_1401b61a0); uStack_27b4 = 0xffffffff; local_27b0._0_2_ = CONCAT11(DAT_1401ac1cc,DAT_1401b61c0); uVar1 = (**(code **)(**(longlong **)(param_1 + 0x10) + 8))(); pSVar12 = local_26a0; uVar11 = 1; FUN_1400a24b0(*(longlong *)(*(longlong *)(param_1 + 0x10) + 0x670),uVar1,1,pSVar12, (SIZE_T *)local_27c8); if (local_48 == (undefined1 *)0x0) { FUN_14006ba50(local_2730,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,uVar11, pSVar12); /* WARNING: Subroutine does not return */ _CxxThrowException(local_2730,(ThrowInfo *)&DAT_1401a93e8); } if (local_3c < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } local_40 = 0; FUN_1400bc470(local_27a0); FUN_1400d1800(&local_1a00); if ((local_19f8 != 0) && (local_19ec < 0)) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } } return; }