fe2a6db786
rust / build / test / clippy / fmt (push) Has been cancelled
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>
1239 lines
34 KiB
Markdown
1239 lines
34 KiB
Markdown
# Lmx.dll selected decompile
|
|
|
|
## FUN_100054b0 at 100054b0
|
|
|
|
Signature: `undefined FUN_100054b0(void)`
|
|
|
|
```c
|
|
|
|
int * __thiscall FUN_100054b0(int *param_1,undefined4 param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
HRESULT HVar2;
|
|
int *local_8;
|
|
|
|
*param_1 = 0;
|
|
param_1[1] = 0;
|
|
local_8 = param_1;
|
|
if (DAT_101d6470 == (int *)0x0) {
|
|
local_8 = DAT_101d6470;
|
|
HVar2 = CoGetClassObject((IID *)&DAT_1017b1c0,0x17,(LPVOID)0x0,(IID *)&DAT_1017b1d0,&local_8);
|
|
if (HVar2 < 0) {
|
|
param_2 = 0x80004005;
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(¶m_2,(ThrowInfo *)&DAT_101a8794);
|
|
}
|
|
DAT_101d6470 = local_8;
|
|
}
|
|
(**(code **)(*DAT_101d6470 + 0x14))(DAT_101d6470,param_1,0);
|
|
piVar1 = (int *)*param_1;
|
|
if (piVar1 == (int *)0x0) {
|
|
param_2 = 0x80004005;
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(¶m_2,(ThrowInfo *)&DAT_101a8794);
|
|
}
|
|
(**(code **)(*piVar1 + 0x44))(piVar1,param_2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1000df40 at 1000df40
|
|
|
|
Signature: `undefined FUN_1000df40(void)`
|
|
|
|
```c
|
|
|
|
bool FUN_1000df40(int *param_1,undefined4 param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 local_8;
|
|
|
|
local_8 = 0;
|
|
iVar1 = (**(code **)(*param_1 + 0x10))(param_1,param_2,4,&local_8);
|
|
return iVar1 == 0;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_10089cb0 at 10089cb0
|
|
|
|
Signature: `undefined FUN_10089cb0(void)`
|
|
|
|
```c
|
|
|
|
void __thiscall
|
|
FUN_10089cb0(int param_1,short *param_2,undefined4 *param_3,undefined4 *param_4,undefined1 *param_5,
|
|
undefined4 param_6,undefined4 param_7,undefined4 *param_8,char param_9)
|
|
|
|
{
|
|
short sVar1;
|
|
short *psVar2;
|
|
wchar_t *pwVar3;
|
|
short ****ppppsVar4;
|
|
wchar_t *pwVar5;
|
|
int iVar6;
|
|
wchar_t **ppwVar7;
|
|
int iVar8;
|
|
short ****ppppsVar9;
|
|
short *psVar10;
|
|
undefined4 uVar11;
|
|
wchar_t *pwVar12;
|
|
wchar_t *local_bc;
|
|
undefined1 *local_b8;
|
|
undefined4 local_b4;
|
|
undefined4 *local_b0;
|
|
short *local_ac;
|
|
uint local_a8;
|
|
uint local_a4;
|
|
wchar_t local_a0;
|
|
undefined4 *local_9c;
|
|
wchar_t *local_98;
|
|
undefined4 local_94;
|
|
int local_90;
|
|
wchar_t *local_8c;
|
|
undefined1 local_85;
|
|
undefined1 local_84 [28];
|
|
undefined2 local_68;
|
|
undefined4 local_58;
|
|
undefined4 local_54;
|
|
void *local_4c [4];
|
|
short **local_3c;
|
|
uint local_38;
|
|
short ***local_30 [4];
|
|
short **local_20;
|
|
short **local_1c;
|
|
uint local_14;
|
|
void *local_10;
|
|
undefined1 *puStack_c;
|
|
undefined4 local_8;
|
|
|
|
local_8 = 0xffffffff;
|
|
puStack_c = &LAB_10166bc7;
|
|
local_10 = ExceptionList;
|
|
local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
|
|
ExceptionList = &local_10;
|
|
local_9c = param_3;
|
|
local_b4 = param_6;
|
|
local_b8 = param_5;
|
|
local_30[0] = (short ***)((uint)local_30[0] & 0xffff0000);
|
|
local_94 = param_7;
|
|
local_ac = param_2;
|
|
local_b0 = param_8;
|
|
local_85 = 0;
|
|
local_1c = (short **)0x7;
|
|
local_20 = (short **)0x0;
|
|
psVar2 = param_2;
|
|
do {
|
|
sVar1 = *psVar2;
|
|
psVar2 = psVar2 + 1;
|
|
} while (sVar1 != 0);
|
|
FUN_100363d0(param_2,(int)psVar2 - (int)(param_2 + 1) >> 1);
|
|
local_54 = 7;
|
|
local_58 = 0;
|
|
local_68 = 0;
|
|
local_8._0_1_ = 1;
|
|
local_8._1_3_ = 0;
|
|
if (*(char *)(param_1 + 0x41) == '\0') {
|
|
local_90 = param_1 + 0x44;
|
|
LAB_10089db7:
|
|
ppppsVar9 = (short ****)local_30[0];
|
|
if (local_1c < (short ***)0x8) {
|
|
ppppsVar9 = local_30;
|
|
}
|
|
pwVar3 = operator_new(0x20);
|
|
local_8c = pwVar3;
|
|
if (pwVar3 == (wchar_t *)0x0) {
|
|
pwVar3 = (wchar_t *)0x0;
|
|
}
|
|
else {
|
|
pwVar3[10] = L'\a';
|
|
pwVar3[0xb] = L'\0';
|
|
pwVar3[8] = L'\0';
|
|
pwVar3[9] = L'\0';
|
|
*pwVar3 = L'\0';
|
|
pwVar3[0xe] = L'\x01';
|
|
pwVar3[0xf] = L'\0';
|
|
}
|
|
local_8._0_1_ = 1;
|
|
local_98 = pwVar3;
|
|
ppppsVar4 = ppppsVar9;
|
|
do {
|
|
sVar1 = *(short *)ppppsVar4;
|
|
ppppsVar4 = (short ****)((int)ppppsVar4 + 2);
|
|
} while (sVar1 != 0);
|
|
FUN_100363d0(ppppsVar9,(int)ppppsVar4 - (int)((int)ppppsVar9 + 2) >> 1);
|
|
iVar8 = local_90;
|
|
local_8 = CONCAT31(local_8._1_3_,4);
|
|
local_8c = (wchar_t *)FUN_10026930(&local_98);
|
|
if (local_8c == *(wchar_t **)(iVar8 + 4)) {
|
|
LAB_10089e7c:
|
|
local_bc = *(wchar_t **)(iVar8 + 4);
|
|
ppwVar7 = &local_bc;
|
|
}
|
|
else {
|
|
pwVar5 = *(wchar_t **)(local_8c + 6);
|
|
if (7 < *(uint *)(pwVar5 + 10)) {
|
|
pwVar5 = *(wchar_t **)pwVar5;
|
|
}
|
|
pwVar12 = pwVar3;
|
|
if (7 < *(uint *)(pwVar3 + 10)) {
|
|
pwVar12 = *(wchar_t **)pwVar3;
|
|
}
|
|
iVar6 = _wcsicmp(pwVar12,pwVar5);
|
|
if (iVar6 < 0) goto LAB_10089e7c;
|
|
ppwVar7 = &local_8c;
|
|
}
|
|
pwVar5 = *ppwVar7;
|
|
local_8._0_1_ = 1;
|
|
if (pwVar3 != (wchar_t *)0x0) {
|
|
pwVar12 = pwVar3 + 0xe;
|
|
*(int *)pwVar12 = *(int *)pwVar12 + -1;
|
|
if (*(int *)pwVar12 == 0) {
|
|
local_8._0_1_ = 1;
|
|
local_8c = pwVar3;
|
|
if (7 < *(uint *)(pwVar3 + 10)) {
|
|
operator_delete(*(void **)pwVar3);
|
|
}
|
|
pwVar3[10] = L'\a';
|
|
pwVar3[0xb] = L'\0';
|
|
pwVar3[8] = L'\0';
|
|
pwVar3[9] = L'\0';
|
|
*pwVar3 = L'\0';
|
|
operator_delete(pwVar3);
|
|
}
|
|
local_98 = (wchar_t *)0x0;
|
|
}
|
|
if (pwVar5 == *(wchar_t **)(param_1 + 0x48)) {
|
|
local_8c = (wchar_t *)0x2e;
|
|
iVar8 = FUN_10011180(&local_8c,0xffffffff,1);
|
|
if (iVar8 == -1) goto LAB_1008a0f4;
|
|
ppppsVar9 = (short ****)FUN_10043140(local_4c,0,iVar8);
|
|
local_8._0_1_ = 8;
|
|
if (local_30 != ppppsVar9) {
|
|
if ((short ***)0x7 < local_1c) {
|
|
operator_delete(local_30[0]);
|
|
}
|
|
local_1c = (short **)0x7;
|
|
local_20 = (short **)0x0;
|
|
local_30[0] = (short ***)((uint)local_30[0] & 0xffff0000);
|
|
if (ppppsVar9[5] < (short ***)0x8) {
|
|
memmove(local_30,ppppsVar9,((int)ppppsVar9[4] + 1) * 2);
|
|
}
|
|
else {
|
|
local_30[0] = *ppppsVar9;
|
|
*ppppsVar9 = (short ***)0x0;
|
|
}
|
|
local_20 = (short **)ppppsVar9[4];
|
|
local_1c = (short **)ppppsVar9[5];
|
|
ppppsVar9[5] = (short ***)0x7;
|
|
ppppsVar9[4] = (short ***)0x0;
|
|
*(undefined2 *)ppppsVar9 = 0;
|
|
}
|
|
local_8._0_1_ = 1;
|
|
if (7 < local_38) {
|
|
operator_delete(local_4c[0]);
|
|
}
|
|
local_38 = 7;
|
|
local_3c = (short **)0x0;
|
|
local_4c[0] = (void *)((uint)local_4c[0] & 0xffff0000);
|
|
goto LAB_10089db7;
|
|
}
|
|
local_a8 = *(uint *)(pwVar5 + 10);
|
|
local_a4 = *(uint *)(pwVar5 + 0xc);
|
|
local_a0 = pwVar5[0xe];
|
|
if (((((char)local_a8 == '\0') || (local_a8 >> 0x10 == 0)) || ((short)local_a4 == 0)) ||
|
|
(local_a4 >> 0x10 == 0)) {
|
|
if (param_9 != '\0') {
|
|
FUN_10068510(&local_94,pwVar5);
|
|
}
|
|
local_85 = 0;
|
|
}
|
|
else {
|
|
FUN_10049320(local_ac);
|
|
local_8._0_1_ = 6;
|
|
psVar2 = *(short **)(pwVar5 + 8);
|
|
psVar10 = psVar2;
|
|
do {
|
|
sVar1 = *psVar10;
|
|
psVar10 = psVar10 + 1;
|
|
} while (sVar1 != 0);
|
|
FUN_100363d0(psVar2,(int)psVar10 - (int)(psVar2 + 1) >> 1);
|
|
*local_9c = *(undefined4 *)(pwVar5 + 10);
|
|
local_9c[1] = *(undefined4 *)(pwVar5 + 0xc);
|
|
*(wchar_t *)(local_9c + 2) = pwVar5[0xe];
|
|
*param_4 = *(undefined4 *)(pwVar5 + 0xf);
|
|
*local_b8 = (char)pwVar5[0x11];
|
|
*local_b0 = *(undefined4 *)(pwVar5 + 0x14);
|
|
local_b0[1] = *(undefined4 *)(pwVar5 + 0x16);
|
|
if (local_20 != local_3c) {
|
|
uVar11 = FUN_10043140(local_84,(int)local_20 + 1,0xffffffff);
|
|
local_8._0_1_ = 7;
|
|
FUN_10049600(uVar11);
|
|
local_8._0_1_ = 6;
|
|
FUN_10024360();
|
|
}
|
|
local_85 = 1;
|
|
local_8 = CONCAT31(local_8._1_3_,1);
|
|
if (7 < local_38) {
|
|
operator_delete(local_4c[0]);
|
|
}
|
|
local_38 = 7;
|
|
local_3c = (short **)0x0;
|
|
local_4c[0] = (void *)((uint)local_4c[0] & 0xffff0000);
|
|
}
|
|
LAB_1008a0f4:
|
|
local_54 = 7;
|
|
local_58 = 0;
|
|
local_68 = 0;
|
|
local_8 = 0xffffffff;
|
|
if ((short ***)0x7 < local_1c) {
|
|
operator_delete(local_30[0]);
|
|
}
|
|
}
|
|
else {
|
|
local_54 = 7;
|
|
local_58 = 0;
|
|
local_68 = 0;
|
|
local_8 = 0xffffffff;
|
|
if ((short ***)0x7 < local_1c) {
|
|
operator_delete(local_30[0]);
|
|
}
|
|
}
|
|
local_30[0] = (short ***)((uint)local_30[0] & 0xffff0000);
|
|
local_20 = (short **)0x0;
|
|
local_1c = (short **)0x7;
|
|
ExceptionList = local_10;
|
|
__security_check_cookie(local_14 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1008af90 at 1008af90
|
|
|
|
Signature: `undefined FUN_1008af90(void)`
|
|
|
|
```c
|
|
|
|
undefined4
|
|
FUN_1008af90(FILETIME *param_1,FILETIME *param_2,short *param_3,uint *param_4,uint *param_5)
|
|
|
|
{
|
|
short sVar1;
|
|
LONG LVar2;
|
|
FILETIME local_c;
|
|
|
|
if ((*param_3 == 0) && (*(int *)(param_3 + 2) == 4)) {
|
|
sVar1 = param_3[6];
|
|
if ((sVar1 == 3) || ((sVar1 == 4 || (sVar1 == 8)))) {
|
|
local_c.dwLowDateTime = 0;
|
|
local_c.dwHighDateTime = 0;
|
|
LVar2 = CompareFileTime(param_1,&local_c);
|
|
if (LVar2 != 1) {
|
|
return 1;
|
|
}
|
|
if ((int)param_4[1] < (int)param_1->dwHighDateTime) {
|
|
return 1;
|
|
}
|
|
if (((int)param_4[1] <= (int)param_1->dwHighDateTime) && (*param_4 < param_1->dwLowDateTime))
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
if (sVar1 != 6) {
|
|
return 1;
|
|
}
|
|
local_c.dwLowDateTime = 0;
|
|
local_c.dwHighDateTime = 0;
|
|
LVar2 = CompareFileTime(param_2,&local_c);
|
|
if (LVar2 == 1) {
|
|
if ((int)param_2->dwHighDateTime < (int)param_5[1]) {
|
|
return 0;
|
|
}
|
|
if (((int)param_2->dwHighDateTime <= (int)param_5[1]) && (param_2->dwLowDateTime <= *param_5))
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
if (((int)param_1->dwHighDateTime <= (int)param_4[1]) &&
|
|
(((int)param_1->dwHighDateTime < (int)param_4[1] || (param_1->dwLowDateTime <= *param_4)))) {
|
|
return 0;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1008c670 at 1008c670
|
|
|
|
Signature: `undefined FUN_1008c670(void)`
|
|
|
|
```c
|
|
|
|
void FUN_1008c670(undefined4 *param_1,void **param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
HRESULT HVar2;
|
|
void **ppvVar3;
|
|
undefined1 local_58 [8];
|
|
BSTR local_50;
|
|
IID local_4c;
|
|
void *local_3c [4];
|
|
undefined4 local_2c;
|
|
undefined4 local_28;
|
|
undefined2 local_24;
|
|
undefined4 local_20;
|
|
undefined4 local_1c;
|
|
undefined2 local_18;
|
|
uint local_14;
|
|
void *local_10;
|
|
undefined1 *puStack_c;
|
|
undefined4 local_8;
|
|
|
|
local_8 = 0xffffffff;
|
|
puStack_c = &LAB_10167188;
|
|
local_10 = ExceptionList;
|
|
local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
|
|
ExceptionList = &local_10;
|
|
local_4c.Data2 = 10;
|
|
local_4c.Data3 = 0;
|
|
local_1c = 10;
|
|
local_4c.Data1._0_1_ = 'd';
|
|
local_4c.Data1._1_1_ = '\0';
|
|
local_4c.Data1._2_1_ = 0xa5;
|
|
local_4c.Data1._3_1_ = '\0';
|
|
local_20 = 0xa50064;
|
|
local_18 = 0;
|
|
FUN_10005170(local_14);
|
|
local_8 = 0;
|
|
ppvVar3 = param_2;
|
|
iVar1 = (**(code **)((int)*param_2 + 0x20))
|
|
(param_2,0,&local_20,local_58._4_4_,local_4c.Data4 + 4,local_3c);
|
|
iVar1 = FUN_10048e60(iVar1 == 0,iVar1,0x14a,"CReferenceStringResolutionService.cpp");
|
|
if (((iVar1 != 0) && (local_4c.Data4._4_2_ == 0xc0)) && ((short)local_3c[0] != 0)) {
|
|
HVar2 = (*(*(IUnknownVtbl **)local_58._4_4_)[0xc].QueryInterface)
|
|
((IUnknown *)local_58._4_4_,(IID *)local_58,ppvVar3);
|
|
if (HVar2 < 0) {
|
|
_com_issue_errorex(HVar2,(IUnknown *)local_58._4_4_,(_GUID *)&DAT_1017ae18);
|
|
}
|
|
local_4c.Data1._0_1_ = local_58[0];
|
|
local_4c.Data1._1_1_ = local_58[1];
|
|
local_4c.Data1._2_1_ = 'j';
|
|
local_4c.Data1._3_1_ = '\0';
|
|
local_4c.Data2 = 10;
|
|
local_2c = CONCAT22(0x6a,local_58._0_2_);
|
|
local_4c.Data3 = 0;
|
|
local_28 = 10;
|
|
ppvVar3 = local_3c;
|
|
local_24 = 0;
|
|
iVar1 = (**(code **)((int)*param_2 + 0x20))
|
|
(param_2,0,&local_2c,local_58._4_4_,local_4c.Data4 + 4);
|
|
iVar1 = FUN_10048e60(iVar1 == 0,iVar1,0x150,"CReferenceStringResolutionService.cpp");
|
|
if (((iVar1 != 0) && (local_4c.Data4._4_2_ == 0xc0)) && ((short)local_3c[0] != 0)) {
|
|
local_4c.Data1._0_1_ = '\0';
|
|
local_4c.Data1._1_1_ = '\0';
|
|
local_4c.Data1._2_1_ = '\0';
|
|
local_4c.Data1._3_1_ = '\0';
|
|
local_4c.Data2 = 0;
|
|
local_4c.Data3 = 0;
|
|
HVar2 = (*(*(IUnknownVtbl **)local_58._4_4_)[10].QueryInterface)
|
|
((IUnknown *)local_58._4_4_,&local_4c,ppvVar3);
|
|
iVar1 = FUN_10048e60(HVar2 == 0,HVar2,0x156,"CReferenceStringResolutionService.cpp");
|
|
if (iVar1 != 0) {
|
|
*param_1 = CONCAT22(local_4c.Data1._2_2_,(undefined2)local_4c.Data1);
|
|
param_1[1] = CONCAT22(local_4c.Data3,local_4c.Data2);
|
|
local_8 = 0xffffffff;
|
|
FUN_10005220();
|
|
goto LAB_1008c82d;
|
|
}
|
|
}
|
|
}
|
|
*param_1 = 0;
|
|
param_1[1] = 0;
|
|
local_8 = 0xffffffff;
|
|
if ((IUnknown *)local_58._4_4_ != (IUnknown *)0x0) {
|
|
(*(*(IUnknownVtbl **)local_58._4_4_)->Release)((IUnknown *)local_58._4_4_);
|
|
}
|
|
SysFreeString(local_50);
|
|
LAB_1008c82d:
|
|
ExceptionList = local_10;
|
|
__security_check_cookie(local_14 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1008c850 at 1008c850
|
|
|
|
Signature: `undefined FUN_1008c850(void)`
|
|
|
|
```c
|
|
|
|
void FUN_1008c850(undefined4 *param_1,void **param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
HRESULT HVar2;
|
|
void **ppvVar3;
|
|
undefined1 local_58 [8];
|
|
BSTR local_50;
|
|
IID local_4c;
|
|
void *local_3c [4];
|
|
undefined4 local_2c;
|
|
undefined4 local_28;
|
|
undefined2 local_24;
|
|
undefined4 local_20;
|
|
undefined4 local_1c;
|
|
undefined2 local_18;
|
|
uint local_14;
|
|
void *local_10;
|
|
undefined1 *puStack_c;
|
|
undefined4 local_8;
|
|
|
|
local_8 = 0xffffffff;
|
|
puStack_c = &LAB_101671b8;
|
|
local_10 = ExceptionList;
|
|
local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
|
|
ExceptionList = &local_10;
|
|
local_4c.Data2 = 10;
|
|
local_4c.Data3 = 0;
|
|
local_1c = 10;
|
|
local_4c.Data1._0_1_ = 'd';
|
|
local_4c.Data1._1_1_ = '\0';
|
|
local_4c.Data1._2_1_ = 0xa5;
|
|
local_4c.Data1._3_1_ = '\0';
|
|
local_20 = 0xa50064;
|
|
local_18 = 0;
|
|
FUN_10005170(local_14);
|
|
local_8 = 0;
|
|
ppvVar3 = param_2;
|
|
iVar1 = (**(code **)((int)*param_2 + 0x20))
|
|
(param_2,0,&local_20,local_58._4_4_,local_4c.Data4 + 4,local_3c);
|
|
iVar1 = FUN_10048e60(iVar1 == 0,iVar1,0x16c,"CReferenceStringResolutionService.cpp");
|
|
if (((iVar1 != 0) && (local_4c.Data4._4_2_ == 0xc0)) && ((short)local_3c[0] != 0)) {
|
|
HVar2 = (*(*(IUnknownVtbl **)local_58._4_4_)[0xc].QueryInterface)
|
|
((IUnknown *)local_58._4_4_,(IID *)local_58,ppvVar3);
|
|
if (HVar2 < 0) {
|
|
_com_issue_errorex(HVar2,(IUnknown *)local_58._4_4_,(_GUID *)&DAT_1017ae18);
|
|
}
|
|
local_4c.Data1._0_1_ = local_58[0];
|
|
local_4c.Data1._1_1_ = local_58[1];
|
|
local_4c.Data1._2_1_ = 'k';
|
|
local_4c.Data1._3_1_ = '\0';
|
|
local_4c.Data2 = 10;
|
|
local_2c = CONCAT22(0x6b,local_58._0_2_);
|
|
local_4c.Data3 = 0;
|
|
local_28 = 10;
|
|
ppvVar3 = local_3c;
|
|
local_24 = 0;
|
|
iVar1 = (**(code **)((int)*param_2 + 0x20))
|
|
(param_2,0,&local_2c,local_58._4_4_,local_4c.Data4 + 4);
|
|
iVar1 = FUN_10048e60(iVar1 == 0,iVar1,0x172,"CReferenceStringResolutionService.cpp");
|
|
if (((iVar1 != 0) && (local_4c.Data4._4_2_ == 0xc0)) && ((short)local_3c[0] != 0)) {
|
|
local_4c.Data1._0_1_ = '\0';
|
|
local_4c.Data1._1_1_ = '\0';
|
|
local_4c.Data1._2_1_ = '\0';
|
|
local_4c.Data1._3_1_ = '\0';
|
|
local_4c.Data2 = 0;
|
|
local_4c.Data3 = 0;
|
|
HVar2 = (*(*(IUnknownVtbl **)local_58._4_4_)[10].QueryInterface)
|
|
((IUnknown *)local_58._4_4_,&local_4c,ppvVar3);
|
|
iVar1 = FUN_10048e60(HVar2 == 0,HVar2,0x178,"CReferenceStringResolutionService.cpp");
|
|
if (iVar1 != 0) {
|
|
*param_1 = CONCAT22(local_4c.Data1._2_2_,(undefined2)local_4c.Data1);
|
|
param_1[1] = CONCAT22(local_4c.Data3,local_4c.Data2);
|
|
local_8 = 0xffffffff;
|
|
FUN_10005220();
|
|
goto LAB_1008ca0d;
|
|
}
|
|
}
|
|
}
|
|
*param_1 = 0;
|
|
param_1[1] = 0;
|
|
local_8 = 0xffffffff;
|
|
if ((IUnknown *)local_58._4_4_ != (IUnknown *)0x0) {
|
|
(*(*(IUnknownVtbl **)local_58._4_4_)->Release)((IUnknown *)local_58._4_4_);
|
|
}
|
|
SysFreeString(local_50);
|
|
LAB_1008ca0d:
|
|
ExceptionList = local_10;
|
|
__security_check_cookie(local_14 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1008fb20 at 1008fb20
|
|
|
|
Signature: `undefined FUN_1008fb20(void)`
|
|
|
|
```c
|
|
|
|
void __fastcall FUN_1008fb20(undefined4 *param_1)
|
|
|
|
{
|
|
char cVar1;
|
|
UINT len;
|
|
BSTR pOVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
undefined4 uVar5;
|
|
undefined4 uVar6;
|
|
|
|
if ((BSTR)*param_1 == (BSTR)0x0) {
|
|
return;
|
|
}
|
|
len = SysStringByteLen((BSTR)*param_1);
|
|
pOVar2 = SysAllocStringByteLen((LPCSTR)*param_1,len);
|
|
if (pOVar2 != (BSTR)0x0) {
|
|
return;
|
|
}
|
|
iVar3 = FUN_10022ff0();
|
|
if (*(int *)(iVar3 + 0xac) == 0) {
|
|
iVar4 = FUN_1002f080();
|
|
if (iVar4 == 0) {
|
|
uVar5 = 0;
|
|
goto LAB_1008fb68;
|
|
}
|
|
}
|
|
uVar5 = *(undefined4 *)(iVar3 + 0xac);
|
|
LAB_1008fb68:
|
|
uVar6 = 0;
|
|
FUN_10022ff0(uVar5,0);
|
|
cVar1 = FUN_10022ba0(uVar5,uVar6);
|
|
if (cVar1 != '\0') {
|
|
uVar5 = FUN_10022ff0(L"Fail to allocate %ld bytes in AAComBSTR::Copy()",len);
|
|
FUN_10022cb0(uVar5);
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1005bf30(0x8007000e,0,
|
|
"E:\\BldSrc\\6\\s\\sharedcomponents\\internal\\MagellanPublic\\Includes\\ClassUtilities\\AAComBSTR.h"
|
|
,0x8b);
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_100934d0 at 100934d0
|
|
|
|
Signature: `undefined FUN_100934d0(void)`
|
|
|
|
```c
|
|
|
|
int __thiscall FUN_100934d0(undefined4 *param_1,int *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
BSTR pOVar3;
|
|
undefined4 local_18;
|
|
undefined4 local_14;
|
|
int local_10;
|
|
uint local_c;
|
|
UINT local_8;
|
|
|
|
piVar1 = param_2;
|
|
if (param_2 == (int *)0x0) {
|
|
return -0x7ff8ffa9;
|
|
}
|
|
SysFreeString((BSTR)*param_1);
|
|
*param_1 = 0;
|
|
local_10 = (**(code **)(*piVar1 + 0x14))(piVar1,0,0,1,&local_18);
|
|
local_8 = 0;
|
|
local_c = 0;
|
|
iVar2 = (**(code **)(*piVar1 + 0xc))(piVar1,&local_c,4,&local_8);
|
|
if (iVar2 < 0) goto LAB_100935e9;
|
|
if (local_8 != 4) {
|
|
iVar2 = -0x7fffbffb;
|
|
goto LAB_100935e9;
|
|
}
|
|
if (local_c != 0) {
|
|
if (local_c < 2) {
|
|
iVar2 = -0x7fffbffb;
|
|
goto LAB_100935e9;
|
|
}
|
|
if (0x100000 < local_c) {
|
|
iVar2 = -0x7ff8fffb;
|
|
goto LAB_100935e9;
|
|
}
|
|
local_c = local_c - 2;
|
|
pOVar3 = SysAllocStringByteLen((LPCSTR)0x0,local_c);
|
|
*param_1 = pOVar3;
|
|
if (pOVar3 == (BSTR)0x0) {
|
|
iVar2 = -0x7ff8fff2;
|
|
goto LAB_100935e9;
|
|
}
|
|
iVar2 = (**(code **)(*piVar1 + 0xc))(piVar1,pOVar3,local_c,&local_8);
|
|
if (-1 < iVar2) {
|
|
if (local_8 == local_c) {
|
|
iVar2 = (**(code **)(*piVar1 + 0xc))(piVar1,¶m_2,2,&local_8);
|
|
if (iVar2 < 0) goto LAB_100935d6;
|
|
if ((local_8 == 2) && ((short)param_2 == 0)) {
|
|
return iVar2;
|
|
}
|
|
}
|
|
iVar2 = -0x7fffbffb;
|
|
}
|
|
LAB_100935d6:
|
|
SysFreeString((BSTR)*param_1);
|
|
*param_1 = 0;
|
|
}
|
|
if (-1 < iVar2) {
|
|
return iVar2;
|
|
}
|
|
LAB_100935e9:
|
|
if (-1 < local_10) {
|
|
(**(code **)(*piVar1 + 0x14))(piVar1,local_18,local_14,0,0);
|
|
}
|
|
return iVar2;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_10093680 at 10093680
|
|
|
|
Signature: `undefined FUN_10093680(void)`
|
|
|
|
```c
|
|
|
|
bool FUN_10093680(int *param_1,undefined4 param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 local_8;
|
|
|
|
local_8 = 0;
|
|
iVar1 = (**(code **)(*param_1 + 0x10))(param_1,param_2,0x10,&local_8);
|
|
return iVar1 == 0;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_10093780 at 10093780
|
|
|
|
Signature: `undefined FUN_10093780(void)`
|
|
|
|
```c
|
|
|
|
int __thiscall FUN_10093780(undefined4 *param_1,int *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
UINT UVar3;
|
|
undefined4 *local_8;
|
|
|
|
piVar1 = param_2;
|
|
if (param_2 == (int *)0x0) {
|
|
return -0x7ff8ffa9;
|
|
}
|
|
iVar2 = 4;
|
|
local_8 = param_1;
|
|
if ((BSTR)*param_1 != (BSTR)0x0) {
|
|
UVar3 = SysStringByteLen((BSTR)*param_1);
|
|
iVar2 = UVar3 + 6;
|
|
}
|
|
param_2 = (int *)(iVar2 + -4);
|
|
iVar2 = (**(code **)(*piVar1 + 0x10))(piVar1,¶m_2,4,&local_8);
|
|
if (-1 < iVar2) {
|
|
if (param_2 == (int *)0x0) {
|
|
return 0;
|
|
}
|
|
iVar2 = (**(code **)(*piVar1 + 0x10))(piVar1,*param_1,param_2,&local_8);
|
|
}
|
|
return iVar2;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_10093800 at 10093800
|
|
|
|
Signature: `undefined FUN_10093800(void)`
|
|
|
|
```c
|
|
|
|
bool FUN_10093800(undefined4 param_1,OLECHAR *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
BSTR bstrString;
|
|
void *local_10;
|
|
undefined1 *puStack_c;
|
|
undefined4 local_8;
|
|
|
|
local_8 = 0xffffffff;
|
|
puStack_c = &LAB_10167cb8;
|
|
local_10 = ExceptionList;
|
|
ExceptionList = &local_10;
|
|
if (param_2 == (OLECHAR *)0x0) {
|
|
bstrString = (BSTR)0x0;
|
|
}
|
|
else {
|
|
bstrString = SysAllocString(param_2);
|
|
if (bstrString == (BSTR)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_100013e0(0x8007000e);
|
|
}
|
|
}
|
|
local_8 = 0;
|
|
iVar1 = FUN_10093780(param_1);
|
|
local_8 = 0xffffffff;
|
|
SysFreeString(bstrString);
|
|
ExceptionList = local_10;
|
|
return iVar1 == 0;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1005f700 at 1005f700
|
|
|
|
Signature: `undefined FUN_1005f700(void)`
|
|
|
|
```c
|
|
|
|
void __thiscall FUN_1005f700(undefined4 *param_1,undefined4 param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = (**(code **)(*(int *)*param_1 + 0x44))((int *)*param_1,param_2);
|
|
if (iVar1 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1005bf30(iVar1,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x75);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1005f730 at 1005f730
|
|
|
|
Signature: `undefined FUN_1005f730(void)`
|
|
|
|
```c
|
|
|
|
undefined1 * __thiscall FUN_1005f730(int *param_1,int *param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
undefined1 *puVar2;
|
|
uint uVar3;
|
|
int iVar4;
|
|
void *local_10;
|
|
undefined1 *puStack_c;
|
|
undefined4 local_8;
|
|
|
|
puVar2 = (undefined1 *)param_2;
|
|
puStack_c = &LAB_1015db38;
|
|
local_10 = ExceptionList;
|
|
uVar3 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
|
|
ExceptionList = &local_10;
|
|
*(undefined1 *)param_2 = 0;
|
|
*(undefined4 *)((int)param_2 + 2) = 0;
|
|
*(undefined4 *)((int)param_2 + 6) = 0;
|
|
*(undefined4 *)((int)param_2 + 10) = 0;
|
|
*(undefined4 *)((int)param_2 + 0xe) = 0;
|
|
*(undefined2 *)((int)param_2 + 0x12) = 0;
|
|
puVar1 = (undefined4 *)*param_1;
|
|
param_2 = (int *)0x0;
|
|
local_8 = 1;
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
(**(code **)*puVar1)(puVar1,&DAT_1017b690,¶m_2,uVar3);
|
|
}
|
|
local_8 = 2;
|
|
iVar4 = (**(code **)(*param_2 + 0xc))(param_2,puVar2);
|
|
if (iVar4 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1005bf30(iVar4,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x7f);
|
|
}
|
|
local_8 = 0xffffffff;
|
|
if (param_2 != (int *)0x0) {
|
|
(**(code **)(*param_2 + 8))(param_2);
|
|
}
|
|
ExceptionList = local_10;
|
|
return puVar2;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1008f8b0 at 1008f8b0
|
|
|
|
Signature: `undefined FUN_1008f8b0(void)`
|
|
|
|
```c
|
|
|
|
void __thiscall
|
|
FUN_1008f8b0(void *param_1,undefined4 *param_2,undefined4 param_3,uint param_4,undefined4 param_5,
|
|
undefined4 param_6,undefined4 param_7,uint param_8)
|
|
|
|
{
|
|
undefined2 uVar1;
|
|
uint uVar2;
|
|
char cVar3;
|
|
ushort uVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
undefined4 uVar8;
|
|
undefined4 uVar9;
|
|
basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar10;
|
|
bool bVar11;
|
|
wchar_t *pwVar12;
|
|
wchar_t *pwVar13;
|
|
wchar_t *pwVar14;
|
|
undefined *puVar15;
|
|
_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;
|
|
ushort local_fc8;
|
|
short sStack_fc6;
|
|
undefined2 uStack_fc4;
|
|
undefined4 local_fc0;
|
|
undefined4 local_fbc;
|
|
|
|
uVar5 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
|
|
local_fbc = param_4;
|
|
uVar2 = local_fbc;
|
|
local_fc8 = (ushort)param_8;
|
|
sStack_fc6 = (short)(param_8 >> 0x10);
|
|
uVar4 = (ushort)((uint)param_3 >> 0x10);
|
|
if ((((uVar4 != 0) && (local_fbc._0_2_ = (short)param_4, (short)local_fbc != 0)) &&
|
|
(uVar4 != *(ushort *)((int)param_1 + 0x2ae))) &&
|
|
((local_fc8 == *(ushort *)((int)param_1 + 0x2ae) &&
|
|
(sStack_fc6 == *(short *)((int)param_1 + 0x2ac))))) {
|
|
uVar6 = FUN_1008f0f0();
|
|
uVar7 = FUN_1008f120();
|
|
if ((uVar4 == uVar7) && (((param_4 & 0xffff) == uVar6 || (uVar6 == 0xffffffff)))) {
|
|
uVar1 = *(undefined2 *)((int)param_1 + 0x2ae);
|
|
local_fc0 = CONCAT22(uVar1,(short)param_3);
|
|
bVar11 = (short)local_fbc != 1;
|
|
local_fbc = uVar2;
|
|
if (bVar11) {
|
|
local_fbc = CONCAT22((short)(param_4 >> 0x10),*(undefined2 *)((int)param_1 + 0x2ac));
|
|
}
|
|
cVar3 = FUN_100408d0();
|
|
param_3 = local_fc0;
|
|
uVar2 = local_fbc;
|
|
if (cVar3 != '\0') {
|
|
uVar8 = FUN_10022ff0(L"AccessManager::FixUpMxHandle - object<platform %d engine %d> partner<platform %d engine %d> redirected to <platform %d engine %d> "
|
|
,uVar4,param_4 & 0xffff,param_8 & 0xffff,sStack_fc6,uVar1,
|
|
local_fbc & 0xffff);
|
|
FUN_10022d50(uVar8);
|
|
}
|
|
}
|
|
}
|
|
local_fbc = uVar2;
|
|
cVar3 = FUN_100408d0();
|
|
if (cVar3 != '\0') {
|
|
uVar9 = FUN_100041f0(param_3,local_fbc,param_5,param_6,param_7);
|
|
uVar8 = CONCAT22(uStack_fc4,sStack_fc6);
|
|
puVar15 = &DAT_1017ef50;
|
|
pwVar14 = L" engine ";
|
|
pwVar13 = L" partner<platform ";
|
|
pwVar12 = L"AccessManager::FixUpMxHandle - handle ";
|
|
p_Var16 = endl_exref;
|
|
pbVar10 = 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),param_1);
|
|
uVar8 = FUN_1001a0e0(pbVar10,pwVar12,uVar9,pwVar13,param_8,pwVar14,uVar8,puVar15);
|
|
uVar8 = FUN_1001a0e0(uVar8);
|
|
FUN_1001a0e0(uVar8);
|
|
uVar8 = FUN_10022870();
|
|
FUN_1001a0e0(uVar8);
|
|
uVar8 = FUN_10022870();
|
|
pbVar10 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(uVar8);
|
|
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar10,p_Var16);
|
|
}
|
|
*param_2 = param_3;
|
|
param_2[1] = local_fbc;
|
|
param_2[2] = param_5;
|
|
param_2[3] = param_6;
|
|
param_2[4] = param_7;
|
|
__security_check_cookie(uVar5 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_10141bb0 at 10141bb0
|
|
|
|
Signature: `undefined FUN_10141bb0(void)`
|
|
|
|
```c
|
|
|
|
/* 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)`
|
|
|
|
```c
|
|
|
|
/* 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;
|
|
}
|
|
|
|
|
|
```
|
|
|