Files
mxaccess/analysis/ghidra/exports/Lmx.dll.prebound-decompile.md
T
Joseph Doherty fe2a6db786
rust / build / test / clippy / fmt (push) Has been cancelled
Initial project state: .NET reference, design, Rust port (M0+M1), evidence
Layout:
- src/                    .NET 10 x64 reference: MxNativeCodec, MxNativeClient,
                          MxAsbClient, probes, tests, harnesses. Executable spec.
- design/                 Architectural plan for the Rust port (M0–M6), error
                          model, protocol invariants, risks (R1–R16), adversarial
                          review log (review.md).
- rust/                   Rust workspace. M0 skeleton + M1 codec parity.
                          mxaccess-codec: 215 unit tests + 2 cross-implementation
                          parity tests (byte-identical against .NET reference).
                          Other crates are M0 stubs awaiting M2+.
- captures/               Frida + netsh + pcap evidence per CLAUDE.md
                          ("captures are evidence, not throwaway logs").
- analysis/               Decompiled C# (frida/proxy/decompiled-*),
                          Ghidra exports for native DLLs (`exports/` only —
                          working state at `projects/` and AVEVA's input
                          binaries at `input/` are gitignored).
- docs/                   Reverse-engineering reference docs.
- tools/                  Setup-LiveProbeEnv.ps1 (Infisical credential fetcher),
                          Compute-Crc.ps1 (.NET parity helper).
- .github/workflows/      Rust CI: fmt + build + test + clippy on Windows.
- LICENSE                 MIT (Joseph Doherty, 2026).

Verified:
- cargo test --workspace → 217 passed (215 unit + 2 .NET parity), 0 failed
- cargo clippy --workspace -- -D warnings → clean
- cargo fmt --all -- --check → clean
- cargo publish --dry-run -p mxaccess-codec → packages cleanly

Excluded from history (see .gitignore):
- **/bin, **/obj, **/target — build artifacts
- analysis/ghidra/projects/ — Ghidra working state (regenerable)
- analysis/ghidra/input/ — AVEVA proprietary DLLs (vendor IP)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 06:21:00 -04:00

65 KiB

Lmx.dll selected decompile

FUN_100ea780 at 100ea780

Signature: undefined FUN_100ea780(void)


void FUN_100ea780(int param_1,OLECHAR *param_2,long *param_3)

{
  int *piVar1;
  BSTR pOVar2;
  char cVar3;
  undefined1 uVar4;
  undefined4 uVar5;
  basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar6;
  undefined4 *puVar7;
  int iVar8;
  int iVar9;
  uint *puVar10;
  UINT UVar11;
  undefined4 *puVar12;
  long lVar13;
  _func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
  *p_Var14;
  long local_44;
  int local_40;
  BSTR local_3c;
  undefined4 *local_34;
  BSTR local_30;
  int local_2c;
  uint local_14;
  void *local_10;
  undefined1 *puStack_c;
  int local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_1016e5de;
  local_10 = ExceptionList;
  local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
  ExceptionList = &local_10;
  local_2c = param_1;
  local_44 = -0x7fffbffb;
  if (DAT_101d6458 == '\0') {
LAB_100ea902:
    cVar3 = FUN_100408d0();
    if (cVar3 != '\0') {
      p_Var14 = endl_exref;
      uVar5 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14),
                           L"MxConnection::PrebindReference - ENTER referenceString ");
      pbVar6 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
               FUN_1001a0e0(uVar5);
      std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                (pbVar6,p_Var14);
    }
    local_34 = operator_new(0xb4);
    local_8 = 4;
    if (local_34 == (void *)0x0) {
      puVar7 = (undefined4 *)0x0;
    }
    else {
      puVar7 = (undefined4 *)FUN_101139c0();
    }
    local_8 = 0xffffffff;
    local_34 = puVar7;
  }
  else {
    cVar3 = FUN_10096c70();
    if (cVar3 == '\0') goto LAB_100ea902;
    if (param_2 == (OLECHAR *)0x0) {
      local_30 = (BSTR)0x0;
    }
    else {
      local_30 = SysAllocString(param_2);
      if (local_30 == (BSTR)0x0) {
                    /* WARNING: Subroutine does not return */
        FUN_1005bf30(0x8007000e,0);
      }
    }
    pOVar2 = local_30;
    local_3c = (BSTR)0x0;
    local_8._0_1_ = 1;
    local_8._1_3_ = 0;
    local_34 = (undefined4 *)&stack0xffffff8c;
    FUN_1008fb20();
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_10096f60();
    cVar3 = FUN_100408d0();
    if (cVar3 != '\0') {
      p_Var14 = endl_exref;
      uVar5 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14),
                           L"MxConnection::PrebindReference - ENTER referenceString \'",param_2,
                           L"\'  Substituted String \'",local_3c);
      uVar5 = FUN_1001a0e0(uVar5);
      uVar5 = FUN_1001a0e0(uVar5);
      uVar5 = FUN_1001a0e0(uVar5);
      pbVar6 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
               FUN_1001dc00(uVar5);
      std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                (pbVar6,p_Var14);
    }
    local_34 = operator_new(0xb4);
    local_8._0_1_ = 3;
    if (local_34 == (void *)0x0) {
      puVar7 = (undefined4 *)0x0;
    }
    else {
      puVar7 = (undefined4 *)FUN_101139c0();
    }
    local_8 = (uint)local_8._1_3_ << 8;
    local_34 = puVar7;
    SysFreeString(local_3c);
    local_8 = 0xffffffff;
    SysFreeString(pOVar2);
  }
  cVar3 = FUN_10048d60(puVar7 != (undefined4 *)0x0);
  if (cVar3 == '\0') goto LAB_100eab0d;
  FUN_100db730();
  FUN_100c3730(&local_40);
  if ((char)local_3c == '\0') {
    if (puVar7 != (undefined4 *)0x0) {
      (**(code **)*puVar7)();
    }
    puVar7 = *(undefined4 **)(local_40 + 0xc);
    goto LAB_100eab0d;
  }
  FUN_1005f590();
  puVar12 = (undefined4 *)(local_2c + 0x9c);
  iVar8 = (**(code **)(**(int **)(local_2c + 0x9c) + 0x24))();
  if (iVar8 < 0) {
                    /* WARNING: Subroutine does not return */
    FUN_1005bf30(iVar8,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x45);
  }
  uVar5 = FUN_1005f6b0();
  piVar1 = (int *)*puVar12;
  iVar9 = (**(code **)(*piVar1 + 0x44))(piVar1,uVar5);
  iVar8 = local_2c;
  if (iVar9 < 0) {
                    /* WARNING: Subroutine does not return */
    FUN_1005bf30(iVar9,0);
  }
  local_34 = puVar12;
  FUN_1006b120();
  pOVar2 = local_30;
  if (local_30 != *(BSTR *)(*(int *)(iVar8 + 0x1c) + 400)) {
    puVar10 = (uint *)FUN_1005f730();
    if (((((char)*puVar10 != '\0') && (*puVar10 >> 0x10 != 0)) && ((short)puVar10[1] != 0)) &&
       ((puVar10[1] >> 0x10 != 0 && ((short)(puVar10[2] >> 0x10) != 0)))) {
      if ((BSTR)puVar7[0x2b] != (BSTR)0x0) {
        UVar11 = SysStringLen((BSTR)puVar7[0x2b]);
        if (UVar11 != 0) goto LAB_100eab04;
      }
      FUN_1003ec10();
      FUN_101129c0(3);
      puVar12 = (undefined4 *)FUN_10001920();
      iVar8 = *(int *)(pOVar2 + 6);
      *(undefined4 *)(iVar8 + 0x14) = *puVar12;
      *(undefined4 *)(iVar8 + 0x18) = puVar12[1];
    }
  }
LAB_100eab04:
  piVar1 = (int *)(*(int *)(local_40 + 0xc) + 0x14);
  *piVar1 = *piVar1 + 1;
LAB_100eab0d:
  cVar3 = FUN_10048d60(puVar7 != (undefined4 *)0x0);
  if (cVar3 != '\0') {
    uVar4 = FUN_100e18b0(puVar7,param_3);
    cVar3 = FUN_10048d60(uVar4);
    if (cVar3 != '\0') {
      FUN_10113d40();
      local_44 = 0;
    }
  }
  cVar3 = FUN_100408d0();
  if (cVar3 != '\0') {
    lVar13 = *param_3;
    p_Var14 = endl_exref;
    pbVar6 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14),
                          L"MxConnection::PrebindReference - EXIT *preboundRefHandle ",lVar13,
                          L" hResult ");
    pbVar6 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar6,lVar13);
    pbVar6 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(pbVar6);
    pbVar6 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar6,local_44);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar6,p_Var14);
  }
  ExceptionList = local_10;
  __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc);
  return;
}


FUN_100eabf0 at 100eabf0

Signature: undefined FUN_100eabf0(void)


void FUN_100eabf0(int param_1,int *param_2,long *param_3)

