Hello everyone!
I have put togehter chains of the classes and functions from Avionics70.DLL. It have taken me a while to dig through the DLL file. WHew!
============================================================================
------------------------------- FUN_10013f90 -------------------------------
============================================================================
undefined4 * __thiscall FUN_10013f90(void *this,void *param_1,wchar_t *param_2)
{
FUN_10013940(this,param_1,param_2);
*(undefined ***)this = RadarTargetRangeTextClass::vftable;
return (undefined4 *)this;
}
============================================================================
------------------------------- FUN_1001d750 -------------------------------
============================================================================
undefined4 * __thiscall FUN_10013940(void *this,void *param_1,wchar_t *param_2)
{
undefined4 uVar1;
wchar_t *pwVar2;
uint uVar3;
int iVar4;
float10 fVar5;
wchar_t local_21c [260];
void *local_14;
void *local_10;
undefined *puStack_c;
undefined4 local_8;
local_8 = 0xffffffff;
puStack_c = &LAB_1003ea16;
local_10 = ExceptionList;
ExceptionList = &local_10;
local_14 = this;
FUN_100135f0(this,param_1,param_2);
local_8 = 0;
*(undefined ***)this = RadarTextClass::vftable;
FUN_100204d0(param_1,param_2,L"Text",L"",(wchar_t *)((int)this + 0x18),0x40,0);
FUN_10023470((uint *)((int)this + 0x98),param_1,param_2);
local_8 = 1;
*(undefined ***)this = RadarTargetTextClass::vftable;
*(undefined4 *)((int)this + 0x1a4) = 0;
pwVar2 = FUN_100208c0(param_1,param_2,L"TextFormat",0);
*(wchar_t **)((int)this + 0x1a4) = pwVar2;
FUN_100204d0(param_1,param_2,L"NoTargetText",L"",(wchar_t *)((int)this + 0xa4),0x40,0);
FUN_100204d0(param_1,param_2,L"DisplayUnit",L"",local_21c,0x104,0);
fVar5 = FUN_10021aa0(local_21c);
*(float *)((int)this + 0x9c) = (float)((float10)1 / fVar5);
*(undefined4 *)((int)this + 0xa0) = 0x3f800000;
uVar3 = FUN_10020590(param_1,param_2,L"ShowOnlyTens",0);
if (uVar3 == 0) {
uVar3 = FUN_10020590(param_1,param_2,L"ShowOnlyHundreds",0);
if (uVar3 == 0) {
uVar3 = FUN_10020590(param_1,param_2,L"ShowOnlyThousands",0);
if (uVar3 == 0) goto LAB_10013a9e;
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 0x400000;
uVar1 = 0x3a83126f;
}
else {
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 0x200000;
uVar1 = 0x3c23d70a;
}
}
else {
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 0x100000;
uVar1 = 0x3dcccccd;
}
*(undefined4 *)((int)this + 0xa0) = uVar1;
LAB_10013a9e:
iVar4 = FUN_1001ed70(param_1,param_2,L"ThousandsSeparator");
if (iVar4 != 0) {
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 0x800000;
FUN_100204d0(param_1,param_2,L"ThousandsSeparator",L"",(wchar_t *)((int)this + 0x124),0x40,0);
}
ExceptionList = local_10;
return (undefined4 *)this;
}
----------------------------------------------------------------------------
------------------------------- FUN_100135f0 -------------------------------
----------------------------------------------------------------------------
undefined4 * __thiscall FUN_100135f0(void *this,void *param_1,wchar_t *param_2)
{
float *pfVar1;
uint uVar2;
float local_c [2];
*(undefined ***)this = RadarElementClass::vftable;
*(undefined4 *)((int)this + 4) = 0;
pfVar1 = FUN_10021520(local_c,param_1,param_2,L"Position");
*(float *)((int)this + 8) = *pfVar1;
*(float *)((int)this + 0xc) = pfVar1[1];
*(float *)((int)this + 0x10) = *pfVar1;
*(float *)((int)this + 0x14) = pfVar1[1];
uVar2 = FUN_10020590(param_1,param_2,L"XOffsetTarget",0);
if (uVar2 == 0) {
uVar2 = FUN_10020590(param_1,param_2,L"XOffsetAzimuth",0);
if (uVar2 != 0) {
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 2;
}
}
else {
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 1;
}
uVar2 = FUN_10020590(param_1,param_2,L"YOffsetTarget",0);
if (uVar2 != 0) {
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 0x10;
return (undefined4 *)this;
}
uVar2 = FUN_10020590(param_1,param_2,L"YOffsetRange",0);
if (uVar2 != 0) {
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 0x20;
return (undefined4 *)this;
}
uVar2 = FUN_10020590(param_1,param_2,L"YOffsetElevation",0);
if (uVar2 != 0) {
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 0x40;
}
return (undefined4 *)this;
}
----------------------------------------------------------------------------
------------------------------- FUN_10021520 -------------------------------
----------------------------------------------------------------------------
float * __cdecl FUN_10021520(float *param_1,void *param_2,wchar_t *param_3,wchar_t *param_4)
{
wchar_t *pwVar1;
float10 fVar2;
wchar_t local_20c [260];
*param_1 = 0.0;
param_1[1] = 0.0;
FUN_100204d0(param_2,param_3,param_4,L"",local_20c,0x104,0);
pwVar1 = _wcschr(local_20c,L',');
if (pwVar1 != (wchar_t *)0x0) {
*pwVar1 = L'\0';
fVar2 = (float10)FUN_1002bef0(local_20c,(int *)0x0);
*param_1 = (float)fVar2;
fVar2 = (float10)FUN_1002bef0(pwVar1 + 1,(int *)0x0);
param_1[1] = (float)fVar2;
}
return param_1;
}
----------------------------------------------------------------------------
------------------------------- FUN_10020590 -------------------------------
----------------------------------------------------------------------------
uint __thiscall FUN_10020590(void *this,wchar_t *param_1,wchar_t *param_2,uint param_3)
{
bool bVar1;
int iVar2;
int iVar3;
undefined3 extraout_var;
undefined3 extraout_var_00;
wchar_t *pwVar4;
wchar_t local_20c [260];
iVar2 = FUN_10020740((void *)((int)this + 0x208),param_1);
if (iVar2 != 0) {
iVar2 = *(int *)(*(int *)((int)this + 0x208) + 8);
iVar3 = FUN_10020740((void *)(iVar2 + 4),param_2);
if (iVar3 != 0) {
iVar2 = *(int *)(*(int *)(iVar2 + 4) + 8);
goto LAB_100205d4;
}
}
iVar2 = 0;
LAB_100205d4:
if (iVar2 != 0) {
*(undefined4 *)(iVar2 + 4) = 0;
FUN_1001e680(local_20c,*(wchar_t **)(iVar2 + 8),0x104);
bVar1 = FUN_1001e560(local_20c,*(wchar_t **)((int)this + 0x238),0);
if (CONCAT31(extraout_var,bVar1) != 0) {
return 1;
}
bVar1 = FUN_1001e560(local_20c,*(wchar_t **)((int)this + 0x23c),0);
if (CONCAT31(extraout_var_00,bVar1) != 0) {
return 0;
}
*(undefined4 *)(iVar2 + 4) = 1;
param_3 = (uint)(*(int *)(iVar2 + 0xc) != 0);
}
if (*(int *)((int)this + 0x22c) != 0) {
if (param_3 == 0) {
pwVar4 = *(wchar_t **)((int)this + 0x23c);
}
else {
pwVar4 = *(wchar_t **)((int)this + 0x238);
}
FUN_1001ff80(this,param_1,param_2,pwVar4);
}
return param_3;
}
----------------------------------------------------------------------------
------------------------------- FUN_10020740 -------------------------------
----------------------------------------------------------------------------
undefined4 __thiscall FUN_10020740(void *this,wchar_t *param_1)
{
int iVar1;
bool bVar2;
int iVar3;
undefined3 extraout_var;
undefined3 extraout_var_00;
if ((0 < *(int *)((int)this + 0xc)) && (iVar3 = FUN_1001e490(param_1), iVar3 == 0)) {
/* WARNING: Load size is inaccurate */
if (*this == 0) {
*(undefined4 *)this = *(undefined4 *)((int)this + 4);
*(undefined4 *)((int)this + 0x10) = 0;
}
/* WARNING: Load size is inaccurate */
iVar1 = *this;
iVar3 = *(int *)((int)this + 0x10);
while (iVar1 != 0) {
/* WARNING: Load size is inaccurate */
if ((*(undefined4 **)(*this + 8) != (undefined4 *)0x0) &&
(bVar2 = FUN_1001e560((wchar_t *)**(undefined4 **)(*this + 8),param_1,0),
CONCAT31(extraout_var,bVar2) != 0)) {
return 1;
}
/* WARNING: Load size is inaccurate */
*(int *)((int)this + 0x10) = *(int *)((int)this + 0x10) + 1;
iVar1 = **this;
*(int *)this = iVar1;
}
*(undefined4 *)((int)this + 0x10) = 0;
*(undefined4 *)this = *(undefined4 *)((int)this + 4);
if (0 < iVar3) {
do {
/* WARNING: Load size is inaccurate */
if ((*(undefined4 **)(*this + 8) != (undefined4 *)0x0) &&
(bVar2 = FUN_1001e560((wchar_t *)**(undefined4 **)(*this + 8),param_1,0),
CONCAT31(extraout_var_00,bVar2) != 0)) {
return 1;
}
/* WARNING: Load size is inaccurate */
*(int *)((int)this + 0x10) = *(int *)((int)this + 0x10) + 1;
*(undefined4 *)this = **this;
} while (*(int *)((int)this + 0x10) < iVar3);
}
*(undefined4 *)this = 0;
*(undefined4 *)((int)this + 0x10) = 0xffffffff;
}
return 0;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e490 -------------------------------
----------------------------------------------------------------------------
undefined4 __cdecl FUN_1001e490(short *param_1)
{
if ((param_1 != (short *)0x0) && (*param_1 != 0)) {
return 0;
}
return 1;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e560 -------------------------------
----------------------------------------------------------------------------
bool __cdecl FUN_1001e560(wchar_t *param_1,wchar_t *param_2,int param_3)
{
wchar_t wVar1;
bool bVar2;
int iVar3;
bool bVar4;
if ((param_1 == (wchar_t *)0x0) || (*param_1 == L'\0')) {
bVar4 = true;
}
else {
bVar4 = false;
}
if ((param_2 == (wchar_t *)0x0) || (*param_2 == L'\0')) {
bVar2 = true;
}
else {
bVar2 = false;
}
if (bVar4) {
if (bVar2) {
return true;
}
}
else if (!bVar2) {
if (param_3 == 0) {
iVar3 = __wcsicmp(param_1,param_2);
return (bool)('\x01' - (iVar3 != 0));
}
while( true ) {
wVar1 = *param_1;
bVar4 = (ushort)wVar1 < (ushort)*param_2;
if (wVar1 != *param_2) break;
if (wVar1 == L'\0') {
return true;
}
wVar1 = param_1[1];
bVar4 = (ushort)wVar1 < (ushort)param_2[1];
if (wVar1 != param_2[1]) break;
param_1 = param_1 + 2;
param_2 = param_2 + 2;
if (wVar1 == L'\0') {
return true;
}
}
return 1 - bVar4 == (uint)(bVar4 != 0);
}
return false;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e680 -------------------------------
----------------------------------------------------------------------------
wchar_t * __cdecl FUN_1001e680(wchar_t *param_1,wchar_t *param_2,rsize_t param_3)
{
if (param_1 != (wchar_t *)0x0) {
if ((param_2 != (wchar_t *)0x0) && (*param_2 != L'\0')) {
_wcsncpy_s(param_1,param_3,param_2,0xffffffff);
param_1[param_3 - 1] = L'\0';
return param_1;
}
*param_1 = L'\0';
}
return param_1;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001ff80 -------------------------------
----------------------------------------------------------------------------
undefined4 __thiscall FUN_1001ff80(void *this,wchar_t *param_1,wchar_t *param_2,wchar_t *param_3)
{
int iVar1;
int iVar2;
wint_t *pwVar3;
void *this_00;
undefined4 *puVar4;
undefined4 uVar5;
wchar_t *local_14;
void *local_10;
undefined *puStack_c;
undefined4 local_8;
local_8 = 0xffffffff;
puStack_c = &LAB_1003ee1d;
local_10 = ExceptionList;
local_14 = *(wchar_t **)((int)this + 0x234);
ExceptionList = &local_10;
iVar1 = FUN_1001e490(param_3);
if (iVar1 == 0) {
iVar1 = FUN_10025810((void *)((int)this + 0x21c),param_3);
if (iVar1 == 0) goto LAB_100200a9;
local_14 = (wchar_t *)FUN_10025790((int)this + 0x21c);
}
iVar1 = FUN_10020740((void *)((int)this + 0x208),param_1);
if (iVar1 != 0) {
iVar1 = *(int *)(*(int *)((int)this + 0x208) + 8);
iVar2 = FUN_10020740((void *)(iVar1 + 4),param_2);
if ((iVar2 != 0) && (iVar1 = *(int *)(*(int *)(iVar1 + 4) + 8), iVar1 != 0)) {
*(undefined4 *)(iVar1 + 4) = 0;
*(wchar_t **)(iVar1 + 8) = local_14;
ExceptionList = local_10;
return 1;
}
}
iVar1 = FUN_10025810((void *)((int)this + 0x21c),param_2);
if (iVar1 != 0) {
pwVar3 = (wint_t *)FUN_10025790((int)this + 0x21c);
this_00 = (void *)FUN_1001ddc0(0x14);
local_8 = 0;
if (this_00 == (void *)0x0) {
puVar4 = (undefined4 *)0x0;
}
else {
puVar4 = FUN_1001e9a0(this_00,pwVar3,local_14);
}
local_8 = 0xffffffff;
uVar5 = FUN_1001f5f0(this,param_1,puVar4);
ExceptionList = local_10;
return uVar5;
}
LAB_100200a9:
FUN_1001df00();
ExceptionList = local_10;
return 0;
}
----------------------------------------------------------------------------
------------------------------- FUN_10025810 -------------------------------
----------------------------------------------------------------------------
undefined4 __thiscall FUN_10025810(void *this,wchar_t *param_1)
{
rsize_t _SizeInWords;
wchar_t wVar1;
wchar_t *pwVar2;
pwVar2 = param_1;
do {
wVar1 = *pwVar2;
pwVar2 = pwVar2 + 1;
} while (wVar1 != L'\0');
_SizeInWords = ((int)pwVar2 - (int)(param_1 + 1) >> 1) + 1;
pwVar2 = *(wchar_t **)((int)this + 4);
/* WARNING: Load size is inaccurate */
if ((int)(((int)pwVar2 - *this >> 1) + _SizeInWords) <= *(int *)((int)this + 0xc)) {
*(wchar_t **)((int)this + 8) = pwVar2;
_wcscpy_s(pwVar2,_SizeInWords,param_1);
*(int *)((int)this + 4) = *(int *)((int)this + 4) + _SizeInWords * 2;
return 1;
}
return 0;
}
----------------------------------------------------------------------------
------------------------------- FUN_10025790 -------------------------------
----------------------------------------------------------------------------
undefined4 __fastcall FUN_10025790(int param_1)
{
return *(undefined4 *)(param_1 + 8);
}
----------------------------------------------------------------------------
------------------------------- FUN_1001ddc0 -------------------------------
----------------------------------------------------------------------------
void __cdecl FUN_1001ddc0(size_t param_1)
{
if (DAT_1005b548 != (undefined4 *)0x0) {
(**(code **)*DAT_1005b548)(param_1,0,0,DAT_1005b524);
return;
}
_malloc(param_1);
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e9a0 -------------------------------
----------------------------------------------------------------------------
undefined4 * __thiscall FUN_1001e9a0(void *this,wint_t *param_1,wchar_t *param_2)
{
int iVar1;
long lVar2;
float10 fVar3;
*(wint_t **)this = param_1;
*(undefined4 *)((int)this + 4) = 0;
FUN_1001e8f0(param_1);
iVar1 = FUN_1001e490(param_2);
if (iVar1 == 0) {
*(wchar_t **)((int)this + 8) = param_2;
lVar2 = __wtol(param_2);
*(long *)((int)this + 0xc) = lVar2;
fVar3 = (float10)FUN_1002bef0(param_2,(int *)0x0);
*(float *)((int)this + 0x10) = (float)fVar3;
FUN_1001e8f0(*(wint_t **)((int)this + 8));
return (undefined4 *)this;
}
*(undefined4 *)((int)this + 0x10) = 0;
*(undefined4 *)((int)this + 8) = 0;
*(undefined4 *)((int)this + 0xc) = 0;
return (undefined4 *)this;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e8f0 -------------------------------
----------------------------------------------------------------------------
wint_t * __cdecl FUN_1001e8f0(wint_t *param_1)
{
if ((param_1 != (wint_t *)0x0) && (*param_1 != 0)) {
FUN_1001e820(param_1);
FUN_1001e890(param_1);
}
return param_1;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e820 -------------------------------
----------------------------------------------------------------------------
wint_t * __cdecl FUN_1001e820(wint_t *param_1)
{
wint_t wVar1;
int iVar2;
wint_t *pwVar3;
_locale_t unaff_ESI;
wint_t *pwVar4;
if ((param_1 == (wint_t *)0x0) || (pwVar4 = param_1, *param_1 == 0)) {
return param_1;
}
do {
iVar2 = FID_conflict:__iswspace_l(*pwVar4,unaff_ESI);
if (iVar2 == 0) break;
pwVar4 = pwVar4 + 1;
} while (*pwVar4 != 0);
if (pwVar4 != param_1) {
pwVar3 = param_1;
do {
wVar1 = *pwVar3;
pwVar3 = pwVar3 + 1;
} while (wVar1 != 0);
iVar2 = (((int)pwVar3 - (int)(param_1 + 1) >> 1) - ((int)pwVar4 - (int)param_1 >> 1)) + 1;
pwVar3 = param_1;
if (0 < iVar2) {
do {
*pwVar3 = *(wint_t *)(((int)pwVar4 - (int)param_1) + (int)pwVar3);
pwVar3 = pwVar3 + 1;
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
}
}
return param_1;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e890 -------------------------------
----------------------------------------------------------------------------
wint_t * __cdecl FUN_1001e890(wint_t *param_1)
{
int iVar1;
wint_t *pwVar2;
_locale_t unaff_ESI;
wint_t *pwVar3;
if ((param_1 != (wint_t *)0x0) && (*param_1 != 0)) {
pwVar2 = (wint_t *)0x0;
pwVar3 = param_1;
if (*param_1 != 0) {
do {
iVar1 = FID_conflict:__iswspace_l(*pwVar3,unaff_ESI);
if (iVar1 == 0) {
pwVar2 = pwVar3;
}
pwVar3 = pwVar3 + 1;
} while (*pwVar3 != 0);
if (pwVar2 != (wint_t *)0x0) {
pwVar2[1] = 0;
return param_1;
}
}
*param_1 = 0;
}
return param_1;
}
----------------------------------------------------------------------------
------------------------------- FUN_1002bef0 -------------------------------
----------------------------------------------------------------------------
void __cdecl FUN_1002bef0(wchar_t *param_1,int *param_2)
{
FUN_1002bde8(param_1,param_2,(localeinfo_struct *)0x0);
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_1002bde8 -------------------------------
----------------------------------------------------------------------------
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_1002bde8(wchar_t *param_1,int *param_2,localeinfo_struct *param_3)
{
wchar_t _C;
uint uVar1;
int *piVar2;
int iVar3;
FLT p_Var4;
wchar_t *_Str;
localeinfo_struct local_38;
int local_30;
char local_2c;
double local_28;
_flt local_20;
uint local_8;
local_8 = DAT_10057e04 ^ (uint)&stack0xfffffffc;
_LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_38,param_3);
if (param_2 != (int *)0x0) {
*param_2 = (int)param_1;
}
if (param_1 == (wchar_t *)0x0) {
piVar2 = __errno();
*piVar2 = 0x16;
FUN_1002fef0();
if (local_2c != '\0') {
*(uint *)(local_30 + 0x70) = *(uint *)(local_30 + 0x70) & 0xfffffffd;
}
goto LAB_1002bee1;
}
_C = *param_1;
_Str = param_1;
while (iVar3 = _iswctype(_C,8), iVar3 != 0) {
_Str = _Str + 1;
_C = *_Str;
}
p_Var4 = __wfltin2(&local_20,_Str,&local_38);
if (param_2 != (int *)0x0) {
*param_2 = (int)(_Str + p_Var4->nbytes);
}
uVar1 = p_Var4->flags;
if ((uVar1 & 0x240) == 0) {
if ((uVar1 & 0x81) == 0) {
if (((uVar1 & 0x100) == 0) || (local_28 = 0.0, NAN(p_Var4->dval) == (p_Var4->dval == 0.0))) {
local_28 = p_Var4->dval;
goto LAB_1002bed1;
}
}
else {
local_28 = _DAT_100585d0;
if (*_Str == L'-') {
local_28 = -_DAT_100585d0;
}
}
piVar2 = __errno();
*piVar2 = 0x22;
}
else {
local_28 = 0.0;
if (param_2 != (int *)0x0) {
*param_2 = (int)param_1;
}
}
LAB_1002bed1:
if (local_2c != '\0') {
*(uint *)(local_30 + 0x70) = *(uint *)(local_30 + 0x70) & 0xfffffffd;
}
LAB_1002bee1:
@__security_check_cookie@4(local_8 ^ (uint)&stack0xfffffffc);
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_1002fef0 -------------------------------
----------------------------------------------------------------------------
void FUN_1002fef0(void)
{
__invalid_parameter((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001f5f0 -------------------------------
----------------------------------------------------------------------------
undefined4 __thiscall FUN_1001f5f0(void *this,wchar_t *param_1,undefined4 *param_2)
{
int *this_00;
int iVar1;
undefined4 uVar2;
void *this_01;
undefined4 *puVar3;
void *local_10;
undefined *puStack_c;
undefined4 local_8;
local_8 = 0xffffffff;
puStack_c = &LAB_1003ed6a;
local_10 = ExceptionList;
if (param_2 != (undefined4 *)0x0) {
this_00 = (int *)((int)this + 0x208);
ExceptionList = &local_10;
iVar1 = FUN_10020740(this_00,param_1);
if (iVar1 == 0) {
iVar1 = FUN_10025810((void *)((int)this + 0x21c),param_1);
if (iVar1 == 0) {
FUN_1001df00();
ExceptionList = local_10;
return 0;
}
uVar2 = FUN_10025790((int)this + 0x21c);
this_01 = (void *)FUN_1001ddc0(0x18);
local_8 = 0;
if (this_01 == (void *)0x0) {
puVar3 = (undefined4 *)0x0;
}
else {
puVar3 = FUN_1001f4f0(this_01,uVar2);
}
local_8 = 0xffffffff;
iVar1 = FUN_10020860(this_00,puVar3);
if (iVar1 == 0) {
FUN_1001df00();
if (puVar3 == (undefined4 *)0x0) {
ExceptionList = local_10;
return 0;
}
FUN_1001f550(puVar3);
FUN_1001de20(puVar3);
}
}
else {
puVar3 = *(undefined4 **)(*this_00 + 8);
}
if (puVar3 != (undefined4 *)0x0) {
iVar1 = FUN_10020740(puVar3 + 1,(wchar_t *)*param_2);
if (iVar1 == 0) {
FUN_10020860(puVar3 + 1,param_2);
}
ExceptionList = local_10;
return 1;
}
}
ExceptionList = local_10;
return 0;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001f4f0 -------------------------------
----------------------------------------------------------------------------
undefined4 * __thiscall FUN_1001f4f0(void *this,undefined4 param_1)
{
void *local_10;
undefined *puStack_c;
undefined4 local_8;
puStack_c = &LAB_1003ed40;
local_10 = ExceptionList;
ExceptionList = &local_10;
*(int *)((int)this + 4) = 0;
*(undefined4 *)((int)this + 8) = 0;
*(undefined4 *)((int)this + 0xc) = 0;
*(undefined4 *)((int)this + 0x10) = 0;
*(undefined4 *)((int)this + 0x14) = 0xffffffff;
local_8 = 0;
*(undefined4 *)this = param_1;
FUN_10018c50((int *)((int)this + 4));
ExceptionList = local_10;
return (undefined4 *)this;
}
----------------------------------------------------------------------------
------------------------------- FUN_10018c50 -------------------------------
----------------------------------------------------------------------------
void __fastcall FUN_10018c50(int *param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
*param_1 = param_1[1];
if (param_1[1] == 0) {
param_1[4] = -1;
return;
}
do {
piVar1 = (int *)*param_1;
if (piVar1 == (int *)param_1[1]) {
param_1[1] = *piVar1;
}
else {
*(int *)piVar1[1] = *piVar1;
}
piVar2 = (int *)*param_1;
if (piVar2 == (int *)param_1[2]) {
iVar3 = piVar2[1];
param_1[4] = param_1[4] + -1;
param_1[2] = iVar3;
}
else {
*(int *)(*piVar2 + 4) = piVar2[1];
iVar3 = *(int *)*param_1;
}
*param_1 = iVar3;
if (piVar1 != (int *)0x0) {
FUN_1001de20(piVar1);
param_1[3] = param_1[3] + -1;
}
} while (*param_1 != 0);
param_1[4] = -1;
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_10020860 -------------------------------
----------------------------------------------------------------------------
undefined4 __thiscall FUN_10020860(void *this,undefined4 param_1)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_1001ddc0(0xc);
if (puVar1 != (undefined4 *)0x0) {
*puVar1 = 0;
puVar1[1] = 0;
puVar1[2] = param_1;
*(int *)((int)this + 0xc) = *(int *)((int)this + 0xc) + 1;
if (*(int *)((int)this + 4) == 0) {
*(undefined4 **)((int)this + 4) = puVar1;
}
else {
**(undefined4 **)((int)this + 8) = puVar1;
puVar1[1] = *(undefined4 *)((int)this + 8);
}
*(undefined4 **)((int)this + 8) = puVar1;
*(undefined4 **)this = puVar1;
*(int *)((int)this + 0x10) = *(int *)((int)this + 0xc) + -1;
return 1;
}
return 0;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001f550 -------------------------------
----------------------------------------------------------------------------
void __fastcall FUN_1001f550(undefined4 *param_1)
{
undefined4 uVar1;
int iVar2;
void *local_10;
undefined *puStack_c;
undefined4 local_8;
local_10 = ExceptionList;
puStack_c = &LAB_1003ed55;
ExceptionList = &local_10;
param_1[1] = param_1[2];
param_1[5] = (param_1[2] != 0) - 1;
iVar2 = param_1[1];
local_8 = 0;
while (iVar2 != 0) {
if (*(int *)(param_1[1] + 8) != 0) {
FUN_1001de20(*(int *)(param_1[1] + 8));
}
if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
uVar1 = *(undefined4 *)param_1[1];
param_1[5] = param_1[5] + 1;
param_1[1] = uVar1;
}
iVar2 = param_1[1];
}
FUN_10018c50(param_1 + 1);
*param_1 = 0;
local_8 = 0xffffffff;
FUN_10018c50(param_1 + 1);
ExceptionList = local_10;
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001de20 -------------------------------
----------------------------------------------------------------------------
void __cdecl FUN_1001de20(undefined4 param_1)
{
if (DAT_1005b548 != (int *)0x0) {
(**(code **)(*DAT_1005b548 + 4))(param_1);
}
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001df00 -------------------------------
----------------------------------------------------------------------------
void FUN_1001df00(void)
{
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_100204d0 -------------------------------
----------------------------------------------------------------------------
void __thiscall
FUN_100204d0(void *this,wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,wchar_t *param_4,
rsize_t param_5,int param_6)
{
int iVar1;
int iVar2;
iVar1 = FUN_10020740((void *)((int)this + 0x208),param_1);
if (iVar1 != 0) {
iVar1 = *(int *)(*(int *)((int)this + 0x208) + 8);
iVar2 = FUN_10020740((void *)(iVar1 + 4),param_2);
if (iVar2 != 0) {
iVar1 = *(int *)(*(int *)(iVar1 + 4) + 8);
goto LAB_1002050e;
}
}
iVar1 = 0;
LAB_1002050e:
if (param_4 != (wchar_t *)0x0) {
if (iVar1 == 0) {
if (*(int *)((int)this + 0x22c) != 0) {
FUN_1001ff80(this,param_1,param_2,param_3);
}
FUN_1001e680(param_4,param_3,param_5);
}
else {
*(undefined4 *)(iVar1 + 4) = 0;
FUN_1001e680(param_4,*(wchar_t **)(iVar1 + 8),param_5);
if (param_6 == 1) {
FUN_1001e750((wint_t *)param_4);
return;
}
if (param_6 == 2) {
FUN_1001e7c0((wint_t *)param_4);
return;
}
}
}
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e750 -------------------------------
----------------------------------------------------------------------------
wint_t * __cdecl FUN_1001e750(wint_t *param_1)
{
byte bVar1;
wint_t wVar2;
int iVar3;
_locale_t unaff_ESI;
wint_t *pwVar4;
if ((param_1 != (wint_t *)0x0) && (pwVar4 = param_1, *param_1 != 0)) {
do {
iVar3 = FID_conflict:_iswlower(*pwVar4,unaff_ESI);
if (iVar3 == 0) {
bVar1 = *(byte *)pwVar4;
if (((0xdf < bVar1) && (bVar1 < 0xf7)) || ((0xf7 < bVar1 && (bVar1 < 0xfe)))) {
*pwVar4 = *pwVar4 - 0x20;
}
}
else {
wVar2 = _towupper(*pwVar4);
*pwVar4 = wVar2;
}
pwVar4 = pwVar4 + 1;
} while (*pwVar4 != 0);
return param_1;
}
return param_1;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e7c0 -------------------------------
----------------------------------------------------------------------------
wint_t * __cdecl FUN_1001e7c0(wint_t *param_1)
{
byte bVar1;
wint_t wVar2;
int iVar3;
wint_t *pwVar4;
if ((param_1 != (wint_t *)0x0) && (pwVar4 = param_1, *param_1 != 0)) {
do {
iVar3 = FID_conflict:__iswupper_l(*pwVar4);
if (iVar3 == 0) {
bVar1 = *(byte *)pwVar4;
if (((0xbf < bVar1) && (bVar1 < 0xd7)) || ((0xd7 < bVar1 && (bVar1 < 0xde)))) {
*pwVar4 = *pwVar4 + 0x20;
}
}
else {
wVar2 = _towlower(*pwVar4);
*pwVar4 = wVar2;
}
pwVar4 = pwVar4 + 1;
} while (*pwVar4 != 0);
return param_1;
}
return param_1;
}
----------------------------------------------------------------------------
------------------------------- FUN_10023470 -------------------------------
----------------------------------------------------------------------------
undefined4 __cdecl FUN_10023470(uint *param_1,void *param_2,wchar_t *param_3)
{
bool bVar1;
int iVar2;
undefined3 extraout_var;
uint uVar3;
undefined3 extraout_var_00;
undefined3 extraout_var_01;
undefined3 extraout_var_02;
wchar_t local_20c [260];
*param_1 = 0;
FUN_100204d0(param_2,param_3,L"HorizontalAlignment",L"",local_20c,0x104,0);
iVar2 = FUN_1001e490(local_20c);
if (iVar2 == 0) {
bVar1 = FUN_1001e560(local_20c,L"CENTER",0);
if (CONCAT31(extraout_var,bVar1) == 0) {
bVar1 = FUN_1001e560(local_20c,L"RIGHT",0);
uVar3 = 4;
if (CONCAT31(extraout_var_00,bVar1) == 0) goto LAB_100234fd;
}
else {
uVar3 = 1;
}
}
else {
LAB_100234fd:
uVar3 = 2;
}
*param_1 = *param_1 | uVar3;
FUN_100204d0(param_2,param_3,L"VerticalAlignment",L"",local_20c,0x104,0);
iVar2 = FUN_1001e490(local_20c);
if (iVar2 == 0) {
bVar1 = FUN_1001e560(local_20c,L"CENTER",0);
if (CONCAT31(extraout_var_01,bVar1) != 0) {
*param_1 = *param_1 | 0x10;
return 1;
}
bVar1 = FUN_1001e560(local_20c,L"BOTTOM",0);
uVar3 = 0x40;
if (CONCAT31(extraout_var_02,bVar1) != 0) goto LAB_10023587;
}
uVar3 = 0x20;
LAB_10023587:
*param_1 = *param_1 | uVar3;
return 1;
}
----------------------------------------------------------------------------
------------------------------- FUN_100208c0 -------------------------------
----------------------------------------------------------------------------
wchar_t * __cdecl FUN_100208c0(void *param_1,wchar_t *param_2,wchar_t *param_3,int param_4)
{
int iVar1;
wchar_t *pwVar2;
wchar_t local_20c [260];
FUN_100204d0(param_1,param_2,param_3,L"",local_20c,0x104,0);
iVar1 = FUN_1001e490(local_20c);
if (iVar1 != 0) {
return (wchar_t *)0x0;
}
if (param_4 == 1) {
FUN_1001e750((wint_t *)local_20c);
pwVar2 = FUN_1001e4d0(local_20c);
return pwVar2;
}
if (param_4 == 2) {
FUN_1001e7c0((wint_t *)local_20c);
}
pwVar2 = FUN_1001e4d0(local_20c);
return pwVar2;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001e4d0 -------------------------------
----------------------------------------------------------------------------
wchar_t * __cdecl FUN_1001e4d0(wchar_t *param_1)
{
rsize_t _SizeInWords;
wchar_t wVar1;
wchar_t *pwVar2;
pwVar2 = (wchar_t *)0x0;
if (param_1 != (wchar_t *)0x0) {
if (*param_1 == L'\0') {
pwVar2 = (wchar_t *)FUN_1001dcd0(2);
if (pwVar2 != (wchar_t *)0x0) {
*pwVar2 = L'\0';
return pwVar2;
}
}
else {
pwVar2 = param_1;
do {
wVar1 = *pwVar2;
pwVar2 = pwVar2 + 1;
} while (wVar1 != L'\0');
_SizeInWords = ((int)pwVar2 - (int)(param_1 + 1) >> 1) + 1;
if (pwVar2 != (wchar_t *)0x0) {
_wcscpy_s(pwVar2,_SizeInWords,param_1);
}
}
}
return pwVar2;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001dcd0 -------------------------------
----------------------------------------------------------------------------
void __cdecl FUN_1001dcd0(undefined4 param_1)
{
(**(code **)*DAT_1005b548)(param_1,0,0,DAT_1005b524);
return;
}
----------------------------------------------------------------------------
------------------------------- FUN_10021aa0 -------------------------------
----------------------------------------------------------------------------
float10 __cdecl FUN_10021aa0(wchar_t *param_1)
{
bool bVar1;
int iVar2;
undefined3 extraout_var;
wchar_t *pwVar3;
float *pfVar4;
float10 fVar5;
iVar2 = FUN_1001e490(param_1);
if (iVar2 == 0) {
pfVar4 = (float *)&DAT_100579a0;
iVar2 = FUN_1001e490(u_FEET_100579a4);
if (iVar2 == 0) {
pwVar3 = u_FEET_100579a4;
do {
bVar1 = FUN_1001e560(pwVar3,param_1,0);
if (CONCAT31(extraout_var,bVar1) != 0) {
return (float10)*pfVar4;
}
pwVar3 = pwVar3 + 10;
pfVar4 = pfVar4 + 5;
iVar2 = FUN_1001e490(pwVar3);
} while (iVar2 == 0);
}
fVar5 = (float10)FUN_1002bef0(param_1,(int *)0x0);
fVar5 = (float10)(float)fVar5;
if ((NAN((float10)0) || NAN(fVar5)) == ((float10)0 == fVar5)) {
return fVar5;
}
}
return (float10)1;
}
----------------------------------------------------------------------------
------------------------------- FUN_10020590 -------------------------------
----------------------------------------------------------------------------
uint __thiscall FUN_10020590(void *this,wchar_t *param_1,wchar_t *param_2,uint param_3)
{
bool bVar1;
int iVar2;
int iVar3;
undefined3 extraout_var;
undefined3 extraout_var_00;
wchar_t *pwVar4;
wchar_t local_20c [260];
iVar2 = FUN_10020740((void *)((int)this + 0x208),param_1);
if (iVar2 != 0) {
iVar2 = *(int *)(*(int *)((int)this + 0x208) + 8);
iVar3 = FUN_10020740((void *)(iVar2 + 4),param_2);
if (iVar3 != 0) {
iVar2 = *(int *)(*(int *)(iVar2 + 4) + 8);
goto LAB_100205d4;
}
}
iVar2 = 0;
LAB_100205d4:
if (iVar2 != 0) {
*(undefined4 *)(iVar2 + 4) = 0;
FUN_1001e680(local_20c,*(wchar_t **)(iVar2 + 8),0x104);
bVar1 = FUN_1001e560(local_20c,*(wchar_t **)((int)this + 0x238),0);
if (CONCAT31(extraout_var,bVar1) != 0) {
return 1;
}
bVar1 = FUN_1001e560(local_20c,*(wchar_t **)((int)this + 0x23c),0);
if (CONCAT31(extraout_var_00,bVar1) != 0) {
return 0;
}
*(undefined4 *)(iVar2 + 4) = 1;
param_3 = (uint)(*(int *)(iVar2 + 0xc) != 0);
}
if (*(int *)((int)this + 0x22c) != 0) {
if (param_3 == 0) {
pwVar4 = *(wchar_t **)((int)this + 0x23c);
}
else {
pwVar4 = *(wchar_t **)((int)this + 0x238);
}
FUN_1001ff80(this,param_1,param_2,pwVar4);
}
return param_3;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001ed70 -------------------------------
----------------------------------------------------------------------------
undefined4 __thiscall FUN_1001ed70(void *this,wchar_t *param_1,wchar_t *param_2)
{
int iVar1;
undefined4 uVar2;
iVar1 = FUN_10020740((int *)((int)this + 0x208),param_1);
if (iVar1 != 0) {
uVar2 = FUN_10020740((void *)(*(int *)(*(int *)((int)this + 0x208) + 8) + 4),param_2);
return uVar2;
}
return 0;
}
============================================================================
------------------------------- FUN_10013b50 -------------------------------
============================================================================
undefined4 * __thiscall FUN_10013b50(void *this,void *param_1,wchar_t *param_2)
{
float10 fVar1;
void *local_10;
undefined *puStack_c;
undefined4 local_8;
local_8 = 0xffffffff;
puStack_c = &LAB_1003ea3a;
local_10 = ExceptionList;
ExceptionList = &local_10;
FUN_100136d0(this,param_1,param_2);
*(undefined ***)this = RadarHorizonClass::vftable;
local_8 = 0;
fVar1 = FUN_10020450(param_1,param_2,L"ElevationScale",*(float *)(DAT_10059e28 + 0x50));
*(float *)((int)this + 0x24) = 1.0 / (float)(fVar1 * (float10)0.01745329238474369);
ExceptionList = local_10;
return (undefined4 *)this;
}
----------------------------------------------------------------------------
------------------------------- FUNCTION -------------------------------
----------------------------------------------------------------------------
FUN_100136d0
FUN_10020450
============================================================================
------------------------------- FUN_10013bd0 -------------------------------
============================================================================
undefined4 * __thiscall FUN_10013bd0(void *this,void *param_1,wchar_t *param_2)
{
float fVar1;
float10 fVar2;
void *local_10;
undefined *puStack_c;
undefined4 local_8;
local_8 = 0xffffffff;
puStack_c = &LAB_1003ea4c;
local_10 = ExceptionList;
ExceptionList = &local_10;
FUN_100136d0(this,param_1,param_2);
*(undefined ***)this = RadarElevationClass::vftable;
local_8 = 0;
fVar2 = FUN_10020450(param_1,param_2,L"ElevationScale",*(float *)(DAT_10059e28 + 0x50));
fVar1 = 1.0 / (float)(fVar2 * (float10)0.01745329238474369);
*(float *)((int)this + 0x24) = fVar1;
*(float *)(DAT_10059e28 + 0x50) = fVar1;
ExceptionList = local_10;
return (undefined4 *)this;
}
----------------------------------------------------------------------------
------------------------------- FUN_100136d0 -------------------------------
----------------------------------------------------------------------------
undefined4 * __thiscall FUN_100136d0(void *this,void *param_1,wchar_t *param_2)
{
float fVar1;
int iVar2;
undefined4 uVar3;
float10 fVar4;
wchar_t local_21c [260];
void *local_14;
void *local_10;
undefined *puStack_c;
undefined4 local_8;
local_8 = 0xffffffff;
puStack_c = &LAB_1003e9d8;
local_10 = ExceptionList;
ExceptionList = &local_10;
local_14 = this;
FUN_100135f0(this,param_1,param_2);
local_8 = 0;
*(undefined ***)this = RadarImageClass::vftable;
*(undefined4 *)((int)this + 0x18) = 0xffffffff;
fVar4 = FUN_10020450(param_1,param_2,L"ImageSize",0.0);
fVar1 = (float)fVar4;
*(float *)((int)this + 0x1c) = fVar1;
*(undefined4 *)((int)this + 0x20) = 0;
if (0.0 < fVar1 != NAN(fVar1)) {
FUN_100204d0(param_1,param_2,L"TextureName",L"",local_21c,0x104,0);
iVar2 = FUN_1001e490(local_21c);
if (iVar2 == 0) {
uVar3 = (**(code **)(*DAT_10059068 + 0x7c))(local_21c,1,1,0);
*(undefined4 *)((int)this + 0x18) = uVar3;
}
iVar2 = FUN_1001ed70(param_1,param_2,L"RotationAngle");
if (iVar2 != 0) {
fVar4 = FUN_10020450(param_1,param_2,L"RotationAngle",0.0);
*(float *)((int)this + 0x20) = (float)fVar4;
if (1.1920929e-07 < ABS((float)fVar4)) {
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) | 0x10000;
ExceptionList = local_10;
return (undefined4 *)this;
}
}
}
ExceptionList = local_10;
return (undefined4 *)this;
}
----------------------------------------------------------------------------
------------------------------- FUN_10020450 -------------------------------
----------------------------------------------------------------------------
float10 __thiscall FUN_10020450(void *param_1,wchar_t *param_2,wchar_t *param_3,float param_4)
{
int iVar1;
int iVar2;
iVar1 = FUN_10020740((void *)((int)param_1 + 0x208),param_2);
if (iVar1 != 0) {
iVar1 = *(int *)(*(int *)((int)param_1 + 0x208) + 8);
iVar2 = FUN_10020740((void *)(iVar1 + 4),param_3);
if ((iVar2 != 0) && (iVar1 = *(int *)(*(int *)(iVar1 + 4) + 8), iVar1 != 0)) {
*(undefined4 *)(iVar1 + 4) = 2;
return (float10)*(float *)(iVar1 + 0x10);
}
}
if (*(int *)((int)param_1 + 0x22c) != 0) {
FUN_1001fe50(param_1,param_2,param_3,param_4);
}
return (float10)param_4;
}
----------------------------------------------------------------------------
------------------------------- FUN_1001fe50 -------------------------------
----------------------------------------------------------------------------
undefined4 __thiscall FUN_1001fe50(void *this,wchar_t *param_1,wchar_t *param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
wint_t *pwVar3;
undefined4 *puVar4;
undefined4 uVar5;
undefined4 extraout_ECX;
undefined4 extraout_EDX;
float10 extraout_ST0;
ulonglong uVar6;
void *local_10;
undefined *puStack_c;
undefined4 local_8;
local_8 = 0xffffffff;
puStack_c = &LAB_1003ee08;
local_10 = ExceptionList;
ExceptionList = &local_10;
iVar1 = FUN_10020740((void *)((int)this + 0x208),param_1);
if (iVar1 != 0) {
iVar1 = *(int *)(*(int *)((int)this + 0x208) + 8);
iVar2 = FUN_10020740((void *)(iVar1 + 4),param_2);
if ((iVar2 != 0) && (iVar1 = *(int *)(*(int *)(iVar1 + 4) + 8), iVar1 != 0)) {
*(undefined4 *)(iVar1 + 4) = 2;
*(undefined4 *)(iVar1 + 0x10) = param_3;
ExceptionList = local_10;
return 1;
}
}
iVar1 = FUN_10025810((void *)((int)this + 0x21c),param_2);
if (iVar1 != 0) {
pwVar3 = (wint_t *)FUN_10025790((int)this + 0x21c);
puVar4 = (undefined4 *)FUN_1001ddc0(0x14);
local_8 = 0;
if (puVar4 == (undefined4 *)0x0) {
puVar4 = (undefined4 *)0x0;
}
else {
*puVar4 = pwVar3;
puVar4[1] = 2;
FUN_1001e8f0(pwVar3);
puVar4[2] = 0;
uVar6 = FUN_1002a7b0(extraout_ECX,extraout_EDX);
puVar4[4] = (float)extraout_ST0;
puVar4[3] = (int)uVar6;
}
local_8 = 0xffffffff;
uVar5 = FUN_1001f5f0(this,param_1,puVar4);
ExceptionList = local_10;
return uVar5;
}
FUN_1001df00();
ExceptionList = local_10;
return 0;
}
----------------------------------------------------------------------------
------------------------------- FUN_1002a7b0 -------------------------------
----------------------------------------------------------------------------
ulonglong __fastcall FUN_1002a7b0(undefined4 param_1,undefined4 param_2)
{
ulonglong uVar1;
uint uVar2;
float fVar3;
float10 in_ST0;
uint local_20;
float fStack_1c;
if (DAT_1005d4f4 == 0) {
uVar1 = (ulonglong)ROUND(in_ST0);
local_20 = (uint)uVar1;
fStack_1c = (float)(uVar1 >> 0x20);
fVar3 = (float)in_ST0;
if ((local_20 != 0) || (fVar3 = fStack_1c, (uVar1 & 0x7fffffff00000000) != 0)) {
if ((int)fVar3 < 0) {
uVar1 = uVar1 + (0x80000000 < (uint)-(float)(in_ST0 - (float10)(longlong)uVar1));
}
else {
uVar2 = (uint)(0x80000000 < (uint)(float)(in_ST0 - (float10)(longlong)uVar1));
uVar1 = CONCAT44((int)fStack_1c - (uint)(local_20 < uVar2),local_20 - uVar2);
}
}
return uVar1;
}
return CONCAT44(param_2,(int)in_ST0);
}
============================================================================
------------------------------- FUN_10013c60 -------------------------------
============================================================================
undefined4 * __thiscall FUN_10013c60(void *this,void *param_1,wchar_t *param_2)
{
FUN_100136d0(this,param_1,param_2);
*(undefined ***)this = RadarAzimuthClass::vftable;
*(uint *)((int)this + 4) = *(uint *)((int)this + 4) & 0xfffffffe | 2;
return (undefined4 *)this;
}
============================================================================
------------------------------- FUN_10013c90 -------------------------------
============================================================================
undefined4 * __thiscall FUN_10013c90(void *this,void *param_1,wchar_t *param_2)
{
float10 fVar1;
wchar_t local_21c [260];
void *local_14;
void *local_10;
undefined *puStack_c;
undefined4 local_8;
local_8 = 0xffffffff;
puStack_c = &LAB_1003ea66;
local_10 = ExceptionList;
ExceptionList = &local_10;
local_14 = this;
FUN_100135f0(this,param_1,param_2);
local_8 = 0;
*(undefined ***)this = RadarTextClass::vftable;
FUN_100204d0(param_1,param_2,L"Text",L"",(wchar_t *)((int)this + 0x18),0x40,0);
FUN_10023470((uint *)((int)this + 0x98),param_1,param_2);
local_8 = 1;
*(undefined ***)this = RadarRangeScaleClass::vftable;
FUN_100204d0(param_1,param_2,L"DisplayUnit",L"",local_21c,0x104,0);
fVar1 = FUN_10021aa0(local_21c);
*(float *)((int)this + 0x9c) = (float)((float10)1 / fVar1);
ExceptionList = local_10;
return (undefined4 *)this;
}
=====================================================================
=====================================================================
------------------------------- NOTES -------------------------------
=====================================================================
=====================================================================
| -------------------- | ----------------------------------------------------------------------- |
| **Function** | **What It Creates / Does** |
| -------------------- | ----------------------------------------------------------------------- |
| `FUN_10013bd0` | Creates **RadarElevationClass** → handles elevation bar drawing |
| `FUN_10013f90` | Creates **RadarTargetRangeTextClass** → handles range text like “10 nm” |
| `FUN_10013940` | Initializes **RadarTextClass**, then upgrades to `RadarTargetTextClass` |
| `FUN_100136d0` | Base class initializer for visual radar components |
| `FUN_10020450`, etc. | Load values from INI → `[RadarDisplay]`, `[AvionicsData]`, etc. |
| `DAT_10059e28` | Likely a **central render config structure** used across radar visuals |