/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14009b7e0 FUN_14009b7e0 * Pseudocode, not original source. */ /* WARNING: Removing unreachable block (ram,0x00014009b957) */ /* WARNING: Removing unreachable block (ram,0x00014009b963) */ /* WARNING: Removing unreachable block (ram,0x00014009b970) */ /* WARNING: Removing unreachable block (ram,0x00014009b968) */ /* WARNING: Removing unreachable block (ram,0x00014009b976) */ /* WARNING: Removing unreachable block (ram,0x00014009b987) */ /* WARNING: Removing unreachable block (ram,0x00014009b8e6) */ /* WARNING: Removing unreachable block (ram,0x00014009b8f2) */ /* WARNING: Removing unreachable block (ram,0x00014009b8fe) */ /* WARNING: Removing unreachable block (ram,0x00014009b8f6) */ /* WARNING: Removing unreachable block (ram,0x00014009b904) */ /* WARNING: Removing unreachable block (ram,0x00014009b915) */ /* WARNING: Removing unreachable block (ram,0x00014009b87b) */ /* WARNING: Removing unreachable block (ram,0x00014009b887) */ /* WARNING: Removing unreachable block (ram,0x00014009b893) */ /* WARNING: Removing unreachable block (ram,0x00014009b88b) */ /* WARNING: Removing unreachable block (ram,0x00014009b899) */ /* WARNING: Removing unreachable block (ram,0x00014009b8aa) */ /* WARNING: Removing unreachable block (ram,0x00014009b874) */ /* WARNING: Removing unreachable block (ram,0x00014009b8df) */ /* WARNING: Removing unreachable block (ram,0x00014009b950) */ /* WARNING: Removing unreachable block (ram,0x00014009ba09) */ /* WARNING: Removing unreachable block (ram,0x00014009ba10) */ /* WARNING: Removing unreachable block (ram,0x00014009ba20) */ /* WARNING: Removing unreachable block (ram,0x00014009ba2c) */ /* WARNING: Removing unreachable block (ram,0x00014009ba24) */ /* WARNING: Removing unreachable block (ram,0x00014009ba32) */ /* WARNING: Removing unreachable block (ram,0x00014009ba43) */ void FUN_14009b7e0(SIZE_T *param_1,undefined8 param_2,undefined ***param_3,longlong param_4) { undefined *puVar1; undefined ***pppuVar2; int iVar3; int iVar4; undefined ***pppuVar5; LPVOID pvVar6; undefined ***pppuVar7; short *psVar8; uint uVar9; int iVar10; ulonglong uVar11; longlong lVar12; longlong lVar13; undefined ***pppuVar14; LPVOID pvVar15; undefined ***pppuVar16; int iVar17; short *local_res10; undefined **local_90; longlong *local_88; undefined ***local_80; undefined8 local_78; undefined8 local_70; undefined **local_68; longlong *local_60; LPVOID local_58; uint local_50; undefined8 local_4c; undefined4 local_44; local_90 = Proud::CFastArray::vftable; pppuVar14 = (undefined ***)0x0; local_88 = (longlong *)0x0; local_80 = (undefined ***)0x0; local_78 = 0; local_70 = 0; FUN_140063f80((longlong)&local_90,1,param_3,param_4); lVar12 = (longlong)(int)local_78; pppuVar16 = local_80; if ((int)local_78 == 0) { pppuVar16 = pppuVar14; } *(int *)pppuVar16 = 5; if ((int)local_78 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } FUN_140063f80((longlong)&local_90,(int)local_78 + 1,param_3,param_4); lVar13 = (longlong)(int)local_78; pppuVar16 = local_80; if ((int)local_78 == 0) { pppuVar16 = pppuVar14; } *(int *)((longlong)pppuVar16 + lVar12 * 4) = 1; if ((int)local_78 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } FUN_140063f80((longlong)&local_90,(int)local_78 + 1,param_3,(longlong)pppuVar16); lVar12 = (longlong)(int)local_78; pppuVar16 = local_80; if ((int)local_78 == 0) { pppuVar16 = pppuVar14; } *(int *)((longlong)pppuVar16 + lVar13 * 4) = 2; if ((int)local_78 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } uVar11 = (ulonglong)((int)local_78 + 1U); pppuVar7 = &local_90; FUN_140063f80((longlong)pppuVar7,(int)local_78 + 1U,param_3,(longlong)pppuVar16); pppuVar2 = local_80; iVar10 = (int)local_78; pppuVar5 = local_80; if ((int)local_78 == 0) { pppuVar5 = pppuVar14; } *(int *)((longlong)pppuVar5 + lVar12 * 4) = 4; local_68 = Proud::CFastArray::vftable; local_60 = (longlong *)0x0; local_44 = 0; local_58 = (LPVOID)0x0; local_50 = 0; local_4c = 0; pppuVar5 = pppuVar14; while( true ) { pvVar6 = local_58; iVar3 = (int)pppuVar5; iVar17 = (int)pppuVar14; if (iVar3 == iVar10) break; if ((iVar3 < 0) || (iVar10 <= iVar3)) { /* WARNING: Subroutine does not return */ FUN_14006be30(pppuVar7,uVar11,param_3,pppuVar16); } iVar4 = *(int *)((longlong)pppuVar2 + (longlong)iVar3 * 4); if (iVar17 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } uVar11 = (ulonglong)(iVar17 + 1U); FUN_140063f80((longlong)&local_68,iVar17 + 1U,param_3,(longlong)pppuVar16); pppuVar16 = (undefined ***)(longlong)iVar17; pppuVar14 = (undefined ***)(ulonglong)local_50; pppuVar7 = (undefined ***)0x0; pvVar6 = local_58; if (local_50 == 0) { pvVar6 = (LPVOID)0x0; } *(int *)((longlong)pvVar6 + (longlong)pppuVar16 * 4) = iVar4; pppuVar5 = (undefined ***)(ulonglong)(iVar3 + 1); } if (iVar10 == iVar17) { pppuVar7 = pppuVar2; if (iVar10 == 0) { pppuVar7 = (undefined ***)0x0; } pvVar15 = local_58; if (iVar17 == 0) { pvVar15 = (LPVOID)0x0; } uVar11 = 0; if (0 < iVar17) { param_3 = (undefined ***)((longlong)pvVar15 - (longlong)pppuVar7); do { if (*(int *)pppuVar7 != *(int *)((longlong)param_3 + (longlong)pppuVar7)) goto LAB_14009baba; uVar9 = (int)uVar11 + 1; uVar11 = (ulonglong)uVar9; pppuVar7 = (undefined ***)((longlong)pppuVar7 + 4); } while ((int)uVar9 < iVar17); } goto LAB_14009bbcd; } LAB_14009baba: FUN_14006cb70(pppuVar7,uVar11,param_3,pppuVar16); local_res10 = (short *)PTR_DAT_1401ac010; iVar3 = FUN_14006c9f0(L"CFastArray iterator failed!"); iVar17 = 0; iVar10 = iVar17; if ((local_res10 != (short *)0x0) && (local_res10 != (short *)PTR_DAT_1401ac010)) { iVar10 = *(int *)(local_res10 + -4); } iVar4 = iVar3; if (((iVar3 <= iVar10) && (iVar4 = iVar17, local_res10 != (short *)0x0)) && (local_res10 != (short *)PTR_DAT_1401ac010)) { iVar4 = *(int *)(local_res10 + -4); } iVar10 = 1; if (1 < iVar4) { iVar10 = iVar4; } iVar4 = iVar17; if ((local_res10 != (short *)0x0) && (local_res10 != (short *)PTR_DAT_1401ac010)) { iVar4 = *(int *)(local_res10 + -4); } if (iVar4 < iVar10) { FUN_140002d60((longlong *)&local_res10,iVar10); } FUN_140002e40((longlong *)&local_res10); psVar8 = local_res10; if (local_res10 == (short *)0x0) { psVar8 = (short *)PTR_DAT_1401ac010; } FUN_14006ca20(psVar8,L"CFastArray iterator failed!",iVar3); psVar8 = local_res10; if (local_res10 == (short *)0x0) { psVar8 = (short *)PTR_DAT_1401ac010; } iVar3 = FUN_14006c9f0(psVar8); puVar1 = PTR_DAT_1401ac010; iVar10 = 0; if (0 < iVar3) { iVar10 = iVar3; } if ((local_res10 != (short *)0x0) && (local_res10 != (short *)PTR_DAT_1401ac010)) { iVar17 = *(int *)(local_res10 + -4); } if ((iVar10 < iVar17) || (iVar10 = 0, local_res10 == (short *)0x0)) { LAB_14009bba1: if (((local_res10 != (short *)PTR_DAT_1401ac010) && (local_res10 != (short *)0x0)) && ((int *)(local_res10 + -4) != (int *)0x0)) { *(int *)(local_res10 + -4) = iVar10; local_res10[iVar10] = 0; } } else if (local_res10 != (short *)PTR_DAT_1401ac010) { iVar10 = *(int *)(local_res10 + -4); goto LAB_14009bba1; } FUN_14009b550(param_1,(wchar_t *)&local_res10,(SIZE_T)puVar1,pppuVar16); LAB_14009bbcd: if (pvVar6 != (LPVOID)0x0) { if (local_60 == (longlong *)0x0) { FUN_14006cc60(pvVar6); } else { (**(code **)(*local_60 + 0x18))(local_60,pvVar6); } } if (pppuVar2 != (undefined ***)0x0) { if (local_88 == (longlong *)0x0) { FUN_14006cc60(pppuVar2); } else { (**(code **)(*local_88 + 0x18))(local_88,pppuVar2); } } return; }