{
  int *piVar1;
  char cVar2;
  undefined1 uVar3;
  void *pvVar4;
  BSTR pOVar5;
  undefined4 uVar6;
  basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar7;
  int iVar8;
  int iVar9;
  UINT UVar10;
  OLECHAR *psz;
  undefined4 *puVar11;
  BSTR pOVar12;
  long lVar13;
  long lVar14;
  _func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
  *p_Var15;
  undefined4 uVar16;
  char *pcVar17;
  undefined1 local_74 [4];
  BSTR local_70;
  long *local_6c;
  int local_68;
  long local_64;
  BSTR local_60;
  BSTR local_5c;
  BSTR local_58;
  char local_51;
  undefined1 local_50 [20];
  int *local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined1 local_28;
  byte bStack_27;
  undefined2 uStack_26;
  undefined2 uStack_24;
  undefined2 uStack_22;
  undefined2 uStack_20;
  undefined2 uStack_1e;
  undefined2 local_1c;
  undefined2 uStack_1a;
  char local_18;
  undefined1 uStack_17;
  undefined2 uStack_16;
  uint local_14;
  void *local_10;
  undefined1 *puStack_c;
  int local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_1016e64b;
  local_10 = ExceptionList;
  local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
  ExceptionList = &local_10;
  local_68 = param_1;
  local_6c = param_3;
  local_64 = -0x7fffbffb;
  if (param_2 == (int *)0x0) {
    local_64 = -0x7ff8ffa9;
    goto LAB_100eb12e;
  }
  if (DAT_101d6458 != '\0') {
    local_5c = (BSTR)0x0;
    local_70 = (BSTR)0x0;
    local_60 = (BSTR)0x0;
    local_8._1_3_ = 0;
    local_58 = (BSTR)0x0;
    local_8._0_1_ = 3;
    (**(code **)(*param_2 + 0x20))(param_2,&local_5c,local_14);
    (**(code **)(*param_2 + 0x40))(param_2,&local_70);
    cVar2 = FUN_10096ff0(&local_5c,&local_70,&local_60,&local_58);
    if (cVar2 != '\0') {
      FUN_1005f4f0();
      local_8 = CONCAT31(local_8._1_3_,4);
      FUN_1003ec10(param_2);
      FUN_1005f730(local_50);
      (**(code **)(*local_3c + 0x24))(local_3c,local_60);
      (**(code **)(*local_3c + 0x44))(local_3c,local_58);
      FUN_1005f7e0(local_50);
      param_2 = local_3c;
      if (local_3c != (int *)0x0) {
        (**(code **)(*local_3c + 4))(local_3c);
      }
      local_8._0_1_ = 3;
      FUN_10021cc0();
    }
    local_8._0_1_ = 2;
    SysFreeString(local_58);
    local_8._0_1_ = 1;
    SysFreeString(local_60);
    local_8 = (uint)local_8._1_3_ << 8;
    SysFreeString(local_70);
    local_8 = 0xffffffff;
    SysFreeString(local_5c);
  }
  pvVar4 = operator_new(0xb4);
  local_18 = (char)pvVar4;
  uStack_17 = (undefined1)((uint)pvVar4 >> 8);
  uStack_16 = (undefined2)((uint)pvVar4 >> 0x10);
  local_8 = 5;
  if (pvVar4 == (void *)0x0) {
    pOVar5 = (BSTR)0x0;
  }
  else {
    pOVar5 = (BSTR)FUN_10113b10(param_2,*(undefined4 *)(param_1 + 0x1c));
  }
  local_8 = 0xffffffff;
  local_5c = pOVar5;
  cVar2 = FUN_10048d60(pOVar5 != (BSTR)0x0,0x837,"MxConnection.cpp");
  if (cVar2 != '\0') {
    cVar2 = FUN_100408d0();
    if (cVar2 != '\0') {
      p_Var15 = endl_exref;
      uVar6 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14),
                           L"MxConnection::PrebindReferenceEx - ENTER referenceString ",pOVar5 + 0xc
                           ," contextString ",pOVar5 + 0x1a);
      uVar6 = FUN_1001dec0(uVar6);
      uVar6 = FUN_1001dc00(uVar6);
      pbVar7 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
               FUN_1001dec0(uVar6);
      std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                (pbVar7,p_Var15);
    }
    uVar16 = 0;
    uVar6 = FUN_100db730(&local_5c);
    FUN_100c3730(&local_1c,uVar6,uVar16);
    if (local_18 == '\0') {
      if (pOVar5 != (BSTR)0x0) {
        (*(code *)**(undefined4 **)pOVar5)(1);
      }
      pOVar5 = *(BSTR *)(CONCAT22(uStack_1a,local_1c) + 0xc);
    }
    else {
      uVar6 = FUN_1005f590();
      iVar8 = (**(code **)(**(int **)(param_1 + 0x9c) + 0x24))(*(int **)(param_1 + 0x9c),uVar6);
      if (iVar8 < 0) {
                    /* WARNING: Subroutine does not return */
        FUN_1005bf30(iVar8,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x45);
      }
      uVar6 = FUN_1005f6b0();
      piVar1 = *(int **)(param_1 + 0x9c);
      iVar9 = (**(code **)(*piVar1 + 0x44))(piVar1,uVar6);
      iVar8 = local_68;
      if (iVar9 < 0) {
                    /* WARNING: Subroutine does not return */
        FUN_1005bf30(iVar9,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x75);
      }
      local_70 = (BSTR)(param_1 + 0x9c);
      FUN_1006b120(&local_60,&local_70);
      pOVar12 = local_60;
      if (local_60 != *(BSTR *)(*(int *)(iVar8 + 0x1c) + 400)) {
        if (*(BSTR *)(pOVar5 + 0x56) != (BSTR)0x0) {
          UVar10 = SysStringLen(*(BSTR *)(pOVar5 + 0x56));
          if (UVar10 != 0) goto LAB_100eaf01;
        }
        FUN_1003ec10(**(undefined4 **)(pOVar12 + 6));
        FUN_101129c0(3,"MxConnection.cpp",0x857);
        puVar11 = (undefined4 *)FUN_10001920(local_74);
        iVar8 = *(int *)(pOVar12 + 6);
        *(undefined4 *)(iVar8 + 0x14) = *puVar11;
        *(undefined4 *)(iVar8 + 0x18) = puVar11[1];
      }
LAB_100eaf01:
      piVar1 = (int *)(*(int *)(CONCAT22(uStack_1a,local_1c) + 0xc) + 0x14);
      *piVar1 = *piVar1 + 1;
      pOVar5 = local_5c;
    }
  }
  cVar2 = FUN_10048d60(pOVar5 != (BSTR)0x0,0x860,"MxConnection.cpp");
  if (cVar2 != '\0') {
    pcVar17 = "MxConnection.cpp";
    uVar6 = 0x867;
    uVar3 = FUN_100e18b0(pOVar5,local_6c);
    cVar2 = FUN_10048d60(uVar3,uVar6,pcVar17);
    if (cVar2 != '\0') {
      psz = pOVar5 + 0xc;
      local_51 = '\0';
      if (7 < *(uint *)(pOVar5 + 0x16)) {
        psz = *(OLECHAR **)psz;
      }
      if (psz == (OLECHAR *)0x0) {
        local_58 = (BSTR)0x0;
      }
      else {
        local_58 = SysAllocString(psz);
        if (local_58 == (BSTR)0x0) {
                    /* WARNING: Subroutine does not return */
          FUN_100013e0(0x8007000e);
        }
      }
      local_8 = 6;
      uStack_1e = 0;
      local_1c = 0;
      uStack_26 = 0;
      uStack_24 = 0;
      uStack_22 = 0;
      uStack_20 = 0;
      local_34 = 0;
      uStack_1a = 0;
      local_18 = '\0';
      uStack_17 = 0;
      uStack_16 = 0;
      local_38 = 0;
      local_28 = 0;
      local_3c = (int *)((uint)bStack_27 << 8);
      local_30 = 0;
      local_2c = 0;
      if (local_58 == (BSTR)0x0) {
LAB_100eafe4:
        pOVar12 = local_58;
        puVar11 = (undefined4 *)FUN_1005f730(local_50);
        uVar6 = *puVar11;
        local_28 = (undefined1)uVar6;
        bStack_27 = (byte)((uint)uVar6 >> 8);
        uStack_26 = (undefined2)((uint)uVar6 >> 0x10);
        uStack_24 = (undefined2)puVar11[1];
        uStack_22 = (undefined2)((uint)puVar11[1] >> 0x10);
        uVar6 = puVar11[4];
        uStack_20 = (undefined2)puVar11[2];
        uStack_1e = (undefined2)((uint)puVar11[2] >> 0x10);
        local_1c = (undefined2)puVar11[3];
        uStack_1a = (undefined2)((uint)puVar11[3] >> 0x10);
        local_18 = (char)uVar6;
        uStack_17 = (undefined1)((uint)uVar6 >> 8);
        uStack_16 = (undefined2)((uint)uVar6 >> 0x10);
        cVar2 = FUN_10005710();
        if (cVar2 == '\0') {
          FUN_1005f7e0(&local_3c);
          FUN_10113d40();
          puVar11 = (undefined4 *)FUN_1005f730(local_50);
          uVar6 = *puVar11;
          local_28 = (undefined1)uVar6;
          bStack_27 = (byte)((uint)uVar6 >> 8);
          uStack_26 = (undefined2)((uint)uVar6 >> 0x10);
          uStack_24 = (undefined2)puVar11[1];
          uStack_22 = (undefined2)((uint)puVar11[1] >> 0x10);
          uVar6 = puVar11[4];
          uStack_20 = (undefined2)puVar11[2];
          uStack_1e = (undefined2)((uint)puVar11[2] >> 0x10);
          local_1c = (undefined2)puVar11[3];
          uStack_1a = (undefined2)((uint)puVar11[3] >> 0x10);
          local_18 = (char)uVar6;
          uStack_17 = (undefined1)((uint)uVar6 >> 8);
          uStack_16 = (undefined2)((uint)uVar6 >> 0x10);
          cVar2 = FUN_10005710();
          if (cVar2 != '\0') {
            uStack_24 = 0xffff;
            uStack_20 = 0;
            uStack_1e = 0;
            local_1c = 0;
            uStack_1a = 0;
            local_18 = '\0';
            uStack_17 = 0;
            FUN_10050df0(&uStack_24,pOVar5);
          }
        }
      }
      else {
        FUN_100e25c0(&local_58,&local_3c,0xffffffff,*local_6c,&local_51);
        if (local_51 == '\0') goto LAB_100eafe4;
        *(undefined1 *)(pOVar5 + 0x58) = 1;
        pOVar12 = local_58;
      }
      local_64 = 0;
      local_8 = 0xffffffff;
      SysFreeString(pOVar12);
    }
  }
  cVar2 = FUN_100408d0();
  if (cVar2 != '\0') {
    lVar13 = *local_6c;
    lVar14 = local_64;
    p_Var15 = endl_exref;
    pbVar7 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14),
                          L"MxConnection::PrebindReferenceEx - EXIT * preboundRefHandle ",lVar13,
                          L" hResult ");
    pbVar7 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar7,lVar13);
    pbVar7 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(pbVar7);
    pbVar7 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar7,lVar14);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar7,p_Var15);
  }
