//----- (20312890) --------------------------------------------------------
char *__thiscall sub_20312890(char *this)
{
char *v1; // esi@1
signed int v2; // ebx@1
_WORD *v3; // eax@1
_WORD *v4; // edi@1
int v5; // eax@4
_WORD *v6; // eax@6
int v7; // eax@9
_WORD *v8; // eax@11
int v9; // eax@14
_WORD *v10; // eax@16
int v11; // eax@19
_WORD *v12; // eax@21
int v13; // eax@24
_WORD *v14; // eax@26
int v15; // eax@29
_WORD *v16; // eax@31
int v17; // eax@34
int v19; // [sp+0h] [bp-90h]@1
char v20; // [sp+Ch] [bp-84h]@32
char v21; // [sp+18h] [bp-78h]@27
char v22; // [sp+24h] [bp-6Ch]@22
char v23; // [sp+30h] [bp-60h]@17
char v24; // [sp+3Ch] [bp-54h]@12
char v25; // [sp+48h] [bp-48h]@7
char v26; // [sp+54h] [bp-3Ch]@2
char *v27; // [sp+6Ch] [bp-24h]@1
_WORD *v28; // [sp+74h] [bp-1Ch]@1
_WORD *v29; // [sp+78h] [bp-18h]@2
unsigned int v30; // [sp+7Ch] [bp-14h]@1
int *v31; // [sp+80h] [bp-10h]@1
int v32; // [sp+8Ch] [bp-4h]@1
v31 = &v19;
v1 = this;
v27 = this;
v2 = 0;
v30 = 0;
sub_20262F70(this);
v32 = 0;
*(_DWORD *)v1 = &off_20BCB264;
LOBYTE(v32) = 1;
sub_20101D40(16);
v4 = v3;
v28 = v3;
LOBYTE(v32) = 2;
if ( v3 )
{
v1500AA80(&v26, L"dyepotential_begin");
LOBYTE(v32) = 3;
v2 = 1;
v30 = 1;
v29 = sub_20262B60(v4, (int)&v26, 99);
}
else
{
v29 = 0;
}
v32 = 4;
v5 = v1500A700(v1 + 4, 1, 4);
*(_DWORD *)(*((_DWORD *)v1 + 1) + 4 * v5) = v29;
*((_DWORD *)v1 + 10) = v5;
v32 = 1;
if ( v2 & 1 )
{
v2 &= 0xFFFFFFFE;
v30 = v2;
v1500AD30(&v26);
}
sub_20101D40(16);
v28 = v6;
LOBYTE(v32) = 5;
if ( v6 )
{
v1500AA80(&v25, L"dyepotential_id");
LOBYTE(v32) = 6;
v2 |= 2u;
v30 = v2;
v29 = sub_20262B60(v28, (int)&v25, 100);
}
else
{
v29 = 0;
}
v32 = 7;
v7 = v1500A700(v1 + 4, 1, 4);
*(_DWORD *)(*((_DWORD *)v1 + 1) + 4 * v7) = v29;
*((_DWORD *)v1 + 11) = v7;
v32 = 1;
if ( v2 & 2 )
{
v2 &= 0xFFFFFFFD;
v30 = v2;
v1500AD30(&v25);
}
sub_20101D40(16);
v28 = v8;
LOBYTE(v32) = 8;
if ( v8 )
{
v1500AA80(&v24, L"dye_slot_id");
LOBYTE(v32) = 9;
v2 |= 4u;
v30 = v2;
v29 = sub_20262B60(v28, (int)&v24, 100);
}
else
{
v29 = 0;
}
v32 = 10;
v9 = v1500A700(v1 + 4, 1, 4);
*(_DWORD *)(*((_DWORD *)v1 + 1) + 4 * v9) = v29;
*((_DWORD *)v1 + 12) = v9;
v32 = 1;
if ( v2 & 4 )
{
v2 &= 0xFFFFFFFB;
v30 = v2;
v1500AD30(&v24);
}
sub_20101D40(16);
v28 = v10;
LOBYTE(v32) = 11;
if ( v10 )
{
v1500AA80(&v23, L"effect_name");
LOBYTE(v32) = 12;
v2 |= 8u;
v30 = v2;
v29 = sub_20262B60(v28, (int)&v23, 115);
}
else
{
v29 = 0;
}
v32 = 13;
v11 = v1500A700(v1 + 4, 1, 4);
*(_DWORD *)(*((_DWORD *)v1 + 1) + 4 * v11) = v29;
*((_DWORD *)v1 + 13) = v11;
v32 = 1;
if ( v2 & 8 )
{
v2 &= 0xFFFFFFF7;
v30 = v2;
v1500AD30(&v23);
}
sub_20101D40(16);
v28 = v12;
LOBYTE(v32) = 14;
if ( v12 )
{
v1500AA80(&v22, L"skill_id");
LOBYTE(v32) = 15;
v2 |= 0x10u;
v30 = v2;
v29 = sub_20262B60(v28, (int)&v22, 100);
}
else
{
v29 = 0;
}
v32 = 16;
v13 = v1500A700(v1 + 4, 1, 4);
*(_DWORD *)(*((_DWORD *)v1 + 1) + 4 * v13) = v29;
*((_DWORD *)v1 + 14) = v13;
v32 = 1;
if ( v2 & 0x10 )
{
v2 &= 0xFFFFFFEF;
v30 = v2;
v1500AD30(&v22);
}
sub_20101D40(16);
v28 = v14;
LOBYTE(v32) = 17;
if ( v14 )
{
v1500AA80(&v21, L"max_skill_level");
LOBYTE(v32) = 18;
v2 |= 0x20u;
v30 = v2;
v29 = sub_20262B60(v28, (int)&v21, 100);
}
else
{
v29 = 0;
}
v32 = 19;
v15 = v1500A700(v1 + 4, 1, 4);
*(_DWORD *)(*((_DWORD *)v1 + 1) + 4 * v15) = v29;
*((_DWORD *)v1 + 15) = v15;
v32 = 1;
if ( v2 & 0x20 )
{
v2 &= 0xFFFFFFDF;
v30 = v2;
v1500AD30(&v21);
}
sub_20101D40(16);
v28 = v16;
LOBYTE(v32) = 20;
if ( v16 )
{
v1500AA80(&v20, L"dyepotential_end");
LOBYTE(v32) = 21;
v2 |= 0x40u;
v30 = v2;
v29 = sub_20262B60(v28, (int)&v20, 101);
}
else
{
v29 = 0;
}
v32 = 22;
v17 = v1500A700(v1 + 4, 1, 4);
*(_DWORD *)(*((_DWORD *)v1 + 1) + 4 * v17) = v29;
*((_DWORD *)v1 + 16) = v17;
v32 = 1;
if ( v2 & 0x40 )
{
v30 = v2 & 0xFFFFFFBF;
v1500AD30(&v20);
}
return v1;
}
// 20101D40: using guessed type double __cdecl sub_20101D40(_DWORD);
// 20BA5788: using guessed type wchar_t aSkill_id[9];
// 20BA872C: using guessed type wchar_t aEffect_name[12];
// 20BB60A8: using guessed type wchar_t aMax_skill_leve[16];
// 20BB96EC: using guessed type wchar_t aDyepotential_b[19];
// 20BB9778: using guessed type wchar_t aDye_slot_id[12];
// 20BB9790: using guessed type wchar_t aDyepotential_i[16];
// 20BB97D0: using guessed type wchar_t aDyepotential_e[17];
// 20BCB264: using guessed type int (__stdcall *off_20BCB264)(char);