# LmxProxy.dll selected decompile ## FUN_1000ef29 at 1000ef29 Signature: `void * __thiscall FUN_1000ef29(void * this, undefined4 * param_1, CComBSTR * param_2)` ```c /* WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3 */ /* WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3 */ void * __thiscall FUN_1000ef29(void *this,undefined4 *param_1,CComBSTR *param_2) { *(undefined4 *)this = *param_1; FUN_1000e20b((void *)((int)this + 4),param_2); return this; } ``` ## FUN_1000f5ef at 1000f5ef Signature: `undefined __thiscall FUN_1000f5ef(void * this, undefined4 * param_1, int * param_2)` ```c void __thiscall FUN_1000f5ef(void *this,undefined4 *param_1,int *param_2) { int *piVar1; int *piVar2; int **ppiVar3; int *local_8; piVar1 = param_2; local_8 = this; piVar2 = FUN_1000d755(this,param_2); if ((piVar2 == *(int **)((int)this + 4)) || (*piVar1 < piVar2[3])) { local_8 = *(int **)((int)this + 4); ppiVar3 = &local_8; } else { ppiVar3 = ¶m_2; } *param_1 = *ppiVar3; return; } ``` ## FUN_1000d781 at 1000d781 Signature: `undefined4 * __thiscall FUN_1000d781(void * this, int * param_1)` ```c undefined4 * __thiscall FUN_1000d781(void *this,int *param_1) { undefined4 *puVar1; undefined4 *puVar2; undefined4 *puVar3; puVar2 = *(undefined4 **)((int)this + 4); if (*(char *)((int)puVar2[1] + 0x65) == '\0') { puVar1 = puVar2; puVar3 = (undefined4 *)puVar2[1]; do { puVar2 = puVar3; if ((int)puVar2[3] < *param_1) { puVar3 = (undefined4 *)puVar2[2]; puVar2 = puVar1; } else { puVar3 = (undefined4 *)*puVar2; } puVar1 = puVar2; } while (*(char *)((int)puVar3 + 0x65) == '\0'); } return puVar2; } ``` ## FUN_1000e607 at 1000e607 Signature: `undefined4 * __fastcall FUN_1000e607(undefined4 * param_1)` ```c undefined4 * __fastcall FUN_1000e607(undefined4 *param_1) { param_1[2] = 0; param_1[3] = 0; param_1[4] = 0; param_1[5] = 0; *param_1 = ATL::CComObject::vftable; param_1[1] = ATL::CComObject::vftable; (**(code **)(*DAT_100293dc + 4))(); return param_1; } ``` ## FUN_1000f816 at 1000f816 Signature: `undefined4 __cdecl FUN_1000f816(undefined4 * param_1, int param_2, LPCSTR param_3)` ```c /* WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3 */ /* WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3 */ undefined4 __cdecl FUN_1000f816(undefined4 *param_1,int param_2,LPCSTR param_3) { basic_ostream_> bVar1; basic_ostream_> *pbVar2; undefined3 extraout_var; int *piVar3; DWORD DVar4; undefined1 uVar5; wchar_t *pwVar6; int iVar7; wchar_t *pwVar8; wchar_t *pwVar9; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var10; pbVar2 = (basic_ostream_> *)&LAB_10019887; uVar5 = 0; if (param_1 == (undefined4 *)0x0) { bVar1 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 4)); pbVar2 = (basic_ostream_> *) CONCAT31(extraout_var,bVar1); if (bVar1 != (basic_ostream_>)0x0) { piVar3 = FUN_1000da1d(¶m_1,param_3); if ((undefined4 *)*piVar3 == (undefined4 *)0x0) { pwVar6 = (wchar_t *)0x0; } else { pwVar6 = *(wchar_t **)*piVar3; } p_Var10 = endl_exref; DVar4 = GetLastError(); pwVar9 = L" LAST ERROR "; pwVar8 = L" FILE "; iVar7 = param_2; pbVar2 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 4),L"INVARIANT FAILED LINE "); pbVar2 = std::basic_ostream_>::operator<< (pbVar2,iVar7); piVar3 = (int *)FUN_10002dbf((int *)pbVar2,pwVar8); piVar3 = (int *)FUN_10002dbf(piVar3,pwVar6); pbVar2 = (basic_ostream_> *) FUN_10002dbf(piVar3,pwVar9); pbVar2 = std::basic_ostream_>::operator<< (pbVar2,DVar4); pbVar2 = std::basic_ostream_>::operator<< (pbVar2,p_Var10); if (param_1 != (undefined4 *)0x0) { pbVar2 = (basic_ostream_> *)FUN_100038c3(param_1); } } } else { uVar5 = 1; } return CONCAT31((int3)((uint)pbVar2 >> 8),uVar5); } ``` ## FUN_1000f796 at 1000f796 Signature: `undefined __cdecl FUN_1000f796(undefined4 param_1, void * param_2, undefined4 * param_3)` ```c void __cdecl FUN_1000f796(undefined4 param_1,void *param_2,undefined4 *param_3) { FUN_1000f4c5(param_2,param_3); return; } ``` ## FUN_1000e196 at 1000e196 Signature: `undefined __fastcall FUN_1000e196(int param_1)` ```c void __fastcall FUN_1000e196(int param_1) { undefined4 *puVar1; puVar1 = FUN_1000d8df((char *)0x1); *puVar1 = *(undefined4 *)(param_1 + 4); puVar1[1] = *(undefined4 *)(param_1 + 4); puVar1[2] = *(undefined4 *)(param_1 + 4); *(undefined2 *)(puVar1 + 0xb) = 0; return; } ``` ## FUN_1000fe75 at 1000fe75 Signature: `undefined __thiscall FUN_1000fe75(void * this, undefined4 * param_1, char param_2, undefined4 * param_3, int * param_4)` ```c void __thiscall FUN_1000fe75(void *this,undefined4 *param_1,char param_2,undefined4 *param_3,int *param_4) { int *piVar1; int *piVar2; int iVar3; int *piVar4; if (0x7fffffd < *(uint *)((int)this + 8)) { FUN_1000eef5(param_4 + 3,0); operator_delete(param_4); /* WARNING: Subroutine does not return */ std::_Xlength_error("map/set too long"); } *(uint *)((int)this + 8) = *(uint *)((int)this + 8) + 1; param_4[1] = (int)param_3; if (param_3 == *(undefined4 **)((int)this + 4)) { (*(undefined4 **)((int)this + 4))[1] = param_4; **(undefined4 **)((int)this + 4) = param_4; *(int **)(*(int *)((int)this + 4) + 8) = param_4; } else if (param_2 == '\0') { param_3[2] = param_4; if (param_3 == *(undefined4 **)(*(int *)((int)this + 4) + 8)) { *(int **)(*(int *)((int)this + 4) + 8) = param_4; } } else { *param_3 = param_4; if (param_3 == (undefined4 *)**(int **)((int)this + 4)) { **(int **)((int)this + 4) = (int)param_4; } } iVar3 = param_4[1]; piVar4 = param_4; do { if (*(char *)(iVar3 + 0x2c) != '\0') { *(undefined1 *)(*(int *)(*(int *)((int)this + 4) + 4) + 0x2c) = 1; *param_1 = param_4; return; } piVar1 = (int *)piVar4[1]; piVar2 = (int *)piVar1[1]; if (piVar1 == (int *)*piVar2) { iVar3 = piVar2[2]; if (*(char *)(iVar3 + 0x2c) == '\0') { LAB_1000ff40: *(undefined1 *)(piVar1 + 0xb) = 1; *(undefined1 *)(iVar3 + 0x2c) = 1; *(undefined1 *)(*(int *)(piVar4[1] + 4) + 0x2c) = 0; piVar4 = *(int **)(piVar4[1] + 4); } else { if (piVar4 == (int *)piVar1[2]) { FUN_1000dea8(this,(int)piVar1); piVar4 = piVar1; } *(undefined1 *)(piVar4[1] + 0x2c) = 1; *(undefined1 *)(*(int *)(piVar4[1] + 4) + 0x2c) = 0; FUN_1000d6b4(this,*(int **)(piVar4[1] + 4)); } } else { iVar3 = *piVar2; if (*(char *)(iVar3 + 0x2c) == '\0') goto LAB_1000ff40; if (piVar4 == (int *)*piVar1) { FUN_1000d6b4(this,piVar1); piVar4 = piVar1; } *(undefined1 *)(piVar4[1] + 0x2c) = 1; *(undefined1 *)(*(int *)(piVar4[1] + 4) + 0x2c) = 0; FUN_1000dea8(this,*(int *)(piVar4[1] + 4)); } iVar3 = piVar4[1]; } while( true ); } ```