LAB_100eb12e:
  ExceptionList = local_10;
  __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc);
  return;
}


FUN_100e1920 at 100e1920

Signature: undefined FUN_100e1920(void)


long FUN_100e1920(int param_1,long param_2,undefined4 param_3,int *param_4,uint *param_5)

{
  int iVar1;
  char cVar2;
  undefined1 uVar3;
  basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar4;
  int *piVar5;
  uint uVar6;
  int *piVar7;
  int iVar8;
  long lVar9;
  int *piVar10;
  undefined4 uVar11;
  _func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
  *p_Var12;
  char *pcVar13;
  byte bStack_2b;
  long local_18;
  int local_14;
  void *local_10;
  undefined1 *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_1016d37b;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  piVar7 = (int *)0x0;
  local_18 = -0x7fffbffb;
  local_14 = 0;
  cVar2 = FUN_100408d0(DAT_101d60b8 ^ (uint)&stack0xfffffffc);
  piVar5 = param_4;
  if (cVar2 != '\0') {
    lVar9 = param_2;
    piVar10 = param_4;
    p_Var12 = endl_exref;
    pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14),
                          L"MxConnection::UserRegisterPreboundReference - ENTER preboundHandle ",
                          param_2,L" userData ");
    pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar4,lVar9);
    pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(pbVar4);
    pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar4,(long)piVar10);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar4,p_Var12);
  }
  pcVar13 = "MxConnection.cpp";
  uVar11 = 0x8cb;
  uVar3 = FUN_100dd0d0(param_2,&local_14);
  cVar2 = FUN_10048d60(uVar3,uVar11,pcVar13);
  if (cVar2 == '\0') goto LAB_100e1c98;
  param_4 = operator_new(0x1e8);
  iVar8 = local_14;
  local_8 = 0;
  if (param_4 != (void *)0x0) {
    piVar7 = (int *)FUN_1013bef0(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(local_14 + 0x50),1,
                                 param_3,piVar5,0,(uint)bStack_2b << 8,0,0,0,0,0,
                                 *(undefined4 *)(local_14 + 0xac));
  }
  local_8 = 0xffffffff;
  param_4 = piVar7;
  cVar2 = FUN_10048d60(piVar7 != (int *)0x0,0x8d2,"MxConnection.cpp");
  if (cVar2 != '\0') {
    iVar8 = *(int *)(param_1 + 0x2c);
    piVar5 = (int *)FUN_100dca80(&param_3,&param_4);
    iVar1 = *piVar5;
    if (iVar1 == *(int *)(iVar8 + 0x168)) {
      uVar11 = FUN_1002d030(&param_4);
      FUN_100dbbf0(&param_4,iVar1,uVar11);
      cVar2 = FUN_10048d60(param_4 != *(int **)(iVar8 + 0x168),0x8e1,"MxConnection.cpp");
      iVar8 = local_14;
      if (cVar2 == '\0') {
        if (piVar7 != (int *)0x0) {
          (**(code **)*piVar7)(1);
        }
        piVar7 = (int *)0x0;
        local_18 = -0x7ff8fff2;
        iVar8 = local_14;
      }
    }
    else {
      if (piVar7 != (int *)0x0) {
        (**(code **)*piVar7)(1);
      }
      piVar7 = *(int **)(iVar1 + 0xc);
      iVar8 = local_14;
    }
  }
  cVar2 = FUN_10048d60(piVar7 != (int *)0x0,0x8fb,"MxConnection.cpp");
  if (cVar2 == '\0') goto LAB_100e1c98;
  uVar6 = FUN_10056e00();
  cVar2 = FUN_10048d60(0 < (int)uVar6,0x904,"MxConnection.cpp");
  if (cVar2 == '\0') goto LAB_100e1c98;
  param_4 = (int *)(param_1 + 0x4c);
  if ((uint)(*(int *)(param_1 + 0x50) - *(int *)(param_1 + 0x4c) >> 2) <= uVar6) {
    FUN_100dcba0(uVar6 + 100);
  }
  cVar2 = FUN_10048d60(uVar6 < (uint)(param_4[1] - *param_4 >> 2),0x910,"MxConnection.cpp");
  if (cVar2 == '\0') goto LAB_100e1c98;
  iVar1 = *(int *)(iVar8 + 0xa8);
  if (((iVar1 == 1) || (iVar1 == 2)) || (*(char *)(iVar8 + 0xb0) != '\0')) {
    *(undefined1 *)(iVar8 + 0xb0) = 0;
    cVar2 = FUN_1009f9a0();
    if (cVar2 == '\0') {
      uVar11 = *(undefined4 *)(iVar8 + 0x50);
      uVar3 = *(undefined1 *)(iVar8 + 0x10);
LAB_100e1c66:
      FUN_10141bb0(uVar3,uVar11);
      goto LAB_100e1c6d;
    }
    FUN_101392c0(9,"MxConnection.cpp",0x91e);
    pcVar13 = "MxConnection.cpp";
    uVar11 = 0x91f;
    uVar3 = FUN_1005afb0(iVar8,piVar7);
    FUN_10048d60(uVar3,uVar11,pcVar13);
  }
  else if (iVar1 == 4) {
LAB_100e1c6d:
    FUN_10144630();
  }
  else if (iVar1 == 3) {
    pcVar13 = "MxConnection.cpp";
    uVar11 = 0x936;
    uVar3 = FUN_10141bb0(*(undefined1 *)(iVar8 + 0x10),*(undefined4 *)(iVar8 + 0x50));
    FUN_10048d60(uVar3,uVar11,pcVar13);
  }
  else {
    cVar2 = FUN_1009f9c0();
    if (cVar2 != '\0') {
      uVar11 = *(undefined4 *)(iVar8 + 0x50);
      uVar3 = *(undefined1 *)(iVar8 + 0x10);
      goto LAB_100e1c66;
    }
  }
  *(int **)(*param_4 + uVar6 * 4) = piVar7;
  *param_5 = uVar6;
  piVar7[0x42] = piVar7[0x42] + 1;
  (**(code **)piVar7[1])();
  local_18 = 0;
LAB_100e1c98:
  cVar2 = FUN_100408d0();
  if (cVar2 == '\0') {
    ExceptionList = local_10;
    return local_18;
  }
  uVar6 = *param_5;
  lVar9 = local_18;
  p_Var12 = endl_exref;
  pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
           FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14),
                        L"MxConnection::UserRegisterPreboundReference - EXIT pMxReferenceHandle ",
                        uVar6,L" hResult ");
  pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                     (pbVar4,uVar6);
  pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
           FUN_1001a0e0(pbVar4);
  pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                     (pbVar4,lVar9);
  std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
            (pbVar4,p_Var12);
  ExceptionList = local_10;
  return local_18;
}


FUN_100df1a0 at 100df1a0

Signature: undefined FUN_100df1a0(void)


long FUN_100df1a0(int param_1,int param_2)

{
  int iVar1;
  char cVar2;
  basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  long lVar7;
  int iVar8;
  long lVar9;
  _func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
  *p_Var10;
  undefined4 *local_c;
  long local_8;
  
  puVar6 = (undefined4 *)0x0;
  local_8 = -0x7ff8ffa9;
  local_c = (undefined4 *)0x0;
  cVar2 = FUN_100408d0();
  iVar1 = param_2;
  if (cVar2 != '\0') {
    iVar8 = param_2;
    p_Var10 = endl_exref;
    pbVar3 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14),
                          L"MxConnection::UnregisterPreboundReference - ENTER preboundRefHandle ");
    pbVar3 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar3,iVar8);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar3,p_Var10);
  }
  iVar8 = *(int *)(param_1 + 0x4c);
  uVar5 = 0;
  if ((iVar1 < *(int *)(param_1 + 0x50) - iVar8 >> 2) && (*(int *)(iVar8 + iVar1 * 4) != 0)) {
    puVar6 = *(undefined4 **)(iVar8 + iVar1 * 4);
    piVar4 = puVar6 + 5;
    *piVar4 = *piVar4 + -1;
    if (*piVar4 == 0) {
      (**(code **)*puVar6)(1);
    }
    puVar6 = *(undefined4 **)(*(int *)(param_1 + 0x4c) + iVar1 * 4);
    *(undefined4 *)(*(int *)(param_1 + 0x4c) + iVar1 * 4) = 0;
    param_2 = iVar1;
    local_c = puVar6;
    FUN_100421a0(&param_2);
    uVar5 = 1;
  }
  cVar2 = FUN_10048d60(uVar5,0x8a2,"MxConnection.cpp");
  lVar7 = local_8;
  if (cVar2 != '\0') {
    if (puVar6[5] == 1) {
      piVar4 = (int *)FUN_100484c0(&param_2,&local_c);
      iVar1 = *piVar4;
      cVar2 = FUN_10048d60(iVar1 != *(int *)(*(int *)(param_1 + 0x1c) + 0x180),0x8ad,
                           "MxConnection.cpp");
      lVar7 = local_8;
      if (cVar2 != '\0') {
        FUN_100382e0(&param_2,iVar1);
        piVar4 = puVar6 + 5;
        *piVar4 = *piVar4 + -1;
        if (*piVar4 == 0) {
          (**(code **)*puVar6)(1);
        }
        lVar7 = 0;
      }
    }
    else {
      local_8 = 0;
      lVar7 = local_8;
    }
  }
  cVar2 = FUN_100408d0();
  if (cVar2 != '\0') {
    lVar9 = lVar7;
    p_Var10 = endl_exref;
    pbVar3 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14),
                          L"MxConnection::UnregisterPreboundReference - EXIT hResult ");
    pbVar3 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar3,lVar9);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar3,p_Var10);
  }
  return lVar7;
}


FUN_10113d40 at 10113d40

Signature: undefined FUN_10113d40(void)


/* WARNING: Function: __alloca_probe replaced with injection: alloca_probe */

void __fastcall FUN_10113d40(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar4;
  UINT UVar5;
  char *pcVar6;
  OLECHAR *psz;
  int iVar7;
  undefined4 *puVar8;
  wchar_t *pwVar9;
  int *piVar10;
  DWORD DVar11;
  wchar_t *pwVar12;
  int iVar13;
  undefined4 ****ppppuVar14;
  int *piVar15;
  _func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
  *p_Var16;
  wchar_t **ppwVar17;
  undefined4 uVar18;
  undefined4 local_1410;
  undefined4 local_140c;
  BSTR local_1408;
  wchar_t *local_1404;
  byte local_13fe;
  byte local_13fd [5001];
  void *local_74 [4];
  undefined4 local_64;
  uint local_60;
  undefined4 ***local_58 [4];
  undefined4 local_48;
  uint local_44;
  undefined1 local_3c [4];
  undefined4 local_38;
  BSTR local_2c;
  undefined4 local_28;
  undefined2 local_24;
  short sStack_22;
  undefined2 local_20;
  undefined2 uStack_1e;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_14;
  void *local_10;
  undefined1 *puStack_c;
  int local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_101727e7;
  local_10 = ExceptionList;
  uVar2 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
  ExceptionList = &local_10;
  local_14 = uVar2;
  cVar1 = FUN_100408d0(uVar2);
  if (cVar1 != '\0') {
    p_Var16 = endl_exref;
    uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20),
                         L"PreboundReference::Resolve - referenceString ",param_1 + 0x18,
                         L" contextString ",param_1 + 0x34);
    uVar3 = FUN_1001dec0(uVar3);
    uVar3 = FUN_1001a0e0(uVar3);
    pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001dec0(uVar3);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar4,p_Var16);
  }
  cVar1 = FUN_100408d0(uVar2);
  if (cVar1 != '\0') {
    uVar3 = FUN_1002f5f0(*(undefined4 *)(param_1 + 0x50));
    p_Var16 = endl_exref;
    uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20),
                         L"PreboundReference::Resolve - ENTER mxReference ",uVar3);
    pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(uVar3);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar4,p_Var16);
  }
  if ((*(BSTR *)(param_1 + 0xac) == (BSTR)0x0) ||
     (UVar5 = SysStringLen(*(BSTR *)(param_1 + 0xac)), UVar5 == 0)) {
    pcVar6 = (char *)FUN_1005f730(&local_28);
    if (*pcVar6 == '\0') {
      local_13fe = local_13fe & 0xfe;
      local_44 = 7;
      local_48 = 0;
      local_58[0] = (undefined4 ***)((uint)local_58[0] & 0xffff0000);
      local_60 = 7;
      local_64 = 0;
      local_74[0] = (void *)((uint)local_74[0] & 0xffff0000);
      local_8._1_3_ = 0;
      local_8._0_1_ = 1;
      psz = (OLECHAR *)(param_1 + 0x18);
      local_1410 = 0;
      local_140c = 0;
      if (7 < *(uint *)(param_1 + 0x2c)) {
        psz = *(OLECHAR **)psz;
      }
      if (psz == (OLECHAR *)0x0) {
        local_1404 = (wchar_t *)0x0;
      }
      else {
        local_1404 = SysAllocString(psz);
        if (local_1404 == (BSTR)0x0) {
                    /* WARNING: Subroutine does not return */
          FUN_100013e0(0x8007000e);
        }
      }
      pwVar12 = local_1404;
      local_8._0_1_ = 2;
      local_13fd[0] = 0;
      iVar7 = _wcsnicmp(local_1404,L"MyPlatform.",0xb);
      if ((iVar7 == 0) && (*(int *)(param_1 + 0x44) == 0)) {
        FUN_1005fef0();
        local_8._0_1_ = 3;
        uVar3 = FUN_1005ff70();
        FUN_1005f700(uVar3);
        uVar3 = FUN_1005f6b0();
        FUN_10014740(uVar3);
        local_8._0_1_ = 4;
        SysFreeString(local_2c);
        local_8._0_1_ = 2;
        FUN_10028fc0();
        pwVar12 = local_1404;
      }
      else {
        cVar1 = FUN_10134a10(pwVar12);
        if ((cVar1 != '\0') &&
           (((*(int *)(param_1 + 0x44) != 0 && (iVar7 = _wcsnicmp(pwVar12,L"MyArea.",7), iVar7 != 0)
             ) && (iVar7 = _wcsnicmp(pwVar12,L"MyContainer.",0xc), iVar7 != 0)))) {
          piVar10 = (int *)(param_1 + 0x34);
          local_13fd[0] = 1;
          if (7 < *(uint *)(param_1 + 0x48)) {
            piVar10 = (int *)*piVar10;
          }
          FUN_10014740(piVar10);
          pwVar12 = local_1404;
        }
      }
      puVar8 = (undefined4 *)FUN_1005f730(local_3c);
      local_28 = *puVar8;
      local_24 = (undefined2)puVar8[1];
      sStack_22 = (short)((uint)puVar8[1] >> 0x10);
      local_20 = (undefined2)puVar8[2];
      uStack_1e = (undefined2)((uint)puVar8[2] >> 0x10);
      local_1c = puVar8[3];
      local_18 = puVar8[4];
      *(undefined1 *)(param_1 + 0x10) = 0;
      cVar1 = FUN_10089cb0(pwVar12,&local_28,&local_1408,&local_13fe,local_58,local_74,&local_1410,1
                          );
      if (cVar1 != '\0') {
        pwVar9 = (wchar_t *)(param_1 + 0x18);
        if (7 < *(uint *)(param_1 + 0x2c)) {
          pwVar9 = *(wchar_t **)pwVar9;
        }
        iVar7 = _wcsnicmp(pwVar9,L"MyHost.",7);
        if ((iVar7 != 0) || (sStack_22 != 1)) {
          *(undefined1 *)(param_1 + 0x10) = 1;
          ppppuVar14 = (undefined4 ****)local_58[0];
          if (local_44 < 8) {
            ppppuVar14 = local_58;
          }
          iVar7 = (**(code **)(**(int **)(param_1 + 0x50) + 0x2c))
                            (*(int **)(param_1 + 0x50),ppppuVar14);
          if (iVar7 < 0) {
                    /* WARNING: Subroutine does not return */
            FUN_1005bf30(iVar7,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x55);
          }
          if (local_13fd[0] != 0) {
            pwVar9 = (wchar_t *)(param_1 + 0x18);
            if (7 < *(uint *)(param_1 + 0x2c)) {
              pwVar9 = *(wchar_t **)pwVar9;
            }
            iVar7 = _wcsnicmp(pwVar9,L"MyEngine.",9);
            if (iVar7 == 0) {
              cVar1 = FUN_100408d0();
              if (cVar1 != '\0') {
                piVar10 = (int *)(param_1 + 0x34);
                if (7 < *(uint *)(param_1 + 0x48)) {
                  piVar10 = (int *)*piVar10;
                }
                piVar15 = (int *)(param_1 + 0x18);
                if (7 < *(uint *)(param_1 + 0x2c)) {
                  piVar15 = (int *)*piVar15;
                }
                p_Var16 = endl_exref;
                uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20),
                                     L"PreboundReference::Resolve() - Correcting context info for ref string "
                                     ,piVar15,L" Context ",piVar10);
                uVar3 = FUN_1001a0e0(uVar3);
                uVar3 = FUN_1001a0e0(uVar3);
                pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
                         FUN_1001a0e0(uVar3);
                std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
                operator<<(pbVar4,p_Var16);
              }
              sStack_22 = 1;
              local_20 = 0;
              FUN_1008fc40(0);
              FUN_1008fc70(0);
            }
          }
          uVar3 = FUN_1008f8b0(local_3c,local_28,CONCAT22(sStack_22,local_24),
                               CONCAT22(uStack_1e,local_20),local_1c,local_18,local_1408);
          FUN_1005f7e0(uVar3);
          FUN_1005f930(&local_1408);
          local_13fd[0] = local_13fe & 1;
          FUN_1008fca0(local_13fd);
          cVar1 = FUN_10113130();
          if (cVar1 != '\0') {
            local_8._0_1_ = 1;
            SysFreeString(pwVar12);
            local_8 = (uint)local_8._1_3_ << 8;
            FUN_10024360();
            local_8 = 0xffffffff;
            FUN_10024360();
            goto LAB_101144f6;
          }
          cVar1 = FUN_100408d0();
          if (cVar1 != '\0') {
            uVar3 = FUN_1002f5f0(*(undefined4 *)(param_1 + 0x50));
            p_Var16 = endl_exref;
            uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20),
                                 L"PreboundReference::Resolve - Found mxReference ",uVar3,
                                 L" in object handle cache");
            uVar3 = FUN_1001a0e0(uVar3);
            pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
                     FUN_1001a0e0(uVar3);
            std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                      (pbVar4,p_Var16);
          }
        }
      }
      local_8._0_1_ = 1;
      SysFreeString(pwVar12);
      local_8 = (uint)local_8._1_3_ << 8;
      if (7 < local_60) {
        operator_delete(local_74[0]);
      }
      local_60 = 7;
      local_64 = 0;
      local_74[0] = (void *)((uint)local_74[0] & 0xffff0000);
      local_8 = 0xffffffff;
      if (7 < local_44) {
        operator_delete(local_58[0]);
      }
      local_48 = 0;
      local_44 = 7;
      local_58[0] = (undefined4 ***)((uint)local_58[0] & 0xffff0000);
    }
    pcVar6 = (char *)FUN_1005f730(&local_28);
    if (*pcVar6 == '\0') {
      local_1404 = operator_new(8);
      if (local_1404 == (BSTR)0x0) {
        local_1408 = (BSTR)0x0;
      }
      else {
        *(undefined ***)local_1404 = CRefAdapter::vftable;
        *(undefined ***)local_1404 = CPreboundReferenceAdapter::vftable;
        *(int *)(local_1404 + 2) = param_1;
        local_1408 = local_1404;
      }
      local_8 = 0xffffffff;
      cVar1 = FUN_10048d60(local_1408 != (BSTR)0x0,0xbe,"preboundreference.cpp");
      if (cVar1 != '\0') {
        *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
        *(undefined4 *)(param_1 + 0xa8) = 1;
        DVar11 = GetTickCount();
        local_38 = CONCAT22(local_38._2_2_,0xffff);
        local_2c = (BSTR)((uint)local_2c & 0xffff0000);
        FUN_1008f150(local_1408,0,0,0,0,local_38,1,0,local_2c,0,DVar11);
      }
    }
    else {
      iVar7 = FUN_1005f730(&local_28);
      if (*(short *)(iVar7 + 10) == 0) {
        pwVar12 = (wchar_t *)(param_1 + 0x18);
        if (7 < *(uint *)(param_1 + 0x2c)) {
          pwVar12 = *(wchar_t **)pwVar12;
        }
        iVar7 = _wcsnicmp(pwVar12,L"MyPlatform.",0xb);
        if ((iVar7 == 0) && (iVar7 = FUN_1005f730(&local_28), *(short *)(iVar7 + 4) != 1)) {
          local_1404 = (BSTR)0x0;
          local_8 = 8;
          ppwVar17 = &local_1404;
          iVar7 = FUN_1005f730(local_3c);
          FUN_10015b40(*(undefined2 *)(iVar7 + 2),ppwVar17);
          UVar5 = SysStringLen(local_1404);
          if (UVar5 == 0) {
            iVar7 = FUN_10022ff0();
            if ((*(int *)(iVar7 + 0xac) == 0) && (iVar13 = FUN_1002f080(), iVar13 == 0)) {
              uVar3 = 0;
            }
            else {
              uVar3 = *(undefined4 *)(iVar7 + 0xac);
            }
            uVar18 = 0;
            FUN_10022ff0(uVar3,0);
            cVar1 = FUN_10022ba0(uVar3,uVar18);
            if (cVar1 != '\0') {
              iVar7 = FUN_1005f730(local_3c);
              uVar3 = FUN_10022ff0(L"PreboundReference::Resolve() - GetPlatformNameFromId returned a NULL platform name for id %d"
                                   ,*(undefined2 *)(iVar7 + 2));
              FUN_10022cb0(uVar3);
            }
          }
          puVar8 = (undefined4 *)FUN_1005f730(local_3c);
          local_28 = *puVar8;
          local_20 = (undefined2)puVar8[2];
          uStack_1e = (undefined2)((uint)puVar8[2] >> 0x10);
          local_1c = puVar8[3];
          local_18 = puVar8[4];
          local_24 = 1;
          sStack_22 = 1;
          FUN_1005f7e0(&local_28);
          uVar3 = FUN_1005f6b0();
          FUN_10049370(uVar3);
          FUN_1005f700(local_1404);
          SysFreeString(local_1404);
          local_1404 = (BSTR)0x0;
          *(undefined1 *)(param_1 + 0x6c) = 1;
          local_8 = 0xffffffff;
          SysFreeString((BSTR)0x0);
        }
        FUN_101131d0();
      }
    }
    cVar1 = FUN_100408d0();
    if (cVar1 != '\0') {
      p_Var16 = endl_exref;
      pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
               FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20),
                            L"PreboundReference::Resolve - EXIT");
      std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                (pbVar4,p_Var16);
    }
  }
LAB_101144f6:
  ExceptionList = local_10;
  __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc);
  return;
}


FUN_101155a0 at 101155a0

Signature: undefined FUN_101155a0(void)


/* WARNING: Function: __alloca_probe replaced with injection: alloca_probe */

void __thiscall FUN_101155a0(undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  char *pcVar6;
  basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar7;
  _func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
  *p_Var8;
  undefined1 *local_145c;
  undefined1 local_1458;
  byte bStack_1457;
  undefined2 uStack_1456;
  undefined2 local_1454;
  undefined2 uStack_1452;
  undefined2 uStack_1450;
  undefined2 local_144e;
  undefined2 uStack_144c;
  undefined2 uStack_144a;
  undefined2 local_1448;
  ushort uStack_1446;
  char local_1441;
  undefined1 local_b8 [144];
  int local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_14;
  void *local_10;
  undefined1 *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_101729db;
  local_10 = ExceptionList;
  uVar3 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
  ExceptionList = &local_10;
  local_14 = uVar3;
  FUN_1003ec10(param_2);
  local_1441 = param_1[0x29] == 1;
  cVar2 = FUN_100408d0(uVar3);
  if (cVar2 != '\0') {
    uVar4 = FUN_1002f5f0(param_2);
    uVar4 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38),
                         L"PreboundReference::OnPlatformResolveReferenceResults",uVar4);
    FUN_1001a0e0(uVar4);
  }
  iVar5 = FUN_1005f730(&local_28);
  if (*(short *)(iVar5 + 10) == 0) {
    local_1454 = 0xffff;
    local_1448 = 2;
    param_1[0x2a] = 0;
    param_1[0x23] = CONCAT22(uStack_1452,0xffff);
    param_1[0x24] = 3;
    param_1[0x25] = 0;
    param_1[0x26] = CONCAT22(uStack_1446,2);
    pcVar6 = strrchr("preboundreference.cpp",0x5c);
    if (pcVar6 == (char *)0x0) {
      pcVar6 = "preboundreference.cpp";
    }
    else {
      pcVar6 = pcVar6 + 1;
    }
    FUN_10112a00(pcVar6);
    param_1[0x28] = 0x327;
    if (local_1441 == '\0') {
      cVar2 = FUN_100408d0();
      if (cVar2 != '\0') {
        FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38),
                     L"Local platform failed to resolve reference - starting over.");
      }
    }
    else {
      param_1[0x29] = 2;
      cVar2 = FUN_100408d0();
      if (cVar2 != '\0') {
        p_Var8 = endl_exref;
        pbVar7 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
                 FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x1c),
                              L"PreboundReference - local platform resolution - failed.");
        std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                  (pbVar7,p_Var8);
      }
    }
    local_144e = 0;
    uStack_144c = 0;
    uStack_1452 = 0;
    uStack_1450 = 0;
    local_20 = 0;
    uStack_1456 = 0;
    local_1454 = 0;
    uStack_144a = 0;
    local_1448 = 0;
    uStack_1446 = 0;
    local_24 = 0;
    local_1458 = 0;
    local_28 = (uint)bStack_1457 << 8;
    local_1c = 0;
    local_18 = 0;
    FUN_1005f7e0(&local_28);
  }
  else {
    FUN_1004c220();
    local_8 = 0;
    FUN_1004c320(param_1[0x14]);
    local_145c = local_b8;
    FUN_10073b80(&local_145c,0);
    param_1[0x2a] = 3;
    param_1[0x29] = 0;
    FUN_10114620();
    local_1454 = 0xffff;
    local_1448 = 0;
    param_1[0x23] = CONCAT22(uStack_1452,0xffff);
    param_1[0x24] = 0;
    param_1[0x25] = 0;
    param_1[0x26] = (uint)uStack_1446 << 0x10;
    pcVar6 = strrchr("preboundreference.cpp",0x5c);
    if (pcVar6 == (char *)0x0) {
      pcVar6 = "preboundreference.cpp";
    }
    else {
      pcVar6 = pcVar6 + 1;
    }
    FUN_10112a00(pcVar6);
    param_1[0x28] = 0x314;
    if (param_1[0x29] == 1) {
      cVar2 = FUN_100408d0();
      if (cVar2 != '\0') {
        p_Var8 = endl_exref;
        pbVar7 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
                 FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x1c),
                              L"PreboundReference - local platform resolution - success.");
        std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                  (pbVar7,p_Var8);
      }
    }
    else {
      cVar2 = FUN_100408d0();
      if (cVar2 != '\0') {
        FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38),L"Local platform resolved reference.");
      }
    }
    iVar5 = FUN_1005f730(&local_28);
    FUN_10040470(*(undefined2 *)(iVar5 + 2));
    local_8 = 0xffffffff;
    FUN_1002e080();
  }
  (**(code **)(param_1[1] + 4))();
  cVar2 = FUN_100408d0();
  if (cVar2 != '\0') {
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (*(basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> **)
                (DAT_101d6474 + 0x38),endl_exref);
  }
  if ((param_1[0x2a] != 1) && (param_1[0x2a] != 2)) {
    FUN_10050df0(param_1 + 0x23,param_1);
  }
  if (local_1441 != '\0') {
    piVar1 = param_1 + 5;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*param_1)(1);
    }
  }
  ExceptionList = local_10;
  __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc);
  return;
}


FUN_10114a90 at 10114a90

Signature: undefined FUN_10114a90(void)


void __thiscall
FUN_10114a90(undefined4 *param_1,int param_2,int *param_3,ushort param_4,undefined4 param_5,
            void *param_6,short *param_7)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar4;
  int iVar5;
  undefined4 *puVar6;
  wchar_t *pwVar7;
  wchar_t *pwVar8;
  size_t _MaxCount;
  DWORD DVar9;
  int iVar10;
  int *piVar11;
  undefined2 uVar12;
  wchar_t _Ch;
  _func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
  *p_Var13;
  undefined4 uVar14;
  undefined1 local_ba4 [20];
  undefined1 local_b90 [20];
  undefined4 local_b7c;
  undefined4 local_b74;
  void *local_b70;
  short *local_b6c;
  undefined4 *local_b68;
  int *local_b64;
  char local_b5e;
  char local_b5d;
  undefined4 *local_b5c [391];
  wchar_t local_540 [520];
  undefined1 local_130 [20];
  undefined1 local_11c [20];
  undefined1 local_108 [60];
  undefined1 local_cc [20];
  undefined4 local_b8 [36];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  uint local_14;
  void *local_10;
  undefined1 *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_101729a5;
  local_10 = ExceptionList;
  uVar2 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
  ExceptionList = &local_10;
  local_b5c[0] = (undefined4 *)(uint)param_4;
  local_b74 = param_5;
  local_b70 = param_6;
  local_b6c = param_7;
  local_14 = uVar2;
  cVar1 = FUN_100408d0(uVar2);
  if (cVar1 != '\0') {
    local_20 = *(undefined4 *)(local_b6c + 2);
    swprintf_s(local_540,0x104,L"<success %d category %d detectedBy %d detail %d>",
               (int)(short)*(undefined4 *)local_b6c,local_20,*(undefined4 *)(local_b6c + 4),
               (int)local_b6c[6]);
    local_b64 = (int *)FUN_10004010(local_b74,local_b70);
    local_b5c[0] = (undefined4 *)FUN_100040a0(local_b5c[0]);
    uVar3 = FUN_100300d0(param_3);
    iVar5 = param_2;
    p_Var13 = endl_exref;
    pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20),
                          L"PreboundReference::OnSetAttributeResult - ENTER correlationId ",param_2,
                          L" pValue ",uVar3,L" quality ",local_b5c[0],L" timestamp ",local_b64,
                          L" mxStatus ",local_540);
    pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar4,iVar5);
    uVar3 = FUN_1001a0e0(pbVar4);
    uVar3 = FUN_1001a0e0(uVar3);
    uVar3 = FUN_1001a0e0(uVar3);
    uVar3 = FUN_1001a0e0(uVar3);
    uVar3 = FUN_1001a0e0(uVar3);
    uVar3 = FUN_1001a0e0(uVar3);
    uVar3 = FUN_1001a0e0(uVar3);
    pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(uVar3);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar4,p_Var13);
  }
  if (param_2 == 0) {
    if (*local_b6c == -1) {
      iVar5 = (**(code **)(*param_3 + 0x60))(param_3,&local_b68);
      iVar5 = FUN_10048e60(iVar5 == 0,iVar5,300,"preboundreference.cpp");
      if (iVar5 == 0) goto LAB_1011543c;
      if (local_b68 != (undefined4 *)0x0) {
        local_b64 = (int *)0x0;
        local_8 = 1;
        uVar12 = 0x1011;
        iVar5 = (**(code **)(*param_3 + 0x80))(param_3,&local_b64);
        if (iVar5 == 0) {
          FUN_1008e710(local_b64);
          local_8._0_1_ = 2;
          FUN_10112f20(local_b90);
          local_8._0_1_ = 1;
          FUN_10021cc0();
          FUN_1005f730(&local_28);
          uVar3 = CONCAT22(uVar12,(undefined2)local_20);
          cVar1 = FUN_100057b0(local_28,local_24,uVar3,0x138,"preboundreference.cpp");
          uVar12 = (undefined2)((uint)uVar3 >> 0x10);
          if (cVar1 != '\0') {
            FUN_1004c220();
            local_8._0_1_ = 3;
            FUN_1004c320(param_1[0x14]);
            local_b5c[0] = local_b8;
            uVar12 = 0x1011;
            FUN_10073b80(local_b5c,0);
            iVar5 = FUN_1005f730(local_130);
            FUN_10040470(*(undefined2 *)(iVar5 + 2));
            local_8._0_1_ = 1;
            FUN_1002e080();
          }
          cVar1 = FUN_100057b0(local_28,local_24,CONCAT22(uVar12,(undefined2)local_20),0x144,
                               "preboundreference.cpp");
          if (cVar1 == '\0') {
            param_1[0x2a] = 4;
          }
          else {
            iVar5 = FUN_1005f730(local_11c);
            if (*(short *)(iVar5 + 10) == 0) {
              FUN_101131d0();
            }
            else {
              param_1[0x2a] = 3;
              param_1[0x29] = 0;
              FUN_10114620();
            }
          }
        }
        local_8 = 0xffffffff;
        if (local_b64 != (int *)0x0) {
          (**(code **)(*local_b64 + 8))(local_b64);
        }
        goto LAB_1011543c;
      }
    }
    else if (((DAT_101d8c40 == 2) && (param_1[0x29] == 0)) &&
            (*(ushort *)(param_1[0x19] + 0x2ac) - 0x7c17 < 0x3e9)) {
      cVar1 = FUN_100408d0(uVar2);
      if (cVar1 != '\0') {
        uVar3 = FUN_10003fc0(*(undefined4 *)local_b6c,*(undefined4 *)(local_b6c + 2),
                             *(undefined4 *)(local_b6c + 4),*(undefined4 *)(local_b6c + 6));
        p_Var13 = endl_exref;
        uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x1c),
                             L"PreboundReference - attempting local platform <",param_1 + 6,
                             L">  - status ",uVar3);
        uVar3 = FUN_1001dec0(uVar3);
        uVar3 = FUN_1001a0e0(uVar3);
        pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
                 FUN_1001a0e0(uVar3);
        std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                  (pbVar4,p_Var13);
      }
      param_1[5] = param_1[5] + 1;
      param_1[0x2a] = 1;
      param_1[0x29] = 1;
      FUN_10112cd0();
      goto LAB_1011543c;
    }
LAB_10115432:
    param_1[0x2a] = 4;
    goto LAB_1011543c;
  }
  if (param_2 != 1) goto LAB_1011543c;
  param_1[0x2a] = 6;
  if (*local_b6c != -1) {
    if (*(char *)(param_1 + 0x1b) != '\0') {
      if ((uint)param_1[0x21] < 8) {
        puVar6 = param_1 + 0x1c;
      }
      else {
        puVar6 = (undefined4 *)param_1[0x1c];
      }
      iVar5 = (**(code **)(*(int *)param_1[0x14] + 0x44))((int *)param_1[0x14],puVar6);
      if (iVar5 < 0) {
                    /* WARNING: Subroutine does not return */
        FUN_1005bf30(iVar5,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x75);
      }
      *(undefined1 *)(param_1 + 0x1b) = 0;
    }
    if (*(int *)(local_b6c + 2) == 3) {
LAB_1011502e:
      param_1[0x2a] = 6;
      goto LAB_1011543c;
    }
    if ((*(int *)(local_b6c + 2) == 4) && (local_b6c[6] == 0x1f42)) {
      local_b70 = operator_new(8);
      local_8 = 0xb;
      if (local_b70 == (void *)0x0) {
        local_b5c[0] = (undefined4 *)0x0;
      }
      else {
        local_b5c[0] = (undefined4 *)FUN_10112b50(param_1);
      }
      local_8 = 0xffffffff;
      cVar1 = FUN_10048d60(local_b5c[0] != (undefined4 *)0x0,0x23b,"preboundreference.cpp");
      if (cVar1 != '\0') {
        uVar3 = FUN_10016fd0();
        FUN_1005f7e0(uVar3);
        FUN_1004c220();
        local_8 = 0xc;
        FUN_1004c320(param_1[0x14]);
        local_b68 = local_b8;
        FUN_10073b80(&local_b68,0);
        param_1[5] = param_1[5] + 1;
        param_1[0x2a] = 1;
        DVar9 = GetTickCount();
        FUN_1008f150(local_b5c[0],0,0,0,0,*(undefined4 *)local_b6c,*(undefined4 *)(local_b6c + 2),
                     *(undefined4 *)(local_b6c + 4),*(undefined4 *)(local_b6c + 6),0,DVar9);
        local_8 = 0xffffffff;
        FUN_1002e080();
      }
      goto LAB_1011543c;
    }
    goto LAB_10115432;
  }
  iVar5 = (**(code **)(*param_3 + 0x60))(param_3,&local_b68);
  iVar5 = FUN_10048e60(iVar5 == 0,iVar5,0x19d,"preboundreference.cpp");
  if (iVar5 == 0) goto LAB_1011543c;
  if (local_b68 == (undefined4 *)0x0) goto LAB_1011502e;
  local_b64 = (int *)0x0;
  local_8 = 6;
  uVar12 = 0x1011;
  iVar5 = (**(code **)(*param_3 + 0x80))(param_3,&local_b64);
  if (iVar5 == 0) {
    FUN_1008e710(local_b64);
    local_8._0_1_ = 7;
    FUN_10112f20(local_ba4);
    local_8 = CONCAT31(local_8._1_3_,6);
    FUN_10021cc0();
    if (*(char *)(param_1 + 0x1b) != '\0') {
      piVar11 = param_1 + 0x1c;
      if (7 < (uint)param_1[0x21]) {
        piVar11 = (int *)*piVar11;
      }
      FUN_1005f700(piVar11);
      *(undefined1 *)(param_1 + 0x1b) = 0;
    }
    iVar5 = FUN_1005f730(local_108);
    if (*(short *)(iVar5 + 10) == 0) {
      local_b5d = '\0';
      local_b5e = '\0';
      puVar6 = (undefined4 *)FUN_1005f730(local_cc);
      cVar1 = FUN_100057b0(*puVar6,puVar6[1],CONCAT22(uVar12,*(undefined2 *)(puVar6 + 2)),0x1c1,
                           "preboundreference.cpp");
      if (cVar1 == '\0') {
        if (*(char *)(param_1 + 4) != '\0') {
          FUN_1004c220();
          local_8._0_1_ = 8;
          FUN_1004c320(param_1[0x14]);
          local_b5c[0] = local_b8;
          FUN_10073b80(local_b5c,0);
          local_8 = CONCAT31(local_8._1_3_,6);
          FUN_1002e080();
        }
        local_b5e = '\x01';
      }
      else {
        pwVar7 = (wchar_t *)FUN_1005f590();
        cVar1 = FUN_10134a10(pwVar7);
        if (cVar1 == '\0') {
          pwVar8 = wcschr(pwVar7,L'.');
          if ((pwVar8 != (wchar_t *)0x0) &&
             (_MaxCount = (int)pwVar8 - (int)pwVar7 >> 1, _MaxCount != 0)) {
            pwVar8 = (wchar_t *)FUN_1005f610();
            iVar5 = _wcsnicmp(pwVar7,pwVar8,_MaxCount);
            if (iVar5 == 0) {
              _Ch = L'.';
              pwVar7 = (wchar_t *)FUN_1005f660();
              pwVar7 = wcschr(pwVar7,_Ch);
              if (pwVar7 == (wchar_t *)0x0) goto LAB_10114e2f;
            }
            local_b5d = '\x01';
          }
        }
      }
LAB_10114e2f:
      if ((*(char *)(param_1 + 4) == '\0') || ((local_b5d == '\0' && (local_b5e == '\0')))) {
        param_1[0x2a] = 4;
      }
      else {
        local_b70 = operator_new(8);
        local_8._0_1_ = 9;
        if (local_b70 == (void *)0x0) {
          local_b5c[0] = (undefined4 *)0x0;
        }
        else {
          local_b5c[0] = (undefined4 *)FUN_10112b50(param_1);
        }
        local_8 = CONCAT31(local_8._1_3_,6);
        cVar1 = FUN_10048d60(local_b5c[0] != (undefined4 *)0x0,0x1ee,"preboundreference.cpp");
        if (cVar1 == '\0') {
          param_1[0x2a] = 4;
          iVar5 = FUN_10022ff0();
          if (*(int *)(iVar5 + 0xac) == 0) {
            iVar10 = FUN_1002f080();
            if (iVar10 != 0) goto LAB_10114f66;
            uVar3 = 0;
          }
          else {
LAB_10114f66:
            uVar3 = *(undefined4 *)(iVar5 + 0xac);
          }
          uVar14 = 0;
          FUN_10022ff0(uVar3,0);
          cVar1 = FUN_10022ba0(uVar3,uVar14);
          if (cVar1 != '\0') {
            uVar3 = FUN_1005f590();
            uVar3 = FUN_10022ff0(L"PreboundReference::OnSetAttributeResult unable to crreate CPreboundReferenceAdapter for ref %s"
                                 ,uVar3);
            FUN_10022cb0(uVar3);
          }
        }
        else {
          *(undefined1 *)(param_1 + 4) = 0;
          uVar3 = FUN_10016fd0();
          FUN_1005f7e0(uVar3);
          FUN_1008fc40(&DAT_1017a514);
          FUN_1008fc70(&DAT_1017a514);
          param_1[5] = param_1[5] + 1;
          param_1[0x2a] = 1;
          DVar9 = GetTickCount();
          local_b70 = (void *)CONCAT22(local_b70._2_2_,0x1f42);
          local_b7c = (uint)local_b7c._2_2_ << 0x10;
          FUN_1008f150(local_b5c[0],0,0,0,0,local_b7c,4,0,local_b70,0,DVar9);
        }
      }
    }
    else {
      param_1[0x2a] = 3;
      param_1[0x29] = 0;
      FUN_10114620();
    }
  }
  local_8 = 0xffffffff;
  if (local_b64 != (int *)0x0) {
    (**(code **)(*local_b64 + 8))(local_b64);
  }
LAB_1011543c:
  if (*(char *)(param_1 + 0x1b) != '\0') {
    if ((uint)param_1[0x21] < 8) {
      puVar6 = param_1 + 0x1c;
    }
    else {
      puVar6 = (undefined4 *)param_1[0x1c];
    }
    iVar5 = (**(code **)(*(int *)param_1[0x14] + 0x44))((int *)param_1[0x14],puVar6);
    if (iVar5 < 0) {
                    /* WARNING: Subroutine does not return */
      FUN_1005bf30(iVar5,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x75);
    }
    *(undefined1 *)(param_1 + 0x1b) = 0;
  }
  if ((param_1[0x2a] != 1) && (param_1[0x2a] != 2)) {
    FUN_10050df0(local_b6c,param_1);
  }
  piVar11 = param_1 + 5;
  *piVar11 = *piVar11 + -1;
  if (*piVar11 == 0) {
    (**(code **)*param_1)(1);
  }
  local_b5c[0] = (undefined4 *)param_1[0x2a];
  if (param_1[5] == 1) {
    local_b68 = param_1;
    piVar11 = (int *)FUN_100484c0(&local_b70,&local_b68);
    iVar5 = *piVar11;
    cVar1 = FUN_10048d60(iVar5 != *(int *)(param_1[0x19] + 0x180),0x273,"preboundreference.cpp");
    if (cVar1 != '\0') {
      FUN_100382e0(&local_b70,iVar5);
      piVar11 = param_1 + 5;
      *piVar11 = *piVar11 + -1;
      if (*piVar11 == 0) {
        (**(code **)*param_1)(1);
      }
    }
  }
  cVar1 = FUN_100408d0();
  if (cVar1 != '\0') {
    uVar3 = FUN_10001e20(local_b5c);
    p_Var13 = endl_exref;
    uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20),
                         L"PreboundReference::OnSetAttributeResult - EXIT status ",uVar3);
    pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(uVar3);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar4,p_Var13);
  }
  ExceptionList = local_10;
  __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc);
  return;
}


FUN_10141bb0 at 10141bb0

Signature: undefined FUN_10141bb0(void)


/* WARNING: Function: __alloca_probe replaced with injection: alloca_probe */

void __thiscall FUN_10141bb0(int param_1,undefined1 param_2,undefined4 param_3)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar5;
  _func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
  *p_Var6;
  bool local_1394;
  
  uVar3 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
  local_1394 = false;
  cVar2 = FUN_100408d0();
  if (cVar2 != '\0') {
    uVar4 = FUN_1002f5f0(param_3);
    p_Var6 = endl_exref;
    uVar4 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x34),
                         L"Reference::InitializeWithPreboundReference - ENTER pReference ",uVar4);
    pbVar5 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(uVar4);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar5,p_Var6);
  }
  iVar1 = *(int *)(param_1 + 0xa4);
  if (((((iVar1 == 1) || (iVar1 == 2)) || (iVar1 == 6)) || ((iVar1 == 8 || (iVar1 == 10)))) ||
     (iVar1 == 0xb)) {
    local_1394 = true;
  }
  else {
    FUN_1004c320(param_3);
    *(undefined1 *)(param_1 + 0x154) = param_2;
    if ((((char)*(uint *)(param_1 + 0x1c) != '\0') && (*(uint *)(param_1 + 0x1c) >> 0x10 != 0)) &&
       (((short)*(uint *)(param_1 + 0x20) != 0 &&
        ((*(uint *)(param_1 + 0x20) >> 0x10 != 0 && (*(short *)(param_1 + 0x26) != 0)))))) {
      cVar2 = FUN_10001360();
      if (cVar2 == '\0') {
        FUN_101392c0(3,"Reference.cpp",0xca3);
        FUN_10141580();
      }
      else {
        FUN_101392c0(8,"Reference.cpp",0xc99);
        FUN_10133cb0(param_1 + 4,param_1 + 0xc,0);
      }
      local_1394 = true;
    }
  }
  cVar2 = FUN_100408d0();
  if (cVar2 != '\0') {
    p_Var6 = endl_exref;
    pbVar5 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x34),
                          L"Reference::InitializeWithPreboundReference - EXIT rc ");
    pbVar5 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar5,local_1394);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar5,p_Var6);
  }
  __security_check_cookie(uVar3 ^ (uint)&stack0xfffffffc);
  return;
}


FUN_10141d60 at 10141d60

Signature: undefined FUN_10141d60(void)


/* WARNING: Function: __alloca_probe replaced with injection: alloca_probe */

void __thiscall FUN_10141d60(int param_1,int *param_2,int param_3)

{
  uint uVar1;
  uint uVar2;
  int *piVar3;
  char cVar4;
  undefined4 uVar5;
  basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar6;
  UINT UVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  bool bVar12;
  _func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
  *p_Var13;
  int local_15b0;
  undefined1 local_15ac;
  byte bStack_15ab;
  undefined2 uStack_15aa;
  undefined2 local_15a8;
  ushort uStack_15a6;
  undefined2 local_15a4;
  undefined2 uStack_15a2;
  short local_15a0;
  undefined2 uStack_159e;
  undefined2 local_159c;
  undefined2 uStack_159a;
  wchar_t local_210 [260];
  uint local_8;
  
  local_8 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
  local_15b0 = param_3;
  cVar4 = FUN_100408d0();
  if (cVar4 != '\0') {
    uVar5 = FUN_1002f5f0(param_3);
    swprintf_s(local_210,0x104,L"<success %d category %d detectedBy %d detail %d>",
               (int)(short)*param_2,param_2[1],param_2[2],(int)(short)param_2[3]);
    p_Var13 = endl_exref;
    uVar5 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x34),
                         L"Reference::PreboundReferenceResolved - ENTER status ",local_210,
                         L" pReference ",uVar5);
    uVar5 = FUN_1001a0e0(uVar5);
    uVar5 = FUN_1001a0e0(uVar5);
    pbVar6 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(uVar5);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar6,p_Var13);
    param_3 = local_15b0;
  }
  if ((short)*param_2 == -1) {
    if (*(BSTR *)(param_1 + 0x16c) != (BSTR)0x0) {
      UVar7 = SysStringLen(*(BSTR *)(param_1 + 0x16c));
      if (UVar7 != 0) goto LAB_10142175;
    }
    FUN_1004c320(param_3);
    uVar1 = *(uint *)(param_1 + 0x1c);
    uVar2 = *(uint *)(param_1 + 0x20);
    local_159c = *(undefined2 *)(param_1 + 0x24);
    local_15a4 = (undefined2)uVar1;
    uStack_15a2 = (undefined2)(uVar1 >> 0x10);
    local_15a0 = (short)uVar2;
    uStack_159e = (undefined2)(uVar2 >> 0x10);
    if (((((char)uVar1 == '\0') || (uVar1 >> 0x10 == 0)) || (local_15a0 == 0)) ||
       ((uVar2 >> 0x10 == 0 || (*(short *)(param_1 + 0x26) == 0)))) {
      FUN_101392c0(4,"Reference.cpp",0xccc);
      local_15a8 = 0;
      local_159c = 6;
      FUN_10100da0((uint)uStack_15a6 << 0x10,4,0,CONCAT22(uStack_159a,6),"Reference.cpp",0xcce);
      uStack_15aa = 0;
      local_15a8 = 0;
      uStack_15a2 = 0;
      local_15a0 = 0;
      uStack_15a6 = 0;
      local_15a4 = 0;
      uStack_159e = 0;
      local_159c = 0;
      uStack_159a = 0;
      local_15ac = 0;
      *(uint *)(param_1 + 0x1c) = (uint)bStack_15ab << 8;
      *(undefined4 *)(param_1 + 0x20) = 0;
      *(undefined4 *)(param_1 + 0x24) = 0;
      *(undefined4 *)(param_1 + 0x28) = 0;
      *(undefined4 *)(param_1 + 0x2c) = 0;
      local_15b0 = param_1 + 0x10;
      FUN_10073b80(&local_15b0,0);
      FUN_10138180("Reference.cpp",0xcd6);
      piVar3 = *(int **)(param_1 + 0x1a8);
      if ((piVar3 != (int *)0x0) && (*(char *)(param_1 + 0x1bc) != '\0')) {
        if (*(int *)(param_1 + 0x108) == 0) {
          DAT_101d8c50 = DAT_101d8c50 + 1;
          cVar4 = FUN_100408d0();
          if (cVar4 != '\0') {
            iVar11 = 0xce2;
            p_Var13 = endl_exref;
            pbVar6 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
                     FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x40),
                                  L"no outstanding references refering to this reference callback will not be called line "
                                  ,0xce2,L" file ","Reference.cpp");
            pbVar6 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
                     operator<<(pbVar6,iVar11);
            uVar5 = FUN_1001a0e0(pbVar6);
            pbVar6 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
                     FUN_1001dc00(uVar5);
            std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                      (pbVar6,p_Var13);
          }
        }
        else if (*(char *)(param_1 + 0x156) == '\0') {
          (**(code **)(*piVar3 + 0xc))(piVar3,*(undefined4 *)(param_1 + 0x1ac));
        }
      }
    }
    else {
      FUN_101392c0(3,"Reference.cpp",0xcc3);
      FUN_10040470(*(undefined2 *)(param_1 + 0x1e));
      FUN_10141580();
    }
  }
  else {
    if (param_2[1] == 3) {
      FUN_101392c0(5,"Reference.cpp",0xcf3);
      uVar5 = 0xcf4;
      local_15a8 = 0;
      iVar11 = (uint)uStack_15a6 << 0x10;
      iVar9 = 0;
      local_159c = 7;
      iVar10 = 3;
      iVar8 = CONCAT22(uStack_159a,7);
    }
    else {
      FUN_101392c0(0,"Reference.cpp",0xcfb);
      iVar11 = *param_2;
      iVar10 = param_2[1];
      uVar5 = 0xcfc;
      iVar9 = param_2[2];
      iVar8 = param_2[3];
    }
    FUN_10100da0(iVar11,iVar10,iVar9,iVar8,"Reference.cpp",uVar5);
    uStack_15aa = 0;
    local_15a8 = 0;
    uStack_15a2 = 0;
    local_15a0 = 0;
    uStack_15a6 = 0;
    local_15a4 = 0;
    uStack_159e = 0;
    local_159c = 0;
    uStack_159a = 0;
    local_15ac = 0;
    *(uint *)(param_1 + 0x1c) = (uint)bStack_15ab << 8;
    *(undefined4 *)(param_1 + 0x20) = 0;
    *(undefined4 *)(param_1 + 0x24) = 0;
    local_15b0 = param_1 + 0x10;
    *(undefined4 *)(param_1 + 0x28) = 0;
    *(undefined4 *)(param_1 + 0x2c) = 0;
    FUN_10073b80(&local_15b0,0);
    FUN_10138180("Reference.cpp",0xd07);
  }
LAB_10142175:
  cVar4 = FUN_100408d0();
  if (cVar4 != '\0') {
    bVar12 = true;
    p_Var13 = endl_exref;
    pbVar6 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
             FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x34),
                          L"Reference::PreboundReferenceResolved - EXIT rc ");
    pbVar6 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
                       (pbVar6,bVar12);
    std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
              (pbVar6,p_Var13);
  }
  __security_check_cookie(local_8 ^ (uint)&stack0xfffffffc);
  return;
}