diff UICharacter.cpp @ 706:d6236f6a9882

Rough function rearranging to new files
author Gloval
date Tue, 19 Mar 2013 21:53:21 +0400
parents d5b16a44d9b3
children 735dab8d3c9a
line wrap: on
line diff
--- a/UICharacter.cpp	Mon Mar 18 21:50:20 2013 +0000
+++ b/UICharacter.cpp	Tue Mar 19 21:53:21 2013 +0400
@@ -0,0 +1,4264 @@
+#include <assert.h>
+
+#include "MM7.h"
+
+#include "MapInfo.h"
+#include "Game.h"
+#include "GUIWindow.h"
+#include "GUIFont.h"
+#include "GUIButton.h"
+#include "GUIProgressBar.h"
+#include "Party.h"
+#include "AudioPlayer.h"
+#include "Outdoor.h"
+#include "IndoorCamera.h"
+#include "Overlays.h"
+#include "Monsters.h"
+#include "Arcomage.h"
+#include "LOD.h"
+#include "Actor.h"
+#include "Allocator.h"
+#include "Events.h"
+#include "Viewport.h"
+#include "FrameTableInc.h"
+#include "Math.h"
+#include "SpriteObject.h"
+#include "ObjectList.h"
+#include "Chest.h"
+#include "PaletteManager.h"
+#include "DecorationList.h"
+#include "SaveLoad.h"
+#include "stru123.h"
+#include "Time.h"
+#include "IconFrameTable.h"
+#include "Awards.h"
+#include "Autonotes.h"
+#include "stru160.h"
+#include "stru279.h"
+#include "TurnEngine.h"
+#include "stru277.h"
+#include "Weather.h"
+#include "stru272.h"
+#include "stru298.h"
+#include "StorylineTextTable.h"
+#include "Events2D.h"
+#include "texts.h"
+#include "stru351.h"
+
+#include "mm7_data.h"
+
+
+
+
+
+//----- (00419719) --------------------------------------------------------
+char __fastcall CharacterUI_SkillsTab_Draw(unsigned int uPlayerID)
+    {
+    unsigned int v1; // esi@1
+    Player *pPlayer; // ebp@1
+    unsigned int v3; // eax@1
+    signed int v4; // ecx@1
+    int v5; // edi@3
+    GUIWindow *v6; // ecx@3
+    int v7; // eax@4
+    GUIButton *v8; // edx@5
+    int v9; // eax@7
+    unsigned int v10; // ecx@9
+    unsigned __int16 v11; // ax@9
+    int v12; // eax@9
+    unsigned __int8 v13; // cf@12
+    unsigned __int8 v14; // zf@12
+    unsigned int v15; // eax@12
+    char *v16; // ecx@22
+    GUIWindow *v17; // ecx@33
+    int v18; // edx@34
+    GUIButton *v19; // eax@35
+    int v20; // edx@37
+    unsigned __int16 v21; // cx@39
+    unsigned int v22; // eax@39
+    int v23; // edi@39
+    unsigned int v24; // eax@42
+    char v25; // sf@52
+    char *v26; // ecx@52
+    int v27; // edi@63
+    GUIWindow *v28; // ecx@63
+    int v29; // edx@64
+    GUIButton *v30; // eax@65
+    int v31; // edx@67
+    unsigned int v32; // ecx@69
+    int v33; // eax@69
+    unsigned int v34; // eax@72
+    char *v35; // ecx@82
+    GUIWindow *v36; // ecx@93
+    int v37; // edx@94
+    GUIButton *v38; // eax@94
+    int v39; // edx@97
+    unsigned __int16 v40; // cx@99
+    unsigned int v41; // eax@99
+    int v42; // edi@99
+    unsigned int v43; // eax@102
+    char *v44; // ecx@112
+    char *v46; // [sp-Ch] [bp-4Ch]@19
+    char *v47; // [sp-Ch] [bp-4Ch]@49
+    char *v48; // [sp-Ch] [bp-4Ch]@79
+    char *v49; // [sp-Ch] [bp-4Ch]@109
+    unsigned int v50; // [sp-8h] [bp-48h]@19
+    unsigned int v51; // [sp-8h] [bp-48h]@49
+    unsigned int v52; // [sp-8h] [bp-48h]@79
+    unsigned int v53; // [sp-8h] [bp-48h]@109
+    int v54; // [sp-4h] [bp-44h]@19
+    int v55; // [sp-4h] [bp-44h]@49
+    int v56; // [sp-4h] [bp-44h]@79
+    int v57; // [sp-4h] [bp-44h]@109
+    unsigned int v58; // [sp+10h] [bp-30h]@9
+    unsigned int v59; // [sp+10h] [bp-30h]@39
+    unsigned int v60; // [sp+10h] [bp-30h]@69
+    unsigned int v61; // [sp+10h] [bp-30h]@99
+    int v62; // [sp+14h] [bp-2Ch]@4
+    int v63; // [sp+14h] [bp-2Ch]@34
+    int v64; // [sp+14h] [bp-2Ch]@64
+    int v65; // [sp+14h] [bp-2Ch]@94
+    signed int i; // [sp+18h] [bp-28h]@4
+    signed int v67; // [sp+18h] [bp-28h]@34
+    signed int v68; // [sp+18h] [bp-28h]@64
+    signed int v69; // [sp+18h] [bp-28h]@94
+    int v70; // [sp+1Ch] [bp-24h]@3
+    int v71; // [sp+1Ch] [bp-24h]@33
+    int v72; // [sp+1Ch] [bp-24h]@63
+    int v73; // [sp+1Ch] [bp-24h]@93
+    int uY; // [sp+20h] [bp-20h]@9
+    int uYa; // [sp+20h] [bp-20h]@33
+    int uYb; // [sp+20h] [bp-20h]@69
+    int uYc; // [sp+20h] [bp-20h]@93
+    unsigned int a5; // [sp+24h] [bp-1Ch]@1
+    unsigned int v79; // [sp+28h] [bp-18h]@1
+    int *v80; // [sp+2Ch] [bp-14h]@3
+    int *v81; // [sp+2Ch] [bp-14h]@33
+    int *v82; // [sp+2Ch] [bp-14h]@63
+    int *v83; // [sp+2Ch] [bp-14h]@93
+    unsigned int v84; // [sp+30h] [bp-10h]@1
+    int v85; // [sp+34h] [bp-Ch]@1
+    unsigned int v86; // [sp+38h] [bp-8h]@1
+    unsigned __int16 v87; // [sp+3Ch] [bp-4h]@9
+    char *v88; // [sp+3Ch] [bp-4h]@24
+    char *v89; // [sp+3Ch] [bp-4h]@54
+    unsigned __int16 v90; // [sp+3Ch] [bp-4h]@69
+    char *v91; // [sp+3Ch] [bp-4h]@84
+    char *v92; // [sp+3Ch] [bp-4h]@114
+
+    v1 = uPlayerID;
+    a5 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+    v84 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xAFu, 0xFFu);
+    v85 = pGUIWindow_CurrentMenu->pCurrentPosActiveItem;
+    v86 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0, 0);
+    v79 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0);
+    pPlayer = &pParty->pPlayers[v1-1];
+    v3 = pIcons_LOD->LoadTexture("fr_skill", TEXTURE_16BIT_PALETTE);
+    pRenderer->DrawTextureIndexed(8u, 8u, (Texture *)(v3 != -1 ? (int)&pIcons_LOD->pTextures[v3] : 0));
+    v4 = v79;
+    if ( !pPlayer->uSkillPoints )
+        v4 = 65535;
+    sprintf(
+        pTmpBuf,
+        "%s \f%05d%s\f00000\r177%s: \f%05d%d\f00000",
+        pGlobalTXT_LocalizationStrings[206],        // Skills for
+        a5,
+        pPlayer->pName,
+        pGlobalTXT_LocalizationStrings[207],        // Skill Points
+        v4,
+        pPlayer->uSkillPoints);
+    pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, 18, 0, pTmpBuf, 0, 0, 0);
+    v5 = 2 * LOBYTE(pFontLucida->uFontHeight) + 13;// Weapons,   Level
+    sprintf(pTmpBuf, "%s\r400%s", pGlobalTXT_LocalizationStrings[242], pGlobalTXT_LocalizationStrings[131]);
+    pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, v5, a5, pTmpBuf, 0, 0, 0);
+    v6 = pGUIWindow_CurrentMenu;
+    v70 = 0;
+    v80 = pWeaponSkills;
+    do
+        {
+        v62 = *v80;
+        v7 = 0;
+        for ( i = 0; i < (signed int)v6->uNumControls; v7 = i++ + 1 )
+            {
+            v8 = v6->pControlsHead;
+            if ( v7 > 0 )
+                {
+                do
+                    {
+                    v8 = v8->pNext;
+                    --v7;
+                    }
+                    while ( v7 );
+                }
+            v9 = v8->field_1C;
+            if ( SBYTE1(v9) >= 0 )
+                continue;
+            BYTE1(v9) &= 0x7Fu;
+            if ( v9 != v62 )
+                continue;
+            v5 = v8->uY;
+            v10 = pPlayer->uSkillPoints;
+            ++v70;
+            v11 = pPlayer->pActiveSkills[v62];
+            v87 = pPlayer->pActiveSkills[v62];
+            v12 = v11 & 0x3F;
+            v58 = 0;
+            uY = v12;
+            if ( v10 >= v12 + 1 )
+                v58 = v84;
+            if ( v85 == i )
+                {
+                v13 = v10 < v12;
+                v14 = v10 == v12;
+                v15 = v86;
+                if ( !(v13 | v14) )
+                    v15 = v79;
+                v58 = v15;
+                }
+            else
+                {
+                v15 = v58;
+                }
+            if ( HIBYTE(v87) & 1 )
+                {
+                if ( !v15 )
+                    v15 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+                v54 = uY;
+                v50 = v58;
+                v46 = pGlobalTXT_LocalizationStrings[96];
+                }
+            else
+                {
+                if ( !(v87 & 0xC0) )
+                    {
+                    sprintf(pTmpBuf, "%s\r400%2d", pSkillNames[v62], uY);
+                    pGUIWindow_CurrentMenu->DrawText(pFontLucida, 24, v5, v58, pTmpBuf, 0, 0, 0);
+                    v6 = pGUIWindow_CurrentMenu;
+                    continue;
+                    }
+                v16 = pGlobalTXT_LocalizationStrings[432];
+                if ( (v87 & 0x80u) == 0 )
+                    v16 = pGlobalTXT_LocalizationStrings[433];
+                v88 = v16;
+                if ( !v15 )
+                    v15 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+                v54 = uY;
+                v50 = v58;
+                v46 = v88;
+                }
+            sprintf(pTmpBuf, "%s ", pSkillNames[v62], v15, v46, v50, v54);
+            pGUIWindow_CurrentMenu->DrawText(pFontLucida, 24, v5, v58, pTmpBuf, 0, 0, 0);
+            v6 = pGUIWindow_CurrentMenu;
+            }
+        ++v80;
+        }
+        while ( v80 <= &pWeaponSkills[8]);
+        if ( !v70 )
+            {
+            v5 = v5 + LOBYTE(pFontLucida->uFontHeight) - 3;
+            v6->DrawText(pFontLucida, 24, v5, 0, pGlobalTXT_LocalizationStrings[153], 0, 0, 0);
+            }
+        uYa = v5 + 2 * LOBYTE(pFontLucida->uFontHeight) - 10;
+        sprintf(pTmpBuf, "%s\r400%s", pGlobalTXT_LocalizationStrings[138], pGlobalTXT_LocalizationStrings[131]);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, uYa, a5, pTmpBuf, 0, 0, 0);
+        v17 = pGUIWindow_CurrentMenu;
+        v71 = 0;
+        v81 = pMagicSkills;
+        do
+            {
+            v18 = 0;
+            v67 = 0;
+            v63 = *v81;
+            while ( v67 < (signed int)v17->uNumControls )
+                {
+                v19 = v17->pControlsHead;
+                if ( v18 > 0 )
+                    {
+                    do
+                        {
+                        v19 = v19->pNext;
+                        --v18;
+                        }
+                        while ( v18 );
+                    }
+                v20 = v19->field_1C;
+                if ( SBYTE1(v20) >= 0 || (BYTE1(v20) &= 0x7Fu, v20 != v63) )
+                    {
+                    v18 = v67++ + 1;
+                    continue;
+                    }
+                ++v71;
+                uYa = v19->uY;
+                v21 = pPlayer->pActiveSkills[v63];
+                v22 = pPlayer->uSkillPoints;
+                v23 = pPlayer->pActiveSkills[v63] & 0x3F;
+                v59 = 0;
+                if ( v22 >= v23 + 1 )
+                    v59 = v84;
+                if ( v85 == v67 )
+                    {
+                    v13 = v22 < v23;
+                    v14 = v22 == v23;
+                    v24 = v86;
+                    if ( !(v13 | v14) )
+                        v24 = v79;
+                    v59 = v24;
+                    }
+                else
+                    {
+                    v24 = v59;
+                    }
+                if ( HIBYTE(v21) & 1 )
+                    {
+                    if ( !v24 )
+                        v24 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+                    v55 = v23;
+                    v51 = v59;
+                    v47 = pGlobalTXT_LocalizationStrings[96];
+                    }
+                else
+                    {
+                    if ( !(v21 & 0xC0) )
+                        {
+                        sprintf(pTmpBuf, "%s\r400%2d", pSkillNames[v63], v23);
+                        pGUIWindow_CurrentMenu->DrawText(pFontLucida, 24, uYa, v59, pTmpBuf, 0, 0, 0);
+                        v17 = pGUIWindow_CurrentMenu;
+                        v18 = v67++ + 1;
+                        continue;
+                        }
+                    v25 = (v21 & 0x80u) != 0;
+                    v26 = pGlobalTXT_LocalizationStrings[432];
+                    if ( !v25 )
+                        v26 = pGlobalTXT_LocalizationStrings[433];
+                    v89 = v26;
+                    if ( !v24 )
+                        v24 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+                    v55 = v23;
+                    v51 = v59;
+                    v47 = v89;
+                    }
+                sprintf(pTmpBuf, "%s ", pSkillNames[v63], v24, v47, v51, v55);
+                //LABEL_58:
+                pGUIWindow_CurrentMenu->DrawText(pFontLucida, 24, uYa, v59, pTmpBuf, 0, 0, 0);
+                v17 = pGUIWindow_CurrentMenu;
+                //LABEL_59:
+                v18 = v67++ + 1;
+                }
+            ++v81;
+            }
+            while ( v81 <= &pMagicSkills[8]);
+            if ( !v71 )
+                v17->DrawText(
+                pFontLucida,
+                24,
+                LOBYTE(pFontLucida->uFontHeight) + uYa - 3,
+                0,
+                pGlobalTXT_LocalizationStrings[153],
+                0,
+                0,
+                0);
+            v27 = 2 * LOBYTE(pFontLucida->uFontHeight) + 13;
+            sprintf(pTmpBuf, "%s\r177%s", pGlobalTXT_LocalizationStrings[11], pGlobalTXT_LocalizationStrings[131]);
+            pGUIWindow_CurrentMenu->DrawText(pFontArrus, 248, v27, a5, pTmpBuf, 0, 0, 0);
+            v28 = pGUIWindow_CurrentMenu;
+            v72 = 0;
+            v82 = pArmorSkills;
+            do
+                {
+                v29 = 0;
+                v68 = 0;
+                v64 = *v82;
+                while ( v68 < (signed int)v28->uNumControls )
+                    {
+                    v30 = v28->pControlsHead;
+                    if ( v29 > 0 )
+                        {
+                        do
+                            {
+                            v30 = v30->pNext;
+                            --v29;
+                            }
+                            while ( v29 );
+                        }
+                    v31 = v30->field_1C;
+                    if ( SBYTE1(v31) >= 0 || (BYTE1(v31) &= 0x7Fu, v31 != v64) )
+                        {
+                        v29 = v68++ + 1;
+                        continue;
+                        }
+                    v27 = v30->uY;
+                    ++v72;
+                    v60 = 0;
+                    v90 = pPlayer->pActiveSkills[v64];
+                    v32 = pPlayer->uSkillPoints;
+                    v33 = pPlayer->pActiveSkills[v64] & 0x3F;
+                    uYb = v33;
+                    if ( v32 >= v33 + 1 )
+                        v60 = v84;
+                    if ( v85 == v68 )
+                        {
+                        v13 = v32 < v33;
+                        v14 = v32 == v33;
+                        v34 = v86;
+                        if ( !(v13 | v14) )
+                            v34 = v79;
+                        v60 = v34;
+                        }
+                    else
+                        {
+                        v34 = v60;
+                        }
+                    if ( (pPlayer->pActiveSkills[v64] >> 8) & 1 )
+                        {
+                        if ( !v34 )
+                            v34 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+                        v56 = uYb;
+                        v52 = v60;
+                        v48 = pGlobalTXT_LocalizationStrings[96];
+                        }
+                    else
+                        {
+                        if ( !(v90 & 0xC0) )
+                            {
+                            sprintf(pTmpBuf, "%s\r177%2d", pSkillNames[v64], uYb);
+                            pGUIWindow_CurrentMenu->DrawText(pFontLucida, 248, v27, v60, pTmpBuf, 0, 0, 0);
+                            v28 = pGUIWindow_CurrentMenu;
+                            v29 = v68++ + 1;
+                            continue;
+                            }
+                        v35 = pGlobalTXT_LocalizationStrings[432];
+                        if ( (v90 & 0x80u) == 0 )
+                            v35 = pGlobalTXT_LocalizationStrings[433];
+                        v91 = v35;
+                        if ( !v34 )
+                            v34 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+                        v56 = uYb;
+                        v52 = v60;
+                        v48 = v91;
+                        }
+                    sprintf(pTmpBuf, "%s ", pSkillNames[v64], v34, v48, v52, v56);
+                    //LABEL_88:
+                    pGUIWindow_CurrentMenu->DrawText(pFontLucida, 248, v27, v60, pTmpBuf, 0, 0, 0);
+                    v28 = pGUIWindow_CurrentMenu;
+                    //LABEL_89:
+                    v29 = v68++ + 1;
+                    }
+                ++v82;
+                }
+                while ( v82 <= &pArmorSkills[4]);
+                if ( !v72 )
+                    {
+                    v27 = v27 + LOBYTE(pFontLucida->uFontHeight) - 3;
+                    v28->DrawText(pFontLucida, 248, v27, 0, pGlobalTXT_LocalizationStrings[153], 0, 0, 0);
+                    }
+                uYc = v27 + 2 * LOBYTE(pFontLucida->uFontHeight) - 10;
+                sprintf(pTmpBuf, "%s\r177%s", pGlobalTXT_LocalizationStrings[143], pGlobalTXT_LocalizationStrings[131]);
+                pGUIWindow_CurrentMenu->DrawText(pFontArrus, 248, uYc, a5, pTmpBuf, 0, 0, 0);
+                v36 = pGUIWindow_CurrentMenu;
+                v73 = 0;
+                v83 = pMiscSkills;
+                do
+                    {
+                    v37 = 0;
+                    v69 = 0;
+                    v38 = (GUIButton *)*v83;
+                    v65 = *v83;
+                    while ( v69 < (signed int)v36->uNumControls )
+                        {
+                        v38 = v36->pControlsHead;
+                        if ( v37 > 0 )
+                            {
+                            do
+                                {
+                                v38 = v38->pNext;
+                                --v37;
+                                }
+                                while ( v37 );
+                            }
+                        v39 = v38->field_1C;
+                        if ( SBYTE1(v39) >= 0 || (BYTE1(v39) &= 0x7Fu, v39 != v65) )
+                            {
+                            //goto LABEL_119;
+                            v37 = v69++ + 1;
+                            continue;
+                            }
+                        ++v73;
+                        uYc = v38->uY;
+                        v40 = pPlayer->pActiveSkills[v65];
+                        v41 = pPlayer->uSkillPoints;
+                        v42 = pPlayer->pActiveSkills[v65] & 0x3F;
+                        v61 = 0;
+                        if ( v41 >= v42 + 1 )
+                            v61 = v84;
+                        if ( v85 == v69 )
+                            {
+                            v13 = v41 < v42;
+                            v14 = v41 == v42;
+                            v43 = v86;
+                            if ( !(v13 | v14) )
+                                v43 = v79;
+                            v61 = v43;
+                            }
+                        else
+                            {
+                            v43 = v61;
+                            }
+                        if ( HIBYTE(v40) & 1 )
+                            {
+                            if ( !v43 )
+                                v43 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+                            v57 = v42;
+                            v53 = v61;
+                            v49 = pGlobalTXT_LocalizationStrings[96];
+                            }
+                        else
+                            {
+                            if ( !(v40 & 0xC0) )
+                                {
+                                sprintf(pTmpBuf, "%s\r177%2d", pSkillNames[v65], v42);
+                                LOBYTE(v38) = pGUIWindow_CurrentMenu->DrawText(pFontLucida, 248, uYc, v61, pTmpBuf, 0, 0, 0);
+                                v36 = pGUIWindow_CurrentMenu;
+                                v37 = v69++ + 1;
+                                continue;
+                                }
+                            v25 = (v40 & 0x80u) != 0;
+                            v44 = pGlobalTXT_LocalizationStrings[432];
+                            if ( !v25 )
+                                v44 = pGlobalTXT_LocalizationStrings[433];
+                            v92 = v44;
+                            if ( !v43 )
+                                v43 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+                            v57 = v42;
+                            v53 = v61;
+                            v49 = v92;
+                            }
+                        sprintf(pTmpBuf, "%s ", pSkillNames[v65], v43, v49, v53, v57);
+                        LOBYTE(v38) = pGUIWindow_CurrentMenu->DrawText(pFontLucida, 248, uYc, v61, pTmpBuf, 0, 0, 0);
+                        v36 = pGUIWindow_CurrentMenu;
+                        v37 = v69++ + 1;
+                        }
+                    ++v83;
+                    }
+                    while ( v83 <= &pMiscSkills[11]);
+                    if ( !v73 )
+                        LOBYTE(v38) = v36->DrawText(
+                        pFontLucida,
+                        248,
+                        LOBYTE(pFontLucida->uFontHeight) + uYc - 3,
+                        0,
+                        pGlobalTXT_LocalizationStrings[153],
+                        0,
+                        0,
+                        0);
+                    return (char)v38;
+    }
+
+//----- (0041A000) --------------------------------------------------------
+void CharacterUI_AwardsTab_Draw( unsigned int uPlayerID )
+    {
+    //unsigned int v1; // esi@1
+    unsigned int v2; // ebx@1
+    unsigned int award_texture_id; // eax@1
+    unsigned int result; // eax@1
+    int v5; // eax@15
+    char *v6; // ebx@15
+    int v7; // eax@23
+    int v8; // eax@24
+    int v9; // eax@25
+    int v10; // eax@27
+    int v11; // eax@32
+    int v12; // eax@33
+    int v13; // eax@34
+    signed int v14; // eax@43
+    unsigned int v15; // eax@43
+    int v16; // eax@43
+    int v17; // [sp-4h] [bp-D4h]@16
+    char Source[100]; // [sp+Ch] [bp-C4h]@1
+    GUIWindow a1; // [sp+70h] [bp-60h]@1
+    unsigned int v20; // [sp+C4h] [bp-Ch]@15
+    int v21; // [sp+C8h] [bp-8h]@14
+    int v22; // [sp+CCh] [bp-4h]@40
+
+    auto player = &pParty->pPlayers[uPlayerID - 1];
+    //v1 = uPlayerID;
+    v2 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+    award_texture_id = pIcons_LOD->LoadTexture("fr_award", TEXTURE_16BIT_PALETTE);
+    pRenderer->DrawTextureIndexed(8u, 8u, (Texture *)(award_texture_id != -1 ? &pIcons_LOD->pTextures[award_texture_id] : 0));
+    sprintfex(pTmpBuf, "%s \f%05d", pGlobalTXT_LocalizationStrings[LOCSTR_AVARDS_FOR], v2);
+    sprintfex(Source, pGlobalTXT_LocalizationStrings[LOCSTR_S_THE_S], player->pName, pClassNames[player->classType]);
+    strcat(pTmpBuf, Source);
+    strcat(pTmpBuf, "\f00000");
+    pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, 18, 0, pTmpBuf, 0, 0, 0);
+    result = dword_506528;
+    a1.uFrameX = 12;
+    a1.uFrameY = 48;
+    a1.uFrameWidth = 424;
+    a1.uFrameHeight = 290;
+    a1.uFrameZ = 435;
+    a1.uFrameW = 337;
+    if ( dword_506544 && awards_count + dword_506528 < awards_count2 )
+        result = dword_506528++ + 1;
+    if ( dword_506548 && result )
+        {
+        --result;
+        dword_506528 = result;
+        }
+    if ( dword_50651C < 0 )
+        {
+        result += awards_count;
+        dword_506528 = result;
+        if ( (signed int)(awards_count + result) > awards_count2 )
+            {
+            result = awards_count2 - awards_count;
+            dword_506528 = result;
+            }
+        }
+    else if ( dword_50651C > 0 )
+        {
+        result -= awards_count;
+        dword_506528 = result;
+        if ( (result & 0x80000000u) != 0 )
+            {
+            result = 0;
+            dword_506528 = result;
+            }
+        }
+    //LABEL_14:
+    dword_506544 = 0;
+    dword_506548 = 0;
+    awards_count = 0;
+    dword_50651C = 0;
+    v21 = result;
+    if ( (signed int)result < awards_count2 )
+        {
+        while ( 1 )
+            {
+            v5 = achievedAwardsIndex[v21];
+            v20 = achievedAwardsIndex[v21];
+            v6 = (char *)pAwards[v20].pText;//(char *)dword_723E80_award_related[v20 / 4];
+            if ( v5 != 1 )
+                {
+                if (!( (v5 < 85 || v5 > 91) && (v5 < 103 || v5 > 104) ))
+                    {
+                    if ( v5 > 89 )
+                        {
+                        if ( v5 == 90 )
+                            {
+                            v10 = (unsigned __int8)pParty->uNumArenaKnightWins;
+                            v22 = v10;
+                            }
+                        else if ( v5 == 91 )
+                            {
+                            v10 = (unsigned __int8)pParty->uNumArenaLordWins;
+                            v22 = v10;
+                            }
+                        else if ( v5 == 103 )
+                            {
+                            v10 = pParty->field_874;
+                            v22 = v10;
+                            }
+                        else if ( v5 == 104 )
+                            {
+                            v10 = pParty->field_878;
+                            v22 = v10;
+                            }
+                        }
+                    else
+                        {
+                        if ( v5 == 89 )
+                            {
+                            v10 = (unsigned __int8)pParty->uNumArenaSquireWins;
+                            v22 = v10;
+                            }
+                        else if ( v5 == 85 )
+                            {
+                            v10 = pParty->uNumDeaths;
+                            v22 = v10;
+                            }
+                        else if ( v5 == 86 )
+                            {
+                            v10 = pParty->uNumBountiesCollected;
+                            v22 = v10;
+                            }
+                        else if ( v5 == 87 )
+                            {
+                            v10 = pParty->uNumPrisonTerms;
+                            v22 = v10;
+                            }
+                        else if ( v5 == 88)
+                            {
+                            v10 = (unsigned __int8)pParty->uNumArenaPageWins;
+                            v22 = v10;
+                            }
+                        }
+                    v17 = v22;
+                    sprintf(pTmpBuf, v6, v17);
+                    v6 = pTmpBuf;
+                    }
+                }
+            else
+                {
+                v17 = pParty->uFine;
+                sprintf(pTmpBuf, v6, v17);
+                v6 = pTmpBuf;
+                }
+            v14 = pAwards[v20].uSort;//dword_723E84[v20 / 4];
+            ++awards_count;
+            v15 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(
+                pAwardsTextColors[3 * v14 % 6],
+                pAwardsTextColors[3 * v14 % 6 + 1],
+                pAwardsTextColors[3 * v14 % 6 + 2]);
+            a1.DrawText(pFontArrus, 0, 0, v15, v6, 0, 0, 0);
+            v16 = pFontArrus->CalcTextHeight(v6, &a1, 0, 0);
+            result = v16 + a1.uFrameY + 4;
+            if ( (signed int)result <= (signed int)a1.uFrameHeight )
+                {
+                ++v21;
+                a1.uFrameY = result;
+                result = v21;
+                if ( v21 < awards_count2 )
+                    continue;
+                }
+            return;
+            }
+
+        }
+    return;
+    }
+
+
+
+
+
+
+    //----- (0041A2C1) --------------------------------------------------------
+    unsigned int __fastcall GetSizeInInventorySlots(unsigned int uNumPixels)
+        {
+        if ( (signed int)uNumPixels < 14 )
+            uNumPixels = 14;
+        return ((signed int)(uNumPixels - 14) >> 5) + 1;
+        }
+
+    //----- (0041A2D1) --------------------------------------------------------
+    void __fastcall CharacterUI_InventoryTab_Draw(unsigned int uPlayerID, char a2)
+        {
+        Player *pPlayer; // esi@1
+        char v3; // bl@1
+        unsigned int v4; // eax@2
+        ItemGen *pItem; // ebx@5
+        unsigned int v6; // eax@6
+        Texture *v7; // esi@6
+        __int16 v8; // ax@6
+        signed int v9; // edi@6
+        signed int v10; // ecx@6
+        signed int v11; // edx@6
+        signed int v12; // eax@11
+        int v13; // eax@13
+        signed int v14; // edx@13
+        int v15; // eax@13
+        unsigned int v16; // ebx@15
+        unsigned int v17; // edi@15
+        Texture *pTexture; // ebx@24
+        double v19; // st7@26
+        const char *v20; // [sp-8h] [bp-40h]@20
+        Player *pPlayer2; // [sp+14h] [bp-24h]@1
+        int uTextureId; // [sp+18h] [bp-20h]@6
+        int *v23; // [sp+1Ch] [bp-1Ch]@1
+        int v24; // [sp+20h] [bp-18h]@5
+        ItemGen *pItem2; // [sp+24h] [bp-14h]@5
+        int v26; // [sp+28h] [bp-10h]@3
+        unsigned int uCellID; // [sp+2Ch] [bp-Ch]@3
+        unsigned int uCellX; // [sp+30h] [bp-8h]@5
+        unsigned int uCellY; // [sp+34h] [bp-4h]@5
+
+        v23 = pRenderer->pActiveZBuffer;
+        pPlayer = pPlayers[uPlayerID];
+        v3 = a2;
+        pPlayer2 = pPlayers[uPlayerID];
+        pRenderer->DrawTextureIndexed(8, 8, (Texture *)(uTextureID_507958 != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_507958] : 0));
+        if ( v3 )
+            {
+            v4 = pIcons_LOD->LoadTexture("fr_strip", TEXTURE_16BIT_PALETTE);
+            pRenderer->DrawTextureIndexed(8u, 0x131u, (Texture *)(v4 != -1 ? (int)&pIcons_LOD->pTextures[v4] : 0));
+            }
+        uCellID = 0;
+        v26 = (int)pPlayer->pInventoryIndices;
+        do
+            {
+            if ( *(int *)v26 > 0 )
+                {
+                v24 = *(int *)v26 - 1;
+                uCellY = 32 * (uCellID / 14) + 17;
+                pItem = &pPlayer->pInventoryItems[v24];
+                uCellX = 32 * (uCellID % 14) + 14;
+                pItem2 = pItem;
+                if ( pItem->uItemID )
+                    {
+                    v6 = pIcons_LOD->LoadTexture(pItemsTable->pItems[pItem->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
+                    uTextureId = v6;
+                    v7 = (Texture *)(v6 != -1 ? (int)&pIcons_LOD->pTextures[v6] : 0);
+                    v8 = (v6 != -1 ? pIcons_LOD->pTextures[v6].uTextureWidth : 24);
+                    v9 = v7->uTextureHeight;
+                    v10 = v7->uTextureWidth;
+                    v11 = v7->uTextureWidth;
+                    if ( v10 < 14 )
+                        v11 = 14;
+                    if ( (v11 - 14) >> 5 == 0 && v8 < 32 )
+                        uCellX += (32 - v10) / 2;
+                    v12 = v7->uTextureWidth;
+                    if ( v10 < 14 )
+                        v12 = 14;
+                    v13 = v12 - 14;
+                    v14 = v7->uTextureHeight;
+                    LOBYTE(v13) = v13 & 0xE0;
+                    v15 = v13 + 32;
+                    if ( v9 < 14 )
+                        v14 = 14;
+                    v16 = pItem->uAttributes;
+                    v17 = uCellX + ((v15 - v10) >> 1) + pSRZBufferLineOffsets[uCellY + ((((v14 - 14) & 0xFFFFFFE0) - v9 + 32) >> 1)];
+                    if ( !(v16 & 0xF0) )
+                        {
+                        if (pItem->Identified() || pCurrentScreen != SCREEN_HOUSE )
+                            {
+                            if (pItem->Broken())
+                                pRenderer->DrawTransparentRedShade(uCellX, uCellY, v7);
+                            else
+                                pRenderer->DrawTextureTransparent(uCellX, uCellY, v7);
+                            }
+                        else
+                            {
+                            pRenderer->DrawTransparentGreenShade(uCellX, uCellY, v7);
+                            }
+                        ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
+                        pPlayer = pPlayer2;
+                        //goto LABEL_34;
+                        ++uCellID;
+                        v26 += 4;
+                        continue;
+                        }
+                    if ( (unsigned __int8)(v16 & 0xF0) != 16 )
+                        {
+                        if ( (unsigned __int8)(v16 & 0xF0) == 32 )
+                            {
+                            v20 = "sp28a";
+                            pTexture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v20, TEXTURE_16BIT_PALETTE)];
+                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                            if ( dword_50C9A8 <= 0 )
+                                {
+                                dword_50C9A8 = 0;
+                                LOBYTE(pItem2->uAttributes) &= 0xFu;
+                                ptr_50C9A4 = 0;
+                                }
+                            v19 = (double)GetTickCount() * 0.1;
+                            pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, (signed __int64)v19, 0, 255);
+                            ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
+                            pPlayer = pPlayer2;
+                            //goto LABEL_34;
+                            ++uCellID;
+                            v26 += 4;
+                            continue;
+                            }
+                        if ( (unsigned __int8)(v16 & 0xF0) == 64 )
+                            {
+                            v20 = "sp30a";
+                            pTexture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v20, TEXTURE_16BIT_PALETTE)];
+                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                            if ( dword_50C9A8 <= 0 )
+                                {
+                                dword_50C9A8 = 0;
+                                LOBYTE(pItem2->uAttributes) &= 0xFu;
+                                ptr_50C9A4 = 0;
+                                }
+                            v19 = (double)GetTickCount() * 0.1;
+                            pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, (signed __int64)v19, 0, 255);
+                            ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
+                            pPlayer = pPlayer2;
+                            //goto LABEL_34;
+                            ++uCellID;
+                            v26 += 4;
+                            continue;
+                            }
+                        if ( (unsigned __int8)(v16 & 0xF0) == 128 )
+                            {
+                            v20 = "sp91a";
+                            pTexture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v20, TEXTURE_16BIT_PALETTE)];
+                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                            if ( dword_50C9A8 <= 0 )
+                                {
+                                dword_50C9A8 = 0;
+                                LOBYTE(pItem2->uAttributes) &= 0xFu;
+                                ptr_50C9A4 = 0;
+                                }
+                            v19 = (double)GetTickCount() * 0.1;
+                            pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, (signed __int64)v19, 0, 255);
+                            ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
+                            pPlayer = pPlayer2;
+                            //goto LABEL_34;
+                            ++uCellID;
+                            v26 += 4;
+                            continue;
+                            }
+                        }
+                    v20 = "sptext01";
+                    pTexture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v20, TEXTURE_16BIT_PALETTE)];
+                    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                    if ( dword_50C9A8 <= 0 )
+                        {
+                        dword_50C9A8 = 0;
+                        LOBYTE(pItem2->uAttributes) &= 0xFu;
+                        ptr_50C9A4 = 0;
+                        }
+                    v19 = (double)GetTickCount() * 0.1;
+                    pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, (signed __int64)v19, 0, 255);
+                    ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
+                    pPlayer = pPlayer2;
+                    }
+                }
+            //LABEL_34:
+            ++uCellID;
+            v26 += 4;
+            }
+            while ( uCellID < 126 );
+        }
+
+    //----- (0041A556) --------------------------------------------------------
+    void __cdecl draw_leather()
+        {
+        pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->GetTexture(uTextureID_Leather));
+        }
+
+    //----- (0041A57E) --------------------------------------------------------
+    void QuickRefDraw()
+        {
+        unsigned int v0; // ebx@1
+        //unsigned int v1; // eax@1
+        Player *pPlayer; // ebp@2
+        int v3; // eax@6
+        int v4; // edi@6
+        unsigned int v5; // eax@7
+        unsigned int v6; // edi@9
+        unsigned int v7; // edi@11
+        signed int v8; // eax@13
+        unsigned int v9; // eax@13
+        unsigned int v10; // edi@13
+        int v11; // eax@15
+        unsigned int v12; // eax@15
+        unsigned int v13; // edi@15
+        int v14; // eax@17
+        int v15; // ST18_4@17
+        int v16; // ebx@17
+        int v17; // eax@17
+        unsigned int v18; // eax@17
+        unsigned int v19; // edi@17
+        int v20; // eax@19
+        unsigned int v21; // edi@19
+        char *v22; // eax@21
+        unsigned int v23; // edi@21
+        int v24; // eax@23
+        unsigned int v25; // edi@23
+        char *v26; // eax@25
+        unsigned int v27; // edi@25
+        int v28; // ecx@27
+        char *v29; // eax@27
+        signed int v30; // edx@27
+        unsigned int v31; // edi@31
+        unsigned int v32; // edi@33
+        const char *v33; // ST10_4@35
+        unsigned int v34; // eax@35
+        unsigned int v35; // edi@35
+        unsigned __int8 v36; // al@37
+        char *v37; // eax@38
+        int v38; // eax@41
+        signed int v39; // edi@42
+        char *v40; // eax@45
+        unsigned int v41; // eax@45
+        signed int v43; // [sp+10h] [bp-1Ch]@1
+        unsigned int v44; // [sp+14h] [bp-18h]@2
+        int v45; // [sp+18h] [bp-14h]@1
+        unsigned int v46; // [sp+1Ch] [bp-10h]@1
+        unsigned int v47; // [sp+20h] [bp-Ch]@1
+        unsigned int v48; // [sp+24h] [bp-8h]@33
+        //unsigned int v49; // [sp+28h] [bp-4h]@1
+
+        v0 = 0;
+        v47 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+        //v49 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0, 0);
+        v46 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0);
+        //v1 = pIcons_LOD->LoadTexture("quikref", TEXTURE_16BIT_PALETTE);
+        pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("quikref", TEXTURE_16BIT_PALETTE));
+        v43 = 0;
+        v45 = LOBYTE(pFontArrus->uFontHeight) + 1;
+        do
+            {
+            pPlayer = &pParty->pPlayers[v43];
+            v44 = 94 * v43 + 89;
+            if ( v43 == v0 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, 0x12u, v0, pGlobalTXT_LocalizationStrings[149], 60, v0);//Name
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 94 * v43 + 89, 0x12u, v47, pPlayer->pName, 84, v0);
+            if ( v43 == v0 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, 0x2Fu, v0, pGlobalTXT_LocalizationStrings[131], 60, v0); //Óðîâ.
+            v3 = pPlayer->GetActualLevel();
+            sprintf(pTmpBuf, "%lu", v3);
+            v4 = pPlayer->GetBaseLevel();
+            if ( pPlayer->GetActualLevel() <= v4 )
+                v5 = pPlayer->GetExperienceDisplayColor();
+            else
+                v5 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, v0);
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, 0x2Fu, v5, pTmpBuf, 84, v0);
+            v6 = v45 + 47;
+            if ( v43 == v0 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v45 + 47, v0, pGlobalTXT_LocalizationStrings[41], 60, v0);//Êëàññ
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v6, v0, pClassNames[pPlayer->classType], 84, v0);
+            v7 = v45 + v6;
+            if ( v43 == v0 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v7, v0, pGlobalTXT_LocalizationStrings[107], 60, v0);//Çäîð.
+            sprintf(pTmpBuf, "%d", pPlayer->sHealth);
+            v8 = pPlayer->GetMaxHealth();
+            v9 = UI_GetHealthManaStringColor(pPlayer->sHealth, v8);
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v7, v9, pTmpBuf, 84, v0);
+            v10 = v45 + v7;
+            if ( v43 == v0 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v10, v0, pGlobalTXT_LocalizationStrings[209], 60, v0);//Ìàíà
+            sprintf(pTmpBuf, "%d", pPlayer->sMana);
+            v11 = pPlayer->GetMaxMana();
+            v12 = UI_GetHealthManaStringColor(pPlayer->sMana, v11);
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v10, v12, pTmpBuf, 84, v0);
+            v13 = v45 + v10;
+            if ( v43 == v0 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v13, v0, pGlobalTXT_LocalizationStrings[0], 60, v0);//Êëàññ áðîíè
+            v14 = pPlayer->GetActualAC();
+            sprintf(pTmpBuf, "%d", v14);
+            v15 = v0;
+            v16 = pPlayer->GetBaseAC();
+            v17 = pPlayer->GetActualAC();
+            v18 = UI_GetHealthManaStringColor(v17, v16);
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v13, v18, pTmpBuf, 84, v15);
+            v0 = 0;
+            v19 = v45 + v13;
+            if ( !v43 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v19, 0, pGlobalTXT_LocalizationStrings[18], 60, 0);//Àòàêà
+            v20 = pPlayer->GetActualAttack(0);
+            sprintf(pTmpBuf, "%+d", v20);
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v19, 0, pTmpBuf, 84, 0);
+            v21 = v45 + v19;
+            if ( !v43 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v21, 0, pGlobalTXT_LocalizationStrings[66], 60, 0);//Ïîâð.
+            v22 = pPlayer->GetMeleeDamageString();
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v21, 0, v22, 84, 0);
+            v23 = v45 + v21;
+            if ( !v43 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v23, 0, pGlobalTXT_LocalizationStrings[203], 60, 0);// Ñòðåëÿòü
+            v24 = pPlayer->GetRangedAttack();
+            sprintf(pTmpBuf, "%+d", v24);
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v23, 0, pTmpBuf, 84, 0);
+            v25 = v45 + v23;
+            if ( !v43 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v25, 0, pGlobalTXT_LocalizationStrings[66], 60, 0);//Ïîâð.
+            v26 = pPlayer->GetRangedDamageString();
+            pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v25, 0, v26, 84, 0);
+            v27 = v45 + v25;
+            if ( !v43 )
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v27, 0, pGlobalTXT_LocalizationStrings[205], 60, 0);//Íàâûêè
+            v28 = 0;
+            v29 = (char *)pPlayer->pActiveSkills;
+            v30 = 36;
+            do
+                {
+                if ( *(short *)v29 )
+                    ++v28;
+                v29 += 2;
+                --v30;
+                }
+                while ( v30 );
+                sprintf(pTmpBuf, "%lu", v28);
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v27, 0, pTmpBuf, 84, 0);
+                v31 = v45 + v27;
+                if ( !v43 )
+                    pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v31, 0, pGlobalTXT_LocalizationStrings[168], 60, 0);//Î÷êè
+                sprintf(pTmpBuf, "%lu", pPlayer->uSkillPoints);
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v31, pPlayer->uSkillPoints != 0 ? v46 : 0, pTmpBuf, 84, 0);
+                v32 = v45 + v31;
+                v48 = pPlayer->GetMajorConditionIdx();
+                if ( !v43 )
+                    pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v32, 0, pGlobalTXT_LocalizationStrings[45], 60, 0);//Ñîñò.
+                v33 = aCharacterConditionNames[v48];
+                v34 = GetConditionDrawColor(v48);
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v32, v34, v33, 84, 0);
+                v35 = v45 + v32;
+                if ( !v43 )
+                    pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v35, 0, pGlobalTXT_LocalizationStrings[170], 60, 0);//Á.Ïðèì.
+                v36 = pPlayer->uQuickSpell;
+                if ( v36 )
+                    v37 = pSpellStats->pInfos[v36].pShortName;
+                else
+                    v37 = pGlobalTXT_LocalizationStrings[153];//Íåò
+                pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v35, 0, v37, 84, 0);
+                ++v43;
+            }
+            while ( v43 < 4 );
+
+            v38 = GetPartyReputation();
+            if ( v38 >= 0 )
+                {
+                if ( v38 <= 5 )
+                    v39 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFF, 0xFF, 0xFF);
+                else
+                    v39 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFF, 0, 0);
+                }
+            else
+                v39 = v46;
+
+            v40 = GetReputationString(v38);
+            sprintf(pTmpBuf, "%s: \f%05d%s\f00000", pGlobalTXT_LocalizationStrings[180], v39, v40);//Reputation
+            pGUIWindow_CurrentMenu->DrawText(pFontArrus, 22, 323, 0, pTmpBuf, 0, 0, 0);
+            v41 = pParty->GetPartyFame();
+            sprintf(pTmpBuf, "\r261%s: %d", pGlobalTXT_LocalizationStrings[84], v41);// Fame Ñëàâà
+            pGUIWindow_CurrentMenu->DrawText(pFontArrus, 0, 323, 0, pTmpBuf, 0, 0, 0);
+        }
+
+    //----- (0041ABFD) --------------------------------------------------------
+    void __thiscall CharacterUI_CharacterScreen_Draw(unsigned int uPlayerIdx)
+        {
+        unsigned int v1; // edi@1
+        unsigned int v2; // eax@6
+        Texture *pTexture; // ecx@6
+        GUIButton *pButton; // eax@6
+        unsigned int v5; // eax@7
+        unsigned int v6; // eax@10
+        unsigned int v7; // eax@11
+
+        v1 = uPlayerIdx;
+        if ( uPlayerIdx )
+            {
+            pRenderer->ClearZBuffer(0, 479);
+            switch ( pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] )
+                {
+            case WINDOW_CharacterWindow_Stats:                                // stats
+                sub_4196A0();
+                sub_419379();
+                CharacterUI_StatsTab_Draw(v1);
+                v7 = pIcons_LOD->LoadTexture("ib-cd1-d", TEXTURE_16BIT_PALETTE);
+                pTexture = (Texture *)(v7 != -1 ? (int)&pIcons_LOD->pTextures[v7] : 0);
+                pButton = pCharacterScreen_StatsBtn;
+                pRenderer->DrawTextureIndexed(pButton->uX, pButton->uY, pTexture);
+                break;
+            case WINDOW_CharacterWindow_Skills:                                // skills
+                if ( dword_507CC0 != uActiveCharacter )
+                    {
+                    sub_4196A0();
+                    CharacterUI_SkillScreen_Draw();
+                    }
+                sub_419379();
+                CharacterUI_SkillsTab_Draw(v1);
+                v6 = pIcons_LOD->LoadTexture("ib-cd2-d", TEXTURE_16BIT_PALETTE);
+                pTexture = (Texture *)(v6 != -1 ? (int)&pIcons_LOD->pTextures[v6] : 0);
+                pButton = pCharacterScreen_SkillsBtn;
+                pRenderer->DrawTextureIndexed(pButton->uX, pButton->uY, pTexture);
+                break;
+            case WINDOW_CharacterWindow_Awards:                                // awards
+                sub_4196A0();
+                sub_419379();
+                sub_419220();
+                CharacterUI_AwardsTab_Draw(v1);
+                v5 = pIcons_LOD->LoadTexture("ib-cd4-d", TEXTURE_16BIT_PALETTE);
+                pTexture = (Texture *)(v5 != -1 ? (int)&pIcons_LOD->pTextures[v5] : 0);
+                pButton = pCharacterScreen_AwardsBtn;
+                pRenderer->DrawTextureIndexed(pButton->uX, pButton->uY, pTexture);
+                break;
+            case WINDOW_CharacterWindow_Inventory:                                                        // inventory and other
+                sub_4196A0();
+                sub_419379();
+                CharacterUI_InventoryTab_Draw(v1, 0);
+                v2 = pIcons_LOD->LoadTexture("ib-cd3-d", TEXTURE_16BIT_PALETTE);
+                pTexture = (Texture *)(v2 != -1 ? (int)&pIcons_LOD->pTextures[v2] : 0);
+                pButton = pCharacterScreen_InventoryBtn;
+                pRenderer->DrawTextureIndexed(pButton->uX, pButton->uY, pTexture);
+                break;
+            default:
+                break;
+                }
+            if ( bRingsShownInCharScreen )
+                CharacterUI_DrawPaperdollWithRingOverlay(v1);
+            else
+                CharacterUI_DrawPaperdoll(v1);
+            }
+        }
+
+    //----- (0043CC7C) --------------------------------------------------------
+    void __fastcall CharacterUI_DrawPaperdoll(unsigned int uPlayerID)
+        {
+        //Player **ppPlayer; // esi@1
+        Player *pPlayer; // ebx@1
+        //enum CHARACTER_RACE pRace; // edi@1
+        signed int pSex; // eax@1
+        //int v5; // edi@4
+        unsigned int v6; // ecx@9
+        int v7; // ecx@10
+        unsigned int v8; // eax@14
+        int v9; // eax@15
+        int v10; // edx@15
+        int v11; // ecx@15
+        int v12; // eax@15
+        unsigned int v13; // edi@15
+        unsigned int v14; // ebx@18
+        int v15; // ecx@18
+        Texture *v16; // ebp@27
+        double v17; // st7@29
+        int v18; // edi@30
+        char *v19; // eax@30
+        Texture *v20; // edi@31
+        unsigned int v21; // eax@37
+        int v22; // edi@38
+        int v23; // eax@38
+        int v24; // ebx@38
+        int v25; // eax@38
+        LODFile_IconsBitmaps *v26; // ecx@42
+        Texture *v27; // edi@51
+        double v28; // st7@51
+        char v29; // zf@54
+        char *v30; // eax@54
+        unsigned int v31; // eax@59
+        int v32; // edx@60
+        int v33; // eax@65
+        int v34; // eax@74
+        int v35; // ebx@74
+        unsigned int v36; // ecx@74
+        int v37; // eax@74
+        LODFile_IconsBitmaps *v38; // ecx@78
+        Texture *v39; // edi@85
+        double v40; // st7@87
+        int v41; // edi@88
+        Texture *v42; // edi@89
+        unsigned int v43; // eax@93
+        int v44; // edx@94
+        int v45; // eax@98
+        int v46; // eax@106
+        int v47; // ecx@106
+        int v48; // ebx@106
+        int v49; // eax@106
+        LODFile_IconsBitmaps *v50; // ecx@110
+        Texture *v51; // edi@117
+        double v52; // st7@119
+        int v53; // edi@120
+        Texture *v54; // edi@121
+        char *v55; // eax@122
+        unsigned int v56; // eax@127
+        int v57; // edi@128
+        int v58; // ecx@128
+        int v59; // ebx@129
+        int v60; // ecx@132
+        int v61; // eax@134
+        int v62; // ecx@136
+        Texture *v63; // edi@145
+        double v64; // st7@147
+        int v65; // edi@148
+        char *v66; // eax@148
+        Texture *v67; // edi@149
+        //Player *v68; // ebx@155
+        unsigned int v69; // edx@155
+        int v70; // edx@156
+        unsigned int v71; // eax@160
+        int v72; // edi@161
+        int v73; // edx@163
+        int v74; // ecx@168
+        unsigned int v75; // ebx@170
+        int v76; // ecx@172
+        Texture *v77; // edi@181
+        double v78; // st7@183
+        int v79; // edi@184
+        char *v80; // eax@184
+        Texture *v81; // edi@185
+        unsigned int v82; // eax@192
+        int v83; // eax@193
+        int v84; // eax@197
+        int v85; // eax@197
+        int v86; // ecx@197
+        int v87; // eax@197
+        int v88; // eax@198
+        int v89; // eax@199
+        int v90; // edi@201
+        int v91; // edi@213
+        int v92; // ebx@213
+        int v93; // edi@214
+        int v94; // ebx@214
+        int v95; // eax@214
+        char *v96; // edi@226
+        double v97; // st7@228
+        int v98; // edi@229
+        char *v99; // eax@229
+        Render *v100; // ecx@229
+        Texture *v101; // edi@230
+        int v102; // edi@236
+        int v103; // eax@237
+        int v104; // ecx@237
+        int v105; // edx@237
+        int v106; // edx@238
+        int v107; // edx@239
+        int v108; // edx@240
+        int v109; // edi@250
+        char *v110; // edx@250
+        unsigned int v111; // eax@259
+        int v112; // eax@260
+        int v113; // eax@260
+        int v114; // eax@265
+        int v115; // eax@274
+        int v116; // ebx@274
+        unsigned int v117; // edi@274
+        double v118; // st7@286
+        int v119; // edi@287
+        char *v120; // eax@287
+        Texture *v121; // edi@288
+        unsigned int v122; // edi@295
+        int v123; // ebx@297
+        int v124; // edi@298
+        int v125; // ecx@303
+        int v126; // eax@312
+        unsigned int v127; // ebx@314
+        int v128; // ecx@316
+        Texture *v129; // edi@325
+        double v130; // st7@327
+        int v131; // edi@328
+        char *v132; // eax@328
+        Texture *v133; // edi@329
+        unsigned int v134; // eax@335
+        int v135; // eax@336
+        int v136; // edx@336
+        int v137; // eax@336
+        unsigned int v138; // ebx@339
+        int v139; // ecx@339
+        Texture *v140; // edi@348
+        double v141; // st7@350
+        int v142; // edi@351
+        char *v143; // eax@351
+        Texture *v144; // edi@352
+        unsigned int v145; // eax@358
+        int v146; // eax@359
+        int v147; // ecx@359
+        int v148; // eax@359
+        int v149; // edx@359
+        int v150; // ebx@362
+        int v151; // ecx@363
+        int v152; // ecx@364
+        unsigned int v153; // eax@370
+        unsigned int v154; // edi@370
+        int v155; // eax@370
+        LODFile_IconsBitmaps *v156; // ecx@374
+        Texture *v157; // ebp@381
+        double v158; // st7@383
+        Texture *v159; // edi@385
+        char *v160; // eax@386
+        unsigned int v161; // eax@393
+        int v162; // eax@394
+        unsigned int v163; // [sp-Ch] [bp-58h]@230
+        unsigned int v164; // [sp-Ch] [bp-58h]@233
+        signed int v165; // [sp-Ch] [bp-58h]@235
+        char *v166; // [sp-8h] [bp-54h]@16
+        const char *v167; // [sp-8h] [bp-54h]@23
+        const char *v168; // [sp-8h] [bp-54h]@43
+        const char *v169; // [sp-8h] [bp-54h]@79
+        const char *v170; // [sp-8h] [bp-54h]@111
+        const char *v171; // [sp-8h] [bp-54h]@141
+        const char *v172; // [sp-8h] [bp-54h]@177
+        const char *v173; // [sp-8h] [bp-54h]@222
+        int v174; // [sp-8h] [bp-54h]@228
+        unsigned int v175; // [sp-8h] [bp-54h]@230
+        unsigned int v176; // [sp-8h] [bp-54h]@233
+        signed int v177; // [sp-8h] [bp-54h]@235
+        const char *v178; // [sp-8h] [bp-54h]@242
+        const char *v179; // [sp-8h] [bp-54h]@280
+        const char *v180; // [sp-8h] [bp-54h]@321
+        char *v181; // [sp-8h] [bp-54h]@337
+        const char *v182; // [sp-8h] [bp-54h]@344
+        const char *v183; // [sp-8h] [bp-54h]@375
+        signed int v184; // [sp-4h] [bp-50h]@66
+        signed int v185; // [sp-4h] [bp-50h]@99
+        signed int v186; // [sp-4h] [bp-50h]@202
+        int v187; // [sp-4h] [bp-50h]@228
+        Texture *v188; // [sp-4h] [bp-50h]@230
+        Texture *v189; // [sp-4h] [bp-50h]@233
+        Texture *v190; // [sp-4h] [bp-50h]@235
+        signed int v191; // [sp-4h] [bp-50h]@266
+        signed int v192; // [sp-4h] [bp-50h]@304
+        unsigned int a3; // [sp+10h] [bp-3Ch]@7
+        int a3a; // [sp+10h] [bp-3Ch]@15
+        int a3b; // [sp+10h] [bp-3Ch]@38
+        unsigned int a3c; // [sp+10h] [bp-3Ch]@74
+        unsigned int a3d; // [sp+10h] [bp-3Ch]@106
+        int a3e; // [sp+10h] [bp-3Ch]@129
+        int a3f; // [sp+10h] [bp-3Ch]@168
+        unsigned int a3g; // [sp+10h] [bp-3Ch]@216
+        unsigned int a3h; // [sp+10h] [bp-3Ch]@274
+        int a3i; // [sp+10h] [bp-3Ch]@312
+        int a3j; // [sp+10h] [bp-3Ch]@336
+        int a3k; // [sp+10h] [bp-3Ch]@362
+        signed int a2; // [sp+14h] [bp-38h]@7
+        unsigned int a2a; // [sp+14h] [bp-38h]@15
+        Texture *a2b; // [sp+14h] [bp-38h]@49
+        int a2c; // [sp+14h] [bp-38h]@74
+        int a2d; // [sp+14h] [bp-38h]@106
+        int a2e; // [sp+14h] [bp-38h]@129
+        int a2f; // [sp+14h] [bp-38h]@168
+        int a2g; // [sp+14h] [bp-38h]@214
+        int a2h; // [sp+14h] [bp-38h]@274
+        Texture *a2i; // [sp+14h] [bp-38h]@284
+        int a2j; // [sp+14h] [bp-38h]@312
+        int a2k; // [sp+14h] [bp-38h]@336
+        //Player *v217; // [sp+18h] [bp-34h]@1
+        int v218; // [sp+1Ch] [bp-30h]@15
+        int v219; // [sp+1Ch] [bp-30h]@60
+        int v220; // [sp+1Ch] [bp-30h]@94
+        int v221; // [sp+1Ch] [bp-30h]@128
+        int v222; // [sp+1Ch] [bp-30h]@161
+        int v223; // [sp+1Ch] [bp-30h]@213
+        char v224; // [sp+1Ch] [bp-30h]@237
+        int v225; // [sp+1Ch] [bp-30h]@260
+        int v226; // [sp+1Ch] [bp-30h]@298
+        int v227; // [sp+1Ch] [bp-30h]@336
+        int v228; // [sp+1Ch] [bp-30h]@359
+        int v229; // [sp+20h] [bp-2Ch]@15
+        int v230; // [sp+20h] [bp-2Ch]@38
+        int v231; // [sp+20h] [bp-2Ch]@60
+        int v232; // [sp+20h] [bp-2Ch]@94
+        int v233; // [sp+20h] [bp-2Ch]@128
+        int v234; // [sp+20h] [bp-2Ch]@161
+        int v235; // [sp+20h] [bp-2Ch]@197
+        int v236; // [sp+20h] [bp-2Ch]@260
+        int v237; // [sp+20h] [bp-2Ch]@298
+        int v238; // [sp+20h] [bp-2Ch]@336
+        int pBodyComplection; // [sp+24h] [bp-28h]@6
+        int v240; // [sp+28h] [bp-24h]@7
+        unsigned int v241; // [sp+2Ch] [bp-20h]@38
+        int v242; // [sp+2Ch] [bp-20h]@197
+        unsigned int v243; // [sp+2Ch] [bp-20h]@370
+        int v244; // [sp+34h] [bp-18h]@6
+        signed int v245; // [sp+34h] [bp-18h]@361
+        unsigned int uPlayerID_; // [sp+38h] [bp-14h]@1
+        int uPlayerID_a; // [sp+38h] [bp-14h]@9
+        signed int IsDwarf; // [sp+40h] [bp-Ch]@4
+        int v249; // [sp+40h] [bp-Ch]@358
+        //signed int v250; // [sp+44h] [bp-8h]@1
+
+        pPlayer = pPlayers[uPlayerID];
+        uPlayerID_ = uPlayerID;
+        pIcons_LOD->LoadTexture("sptext01", TEXTURE_16BIT_PALETTE);
+        pSex = pPlayer->GetSexByVoice();
+        if ( pPlayer->GetRace() && pPlayer->GetRace() != 1 && pPlayer->GetRace() != 2 )
+            {
+            IsDwarf = 1;
+            pBodyComplection = (pSex != 0) + 2;
+            }
+        else
+            {
+            IsDwarf = 0;
+            pBodyComplection = pSex != 0;
+            }
+        v244 = pPlayer->uFace;
+        pRenderer->ResetClip();
+        pRenderer->DrawTextureIndexed(0x1D3u, 0, (Texture *)(uTextureID_BACKDOLL != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_BACKDOLL] : 0));//Ïîäëîæêà
+        if ( !IsPlayerWearingWatersuit[uPlayerID_] )
+            {
+            v21 = pPlayer->pEquipment.uBow; //ñíà÷àëà ðèñóåòñÿ ëóê
+            if ( !v21 )
+                goto LABEL_59;
+            v230 = pPlayer->pEquipment.uBow;
+            v22 = (int)&pPlayer->pInventoryItems[v21-1];
+            v23 = *(int *)v22;
+            v24 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][2][0] - pItemsTable->pItems[v23].uEquipX;
+            a3b = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][2][1] - pItemsTable->pItems[v23].uEquipY;
+            v241 = pIcons_LOD->LoadTexture(pItemsTable->pItems[v23].pIconName, TEXTURE_16BIT_PALETTE);
+            v25 = *(int *)(v22 + 20);
+            if ( !(*(int *)(v22 + 20) & 0xF0) )
+                {
+                if ( v25 & 2 )
+                    {
+                    v27 = (Texture *)(v241 != -1 ? (int)&pIcons_LOD->pTextures[v241] : 0);
+                    pRenderer->DrawTransparentRedShade(v24, a3b, v27);
+                    }
+                else
+                    {
+                    v29 = (v25 & 1) == 0;
+                    v30 = (char *)&pIcons_LOD->pTextures[v241];
+                    if ( v29 )
+                        {
+                        v27 = (Texture *)(v241 != -1 ? (int)v30 : 0);
+                        pRenderer->DrawTransparentGreenShade(v24, a3b, (Texture *)(v241 != -1 ? (int)v30 : 0));
+                        }
+                    else
+                        {
+                        v27 = (Texture *)(v241 != -1 ? (int)v30 : 0);
+                        pRenderer->DrawTextureTransparent(v24, a3b, (Texture *)(v241 != -1 ? (int)v30 : 0));
+                        }
+                    }
+LABEL_57:
+                if ( !bRingsShownInCharScreen )
+                    pRenderer->_4A612A(v24, a3b, v27, v230);
+LABEL_59:
+                v31 = pPlayer->pEquipment.uCloak;// ïîòîì ïëàù
+                if ( !v31 )
+                    goto LABEL_93;
+                v231 = pPlayer->pEquipment.uCloak;
+                v32 = (int)&pPlayer->pInventoryItems[v31-1];
+                v219 = v32;
+                if ( *(int *)v32 != 525 )
+                    {
+                    switch ( *(int *)v32 )
+                        {
+                    case 0x212:
+                        v184 = 6;
+                        break;
+                    case 0x223:
+                        v184 = 7;
+                        break;
+                    case 0x224:
+                        v184 = 8;
+                        break;
+                    default:
+                        if ( *(int *)v32 != 550 )
+                            {
+                            v33 = *(int *)v32 - 105;
+LABEL_72:
+                            if ( v33 < 0 || v33 >= 10 )
+                                goto LABEL_93;
+LABEL_74:
+                            v34 = v33 + 10 * pBodyComplection;
+                            v35 = paperdoll_array_511828[0][v34];//Texture_Cloak
+                            a2c = pPaperdoll_BodyX + paperdoll_Cloak[0][v34][0];
+                            v36 = pPaperdoll_BodyY + paperdoll_Cloak[0][v34][1];
+                            v37 = *(int *)(v32 + 20);
+                            a3c = v36;
+                            if ( !(v37 & 0xF0) )
+                                {
+                                v41 = v35 + 1;
+                                if ( v37 & 2 )
+                                    {
+                                    v42 = (Texture *)(v41 != 0 ? (int)&pIcons_LOD->pTextures[v35] : 0);
+                                    pRenderer->DrawTransparentRedShade(a2c, v36, v42);
+                                    }
+                                else
+                                    {
+                                    v42 = (Texture *)(v41 != 0 ? (int)&pIcons_LOD->pTextures[v35] : 0);
+                                    pRenderer->DrawTextureTransparent(a2c, v36, v42);
+                                    }
+                                if ( !bRingsShownInCharScreen )
+                                    pRenderer->_4A612A(a2c, a3c, v42, v231);
+LABEL_93:
+                                v240 = 4 * uPlayerID_ - 4;
+                                pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY,
+                                    (Texture *)(*(unsigned int *)((char *)papredoll_dbods + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dbods + v240)] : 0));
+                                v43 = pPlayer->pEquipment.uBody;// ïîòîì òåëî
+                                if ( !v43 )
+                                    goto LABEL_127;
+                                v232 = pPlayer->pEquipment.uBody;
+                                v44 = (int)&pPlayer->pInventoryItems[v43-1];
+                                v220 = v44;
+                                if ( *(int *)v44 != 504 )
+                                    {
+                                    if ( *(int *)v44 == 505 )
+                                        {
+                                        v185 = 14;
+                                        }
+                                    else
+                                        {
+                                        if ( *(int *)v44 == 516 )
+                                            {
+                                            v185 = 13;
+                                            }
+                                        else
+                                            {
+                                            if ( *(int *)v44 != 533 )
+                                                {
+                                                v45 = *(int *)v44 - 66;
+LABEL_104:
+                                                if ( v45 < 0 || v45 >= 17 )
+                                                    goto LABEL_127;
+LABEL_106:
+                                                v46 = 17 * pBodyComplection + v45;
+                                                a2d = pPaperdoll_BodyX + paperdoll_Armor[0][v46][0];
+                                                v47 = pPaperdoll_BodyY + paperdoll_Armor[0][v46][1];
+                                                v48 = paperdoll_array_511290[0][v46][0];//Texture_Armor
+                                                v49 = *(int *)(v44 + 20);
+                                                a3d = v47;
+                                                if ( !(v49 & 0xF0) )
+                                                    {
+                                                    v53 = v48 + 1;
+                                                    if ( v49 & 2 )
+                                                        {
+                                                        v54 = (Texture *)(v53 != 0 ? (int)&pIcons_LOD->pTextures[v48] : 0);
+                                                        pRenderer->DrawTransparentRedShade(a2d, v47, v54);
+                                                        }
+                                                    else
+                                                        {
+                                                        v29 = (v49 & 1) == 0;
+                                                        v55 = (char *)&pIcons_LOD->pTextures[v48];
+                                                        if ( v29 )
+                                                            {
+                                                            v54 = (Texture *)(v53 != 0 ? (int)v55 : 0);
+                                                            pRenderer->DrawTransparentGreenShade(a2d, v47, v54);
+                                                            }
+                                                        else
+                                                            {
+                                                            v54 = (Texture *)(v53 != 0 ? (int)v55 : 0);
+                                                            pRenderer->DrawTextureTransparent(a2d, v47, v54);
+                                                            }
+                                                        }
+                                                    if ( !bRingsShownInCharScreen )
+                                                        pRenderer->_4A612A(a2d, a3d, v54, v232);
+LABEL_127:
+                                                    v56 = pPlayer->pEquipment.field_20;
+                                                    if ( !v56 )
+                                                        goto LABEL_155;
+                                                    v233 = pPlayer->pEquipment.field_20;
+                                                    v57 = (int)&pPlayer->pInventoryItems[v56-1];
+                                                    v221 = v57;
+                                                    v58 = *(int *)v57;
+                                                    if ( *(int *)v57 == 529 )
+                                                        {
+                                                        a3e = pPaperdoll_BodyY + paperdoll_Boot[pBodyComplection][5][1];
+                                                        a2e = pPaperdoll_BodyX + paperdoll_Boot[pBodyComplection][5][0];
+                                                        v59 = papredoll_flying_feet[v244];
+                                                        }
+                                                    else
+                                                        {
+                                                        if ( v58 == 512 )
+                                                            {
+                                                            a3e = pPaperdoll_BodyY + paperdoll_Boot[pBodyComplection][6][1];
+                                                            a2e = pPaperdoll_BodyX + paperdoll_Boot[pBodyComplection][6][0];
+                                                            v59 = dword_511638[pBodyComplection][5];
+                                                            }
+                                                        else
+                                                            {
+                                                            v60 = v58 - 115;
+                                                            if ( v60 < 0 || v60 >= 5 )
+                                                                {
+                                                                a2e = 0;
+                                                                a3e = 0;
+                                                                v59 = dword_511638[pBodyComplection][0];
+                                                                }
+                                                            else
+                                                                {
+                                                                v61 = v60 + 7 * pBodyComplection;
+                                                                a3e = pPaperdoll_BodyY + paperdoll_Boot[0][v61][1];
+                                                                a2e = pPaperdoll_BodyX + paperdoll_Boot[0][v61][0];
+                                                                v59 = dword_511638[0][v60 + 6 * pBodyComplection];
+                                                                }
+                                                            }
+                                                        }
+                                                    v62 = *(int *)(v57 + 20);
+                                                    if ( !(*(int *)(v57 + 20) & 0xF0) )
+                                                        {
+                                                        v65 = v59 + 1;
+                                                        v66 = (char *)&pIcons_LOD->pTextures[v59];
+                                                        if ( v62 & 2 )
+                                                            {
+                                                            v67 = (Texture *)(v65 != 0 ? (int)v66 : 0);
+                                                            pRenderer->DrawTransparentRedShade(a2e, a3e, v67);
+                                                            }
+                                                        else
+                                                            {
+                                                            if ( v62 & 1 )
+                                                                {
+                                                                v67 = (Texture *)(v65 != 0 ? (int)v66 : 0);
+                                                                pRenderer->DrawTextureTransparent(a2e, a3e, v67);
+                                                                }
+                                                            else
+                                                                {
+                                                                v67 = (Texture *)(v65 != 0 ? (int)v66 : 0);
+                                                                pRenderer->DrawTransparentGreenShade(a2e, a3e, v67);
+                                                                }
+                                                            }
+                                                        if ( !bRingsShownInCharScreen )
+                                                            pRenderer->_4A612A(a2e, a3e, v67, v233);
+LABEL_155:
+                                                        v69 = pPlayer->pEquipment.uMainHand;
+                                                        uPlayerID_a = 2 * pBodyComplection;
+                                                        if ( !v69 || (v70 = *(int *)&pPlayer->pInventoryItems[v69-1], pItemsTable->pItems[v70].uEquipType != 1)
+                                                            && (pItemsTable->pItems[v70].uSkillType != 4 || pPlayer->pEquipment.uOffHand) )
+                                                            pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0],
+                                                            pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1],
+                                                            (Texture *)(*(unsigned int *)((char *)papredoll_dlads + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlads + v240)] : 0));
+                                                        v71 = pPlayer->pEquipment.uBelt;
+                                                        if ( v71 )
+                                                            {
+                                                            v234 = pPlayer->pEquipment.uBelt;
+                                                            v72 = (int)&pPlayer->pInventoryItems[v71-1];
+                                                            v222 = v72;
+                                                            if ( *(int *)v72 == 524 )
+                                                                {
+                                                                v73 = 5;
+                                                                }
+                                                            else
+                                                                {
+                                                                if ( *(int *)v72 == 535 )
+                                                                    {
+                                                                    v73 = 6;
+                                                                    goto LABEL_168;
+                                                                    }
+                                                                v73 = *(int *)v72 - 100;
+                                                                }
+                                                            if ( v73 >= 0 && v73 < 7 )
+                                                                {
+LABEL_168:
+                                                                v74 = 7 * pBodyComplection + v73;
+                                                                a2f = pPaperdoll_BodyX + paperdoll_Belt[0][v74][0];
+                                                                a3f = pPaperdoll_BodyY + paperdoll_Belt[0][v74][1];
+                                                                if ( IsDwarf != 1 || v73 == 5 )
+                                                                    v75 = stru_511718[pBodyComplection].texids[v73];
+                                                                else
+                                                                    v75 = stru_511718[pBodyComplection - 2].texids[v73];
+                                                                v76 = *(int *)&pPlayer->field_1F5[36 * v71 + 15];
+                                                                if ( !(*(int *)&pPlayer->field_1F5[36 * v71 + 15] & 0xF0) )
+                                                                    {
+                                                                    v79 = v75 + 1;
+                                                                    v80 = (char *)&pIcons_LOD->pTextures[v75];
+                                                                    if ( v76 & 2 )
+                                                                        {
+                                                                        v81 = (Texture *)(v79 != 0 ? (int)v80 : 0);
+                                                                        pRenderer->DrawTransparentRedShade(a2f, a3f, v81);
+                                                                        }
+                                                                    else
+                                                                        {
+                                                                        if ( v76 & 1 )
+                                                                            {
+                                                                            v81 = (Texture *)(v79 != 0 ? (int)v80 : 0);
+                                                                            pRenderer->DrawTextureTransparent(a2f, a3f, v81);
+                                                                            }
+                                                                        else
+                                                                            {
+                                                                            v81 = (Texture *)(v79 != 0 ? (int)v80 : 0);
+                                                                            pRenderer->DrawTransparentGreenShade(a2f, a3f, v81);
+                                                                            }
+                                                                        }
+                                                                    if ( !bRingsShownInCharScreen )
+                                                                        pRenderer->_4A612A(a2f, a3f, v81, v234);
+                                                                    goto LABEL_192;
+                                                                    }
+                                                                if ( (*(int *)&pPlayer->field_1F5[36 * v71 + 15] & 0xF0) != 16 )
+                                                                    {
+                                                                    if ( (*(int *)&pPlayer->field_1F5[36 * v71 + 15] & 0xF0) == 32 )
+                                                                        {
+                                                                        v172 = "sp28a";
+                                                                        v77 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v172, TEXTURE_16BIT_PALETTE)];
+                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                        if ( dword_50C9A8 <= 0 )
+                                                                            {
+                                                                            dword_50C9A8 = 0;
+                                                                            *(char *)(v222 + 20) &= 0xFu;
+                                                                            ptr_50C9A4 = 0;
+                                                                            }
+                                                                        v78 = (double)GetTickCount() * 0.1;
+                                                                        pRenderer->_4A63E6(a2f, a3f, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0), v77, (signed __int64)v78, 0, 255);
+                                                                        goto LABEL_192;
+                                                                        }
+                                                                    if ( (*(int *)&pPlayer->field_1F5[36 * v71 + 15] & 0xF0) == 64 )
+                                                                        {
+                                                                        v172 = "sp30a";
+                                                                        v77 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v172, TEXTURE_16BIT_PALETTE)];
+                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                        if ( dword_50C9A8 <= 0 )
+                                                                            {
+                                                                            dword_50C9A8 = 0;
+                                                                            *(char *)(v222 + 20) &= 0xFu;
+                                                                            ptr_50C9A4 = 0;
+                                                                            }
+                                                                        v78 = (double)GetTickCount() * 0.1;
+                                                                        pRenderer->_4A63E6(a2f, a3f, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0), v77, (signed __int64)v78, 0, 255);
+                                                                        goto LABEL_192;
+                                                                        }
+                                                                    if ( (*(int *)&pPlayer->field_1F5[36 * v71 + 15] & 0xF0) == 128 )
+                                                                        {
+                                                                        v172 = "sp91a";
+                                                                        v77 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v172, TEXTURE_16BIT_PALETTE)];
+                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                        if ( dword_50C9A8 <= 0 )
+                                                                            {
+                                                                            dword_50C9A8 = 0;
+                                                                            *(char *)(v222 + 20) &= 0xFu;
+                                                                            ptr_50C9A4 = 0;
+                                                                            }
+                                                                        v78 = (double)GetTickCount() * 0.1;
+                                                                        pRenderer->_4A63E6(a2f, a3f, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0), v77, (signed __int64)v78, 0, 255);
+                                                                        goto LABEL_192;
+                                                                        }
+                                                                    }
+                                                                v172 = "sptext01";
+                                                                v77 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v172, TEXTURE_16BIT_PALETTE)];
+                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                if ( dword_50C9A8 <= 0 )
+                                                                    {
+                                                                    dword_50C9A8 = 0;
+                                                                    *(char *)(v222 + 20) &= 0xFu;
+                                                                    ptr_50C9A4 = 0;
+                                                                    }
+                                                                v78 = (double)GetTickCount() * 0.1;
+                                                                pRenderer->_4A63E6(a2f, a3f, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0), v77, (signed __int64)v78, 0, 255);
+                                                                goto LABEL_192;
+                                                                }
+                                                            }
+LABEL_192:
+                                                        v82 = pPlayer->pEquipment.uMainHand;
+                                                        if ( v82 )
+                                                            {
+                                                            v83 = *(int *)&pPlayer->pInventoryItems[v82-1];
+                                                            if ( pItemsTable->pItems[v83].uEquipType == 1
+                                                                || pItemsTable->pItems[v83].uSkillType == 4 && !pPlayer->pEquipment.uOffHand )
+                                                                pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[0][uPlayerID_a],
+                                                                pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[0][uPlayerID_a + 1],
+                                                                (Texture *)(*(unsigned int *)((char *)papredoll_dlaus + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlaus + v240)] : 0));
+                                                            }
+                                                        v84 = pPlayer->pEquipment.uBody;
+                                                        v235 = v84;
+                                                        v85 = (int)((char *)pPlayer + 36 * v84);
+                                                        v242 = v85;
+                                                        v86 = *(int *)(v85 + 496);
+                                                        v87 = *(int *)(v85 + 496) - 504;
+                                                        if ( v87 )
+                                                            {
+                                                            v88 = v87 - 1;
+                                                            if ( v88 )
+                                                                {
+                                                                v89 = v88 - 11;
+                                                                if ( v89 )
+                                                                    {
+                                                                    if ( v89 != 17 )
+                                                                        {
+                                                                        v90 = v86 - 66;
+LABEL_207:
+                                                                        if ( v90 < 0 || v90 > 17 )
+                                                                            {
+LABEL_259:
+                                                                            v111 = pPlayer->pEquipment.uCloak;
+                                                                            if ( !v111 )
+                                                                                goto LABEL_293;
+                                                                            v236 = pPlayer->pEquipment.uCloak;
+                                                                            v112 = (int)&pPlayer->pInventoryItems[v111-1];
+                                                                            v225 = v112;
+                                                                            v113 = *(int *)v112;
+                                                                            if ( v113 != 525 )
+                                                                                {
+                                                                                switch ( v113 )
+                                                                                    {
+                                                                                case 530:
+                                                                                    v191 = 6;
+                                                                                    break;
+                                                                                case 547:
+                                                                                    v191 = 7;
+                                                                                    break;
+                                                                                case 548:
+                                                                                    v191 = 8;
+                                                                                    break;
+                                                                                default:
+                                                                                    if ( v113 != 550 )
+                                                                                        {
+                                                                                        v114 = v113 - 105;
+LABEL_272:
+                                                                                        if ( v114 < 0 || v114 >= 10 )
+                                                                                            goto LABEL_293;
+LABEL_274:
+                                                                                        v115 = v114 + 10 * pBodyComplection;
+                                                                                        v116 = dword_511788[v115];
+                                                                                        v115 *= 8;
+                                                                                        v117 = pPaperdoll_BodyX + *(int *)((char *)&dword_4E56B0 + v115);
+                                                                                        a2h = pPaperdoll_BodyX + *(int *)((char *)&dword_4E56B0 + v115);
+                                                                                        a3h = pPaperdoll_BodyY + *(int *)((char *)&dword_4E56B4 + v115);
+                                                                                        if ( v116 == pIcons_LOD->FindTextureByName("pending") )
+                                                                                            {
+LABEL_292:
+LABEL_293:
+                                                                                            if ( v244 == 12 || v244 == 13 )
+                                                                                                {
+                                                                                                v122 = papredoll_dbrds[v244];
+                                                                                                if ( v122 != pIcons_LOD->FindTextureByName("Pending") )
+                                                                                                    pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_Beards[2 * v244 - 24],
+                                                                                                    pPaperdoll_BodyY + pPaperdoll_Beards[2 * v244 - 23],
+                                                                                                    (Texture *)(v122 != -1 ? (int)&pIcons_LOD->pTextures[v122] : 0));
+                                                                                                }
+                                                                                            v123 = pPlayer->pEquipment.uHelm;
+                                                                                            if ( !v123 )
+                                                                                                goto LABEL_335;
+                                                                                            v237 = v123;
+                                                                                            v124 = (int)&pPlayer->pInventoryItems[v123-1];
+                                                                                            v226 = v124;
+                                                                                            if ( *(int *)v124 != 521 )
+                                                                                                {
+                                                                                                switch ( *(int *)v124 )
+                                                                                                    {
+                                                                                                case 0x20A:
+                                                                                                    v192 = 12;
+                                                                                                    break;
+                                                                                                case 0x20B:
+                                                                                                    v192 = 13;
+                                                                                                    break;
+                                                                                                case 0x214:
+                                                                                                    v192 = 14;
+                                                                                                    break;
+                                                                                                default:
+                                                                                                    if ( *(int *)v124 != 544 )
+                                                                                                        {
+                                                                                                        v125 = *(int *)v124 - 89;
+                                                                                                        if ( v125 < 0 || v125 >= 16 )
+                                                                                                            goto LABEL_335;
+                                                                                                        goto LABEL_312;
+                                                                                                        }
+                                                                                                    v192 = 15;
+                                                                                                    break;
+                                                                                                    }
+                                                                                                v125 = v192;
+LABEL_312:
+                                                                                                v126 = 2 * (v125 + 16 * pBodyComplection);
+                                                                                                a2j = pPaperdoll_BodyX + dword_4E58D0[v126];
+                                                                                                a3i = pPaperdoll_BodyY + dword_4E58D4[v126];
+                                                                                                if ( IsDwarf != 1 || *(int *)v124 != 92 )
+                                                                                                    v127 = stru_511698[0].texids[v125 + 16 * pSex];
+                                                                                                else
+                                                                                                    v127 = papredoll_dbrds[11];
+                                                                                                v128 = *(int *)(v124 + 20);
+                                                                                                if ( *(int *)(v124 + 20) & 0xF0 )
+                                                                                                    {
+                                                                                                    if ( (*(int *)(v124 + 20) & 0xF0) != 16 )
+                                                                                                        {
+                                                                                                        if ( (*(int *)(v124 + 20) & 0xF0) == 32 )
+                                                                                                            {
+                                                                                                            v180 = "sp28a";
+                                                                                                            v129 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v180, TEXTURE_16BIT_PALETTE)];
+                                                                                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                            if ( dword_50C9A8 <= 0 )
+                                                                                                                {
+                                                                                                                dword_50C9A8 = 0;
+                                                                                                                *(char *)(v226 + 20) &= 0xFu;
+                                                                                                                ptr_50C9A4 = 0;
+                                                                                                                }
+                                                                                                            v130 = (double)GetTickCount() * 0.1;
+                                                                                                            pRenderer->_4A63E6(a2j, a3i, (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0),
+                                                                                                                v129, (signed __int64)v130, 0, 255);
+                                                                                                            goto LABEL_335;
+                                                                                                            }
+                                                                                                        if ( (*(int *)(v124 + 20) & 0xF0) == 64 )
+                                                                                                            {
+                                                                                                            v180 = "sp30a";
+                                                                                                            v129 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v180, TEXTURE_16BIT_PALETTE)];
+                                                                                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                            if ( dword_50C9A8 <= 0 )
+                                                                                                                {
+                                                                                                                dword_50C9A8 = 0;
+                                                                                                                *(char *)(v226 + 20) &= 0xFu;
+                                                                                                                ptr_50C9A4 = 0;
+                                                                                                                }
+                                                                                                            v130 = (double)GetTickCount() * 0.1;
+                                                                                                            pRenderer->_4A63E6(a2j, a3i, (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0),
+                                                                                                                v129, (signed __int64)v130, 0, 255);
+                                                                                                            goto LABEL_335;
+                                                                                                            }
+                                                                                                        if ( (*(int *)(v124 + 20) & 0xF0) == 128 )
+                                                                                                            {
+                                                                                                            v180 = "sp91a";
+                                                                                                            v129 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v180, TEXTURE_16BIT_PALETTE)];
+                                                                                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                            if ( dword_50C9A8 <= 0 )
+                                                                                                                {
+                                                                                                                dword_50C9A8 = 0;
+                                                                                                                *(char *)(v226 + 20) &= 0xFu;
+                                                                                                                ptr_50C9A4 = 0;
+                                                                                                                }
+                                                                                                            v130 = (double)GetTickCount() * 0.1;
+                                                                                                            pRenderer->_4A63E6(a2j, a3i, (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0),
+                                                                                                                v129, (signed __int64)v130, 0, 255);
+                                                                                                            goto LABEL_335;
+                                                                                                            }
+                                                                                                        }
+                                                                                                    v180 = "sptext01";
+                                                                                                    v129 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v180, TEXTURE_16BIT_PALETTE)];
+                                                                                                    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                    if ( dword_50C9A8 <= 0 )
+                                                                                                        {
+                                                                                                        dword_50C9A8 = 0;
+                                                                                                        *(char *)(v226 + 20) &= 0xFu;
+                                                                                                        ptr_50C9A4 = 0;
+                                                                                                        }
+                                                                                                    v130 = (double)GetTickCount() * 0.1;
+                                                                                                    pRenderer->_4A63E6(a2j, a3i, (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0),
+                                                                                                        v129, (signed __int64)v130, 0, 255);
+                                                                                                    goto LABEL_335;
+                                                                                                    }
+                                                                                                v131 = v127 + 1;
+                                                                                                v132 = (char *)&pIcons_LOD->pTextures[v127];
+                                                                                                if ( v128 & 2 )
+                                                                                                    {
+                                                                                                    v133 = (Texture *)(v131 != 0 ? (int)v132 : 0);
+                                                                                                    pRenderer->DrawTransparentRedShade(a2j, a3i, v133);
+                                                                                                    }
+                                                                                                else
+                                                                                                    {
+                                                                                                    if ( v128 & 1 )
+                                                                                                        {
+                                                                                                        v133 = (Texture *)(v131 != 0 ? (int)v132 : 0);
+                                                                                                        pRenderer->DrawTextureTransparent(a2j, a3i, v133);
+                                                                                                        }
+                                                                                                    else
+                                                                                                        {
+                                                                                                        v133 = (Texture *)(v131 != 0 ? (int)v132 : 0);
+                                                                                                        pRenderer->DrawTransparentGreenShade(a2j, a3i, v133);
+                                                                                                        }
+                                                                                                    }
+                                                                                                if ( !bRingsShownInCharScreen )
+                                                                                                    pRenderer->_4A612A(a2j, a3i, v133, v237);
+LABEL_335:
+                                                                                                v134 = pPlayer->pEquipment.uMainHand;
+                                                                                                if ( !v134 )
+                                                                                                    goto LABEL_358;
+                                                                                                v238 = pPlayer->pEquipment.uMainHand;
+                                                                                                v135 = (int)&pPlayer->pInventoryItems[v134-1];
+                                                                                                v227 = v135;
+                                                                                                v136 = *(int *)v135;
+                                                                                                v137 = *(int *)v135;
+                                                                                                a2k = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[v137].uEquipX;
+                                                                                                a3j = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[v137].uEquipY;
+                                                                                                if ( v136 == 64 )
+                                                                                                    v181 = "item64v1";
+                                                                                                else
+                                                                                                    v181 = pItemsTable->pItems[v137].pIconName;
+                                                                                                v138 = pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE);
+                                                                                                v139 = *(int *)(v227 + 20);
+                                                                                                if ( !(*(int *)(v227 + 20) & 0xF0) )
+                                                                                                    {
+                                                                                                    v142 = v138 + 1;
+                                                                                                    v143 = (char *)&pIcons_LOD->pTextures[v138];
+                                                                                                    if ( v139 & 2 )
+                                                                                                        {
+                                                                                                        v144 = (Texture *)(v142 != 0 ? (int)v143 : 0);
+                                                                                                        pRenderer->DrawTransparentRedShade(a2k, a3j, v144);
+                                                                                                        }
+                                                                                                    else
+                                                                                                        {
+                                                                                                        if ( v139 & 1 )
+                                                                                                            {
+                                                                                                            v144 = (Texture *)(v142 != 0 ? (int)v143 : 0);
+                                                                                                            pRenderer->DrawTextureTransparent(a2k, a3j, v144);
+                                                                                                            }
+                                                                                                        else
+                                                                                                            {
+                                                                                                            v144 = (Texture *)(v142 != 0 ? (int)v143 : 0);
+                                                                                                            pRenderer->DrawTransparentGreenShade(a2k, a3j, v144);
+                                                                                                            }
+                                                                                                        }
+                                                                                                    if ( !bRingsShownInCharScreen )
+                                                                                                        pRenderer->_4A612A(a2k, a3j, v144, v238);
+LABEL_358:
+                                                                                                    v145 = pPlayer->pEquipment.uOffHand;
+                                                                                                    v249 = pPlayer->pEquipment.uOffHand;
+                                                                                                    if ( !v145 )
+                                                                                                        goto LABEL_393;
+                                                                                                    v146 = (int)&pPlayer->pInventoryItems[v145-1];
+                                                                                                    v228 = v146;
+                                                                                                    v147 = *(int *)v146;
+                                                                                                    v148 = *(int *)v146;
+                                                                                                    v149 = pItemsTable->pItems[v148].uSkillType;
+                                                                                                    if ( v149 != 2 && v149 != 1 )
+                                                                                                        {
+                                                                                                        v245 = 0;
+                                                                                                        v150 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[v148].uEquipX;
+                                                                                                        a3k = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[v148].uEquipY;
+                                                                                                        goto LABEL_370;
+                                                                                                        }
+                                                                                                    v151 = v147 - 400;
+                                                                                                    v245 = 1;
+                                                                                                    if ( v151 )
+                                                                                                        {
+                                                                                                        v152 = v151 - 3;
+                                                                                                        if ( v152 )
+                                                                                                            {
+                                                                                                            if ( v152 != 12 )
+                                                                                                                {
+                                                                                                                v150 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[v148].uEquipX;
+                                                                                                                a3k = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[v148].uEquipY;
+                                                                                                                goto LABEL_370;
+                                                                                                                }
+                                                                                                            v150 = 595;
+                                                                                                            a3k = 33;
+LABEL_370:
+                                                                                                            v153 = pIcons_LOD->LoadTexture(pItemsTable->pItems[v148].pIconName, TEXTURE_16BIT_PALETTE);
+                                                                                                            v154 = v153;
+                                                                                                            v243 = v153;
+                                                                                                            v155 = *(int *)(v228 + 20);
+                                                                                                            if ( !(*(int *)(v228 + 20) & 0xF0) )
+                                                                                                                {
+                                                                                                                if ( v155 & 2 )
+                                                                                                                    {
+                                                                                                                    v159 = (Texture *)(v243 != -1 ? (int)&pIcons_LOD->pTextures[v243] : 0);
+                                                                                                                    pRenderer->DrawTransparentRedShade(v150, a3k, v159);
+                                                                                                                    }
+                                                                                                                else
+                                                                                                                    {
+                                                                                                                    v29 = (v155 & 1) == 0;
+                                                                                                                    v160 = (char *)&pIcons_LOD->pTextures[v243];
+                                                                                                                    if ( v29 )
+                                                                                                                        {
+                                                                                                                        v159 = (Texture *)(v243 != -1 ? (int)v160 : 0);
+                                                                                                                        pRenderer->DrawTransparentGreenShade(v150, a3k, (Texture *)(v243 != -1 ? (int)v160 : 0));
+                                                                                                                        }
+                                                                                                                    else
+                                                                                                                        {
+                                                                                                                        v159 = (Texture *)(v243 != -1 ? (int)v160 : 0);
+                                                                                                                        pRenderer->DrawTextureTransparent(v150, a3k, (Texture *)(v243 != -1 ? (int)v160 : 0));
+                                                                                                                        }
+                                                                                                                    }
+                                                                                                                if ( !bRingsShownInCharScreen )
+                                                                                                                    pRenderer->_4A612A(v150, a3k, v159, v249);
+                                                                                                                if ( v245 )
+                                                                                                                    pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                                                                                    pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
+                                                                                                                    (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
+                                                                                                                    + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
+                                                                                                                goto LABEL_393;
+                                                                                                                }
+                                                                                                            if ( (*(int *)(v228 + 20) & 0xF0) != 16 )
+                                                                                                                {
+                                                                                                                if ( (*(int *)(v228 + 20) & 0xF0) == 32 )
+                                                                                                                    {
+                                                                                                                    v183 = "sp28a";
+                                                                                                                    }
+                                                                                                                else
+                                                                                                                    {
+                                                                                                                    if ( (*(int *)(v228 + 20) & 0xF0) != 64 )
+                                                                                                                        {
+                                                                                                                        v156 = pIcons_LOD;
+                                                                                                                        if ( (*(int *)(v228 + 20) & 0xF0) == 128 )
+                                                                                                                            {
+                                                                                                                            v183 = "sp91a";
+                                                                                                                            v157 = &pIcons_LOD->pTextures[v156->LoadTexture(v183, TEXTURE_16BIT_PALETTE)];
+                                                                                                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                                            if ( dword_50C9A8 <= 0 )
+                                                                                                                                {
+                                                                                                                                dword_50C9A8 = 0;
+                                                                                                                                *(char *)(v228 + 20) &= 0xFu;
+                                                                                                                                ptr_50C9A4 = 0;
+                                                                                                                                }
+                                                                                                                            v158 = (double)GetTickCount() * 0.1;
+                                                                                                                            pRenderer->_4A63E6(v150, a3k, (Texture *)(v154 != -1 ? (int)&pIcons_LOD->pTextures[v154] : 0),
+                                                                                                                                v157, (signed __int64)v158, 0, 255);
+                                                                                                                            if ( v245 )
+                                                                                                                                pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                                                                                                pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
+                                                                                                                                (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
+                                                                                                                                + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
+                                                                                                                            goto LABEL_393;
+                                                                                                                            }
+                                                                                                                        v183 = "sptext01";
+                                                                                                                        v157 = &pIcons_LOD->pTextures[v156->LoadTexture(v183, TEXTURE_16BIT_PALETTE)];
+                                                                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                                        if ( dword_50C9A8 <= 0 )
+                                                                                                                            {
+                                                                                                                            dword_50C9A8 = 0;
+                                                                                                                            *(char *)(v228 + 20) &= 0xFu;
+                                                                                                                            ptr_50C9A4 = 0;
+                                                                                                                            }
+                                                                                                                        v158 = (double)GetTickCount() * 0.1;
+                                                                                                                        pRenderer->_4A63E6(v150, a3k, (Texture *)(v154 != -1 ? (int)&pIcons_LOD->pTextures[v154] : 0),
+                                                                                                                            v157, (signed __int64)v158, 0, 255);
+                                                                                                                        if ( v245 )
+                                                                                                                            pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                                                                                            pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
+                                                                                                                            (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
+                                                                                                                            + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
+                                                                                                                        goto LABEL_393;
+                                                                                                                        }
+                                                                                                                    v183 = "sp30a";
+                                                                                                                    }
+                                                                                                                v156 = pIcons_LOD;
+                                                                                                                v157 = &pIcons_LOD->pTextures[v156->LoadTexture(v183, TEXTURE_16BIT_PALETTE)];
+                                                                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                                if ( dword_50C9A8 <= 0 )
+                                                                                                                    {
+                                                                                                                    dword_50C9A8 = 0;
+                                                                                                                    *(char *)(v228 + 20) &= 0xFu;
+                                                                                                                    ptr_50C9A4 = 0;
+                                                                                                                    }
+                                                                                                                v158 = (double)GetTickCount() * 0.1;
+                                                                                                                pRenderer->_4A63E6(v150, a3k, (Texture *)(v154 != -1 ? (int)&pIcons_LOD->pTextures[v154] : 0),
+                                                                                                                    v157, (signed __int64)v158, 0, 255);
+                                                                                                                if ( v245 )
+                                                                                                                    pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                                                                                    pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
+                                                                                                                    (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
+                                                                                                                    + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
+                                                                                                                goto LABEL_393;
+                                                                                                                }
+                                                                                                            v156 = pIcons_LOD;
+                                                                                                            v183 = "sptext01";
+                                                                                                            v157 = &pIcons_LOD->pTextures[v156->LoadTexture(v183, TEXTURE_16BIT_PALETTE)];
+                                                                                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                            if ( dword_50C9A8 <= 0 )
+                                                                                                                {
+                                                                                                                dword_50C9A8 = 0;
+                                                                                                                *(char *)(v228 + 20) &= 0xFu;
+                                                                                                                ptr_50C9A4 = 0;
+                                                                                                                }
+                                                                                                            v158 = (double)GetTickCount() * 0.1;
+                                                                                                            pRenderer->_4A63E6(v150, a3k, (Texture *)(v154 != -1 ? (int)&pIcons_LOD->pTextures[v154] : 0),
+                                                                                                                v157, (signed __int64)v158, 0, 255);
+                                                                                                            if ( v245 )
+                                                                                                                pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                                                                                pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
+                                                                                                                (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
+                                                                                                                + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
+                                                                                                            goto LABEL_393;
+                                                                                                            }
+                                                                                                        a3k = 28;
+                                                                                                        }
+                                                                                                    else
+                                                                                                        {
+                                                                                                        a3k = 86;
+                                                                                                        }
+                                                                                                    v150 = 596;
+                                                                                                    goto LABEL_370;
+                                                                                                    }
+                                                                                                if ( (*(int *)(v227 + 20) & 0xF0) != 16 )
+                                                                                                    {
+                                                                                                    if ( (*(int *)(v227 + 20) & 0xF0) == 32 )
+                                                                                                        {
+                                                                                                        v182 = "sp28a";
+                                                                                                        v140 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v182, TEXTURE_16BIT_PALETTE)];
+                                                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                        if ( dword_50C9A8 <= 0 )
+                                                                                                            {
+                                                                                                            dword_50C9A8 = 0;
+                                                                                                            *(char *)(v227 + 20) &= 0xFu;
+                                                                                                            ptr_50C9A4 = 0;
+                                                                                                            }
+                                                                                                        v141 = (double)GetTickCount() * 0.1;
+                                                                                                        pRenderer->_4A63E6(a2k, a3j, (Texture *)(v138 != -1 ? (int)&pIcons_LOD->pTextures[v138] : 0),
+                                                                                                            v140, (signed __int64)v141, 0, 255);
+                                                                                                        goto LABEL_358;
+                                                                                                        }
+                                                                                                    if ( (*(int *)(v227 + 20) & 0xF0) == 64 )
+                                                                                                        {
+                                                                                                        v182 = "sp30a";
+                                                                                                        v140 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v182, TEXTURE_16BIT_PALETTE)];
+                                                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                        if ( dword_50C9A8 <= 0 )
+                                                                                                            {
+                                                                                                            dword_50C9A8 = 0;
+                                                                                                            *(char *)(v227 + 20) &= 0xFu;
+                                                                                                            ptr_50C9A4 = 0;
+                                                                                                            }
+                                                                                                        v141 = (double)GetTickCount() * 0.1;
+                                                                                                        pRenderer->_4A63E6(a2k, a3j, (Texture *)(v138 != -1 ? (int)&pIcons_LOD->pTextures[v138] : 0),
+                                                                                                            v140, (signed __int64)v141, 0, 255);
+                                                                                                        goto LABEL_358;
+                                                                                                        }
+                                                                                                    if ( (*(int *)(v227 + 20) & 0xF0) == 128 )
+                                                                                                        {
+                                                                                                        v182 = "sp91a";
+                                                                                                        v140 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v182, TEXTURE_16BIT_PALETTE)];
+                                                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                        if ( dword_50C9A8 <= 0 )
+                                                                                                            {
+                                                                                                            dword_50C9A8 = 0;
+                                                                                                            *(char *)(v227 + 20) &= 0xFu;
+                                                                                                            ptr_50C9A4 = 0;
+                                                                                                            }
+                                                                                                        v141 = (double)GetTickCount() * 0.1;
+                                                                                                        pRenderer->_4A63E6(a2k, a3j, (Texture *)(v138 != -1 ? (int)&pIcons_LOD->pTextures[v138] : 0),
+                                                                                                            v140, (signed __int64)v141, 0, 255);
+                                                                                                        goto LABEL_358;
+                                                                                                        }
+                                                                                                    }
+                                                                                                v182 = "sptext01";
+                                                                                                v140 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v182, TEXTURE_16BIT_PALETTE)];
+                                                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                if ( dword_50C9A8 <= 0 )
+                                                                                                    {
+                                                                                                    dword_50C9A8 = 0;
+                                                                                                    *(char *)(v227 + 20) &= 0xFu;
+                                                                                                    ptr_50C9A4 = 0;
+                                                                                                    }
+                                                                                                v141 = (double)GetTickCount() * 0.1;
+                                                                                                pRenderer->_4A63E6(a2k, a3j, (Texture *)(v138 != -1 ? (int)&pIcons_LOD->pTextures[v138] : 0),
+                                                                                                    v140, (signed __int64)v141, 0, 255);
+                                                                                                goto LABEL_358;
+                                                                                                }
+                                                                                            v125 = 11;
+                                                                                            if ( v125 < 0 || v125 >= 16 )
+                                                                                                goto LABEL_335;
+                                                                                            goto LABEL_312;
+                                                                                            }
+                                                                                        if ( !(*(int *)(v225 + 20) & 0xF0) )
+                                                                                            {
+                                                                                            v119 = v116 + 1;
+                                                                                            v120 = (char *)&pIcons_LOD->pTextures[v116];
+                                                                                            if ( *(int *)(v225 + 20) & 2 )
+                                                                                                {
+                                                                                                v121 = (Texture *)(v119 != 0 ? (int)v120 : 0);
+                                                                                                pRenderer->DrawTransparentRedShade(a2h, a3h, v121);
+                                                                                                }
+                                                                                            else
+                                                                                                {
+                                                                                                v121 = (Texture *)(v119 != 0 ? (int)v120 : 0);
+                                                                                                pRenderer->DrawTextureTransparent(a2h, a3h, v121);
+                                                                                                }
+                                                                                            if ( !bRingsShownInCharScreen )
+                                                                                                pRenderer->_4A612A(a2h, a3h, v121, v236);
+                                                                                            goto LABEL_292;
+                                                                                            }
+                                                                                        if ( (*(int *)(v225 + 20) & 0xF0) != 16 )
+                                                                                            {
+                                                                                            if ( (*(int *)(v225 + 20) & 0xF0) == 32 )
+                                                                                                {
+                                                                                                v179 = "sp28a";
+                                                                                                a2i = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v179, TEXTURE_16BIT_PALETTE)];
+                                                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                if ( dword_50C9A8 <= 0 )
+                                                                                                    {
+                                                                                                    dword_50C9A8 = 0;
+                                                                                                    *(char *)(v225 + 20) &= 0xFu;
+                                                                                                    ptr_50C9A4 = 0;
+                                                                                                    }
+                                                                                                v118 = (double)GetTickCount() * 0.1;
+                                                                                                pRenderer->_4A63E6(v117, a3h, (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0),
+                                                                                                    a2i, (signed __int64)v118, 0, 255);
+                                                                                                goto LABEL_292;
+                                                                                                }
+                                                                                            if ( (*(int *)(v225 + 20) & 0xF0) == 64 )
+                                                                                                {
+                                                                                                v179 = "sp30a";
+                                                                                                a2i = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v179, TEXTURE_16BIT_PALETTE)];
+                                                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                if ( dword_50C9A8 <= 0 )
+                                                                                                    {
+                                                                                                    dword_50C9A8 = 0;
+                                                                                                    *(char *)(v225 + 20) &= 0xFu;
+                                                                                                    ptr_50C9A4 = 0;
+                                                                                                    }
+                                                                                                v118 = (double)GetTickCount() * 0.1;
+                                                                                                pRenderer->_4A63E6(v117, a3h, (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0),
+                                                                                                    a2i, (signed __int64)v118, 0, 255);
+                                                                                                goto LABEL_292;
+                                                                                                }
+                                                                                            if ( (*(int *)(v225 + 20) & 0xF0) == 128 )
+                                                                                                {
+                                                                                                v179 = "sp91a";
+                                                                                                a2i = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v179, TEXTURE_16BIT_PALETTE)];
+                                                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                                if ( dword_50C9A8 <= 0 )
+                                                                                                    {
+                                                                                                    dword_50C9A8 = 0;
+                                                                                                    *(char *)(v225 + 20) &= 0xFu;
+                                                                                                    ptr_50C9A4 = 0;
+                                                                                                    }
+                                                                                                v118 = (double)GetTickCount() * 0.1;
+                                                                                                pRenderer->_4A63E6(v117, a3h, (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0),
+                                                                                                    a2i, (signed __int64)v118, 0, 255);
+                                                                                                goto LABEL_292;
+                                                                                                }
+                                                                                            }
+                                                                                        v179 = "sptext01";
+                                                                                        a2i = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v179, TEXTURE_16BIT_PALETTE)];
+                                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                        if ( dword_50C9A8 <= 0 )
+                                                                                            {
+                                                                                            dword_50C9A8 = 0;
+                                                                                            *(char *)(v225 + 20) &= 0xFu;
+                                                                                            ptr_50C9A4 = 0;
+                                                                                            }
+                                                                                        v118 = (double)GetTickCount() * 0.1;
+                                                                                        pRenderer->_4A63E6(v117, a3h, (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0),
+                                                                                            a2i, (signed __int64)v118, 0, 255);
+                                                                                        goto LABEL_292;
+                                                                                        }
+                                                                                    v191 = 9;
+                                                                                    break;
+                                                                                    }
+                                                                                v114 = v191;
+                                                                                goto LABEL_274;
+                                                                                }
+                                                                            v114 = 5;
+                                                                            goto LABEL_272;
+                                                                            }
+LABEL_209:
+                                                                        if ( pPlayer->pEquipment.uMainHand
+                                                                            && (pPlayer->GetEquippedItemEquipType(1u) == 1
+                                                                            || pPlayer->GetEquippedItemSkillType(EQUIP_TWO_HANDED) == 4
+                                                                            && !pPlayer->pEquipment.uOffHand) )
+                                                                            {
+                                                                            v91 = 17 * pBodyComplection + v90;
+                                                                            v92 = v91;
+                                                                            v223 = paperdoll_array_511290[0][v91][2];
+                                                                            if ( v223 == pIcons_LOD->FindTextureByName("pending") )
+                                                                                {
+                                                                                v93 = 2 * v91;
+                                                                                v94 = paperdoll_array_511290[0][v92][1];
+                                                                                a2g = pPaperdoll_BodyX + paperdoll_shoulder[0][0][v93];
+                                                                                v95 = paperdoll_shoulder[0][0][v93 + 1];
+                                                                                }
+                                                                            else
+                                                                                {
+                                                                                v94 = v223;
+                                                                                a2g = pPaperdoll_BodyX + dword_4E5270[2 * v91];
+                                                                                v95 = dword_4E5270[2 * v91 + 1];
+                                                                                }
+                                                                            a3g = pPaperdoll_BodyY + v95;
+                                                                            if ( v94 == pIcons_LOD->FindTextureByName("pending") )
+                                                                                goto LABEL_259;
+                                                                            if ( *(int *)(v242 + 516) & 0xF0 )
+                                                                                {
+                                                                                if ( (*(int *)(v242 + 516) & 0xF0) != 16 )
+                                                                                    {
+                                                                                    if ( (*(int *)(v242 + 516) & 0xF0) == 32 )
+                                                                                        {
+                                                                                        v173 = "sp28a";
+                                                                                        v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v173, TEXTURE_16BIT_PALETTE)];
+                                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                        if ( dword_50C9A8 <= 0 )
+                                                                                            {
+                                                                                            dword_50C9A8 = 0;
+                                                                                            *(char *)(v242 + 516) &= 0xFu;
+                                                                                            ptr_50C9A4 = 0;
+                                                                                            }
+                                                                                        v187 = 255;
+                                                                                        v174 = 0;
+                                                                                        v97 = (double)GetTickCount();
+                                                                                        pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                                                                            (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                                                                        goto LABEL_259;
+                                                                                        }
+                                                                                    if ( (*(int *)(v242 + 516) & 0xF0) == 64 )
+                                                                                        {
+                                                                                        v173 = "sp30a";
+                                                                                        v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v173, TEXTURE_16BIT_PALETTE)];
+                                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                        if ( dword_50C9A8 <= 0 )
+                                                                                            {
+                                                                                            dword_50C9A8 = 0;
+                                                                                            *(char *)(v242 + 516) &= 0xFu;
+                                                                                            ptr_50C9A4 = 0;
+                                                                                            }
+                                                                                        v187 = 255;
+                                                                                        v174 = 0;
+                                                                                        v97 = (double)GetTickCount();
+                                                                                        pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                                                                            (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                                                                        goto LABEL_259;
+                                                                                        }
+                                                                                    if ( (*(int *)(v242 + 516) & 0xF0) == 128 )
+                                                                                        {
+                                                                                        v173 = "sp91a";
+                                                                                        v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v173, TEXTURE_16BIT_PALETTE)];
+                                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                        if ( dword_50C9A8 <= 0 )
+                                                                                            {
+                                                                                            dword_50C9A8 = 0;
+                                                                                            *(char *)(v242 + 516) &= 0xFu;
+                                                                                            ptr_50C9A4 = 0;
+                                                                                            }
+                                                                                        v187 = 255;
+                                                                                        v174 = 0;
+                                                                                        v97 = (double)GetTickCount();
+                                                                                        pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                                                                            (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                                                                        goto LABEL_259;
+                                                                                        }
+                                                                                    }
+                                                                                v173 = "sptext01";
+                                                                                v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v173, TEXTURE_16BIT_PALETTE)];
+                                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                if ( dword_50C9A8 <= 0 )
+                                                                                    {
+                                                                                    dword_50C9A8 = 0;
+                                                                                    *(char *)(v242 + 516) &= 0xFu;
+                                                                                    ptr_50C9A4 = 0;
+                                                                                    }
+                                                                                v187 = 255;
+                                                                                v174 = 0;
+                                                                                v97 = (double)GetTickCount();
+                                                                                pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                                                                    (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                                                                goto LABEL_259;
+                                                                                }
+                                                                            v98 = v94 + 1;
+                                                                            v99 = (char *)&pIcons_LOD->pTextures[v94];
+                                                                            v100 = pRenderer;
+                                                                            if ( *(int *)(v242 + 516) & 2 )
+                                                                                {
+                                                                                v101 = (Texture *)(v98 != 0 ? (int)v99 : 0);
+                                                                                v188 = v101;
+                                                                                v175 = a3g;
+                                                                                v163 = a2g;
+                                                                                v100->DrawTransparentRedShade(v163, v175, v188);
+                                                                                if ( !bRingsShownInCharScreen )
+                                                                                    pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                                                                goto LABEL_259;
+                                                                                }
+                                                                            if ( *(char *)(v242 + 516) & 1 )
+                                                                                {
+                                                                                v101 = (Texture *)(v98 != 0 ? (int)v99 : 0);
+                                                                                v189 = v101;
+                                                                                v176 = a3g;
+                                                                                v164 = a2g;
+                                                                                pRenderer->DrawTextureTransparent(v164, v176, v189);
+                                                                                if ( !bRingsShownInCharScreen )
+                                                                                    pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                                                                goto LABEL_259;
+                                                                                }
+                                                                            v101 = (Texture *)(v98 != 0 ? (int)v99 : 0);
+                                                                            v190 = v101;
+                                                                            v177 = a3g;
+                                                                            v165 = a2g;
+                                                                            pRenderer->DrawTransparentGreenShade(v165, v177, v190);
+                                                                            if ( !bRingsShownInCharScreen )
+                                                                                pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                                                            goto LABEL_259;
+                                                                            }
+                                                                        v102 = 17 * pBodyComplection + v90;
+                                                                        v94 = paperdoll_array_511290[0][v102][1];
+                                                                        if ( v94 == pIcons_LOD->FindTextureByName("pending") )
+                                                                            goto LABEL_259;
+                                                                        v103 = pPaperdoll_BodyX + paperdoll_shoulder[0][v102][0];
+                                                                        v104 = pPaperdoll_BodyY + paperdoll_shoulder[0][v102][1];
+                                                                        v224 = *(int *)(v242 + 516);
+                                                                        v105 = *(int *)(v242 + 516) & 0xF0;
+                                                                        a2g = pPaperdoll_BodyX + paperdoll_shoulder[0][v102][0];
+                                                                        a3g = pPaperdoll_BodyY + paperdoll_shoulder[0][v102][1];
+                                                                        if ( !v105 )
+                                                                            {
+                                                                            v109 = v94 + 1;
+                                                                            v110 = (char *)&pIcons_LOD->pTextures[v94];
+                                                                            if ( v224 & 2 )
+                                                                                {
+                                                                                v101 = (Texture *)(v109 != 0 ? (int)v110 : 0);
+                                                                                v188 = v101;
+                                                                                v175 = v104;
+                                                                                v163 = v103;
+                                                                                v100 = pRenderer;
+                                                                                v100->DrawTransparentRedShade(v163, v175, v188);
+                                                                                if ( !bRingsShownInCharScreen )
+                                                                                    pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                                                                goto LABEL_259;
+                                                                                }
+                                                                            if ( v224 & 1 )
+                                                                                {
+                                                                                v101 = (Texture *)(v109 != 0 ? (int)v110 : 0);
+                                                                                v189 = v101;
+                                                                                v176 = v104;
+                                                                                v164 = v103;
+                                                                                v100 = pRenderer;
+                                                                                pRenderer->DrawTextureTransparent(v164, v176, v189);
+                                                                                if ( !bRingsShownInCharScreen )
+                                                                                    pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                                                                goto LABEL_259;
+                                                                                }
+                                                                            v101 = (Texture *)(v109 != 0 ? (int)v110 : 0);
+                                                                            v190 = v101;
+                                                                            v177 = v104;
+                                                                            v165 = v103;
+                                                                            v100 = pRenderer;
+                                                                            pRenderer->DrawTransparentGreenShade(v165, v177, v190);
+                                                                            if ( !bRingsShownInCharScreen )
+                                                                                pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                                                            goto LABEL_259;
+                                                                            }
+                                                                        v106 = v105 - 16;
+                                                                        if ( v106 )
+                                                                            {
+                                                                            v107 = v106 - 16;
+                                                                            if ( !v107 )
+                                                                                {
+                                                                                v178 = "sp28a";
+                                                                                v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v178, TEXTURE_16BIT_PALETTE)];
+                                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                if ( dword_50C9A8 <= 0 )
+                                                                                    {
+                                                                                    dword_50C9A8 = 0;
+                                                                                    *(char *)(v242 + 516) &= 0xFu;
+                                                                                    ptr_50C9A4 = 0;
+                                                                                    }
+                                                                                v187 = 255;
+                                                                                v174 = 0;
+                                                                                v97 = (double)GetTickCount();
+                                                                                pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                                                                    (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                                                                goto LABEL_259;
+                                                                                }
+                                                                            v108 = v107 - 32;
+                                                                            if ( !v108 )
+                                                                                {
+                                                                                v178 = "sp30a";
+                                                                                v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v178, TEXTURE_16BIT_PALETTE)];
+                                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                if ( dword_50C9A8 <= 0 )
+                                                                                    {
+                                                                                    dword_50C9A8 = 0;
+                                                                                    *(char *)(v242 + 516) &= 0xFu;
+                                                                                    ptr_50C9A4 = 0;
+                                                                                    }
+                                                                                v187 = 255;
+                                                                                v174 = 0;
+                                                                                v97 = (double)GetTickCount();
+                                                                                pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                                                                    (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                                                                goto LABEL_259;
+                                                                                }
+                                                                            if ( v108 == 64 )
+                                                                                {
+                                                                                v178 = "sp91a";
+                                                                                v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v178, TEXTURE_16BIT_PALETTE)];
+                                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                                if ( dword_50C9A8 <= 0 )
+                                                                                    {
+                                                                                    dword_50C9A8 = 0;
+                                                                                    *(char *)(v242 + 516) &= 0xFu;
+                                                                                    ptr_50C9A4 = 0;
+                                                                                    }
+                                                                                v187 = 255;
+                                                                                v174 = 0;
+                                                                                v97 = (double)GetTickCount();
+                                                                                pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                                                                    (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                                                                goto LABEL_259;
+                                                                                }
+                                                                            }
+                                                                        v178 = "sptext01";
+                                                                        v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v178, TEXTURE_16BIT_PALETTE)];
+                                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                        if ( dword_50C9A8 <= 0 )
+                                                                            {
+                                                                            dword_50C9A8 = 0;
+                                                                            *(char *)(v242 + 516) &= 0xFu;
+                                                                            ptr_50C9A4 = 0;
+                                                                            }
+                                                                        v187 = 255;
+                                                                        v174 = 0;
+                                                                        v97 = (double)GetTickCount();
+                                                                        pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                                                            (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                                                        goto LABEL_259;
+                                                                        }
+                                                                    v186 = 16;
+                                                                    }
+                                                                else
+                                                                    {
+                                                                    v186 = 13;
+                                                                    }
+                                                                }
+                                                            else
+                                                                {
+                                                                v186 = 14;
+                                                                }
+                                                            v90 = v186;
+                                                            goto LABEL_209;
+                                                            }
+                                                        v90 = 15;
+                                                        goto LABEL_207;
+                                                        }
+                                                    if ( (*(int *)(v57 + 20) & 0xF0) != 16 )
+                                                        {
+                                                        if ( (*(int *)(v57 + 20) & 0xF0) == 32 )
+                                                            {
+                                                            v171 = "sp28a";
+                                                            v63 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v171, TEXTURE_16BIT_PALETTE)];
+                                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                            if ( dword_50C9A8 <= 0 )
+                                                                {
+                                                                dword_50C9A8 = 0;
+                                                                *(char *)(v221 + 20) &= 0xFu;
+                                                                ptr_50C9A4 = 0;
+                                                                }
+                                                            v64 = (double)GetTickCount() * 0.1;
+                                                            pRenderer->_4A63E6(a2e, a3e, (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0), v63,
+                                                                (signed __int64)v64, 0, 255);
+                                                            goto LABEL_155;
+                                                            }
+                                                        if ( (*(int *)(v57 + 20) & 0xF0) == 64 )
+                                                            {
+                                                            v171 = "sp30a";
+                                                            v63 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v171, TEXTURE_16BIT_PALETTE)];
+                                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                            if ( dword_50C9A8 <= 0 )
+                                                                {
+                                                                dword_50C9A8 = 0;
+                                                                *(char *)(v221 + 20) &= 0xFu;
+                                                                ptr_50C9A4 = 0;
+                                                                }
+                                                            v64 = (double)GetTickCount() * 0.1;
+                                                            pRenderer->_4A63E6(a2e, a3e, (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0), v63,
+                                                                (signed __int64)v64, 0, 255);
+                                                            goto LABEL_155;
+                                                            }
+                                                        if ( (*(int *)(v57 + 20) & 0xF0) == 128 )
+                                                            {
+                                                            v171 = "sp91a";
+                                                            v63 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v171, TEXTURE_16BIT_PALETTE)];
+                                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                            if ( dword_50C9A8 <= 0 )
+                                                                {
+                                                                dword_50C9A8 = 0;
+                                                                *(char *)(v221 + 20) &= 0xFu;
+                                                                ptr_50C9A4 = 0;
+                                                                }
+                                                            v64 = (double)GetTickCount() * 0.1;
+                                                            pRenderer->_4A63E6(a2e, a3e, (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0), v63,
+                                                                (signed __int64)v64, 0, 255);
+                                                            goto LABEL_155;
+                                                            }
+                                                        }
+                                                    v171 = "sptext01";
+                                                    v63 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v171, TEXTURE_16BIT_PALETTE)];
+                                                    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                    if ( dword_50C9A8 <= 0 )
+                                                        {
+                                                        dword_50C9A8 = 0;
+                                                        *(char *)(v221 + 20) &= 0xFu;
+                                                        ptr_50C9A4 = 0;
+                                                        }
+                                                    v64 = (double)GetTickCount() * 0.1;
+                                                    pRenderer->_4A63E6(a2e, a3e, (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0), v63,
+                                                        (signed __int64)v64, 0, 255);
+                                                    goto LABEL_155;
+                                                    }
+                                                if ( (*(int *)(v44 + 20) & 0xF0) != 16 )
+                                                    {
+                                                    if ( (*(int *)(v44 + 20) & 0xF0) == 32 )
+                                                        {
+                                                        v170 = "sp28a";
+                                                        }
+                                                    else
+                                                        {
+                                                        if ( (*(int *)(v44 + 20) & 0xF0) != 64 )
+                                                            {
+                                                            v50 = pIcons_LOD;
+                                                            if ( (*(int *)(v44 + 20) & 0xF0) == 128 )
+                                                                {
+                                                                v170 = "sp91a";
+                                                                v51 = &pIcons_LOD->pTextures[v50->LoadTexture(v170, TEXTURE_16BIT_PALETTE)];
+                                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                                if ( dword_50C9A8 <= 0 )
+                                                                    {
+                                                                    dword_50C9A8 = 0;
+                                                                    *(char *)(v220 + 20) &= 0xFu;
+                                                                    ptr_50C9A4 = 0;
+                                                                    }
+                                                                v52 = (double)GetTickCount() * 0.1;
+                                                                pRenderer->_4A63E6(a2d, a3d, (Texture *)(v48 != -1 ? (int)&pIcons_LOD->pTextures[v48] : 0),
+                                                                    v51, (signed __int64)v52, 0, 255);
+                                                                goto LABEL_127;
+                                                                }
+                                                            v170 = "sptext01";
+                                                            v51 = &pIcons_LOD->pTextures[v50->LoadTexture(v170, TEXTURE_16BIT_PALETTE)];
+                                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                            if ( dword_50C9A8 <= 0 )
+                                                                {
+                                                                dword_50C9A8 = 0;
+                                                                *(char *)(v220 + 20) &= 0xFu;
+                                                                ptr_50C9A4 = 0;
+                                                                }
+                                                            v52 = (double)GetTickCount() * 0.1;
+                                                            pRenderer->_4A63E6(a2d, a3d, (Texture *)(v48 != -1 ? (int)&pIcons_LOD->pTextures[v48] : 0),
+                                                                v51, (signed __int64)v52, 0, 255);
+                                                            goto LABEL_127;
+                                                            }
+                                                        v170 = "sp30a";
+                                                        }
+                                                    v50 = pIcons_LOD;
+                                                    v51 = &pIcons_LOD->pTextures[v50->LoadTexture(v170, TEXTURE_16BIT_PALETTE)];
+                                                    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                    if ( dword_50C9A8 <= 0 )
+                                                        {
+                                                        dword_50C9A8 = 0;
+                                                        *(char *)(v220 + 20) &= 0xFu;
+                                                        ptr_50C9A4 = 0;
+                                                        }
+                                                    v52 = (double)GetTickCount() * 0.1;
+                                                    pRenderer->_4A63E6(a2d, a3d, (Texture *)(v48 != -1 ? (int)&pIcons_LOD->pTextures[v48] : 0),
+                                                        v51, (signed __int64)v52, 0, 255);
+                                                    goto LABEL_127;
+                                                    }
+                                                v50 = pIcons_LOD;
+                                                v170 = "sptext01";
+                                                v51 = &pIcons_LOD->pTextures[v50->LoadTexture(v170, TEXTURE_16BIT_PALETTE)];
+                                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                if ( dword_50C9A8 <= 0 )
+                                                    {
+                                                    dword_50C9A8 = 0;
+                                                    *(char *)(v220 + 20) &= 0xFu;
+                                                    ptr_50C9A4 = 0;
+                                                    }
+                                                v52 = (double)GetTickCount() * 0.1;
+                                                pRenderer->_4A63E6(a2d, a3d, (Texture *)(v48 != -1 ? (int)&pIcons_LOD->pTextures[v48] : 0),
+                                                    v51, (signed __int64)v52, 0, 255);
+                                                goto LABEL_127;
+                                                }
+                                            v185 = 16;
+                                            }
+                                        }
+                                    v45 = v185;
+                                    goto LABEL_106;
+                                    }
+                                v45 = 15;
+                                goto LABEL_104;
+                                }
+                            if ( (*(int *)(v32 + 20) & 0xF0) != 16 )
+                                {
+                                if ( (*(int *)(v32 + 20) & 0xF0) == 32 )
+                                    {
+                                    v169 = "sp28a";
+                                    }
+                                else
+                                    {
+                                    if ( (*(int *)(v32 + 20) & 0xF0) != 64 )
+                                        {
+                                        v38 = pIcons_LOD;
+                                        if ( (*(int *)(v32 + 20) & 0xF0) == 128 )
+                                            {
+                                            v169 = "sp91a";
+                                            v39 = &pIcons_LOD->pTextures[v38->LoadTexture(v169, TEXTURE_16BIT_PALETTE)];
+                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                            if ( dword_50C9A8 <= 0 )
+                                                {
+                                                dword_50C9A8 = 0;
+                                                *(char *)(v219 + 20) &= 0xFu;
+                                                ptr_50C9A4 = 0;
+                                                }
+                                            v40 = (double)GetTickCount() * 0.1;
+                                            pRenderer->_4A63E6(a2c, a3c, (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0), v39,
+                                                (signed __int64)v40, 0, 255);
+                                            goto LABEL_93;
+                                            }
+                                        v169 = "sptext01";
+                                        v39 = &pIcons_LOD->pTextures[v38->LoadTexture(v169, TEXTURE_16BIT_PALETTE)];
+                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                        if ( dword_50C9A8 <= 0 )
+                                            {
+                                            dword_50C9A8 = 0;
+                                            *(char *)(v219 + 20) &= 0xFu;
+                                            ptr_50C9A4 = 0;
+                                            }
+                                        v40 = (double)GetTickCount() * 0.1;
+                                        pRenderer->_4A63E6(a2c, a3c, (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0), v39,
+                                            (signed __int64)v40, 0, 255);
+                                        goto LABEL_93;
+                                        }
+                                    v169 = "sp30a";
+                                    }
+                                v38 = pIcons_LOD;
+                                v39 = &pIcons_LOD->pTextures[v38->LoadTexture(v169, TEXTURE_16BIT_PALETTE)];
+                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                if ( dword_50C9A8 <= 0 )
+                                    {
+                                    dword_50C9A8 = 0;
+                                    *(char *)(v219 + 20) &= 0xFu;
+                                    ptr_50C9A4 = 0;
+                                    }
+                                v40 = (double)GetTickCount() * 0.1;
+                                pRenderer->_4A63E6(a2c, a3c, (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0), v39,
+                                    (signed __int64)v40, 0, 255);
+                                goto LABEL_93;
+                                }
+                            v38 = pIcons_LOD;
+                            v169 = "sptext01";
+                            v39 = &pIcons_LOD->pTextures[v38->LoadTexture(v169, TEXTURE_16BIT_PALETTE)];
+                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                            if ( dword_50C9A8 <= 0 )
+                                {
+                                dword_50C9A8 = 0;
+                                *(char *)(v219 + 20) &= 0xFu;
+                                ptr_50C9A4 = 0;
+                                }
+                            v40 = (double)GetTickCount() * 0.1;
+                            pRenderer->_4A63E6(a2c, a3c, (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0), v39,
+                                (signed __int64)v40, 0, 255);
+                            goto LABEL_93;
+                            }
+                        v184 = 9;
+                        break;
+                        }
+                    v33 = v184;
+                    goto LABEL_74;
+                    }
+                v33 = 5;
+                goto LABEL_72;
+                }
+            if ( (*(int *)(v22 + 20) & 0xF0) != 16 )
+                {
+                if ( (*(int *)(v22 + 20) & 0xF0) == 32 )
+                    {
+                    v168 = "sp28a";
+                    }
+                else
+                    {
+                    if ( (*(int *)(v22 + 20) & 0xF0) != 64 )
+                        {
+                        v26 = pIcons_LOD;
+                        if ( (*(int *)(v22 + 20) & 0xF0) == 128 )
+                            {
+                            v168 = "sp91a";
+                            a2b = &pIcons_LOD->pTextures[v26->LoadTexture(v168, TEXTURE_16BIT_PALETTE)];
+                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                            if ( dword_50C9A8 <= 0 )
+                                {
+                                dword_50C9A8 = 0;
+                                *(char *)(v22 + 20) &= 0xFu;
+                                ptr_50C9A4 = 0;
+                                }
+                            v27 = (Texture *)(v241 != -1 ? (int)&pIcons_LOD->pTextures[v241] : 0);
+                            v28 = (double)GetTickCount() * 0.1;
+                            pRenderer->_4A63E6(v24, a3b, v27, a2b, (signed __int64)v28, 0, 255);
+                            goto LABEL_57;
+                            }
+                        v168 = "sptext01";
+                        a2b = &pIcons_LOD->pTextures[v26->LoadTexture(v168, TEXTURE_16BIT_PALETTE)];
+                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                        if ( dword_50C9A8 <= 0 )
+                            {
+                            dword_50C9A8 = 0;
+                            *(char *)(v22 + 20) &= 0xFu;
+                            ptr_50C9A4 = 0;
+                            }
+                        v27 = (Texture *)(v241 != -1 ? (int)&pIcons_LOD->pTextures[v241] : 0);
+                        v28 = (double)GetTickCount() * 0.1;
+                        pRenderer->_4A63E6(v24, a3b, v27, a2b, (signed __int64)v28, 0, 255);
+                        goto LABEL_57;
+                        }
+                    v168 = "sp30a";
+                    }
+                v26 = pIcons_LOD;
+                a2b = &pIcons_LOD->pTextures[v26->LoadTexture(v168, TEXTURE_16BIT_PALETTE)];
+                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                if ( dword_50C9A8 <= 0 )
+                    {
+                    dword_50C9A8 = 0;
+                    *(char *)(v22 + 20) &= 0xFu;
+                    ptr_50C9A4 = 0;
+                    }
+                v27 = (Texture *)(v241 != -1 ? (int)&pIcons_LOD->pTextures[v241] : 0);
+                v28 = (double)GetTickCount() * 0.1;
+                pRenderer->_4A63E6(v24, a3b, v27, a2b, (signed __int64)v28, 0, 255);
+                goto LABEL_57;
+                }
+            v26 = pIcons_LOD;
+            v168 = "sptext01";
+            a2b = &pIcons_LOD->pTextures[v26->LoadTexture(v168, TEXTURE_16BIT_PALETTE)];
+            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+            if ( dword_50C9A8 <= 0 )
+                {
+                dword_50C9A8 = 0;
+                *(char *)(v22 + 20) &= 0xFu;
+                ptr_50C9A4 = 0;
+                }
+            v27 = (Texture *)(v241 != -1 ? (int)&pIcons_LOD->pTextures[v241] : 0);
+            v28 = (double)GetTickCount() * 0.1;
+            pRenderer->_4A63E6(v24, a3b, v27, a2b, (signed __int64)v28, 0, 255);
+            goto LABEL_57;;
+            }
+        a3 = pPaperdoll_BodyY;
+        a2 = pPaperdoll_BodyX;
+        v240 = 4 * uPlayerID_ - 4;
+        pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY,
+            (Texture *)(*(unsigned int *)((char *)papredoll_dbods + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dbods + v240)] : 0));
+        if ( !bRingsShownInCharScreen )
+            pRenderer->_4A612A(a2, a3,
+            (Texture *)(*(unsigned int *)((char *)papredoll_dbods + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dbods + v240)] : 0),
+            pPlayer->pEquipment.uBody);
+        uPlayerID_a = 2 * pBodyComplection;
+        v6 = pPlayer->pEquipment.uMainHand;
+        if ( !v6
+            || (v7 = *(int *)&pPlayer->pInventoryItems[v6-1], pItemsTable->pItems[v7].uEquipType != 1)
+            && (pItemsTable->pItems[v7].uSkillType != 4 || pPlayer->pEquipment.uOffHand) )
+            pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1],
+            (Texture *)(*(unsigned int *)((char *)papredoll_dlads + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlads + v240)] : 0));
+        v8 = pPlayer->pEquipment.uMainHand;
+        if ( v8 )
+            {
+            v229 = pPlayer->pEquipment.uMainHand;
+            v9 = (int)&pPlayer->pInventoryItems[v8-1];
+            // v10 = pBodyComplection << 7;
+            v218 = v9;
+            v11 = *(int *)v9;
+            v12 = *(int *)v9;
+            v13 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[v12].uEquipX;
+            a2a = v13;
+            a3a = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[v12].uEquipY;
+            if ( v11 == 64 )
+                v166 = "item64v1";
+            else
+                v166 = pItemsTable->pItems[v12].pIconName;
+            v14 = pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE);
+            v15 = *(int *)(v218 + 20);
+            if ( *(int *)(v218 + 20) & 0xF0 )
+                {
+                if ( (*(int *)(v218 + 20) & 0xF0) != 16 )
+                    {
+                    if ( (*(int *)(v218 + 20) & 0xF0) == 32 )
+                        {
+                        v167 = "sp28a";
+                        //v16 = (Texture *)(72 * pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE) + 7145548);
+                        v16 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE)];
+                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                        if ( dword_50C9A8 <= 0 )
+                            {
+                            dword_50C9A8 = 0;
+                            *(char *)(v218 + 20) &= 0xFu;
+                            ptr_50C9A4 = 0;
+                            }
+                        v17 = (double)GetTickCount() * 0.1;
+                        pRenderer->_4A63E6(v13, a3a, (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0), v16, (signed __int64)v17, 0, 255);
+                        goto LABEL_393;;
+                        }
+                    if ( (*(int *)(v218 + 20) & 0xF0) == 64 )
+                        {
+                        v167 = "sp30a";
+                        //v16 = (Texture *)(72 * pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE) + 7145548);
+                        v16 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE)];
+                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                        if ( dword_50C9A8 <= 0 )
+                            {
+                            dword_50C9A8 = 0;
+                            *(char *)(v218 + 20) &= 0xFu;
+                            ptr_50C9A4 = 0;
+                            }
+                        v17 = (double)GetTickCount() * 0.1;
+                        pRenderer->_4A63E6(v13, a3a, (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0), v16, (signed __int64)v17, 0, 255);
+                        goto LABEL_393;
+                        }
+                    if ( (*(int *)(v218 + 20) & 0xF0) == 128 )
+                        {
+                        v167 = "sp91a";
+                        //v16 = (Texture *)(72 * pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE) + 7145548);
+                        v16 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE)];
+                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                        if ( dword_50C9A8 <= 0 )
+                            {
+                            dword_50C9A8 = 0;
+                            *(char *)(v218 + 20) &= 0xFu;
+                            ptr_50C9A4 = 0;
+                            }
+                        v17 = (double)GetTickCount() * 0.1;
+                        pRenderer->_4A63E6(v13, a3a, (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0), v16, (signed __int64)v17, 0, 255);
+                        goto LABEL_393;
+                        }
+                    }
+                v167 = "sptext01";
+                //v16 = (Texture *)(72 * pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE) + 7145548);
+                v16 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE)];
+                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                if ( dword_50C9A8 <= 0 )
+                    {
+                    dword_50C9A8 = 0;
+                    *(char *)(v218 + 20) &= 0xFu;
+                    ptr_50C9A4 = 0;
+                    }
+                v17 = (double)GetTickCount() * 0.1;
+                pRenderer->_4A63E6(v13, a3a, (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0), v16, (signed __int64)v17, 0, 255);
+                goto LABEL_393;
+                }
+            v18 = v14 + 1;
+            v19 = (char *)&pIcons_LOD->pTextures[v14];
+            if ( v15 & 2 )
+                {
+                v20 = (Texture *)(v18 != 0 ? (int)v19 : 0);
+                pRenderer->DrawTransparentRedShade(a2a, a3a, v20);
+                }
+            else
+                {
+                if ( v15 & 1 )
+                    {
+                    v20 = (Texture *)(v18 != 0 ? (int)v19 : 0);
+                    pRenderer->DrawTextureTransparent(a2a, a3a, v20);
+                    }
+                else
+                    {
+                    v20 = (Texture *)(v18 != 0 ? (int)v19 : 0);
+                    pRenderer->DrawTransparentGreenShade(a2a, a3a, v20);
+                    }
+                }
+            if ( !bRingsShownInCharScreen )
+                pRenderer->_4A612A(a2a, a3a, v20, v229);
+            }
+LABEL_393:
+        pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_RightHand[uPlayerID_a],
+            pPaperdoll_BodyY + pPaperdoll_RightHand[uPlayerID_a + 1],
+            (Texture *)(*(unsigned int *)((char *)papredoll_drhs + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_drhs + v240)] : 0));
+        v161 = pPlayer->pEquipment.uMainHand;
+        if ( v161 )
+            {
+            v162 = *(int *)&pPlayer->pInventoryItems[v161-1];
+            if ( pItemsTable->pItems[v162].uEquipType == 1 || pItemsTable->pItems[v162].uSkillType == 4 && !pPlayer->pEquipment.uOffHand )
+                pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[0][uPlayerID_a],
+                pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[0][uPlayerID_a + 1],
+                (Texture *)(*(unsigned int *)((char *)papredoll_dlhus + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhus + v240)] : 0));
+            }
+        if ( !bRingsShownInCharScreen )
+            pRenderer->DrawTextureTransparent(0x25Bu, 0x12Bu,
+            (Texture *)(uTextureID_MAGNIF_B != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_MAGNIF_B] : 0));
+        pRenderer->DrawTextureTransparent(0x1D4u, 0,
+            (Texture *)(uTextureID_507B04 != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_507B04] : 0));
+        }
+
+
+    //----- (0043E825) --------------------------------------------------------
+    void __fastcall CharacterUI_DrawPaperdollWithRingOverlay(unsigned int uPlayerID)
+        {
+        unsigned int v1; // ebx@1
+        Player *pPlayer; // edi@1
+        int v3; // ecx@1
+        int *v4; // edi@3
+        unsigned int v5; // ebx@3
+        int v6; // eax@3
+        LODFile_IconsBitmaps *v7; // ecx@7
+        double v8; // st7@16
+        int v9; // edi@17
+        Texture *v10; // edi@18
+        unsigned __int8 v11; // zf@19
+        Texture *v12; // eax@19
+        char v13; // sf@24
+        unsigned __int8 v14; // of@24
+        unsigned int v15; // eax@25
+        unsigned int v16; // ebx@26
+        int v17; // eax@26
+        LODFile_IconsBitmaps *v18; // ecx@30
+        double v19; // st7@39
+        int v20; // edi@40
+        int v21; // eax@41
+        signed int v22; // ebx@41
+        Texture *v23; // edi@41
+        int v24; // eax@42
+        char *v25; // eax@42
+        unsigned int v26; // eax@46
+        int v27; // edi@47
+        unsigned int v28; // ebx@47
+        int v29; // eax@47
+        LODFile_IconsBitmaps *v30; // ecx@51
+        Texture *v31; // esi@58
+        double v32; // st7@60
+        int v33; // esi@61
+        int v34; // esi@62
+        Texture *v35; // eax@63
+        const char *v36; // [sp-8h] [bp-38h]@8
+        const char *v37; // [sp-8h] [bp-38h]@31
+        const char *v38; // [sp-8h] [bp-38h]@52
+        int v39; // [sp+10h] [bp-20h]@3
+        Texture *v40; // [sp+10h] [bp-20h]@14
+        int v41; // [sp+10h] [bp-20h]@26
+        Texture *v42; // [sp+10h] [bp-20h]@37
+        int v43; // [sp+10h] [bp-20h]@47
+        unsigned int a3; // [sp+14h] [bp-1Ch]@3
+        unsigned int a2; // [sp+18h] [bp-18h]@3
+        unsigned int *v46; // [sp+1Ch] [bp-14h]@1
+        Player *v47; // [sp+20h] [bp-10h]@1
+        int v48; // [sp+24h] [bp-Ch]@1
+        int v49; // [sp+24h] [bp-Ch]@26
+
+        v1 = uPlayerID;
+        pPlayer = pPlayers[uPlayerID];
+        v47 = pPlayers[uPlayerID];
+        pIcons_LOD->LoadTexture("sptext01", TEXTURE_16BIT_PALETTE);
+        CharacterUI_DrawPaperdoll(v1);
+        pRenderer->DrawTextureTransparent(0x1D9u, 0, (Texture *)(uTextureID_BACKHAND != -1 ? &pIcons_LOD->pTextures[uTextureID_BACKHAND] : 0));
+        pRenderer->DrawTextureTransparent(0x1D4u, 0, (Texture *)(uTextureID_507B04 != -1 ? &pIcons_LOD->pTextures[uTextureID_507B04] : 0));
+        pRenderer->DrawTextureIndexed(pCharacterScreen_DetalizBtn->uX, pCharacterScreen_DetalizBtn->uY,
+            (Texture *)(uTextureID_5118C8 != -1 ? &pIcons_LOD->pTextures[uTextureID_5118C8] : 0));
+        v3 = 0;
+        v46 = &pPlayer->pEquipment.field_28;
+        v48 = 0;
+        do
+            {
+            if ( !*v46 )
+                goto LABEL_24;
+            v39 = *v46;
+            v4 = (int *)&pPlayer->pInventoryItems[*v46-1].uItemID;
+            a3 = pPaperdollRingsY[v3];
+            a2 = pPaperdollRingsX[v3];
+            v5 = pIcons_LOD->LoadTexture(pItemsTable->pItems[*v4].pIconName, TEXTURE_16BIT_PALETTE);
+            v6 = *(int *)(v4 + 20);
+            if ( *(int *)(v4 + 20) & 0xF0 )
+                {
+                if ( (*(int *)(v4 + 20) & 0xF0) != 16 )
+                    {
+                    if ( (*(int *)(v4 + 20) & 0xF0) == 32 )
+                        {
+                        v36 = "sp28a";
+                        }
+                    else
+                        {
+                        if ( (*(int *)(v4 + 20) & 0xF0) != 64 )
+                            {
+                            v7 = pIcons_LOD;
+                            if ( (*(int *)(v4 + 20) & 0xF0) == 128 )
+                                {
+                                v36 = "sp91a";
+LABEL_14:
+                                v40 = &pIcons_LOD->pTextures[v7->LoadTexture(v36, TEXTURE_16BIT_PALETTE)];
+                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                if ( dword_50C9A8 <= 0 )
+                                    {
+                                    dword_50C9A8 = 0;
+                                    *(char *)(v4 + 20) &= 0xFu;
+                                    ptr_50C9A4 = 0;
+                                    }
+                                v8 = (double)GetTickCount() * 0.1;
+                                pRenderer->_4A63E6(a2, a3, (Texture *)(v5 != -1 ? (int)&pIcons_LOD->pTextures[v5] : 0),
+                                    v40, (signed __int64)v8, 0, 255);
+                                goto LABEL_23;
+                                }
+LABEL_13:
+                            v36 = "sptext01";
+                            goto LABEL_14;
+                            }
+                        v36 = "sp30a";
+                        }
+                    v7 = pIcons_LOD;
+                    goto LABEL_14;
+                    }
+                v7 = pIcons_LOD;
+                goto LABEL_13;
+                }
+            v9 = v5 + 1;
+            if ( v6 & 2 )
+                {
+                v10 = (Texture *)(v9 != 0 ? (int)&pIcons_LOD->pTextures[v5] : 0);
+                pRenderer->DrawTransparentRedShade(a2, a3, v10);
+                }
+            else
+                {
+                v11 = (v6 & 1) == 0;
+                v12 = &pIcons_LOD->pTextures[v5];
+                if ( v11 )
+                    {
+                    v10 = (Texture *)(v9 != 0 ? (int)v12 : 0);
+                    pRenderer->DrawTransparentGreenShade(a2, a3, v10);
+                    }
+                else
+                    {
+                    v10 = (Texture *)(v9 != 0 ? (int)v12 : 0);
+                    pRenderer->DrawTextureTransparent(a2, a3, v10);
+                    }
+                }
+            pRenderer->_4A601E(a2, a3, v10, v39);
+LABEL_23:
+            pPlayer = v47;
+LABEL_24:
+            v46 += 4;
+            v3 = v48 + 4;
+            v14 = __OFSUB__(v48 + 4, 20);
+            v11 = v48 == 16;
+            v13 = v48 - 16 < 0;
+            v48 += 4;
+            }
+            while ( (unsigned __int8)(v13 ^ v14) | v11 );
+            v15 = pPlayer->pEquipment.field_24;
+            if ( !v15 )
+                goto LABEL_46;
+            v41 = pPlayer->pEquipment.field_24;
+            v49 = (int)&pPlayer->pInventoryItems[v15-1];
+            v16 = pIcons_LOD->LoadTexture(pItemsTable->pItems[*(int *)v49].pIconName, TEXTURE_16BIT_PALETTE);
+            v17 = *(int *)(v49 + 20);
+            if ( !(*(int *)(v49 + 20) & 0xF0) )
+                {
+                v20 = v16 + 1;
+                if ( v17 & 2 )
+                    {
+                    v21 = 9 * v16;
+                    v22 = 493;
+                    v23 = (Texture *)(v20 != 0 ? (int)&pIcons_LOD->pTextures[8 * v21 / 0x48u] : 0);
+                    pRenderer->DrawTransparentRedShade(0x1EDu, 0x5Bu, v23);
+                    }
+                else
+                    {
+                    v11 = (v17 & 1) == 0;
+                    v24 = 9 * v16;
+                    v22 = 493;
+                    v25 = (char *)&pIcons_LOD->pTextures[8 * v24 / 0x48u];
+                    if ( v11 )
+                        {
+                        v23 = (Texture *)(v20 != 0 ? (int)v25 : 0);
+                        pRenderer->DrawTransparentGreenShade(493, 91, v23);
+                        }
+                    else
+                        {
+                        v23 = (Texture *)(v20 != 0 ? (int)v25 : 0);
+                        pRenderer->DrawTextureTransparent(0x1EDu, 0x5Bu, v23);
+                        }
+                    }
+                pRenderer->_4A601E(v22, 91, v23, v41);
+                pPlayer = v47;
+                goto LABEL_46;
+                }
+            if ( (*(int *)(v49 + 20) & 0xF0) == 16 )
+                {
+                v18 = pIcons_LOD;
+                goto LABEL_36;
+                }
+            if ( (*(int *)(v49 + 20) & 0xF0) == 32 )
+                {
+                v37 = "sp28a";
+                goto LABEL_34;
+                }
+            if ( (*(int *)(v49 + 20) & 0xF0) == 64 )
+                {
+                v37 = "sp30a";
+LABEL_34:
+                v18 = pIcons_LOD;
+                goto LABEL_37;
+                }
+            v18 = pIcons_LOD;
+            if ( (*(int *)(v49 + 20) & 0xF0) == 128 )
+                {
+                v37 = "sp91a";
+                goto LABEL_37;
+                }
+LABEL_36:
+            v37 = "sptext01";
+LABEL_37:
+            v42 = &pIcons_LOD->pTextures[v18->LoadTexture(v37, TEXTURE_16BIT_PALETTE)];
+            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+            if ( dword_50C9A8 <= 0 )
+                {
+                dword_50C9A8 = 0;
+                *(char *)(v49 + 20) &= 0xFu;
+                ptr_50C9A4 = 0;
+                }
+            v19 = (double)GetTickCount() * 0.1;
+            pRenderer->_4A63E6(
+                0x1EDu,
+                0x5Bu,
+                (Texture *)(v16 != -1 ? (int)&pIcons_LOD->pTextures[v16] : 0),
+                v42,
+                (signed __int64)v19,
+                0,
+                255);
+LABEL_46:
+            v26 = pPlayer->pEquipment.field_1C;
+            if ( !v26 )
+                return;
+            v43 = pPlayer->pEquipment.field_1C;
+            v27 = (int)&pPlayer->pInventoryItems[v26-1];
+            v28 = pIcons_LOD->LoadTexture(pItemsTable->pItems[*(int *)v27].pIconName, TEXTURE_16BIT_PALETTE);
+            v29 = *(int *)(v27 + 20);
+            if ( !(*(int *)(v27 + 20) & 0xF0) )
+                {
+                v33 = v28 + 1;
+                if ( v29 & 2 )
+                    {
+                    v34 = v33 != 0 ? (int)&pIcons_LOD->pTextures[v28] : 0;
+                    pRenderer->DrawTransparentRedShade(0x24Au, 0x58u, (Texture *)v34);
+                    }
+                else
+                    {
+                    v11 = (v29 & 1) == 0;
+                    v35 = &pIcons_LOD->pTextures[v28];
+                    if ( v11 )
+                        {
+                        v34 = v33 != 0 ? (int)v35 : 0;
+                        pRenderer->DrawTransparentGreenShade(586, 88, (Texture *)v34);
+                        }
+                    else
+                        {
+                        v34 = v33 != 0 ? (int)v35 : 0;
+                        pRenderer->DrawTextureTransparent(0x24Au, 0x58u, (Texture *)v34);
+                        }
+                    }
+                pRenderer->_4A601E(586, 88, (Texture *)v34, v43);
+                return;
+                }
+            if ( (*(int *)(v27 + 20) & 0xF0) == 16 )
+                {
+                v30 = pIcons_LOD;
+                goto LABEL_57;
+                }
+            if ( (*(int *)(v27 + 20) & 0xF0) == 32 )
+                {
+                v38 = "sp28a";
+                goto LABEL_55;
+                }
+            if ( (*(int *)(v27 + 20) & 0xF0) == 64 )
+                {
+                v38 = "sp30a";
+LABEL_55:
+                v30 = pIcons_LOD;
+                goto LABEL_58;
+                }
+            v30 = pIcons_LOD;
+            if ( (*(int *)(v27 + 20) & 0xF0) == 128 )
+                {
+                v38 = "sp91a";
+                goto LABEL_58;
+                }
+LABEL_57:
+            v38 = "sptext01";
+LABEL_58:
+            v31 = &pIcons_LOD->pTextures[v30->LoadTexture(v38, TEXTURE_16BIT_PALETTE)];
+            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+            if ( dword_50C9A8 <= 0 )
+                {
+                dword_50C9A8 = 0;
+                *(char *)(v27 + 20) &= 0xFu;
+                ptr_50C9A4 = 0;
+                }
+            v32 = (double)GetTickCount() * 0.1;
+            pRenderer->_4A63E6(0x24Au, 0x58u, (Texture *)(v28 != -1 ? (int)&pIcons_LOD->pTextures[v28] : 0),
+                v31, (signed __int64)v32, 0, 255);
+        }
+
+//----- (0043BCA7) --------------------------------------------------------
+void CharacterUI_LoadPaperdollTextures()
+{
+  int v0; // edi@7
+  enum CHARACTER_RACE pRace; // ebx@7
+  signed int pSex; // eax@7
+  int v3; // ebx@10
+  Player *pPlayer; // edi@12
+  unsigned __int8 v5; // cl@12
+  int v6; // edi@16
+  unsigned int v7; // eax@16
+  Player *pPlayer2; // ebx@16
+  char *v9; // ebx@16
+  char v10; // al@16
+  signed int v11; // edi@21
+  Player *pPlayer3; // ebx@23
+  //Player *pPlayer4; // edi@29
+  //int v14; // ebp@29
+  //stru331 *v15; // edi@65
+  //signed int v16; // ebx@66
+  //unsigned int v17; // eax@67
+  //unsigned int *v18; // ecx@67
+  //unsigned int *v19; // ebx@68
+  //int v20; // edi@73
+  int v21; // ebp@73
+  unsigned int v22; // eax@76
+  int v23; // ecx@76
+  unsigned int v24; // eax@78
+  int v25; // ecx@78
+  int v26; // ebx@79
+  unsigned int v27; // eax@80
+  int v28; // ecx@80
+  //int result; // eax@83
+  int v30; // [sp+10h] [bp-28h]@5
+  //signed int v31; // [sp+10h] [bp-28h]@68
+  signed int v32; // [sp+10h] [bp-28h]@75
+  signed int v33; // [sp+10h] [bp-28h]@77
+  int v34; // [sp+10h] [bp-28h]@79
+  //char *v35; // [sp+14h] [bp-24h]@65
+  int v36; // [sp+14h] [bp-24h]@75
+  int v37; // [sp+14h] [bp-24h]@77
+  signed int v38; // [sp+14h] [bp-24h]@79
+  //unsigned int *v39; // [sp+18h] [bp-20h]@66
+  int *v40; // [sp+18h] [bp-20h]@73
+  //unsigned int *v41; // [sp+1Ch] [bp-1Ch]@73
+  int v42; // [sp+20h] [bp-18h]@6
+  int v43; // [sp+20h] [bp-18h]@73
+  char pContainer[128]; // [sp+24h] [bp-14h]@12
+
+  uTextureID_MAGNIF_B = pIcons_LOD->LoadTexture("MAGNIF-B", TEXTURE_16BIT_PALETTE);
+  //if ( !pParty->uAlignment || pParty->uAlignment == 1 || pParty->uAlignment == 2 )
+  uTextureID_BACKDOLL = pIcons_LOD->LoadTexture("BACKDOLL", TEXTURE_16BIT_PALETTE);
+  uTextureID_507B04 = uTextureID_right_panel;
+  v30 = 0;
+  uTextureID_BACKHAND = pIcons_LOD->LoadTexture("BACKHAND", TEXTURE_16BIT_PALETTE);
+  uTextureID_5118C8 = uExitCancelTextureId;
+  do
+  {
+    v42 = v30 + 1;
+    if ( sub_43EE77_ProbablyIfUnderwaterSuitIsEquipped(v30 + 1) )
+    {
+      v0 = v30;
+      pRace = pPlayers[v30 + 1]->GetRace();
+      pSex = pPlayers[v30 + 1]->GetSexByVoice();
+      if ( pRace && pRace != 1 && pRace != 2 )//race == 3
+        v3 = (pSex != 0) + 3;
+      else
+        v3 = (pSex != 0) + 1;
+      wsprintfA(pContainer, "pc23v%dBod", v3);
+      papredoll_dbods[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);//Body texture
+      wsprintfA(pContainer, "pc23v%dlad", v3);
+      papredoll_dlads[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Hand
+      wsprintfA(pContainer, "pc23v%dlau", v3);
+      papredoll_dlaus[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Hand2
+      wsprintfA(pContainer, "pc23v%drh", v3);
+      papredoll_drhs[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Right Hand
+      wsprintfA(pContainer, "pc23v%dlh", v3);
+      papredoll_dlhs[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Fist
+      wsprintfA(pContainer, "pc23v%dlhu", v3);
+      papredoll_dlhus[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); // Left Fist 2
+      pPlayer = pPlayers[v0 + 1];
+      v5 = pPlayer->uFace;
+      if ( v5 == 12 || v5 == 13 )
+        papredoll_dbrds[(char)v5] = 0;
+      papredoll_flying_feet[pPlayer->uFace] = 0;
+      IsPlayerWearingWatersuit[v30 + 1] = 1;
+    }
+    else
+    {
+      v6 = v30;
+      papredoll_dbods[v30] = pIcons_LOD->LoadTexture(dbod_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
+      papredoll_dlads[v30] = pIcons_LOD->LoadTexture(dlad_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
+      papredoll_dlaus[v30] = pIcons_LOD->LoadTexture(dlau_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
+      papredoll_drhs[v30] = pIcons_LOD->LoadTexture(drh_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
+      papredoll_dlhs[v30] = pIcons_LOD->LoadTexture(dlh_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
+      v7 = pIcons_LOD->LoadTexture(dlhu_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
+      pPlayer2 = pPlayers[v30 + 1];
+      papredoll_dlhus[v30] = v7;
+      v9 = (char *)&pPlayer2->uFace;
+      v10 = *v9;
+      if ( *v9 == 12 || v10 == 13 )
+      {
+        wsprintfA(pContainer, "pc%02dbrd", v10 + 1);
+        v9 = (char *)&pPlayers[v6 + 1]->uFace;
+        papredoll_dbrds[*v9] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      }
+      wsprintfA(pContainer, "item281pc%02d", *v9 + 1);
+      papredoll_flying_feet[pPlayers[v6 + 1]->uFace] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      IsPlayerWearingWatersuit[v30 + 1] = 0;
+    }
+    ++v30;
+  }
+  while ( v42 < 4 );
+  uTextureID_ar_up_up = pIcons_LOD->LoadTexture("ar_up_up", TEXTURE_16BIT_PALETTE);
+  uTextureID_ar_up_dn = pIcons_LOD->LoadTexture("ar_up_dn", TEXTURE_16BIT_PALETTE);
+  uTextureID_ar_dn_up = pIcons_LOD->LoadTexture("ar_dn_up", TEXTURE_16BIT_PALETTE);
+  uTextureID_ar_dn_dn = pIcons_LOD->LoadTexture("ar_dn_dn", TEXTURE_16BIT_PALETTE);
+  papredoll_dbrds[9] = pIcons_LOD->LoadTexture("ib-cd1-d", TEXTURE_16BIT_PALETTE);
+  papredoll_dbrds[7] = pIcons_LOD->LoadTexture("ib-cd2-d", TEXTURE_16BIT_PALETTE);
+  papredoll_dbrds[5] = pIcons_LOD->LoadTexture("ib-cd3-d", TEXTURE_16BIT_PALETTE);
+  papredoll_dbrds[3] = pIcons_LOD->LoadTexture("ib-cd4-d", TEXTURE_16BIT_PALETTE);
+  papredoll_dbrds[1] = pIcons_LOD->LoadTexture("ib-cd5-d", TEXTURE_16BIT_PALETTE);
+  v11 = 0;
+  do
+  {
+    byte_5111C0[v11] = 0;
+    if ( pParty->pPickedItem.uItemID != v11 + 66 )
+    {
+      pPlayer3 = pParty->pPlayers;
+      while ( !sub_43EE15_player_has_item(v11 + 66, pPlayer3, 0) )
+      {
+        ++pPlayer3;
+        if ( (signed int)pPlayer3 >= (signed int)pParty->pHirelings )
+          goto LABEL_28;
+      }
+    }
+    byte_5111C0[v11] = 1;
+LABEL_28:
+    ++v11;
+  }
+  while ( v11 < 54 );
+
+  memset(byte_5111F6, 0, 16);
+  for (uint i = 0; i < 4; ++i)
+  {
+    auto player = pParty->pPlayers + i;
+
+    if (sub_43EE15_player_has_item(ITEM_ARTICACT_GOVERNONS_ARMOR, player, 1))    byte_5111F6[0] = 1;
+    if (sub_43EE15_player_has_item(ITEM_ARTIFACT_YORUBA, player, 1))             byte_5111F6[1] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RELIC_HARECS_LEATHER, player, 1))        byte_5111F6[2] = 1;
+    if (sub_43EE15_player_has_item(ITEM_ARTIFACT_LEAGUE_BOOTS, player, 1))       byte_5111F6[3] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RELIC_TALEDONS_HELM, player, 1))         byte_5111F6[4] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RELIC_SCHOLARS_CAP, player, 1))          byte_5111F6[5] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RELIC_PHYNAXIAN_CROWN, player, 1))       byte_5111F6[6] = 1;
+    if (sub_43EE15_player_has_item(ITEM_ARTIFACT_MINDS_EYE, player, 1))          byte_5111F6[7] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RARE_SHADOWS_MASK, player, 1))           byte_5111F6[8] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RILIC_TITANS_BELT, player, 1))           byte_5111F6[9] = 1;
+    if (sub_43EE15_player_has_item(ITEM_ARTIFAT_HEROS_BELT, player, 1))          byte_5111F6[10] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RELIC_TWILIGHT, player, 1))              byte_5111F6[11] = 1;
+    if (sub_43EE15_player_has_item(ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP, player, 1)) byte_5111F6[12] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RARE_SUN_CLOAK, player, 1))              byte_5111F6[13] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RARE_MOON_CLOAK, player, 1))             byte_5111F6[14] = 1;
+    if (sub_43EE15_player_has_item(ITEM_RARE_VAMPIRES_CAPE, player, 1))          byte_5111F6[15] = 1;
+    if (sub_43EE15_player_has_item(ITEM_ELVEN_CHAINMAIL, player, 1))             byte_5111F6[16] = 1;
+  }
+  
+  //v14 = 1;
+  //v15 = &stru_511698.field_2C;
+  //v35 = (char *)&stru_511718.field_18;
+  for (uint i = 0; i < 2; ++i)
+  {
+    //v16 = 0;
+    //v39 = (unsigned int *)(v35 - 24);
+    for (uint j = 0; j < 5; ++j)
+    {
+      _43C91D_FormItemTextureFilename(pContainer, j + 100, i + 1, 0);
+      //v17 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      //++v16;
+      //v18 = v39;
+      //++v39;
+      //*v18 = v17;
+      stru_511718[i].texids[j] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    }
+    //while ( v16 < 5 );
+    
+    //*(int *)v35 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    _43C91D_FormItemTextureFilename(pContainer, 535, i + 1, 0);
+    stru_511718[i].texid2 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+
+    //v31 = 0;
+    //v19 = (unsigned int *)((char *)v15 - 44);
+    for (uint j = 0; j < 11; ++j)
+    {
+      _43C91D_FormItemTextureFilename(pContainer, j + 89, i + 1, 0);
+      //*v19 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      //++v19;
+      stru_511698[i].texids[j] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    }
+    //while ( v31 < 11 );
+
+    _43C91D_FormItemTextureFilename(pContainer, 521, i + 1, 0);
+    stru_511698[i].texid1 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    _43C91D_FormItemTextureFilename(pContainer, 522, i + 1, 0);
+    stru_511698[i].texid2 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    _43C91D_FormItemTextureFilename(pContainer, 523, i + 1, 0);
+    stru_511698[i].texid3 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    _43C91D_FormItemTextureFilename(pContainer, 532, i + 1, 0);
+    stru_511698[i].texid4 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    _43C91D_FormItemTextureFilename(pContainer, 544, i + 1, 0);
+    stru_511698[i].texid5 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    if ( _43ED6F_check_party_races(true) )
+      papredoll_dbrds[11] = pIcons_LOD->LoadTexture("item092v3", TEXTURE_16BIT_PALETTE);
+    //v35 += 28;
+    //++v14;
+    //++v15;
+  }
+  //while ( v14 - 1 < 2 );
+
+  v43 = 0;
+  //v20 = 1;
+  v40 = &dword_511638[0][5];
+  v21 = (int)paperdoll_array_511290[0][13];
+  //v41 = (unsigned int *)&stru_511718.texid1;
+  for (uint i = 0; i < 4; ++i)
+  {
+    if ( sub_43EDB9_get_some_race_sex_relation_2(i) )
+    {
+      _43C91D_FormItemTextureFilename(pContainer, 524, i + 1, 0);
+      v32 = 66;
+      stru_511718[i].texid1 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      v36 = v21 - 152;
+      do
+      {
+        _43C91D_FormItemTextureFilename(pContainer, v32, i + 1, 0);
+        *(int *)(v36 - 4) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        _43C91D_FormItemTextureFilename(pContainer, v32, i + 1, 1);
+        *(int *)v36 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        _43C91D_FormItemTextureFilename(pContainer, v32, i + 1, 2);
+        v22 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        v23 = v36;
+        v36 += 12;
+        ++v32;
+        *(int *)(v23 + 4) = v22;
+      }
+      while ( v32 - 66 < 13 );
+      _43C91D_FormItemTextureFilename(pContainer, 516, i + 1, 0);
+      *(int *)v21 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 516, i + 1, 1);
+      *(int *)(v21 + 4) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 516, i + 1, 2);
+      *(int *)(v21 + 8) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 505, i + 1, 0);
+      *(int *)(v21 + 12) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 505, i + 1, 1);
+      *(int *)(v21 + 16) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 505, i + 1, 2);
+      *(int *)(v21 + 20) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 504, i + 1, 0);
+      *(int *)(v21 + 24) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 504, i + 1, 1);
+      *(int *)(v21 + 28) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 504, i + 1, 2);
+      *(int *)(v21 + 32) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 533, i + 1, 0);
+      *(int *)(v21 + 36) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 533, i + 1, 1);
+      *(int *)(v21 + 40) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 533, i + 1, 2);
+      *(int *)(v21 + 44) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      v33 = 0;
+      v37 = (int)(v40 - 5);
+      do
+      {
+        _43C91D_FormItemTextureFilename(pContainer, v33 + 115, i + 1, 0);
+        v24 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        ++v33;
+        v25 = v37;
+        v37 += 4;
+        *(int *)v25 = v24;
+      }
+      while ( v33 < 5 );
+      _43C91D_FormItemTextureFilename(pContainer, 512, i + 1, 0);
+      v26 = v43;
+      v38 = 105;
+      v34 = v43;
+      *v40 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      do
+      {
+        _43C91D_FormItemTextureFilename(pContainer, v38, i + 1, 0);
+        *(int *)((char *)paperdoll_array_511828 + v34) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        _43C91D_FormItemTextureFilename(pContainer, v38, i + 1, 1);
+        v27 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        v28 = v34;
+        v34 += 4;
+        ++v38;
+        *(int *)((char *)dword_511788 + v28) = v27;
+      }
+      while ( v38 - 105 < 5 );
+      _43C91D_FormItemTextureFilename(pContainer, 525, i + 1, 0);
+      *(int *)((char *)&paperdoll_array_511828[0][5] + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 530, i + 1, 0);
+      *(int *)((char *)&paperdoll_array_511828[0][6] + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 547, i + 1, 0);
+      *(int *)((char *)&paperdoll_array_511828[0][7] + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 548, i + 1, 0);
+      *(int *)((char *)&paperdoll_array_511828[0][8] + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 550, i + 1, 0);
+      *(int *)((char *)&paperdoll_array_511828[0][9] + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 525, i + 1, 1);
+      *(int *)((char *)&dword_51179C + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 530, i + 1, 1);
+      *(int *)((char *)&dword_5117A0 + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 547, i + 1, 1);
+      *(int *)((char *)&dword_5117A4 + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 548, i + 1, 1);
+      *(int *)((char *)&dword_5117A8 + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      _43C91D_FormItemTextureFilename(pContainer, 550, i + 1, 1);
+      *(int *)((char *)&dword_5117AC + v43) = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    }
+    else
+    {
+      v26 = v43;
+    }
+    //v41 += 7;
+    v40 += 6;
+    v21 += 204;
+    //++v20;
+    //result = v20 - 1;
+    v43 = v26 + 40;
+  }
+  //while ( v20 - 1 < 4 );
+  //return result;
+}
+
+//----- (00419401) --------------------------------------------------------
+void __cdecl CharacterUI_SkillScreen_Draw()
+    {
+    unsigned int v0; // ecx@3
+    GUIButton *pButton; // eax@3
+    GUIFont *v2; // eax@8
+    unsigned int v3; // esi@8
+    int v4; // eax@10
+    unsigned int v5; // esi@14
+    int v6; // eax@17
+    unsigned int v7; // esi@19
+    int v8; // eax@21
+    unsigned int v9; // esi@25
+    int v10; // eax@27
+    int a2; // [sp+10h] [bp-14h]@1
+    int v12; // [sp+14h] [bp-10h]@8
+    int v13; // [sp+14h] [bp-10h]@19
+    int *v14; // [sp+18h] [bp-Ch]@8
+    int *v15; // [sp+18h] [bp-Ch]@14
+    int *v16; // [sp+18h] [bp-Ch]@19
+    int *v17; // [sp+18h] [bp-Ch]@25
+    Player *v18; // [sp+1Ch] [bp-8h]@8
+    int a5; // [sp+20h] [bp-4h]@8
+
+    a2 = 0;
+    if ( dword_507CC0 )
+        sub_4196A0();
+    v0 = uActiveCharacter;
+    dword_507CC0 = uActiveCharacter;
+    for ( pButton = pGUIWindow_CurrentMenu->pControlsHead; pButton; pButton = pButton->pNext )
+        {
+        if ( pButton->uControlID == 120 )
+            {
+            dword_50698C = pButton->uX;
+            dword_506988 = pButton->uY;
+            dword_506984 = pButton->uZ;
+            dword_506980 = pButton->uW;
+            pButton->uW = 0;
+            pButton->uZ = 0;
+            pButton->uY = 0;
+            pButton->uX = 0;
+            v0 = uActiveCharacter;
+            }
+        }
+    v12 = 0;
+    a5 = pGUIWindow_CurrentMenu->uNumControls;
+    v18 = &pParty->pPlayers[v0-1];
+    v2 = pFontLucida;
+    v14 = pWeaponSkills;
+    v3 = 2 * LOBYTE(pFontLucida->uFontHeight) + 13;
+    do
+        {
+        if ( v18->pActiveSkills[*v14] & 0x3F )//crash
+            {
+            v4 = LOBYTE(v2->uFontHeight);
+            v3 = v3 + v4 - 3;
+            ++a2;
+            ++v12;
+            pGUIWindow_CurrentMenu->CreateButton(0x18u, v3, 0xCCu, v4 - 3, 3, *v14 | 0x8000, 0x79u, *v14, 0, "", 0, 0);
+            v2 = pFontLucida;
+            }
+        ++v14;
+        }
+        while ( v14 <= &pWeaponSkills[8] );
+        if ( !v12 )
+            v3 = v3 + LOBYTE(v2->uFontHeight) - 3;
+        v15 = pMagicSkills;
+        v5 = v3 + 2 * LOBYTE(v2->uFontHeight) - 6;
+        do
+            {
+            if ( v18->pActiveSkills[*v15] & 0x3F && a2 < 15 )
+                {
+                v6 = LOBYTE(v2->uFontHeight);
+                v5 = v5 + v6 - 3;
+                ++a2;
+                pGUIWindow_CurrentMenu->CreateButton(0x18u, v5, 0xCCu, v6 - 3, 3, *v15 | 0x8000, 0x79u, *v15, 0, "", 0, 0);
+                v2 = pFontLucida;
+                }
+            ++v15;
+            }
+            while ( v15 <= &pMagicSkills[8] );
+            v13 = 0;
+            v16 = pArmorSkills;
+            v7 = 2 * LOBYTE(v2->uFontHeight) + 13;
+            do
+                {
+                if ( v18->pActiveSkills[*v16] & 0x3F )
+                    {
+                    v8 = LOBYTE(v2->uFontHeight);
+                    v7 = v7 + v8 - 3;
+                    ++a2;
+                    ++v13;
+                    pGUIWindow_CurrentMenu->CreateButton(0xF6u, v7, 0xCCu, v8 - 3, 3, *v16 | 0x8000, 0x79u, *v16, 0, "", 0, 0);
+                    v2 = pFontLucida;
+                    }
+                ++v16;
+                }
+                while ( v16 <= &pArmorSkills[4] );
+                if ( !v13 )
+                    v7 = v7 + LOBYTE(v2->uFontHeight) - 3;
+                v17 = pMiscSkills;
+                v9 = v7 + 2 * LOBYTE(v2->uFontHeight) - 6;
+                do
+                    {
+                    if ( v18->pActiveSkills[*v17] & 0x3F )
+                        {
+                        v10 = LOBYTE(v2->uFontHeight);
+                        v9 = v9 + v10 - 3;
+                        ++a2;
+                        pGUIWindow_CurrentMenu->CreateButton(0xF6u, v9, 0xCCu, v10 - 3, 3, *v17 | 0x8000, 0x79u, *v17, 0, "", 0, 0);
+                        v2 = pFontLucida;
+                        }
+                    ++v17;
+                    }
+                    while ( v17 <= &pMiscSkills[11] );
+                    if ( a2 )
+                        pGUIWindow_CurrentMenu->_41D08F(a2, 1, 0, a5);
+    }
+
+
+    //----- (00418511) --------------------------------------------------------
+    char __fastcall CharacterUI_StatsTab_Draw(unsigned int uPlayerID)
+        {
+        Player *pPlayer; // edi@1
+        unsigned int v2; // eax@1
+        unsigned int v3; // eax@1
+        unsigned int v4; // eax@2
+        int v5; // ST20_4@4
+        int v6; // ST1C_4@4
+        int v7; // ebp@4
+        int v8; // eax@4
+        unsigned int v9; // eax@4
+        int v10; // ST34_4@4
+        int v11; // ST20_4@4
+        int v12; // ST1C_4@4
+        int v13; // ebp@4
+        int v14; // eax@4
+        unsigned int v15; // eax@4
+        int v16; // ST34_4@4
+        int v17; // ST20_4@4
+        int v18; // ST1C_4@4
+        int v19; // ebp@4
+        int v20; // eax@4
+        unsigned int v21; // eax@4
+        int v22; // ST34_4@4
+        int v23; // ST20_4@4
+        int v24; // ST1C_4@4
+        int v25; // ebp@4
+        int v26; // eax@4
+        unsigned int v27; // eax@4
+        int v28; // ST34_4@4
+        int v29; // ST20_4@4
+        int v30; // ST1C_4@4
+        int v31; // ebp@4
+        int v32; // eax@4
+        unsigned int v33; // eax@4
+        int v34; // ST34_4@4
+        int v35; // ST20_4@4
+        int v36; // ST1C_4@4
+        int v37; // ebp@4
+        int v38; // eax@4
+        unsigned int v39; // eax@4
+        int v40; // ST34_4@4
+        int v41; // ST20_4@4
+        int v42; // ST1C_4@4
+        int v43; // ebp@4
+        int v44; // eax@4
+        unsigned int v45; // eax@4
+        int v46; // ebp@4
+        signed int v47; // ST20_4@6
+        int v48; // ST1C_4@6
+        signed int v49; // eax@6
+        unsigned int v50; // eax@6
+        int v51; // ST20_4@8
+        int v52; // ST1C_4@8
+        int v53; // eax@8
+        unsigned int v54; // eax@8
+        int v55; // ST34_4@8
+        int v56; // ST20_4@8
+        int v57; // ST1C_4@8
+        int v58; // ebp@8
+        int v59; // eax@8
+        unsigned int v60; // eax@8
+        unsigned int v61; // ebp@8
+        unsigned int v62; // eax@8
+        char *v63; // ST20_4@8
+        signed int v64; // eax@8
+        unsigned int v65; // ebp@8
+        unsigned __int8 v66; // al@8
+        char *v67; // eax@9
+        unsigned int v68; // ST20_4@11
+        unsigned int v69; // ST1C_4@11
+        signed int v70; // ebp@11
+        signed int v71; // eax@11
+        unsigned int v72; // eax@11
+        int v73; // ST20_4@13
+        int v74; // ST1C_4@13
+        int v75; // ebp@13
+        int v76; // eax@13
+        unsigned int v77; // eax@13
+        char *v78; // ecx@14
+        int v79; // ST20_4@16
+        char *v80; // ST40_4@16
+        unsigned int v81; // eax@16
+        int v82; // ST34_4@16
+        int v83; // eax@16
+        int v84; // ST34_4@16
+        char *v85; // eax@16
+        int v86; // ST34_4@16
+        int v87; // eax@16
+        int v88; // ST34_4@16
+        char *v89; // eax@16
+        int v90; // eax@16
+        int v91; // ST20_4@19
+        unsigned int v92; // eax@19
+        int v93; // eax@19
+        int v94; // ST20_4@22
+        unsigned int v95; // eax@22
+        int v96; // eax@22
+        int v97; // ST20_4@25
+        unsigned int v98; // eax@25
+        int v99; // eax@25
+        int v100; // ST20_4@27
+        unsigned int v101; // eax@27
+        int v102; // eax@27
+        int v103; // ST20_4@30
+        unsigned int v104; // eax@30
+        char *v105; // ST20_4@32
+        unsigned int v106; // eax@32
+        int v107; // eax@33
+        int v108; // ST20_4@36
+        unsigned int v109; // eax@36
+        char *v110; // ST20_4@38
+        unsigned int v111; // eax@38
+        int uY; // [sp+10h] [bp-10h]@6
+        int uYa; // [sp+10h] [bp-10h]@11
+        int uYb; // [sp+10h] [bp-10h]@13
+        int uYc; // [sp+10h] [bp-10h]@16
+        int uYd; // [sp+10h] [bp-10h]@19
+        int uYe; // [sp+10h] [bp-10h]@22
+        int uYf; // [sp+10h] [bp-10h]@25
+        int uYg; // [sp+10h] [bp-10h]@27
+        int uYh; // [sp+10h] [bp-10h]@33
+        const char *a2; // [sp+14h] [bp-Ch]@4
+        const char *a2a; // [sp+14h] [bp-Ch]@6
+        const char *a2b; // [sp+14h] [bp-Ch]@11
+        const char *a2c; // [sp+14h] [bp-Ch]@16
+        const char *a2d; // [sp+14h] [bp-Ch]@19
+        const char *a2e; // [sp+14h] [bp-Ch]@22
+        const char *a2f; // [sp+14h] [bp-Ch]@25
+        const char *a2g; // [sp+14h] [bp-Ch]@27
+        const char *a2h; // [sp+14h] [bp-Ch]@33
+        int v131; // [sp+18h] [bp-8h]@16
+        int v132; // [sp+18h] [bp-8h]@19
+        int v133; // [sp+18h] [bp-8h]@22
+        int v134; // [sp+18h] [bp-8h]@25
+        int v135; // [sp+18h] [bp-8h]@27
+        int v136; // [sp+18h] [bp-8h]@33
+        int v137; // [sp+1Ch] [bp-4h]@27
+        int v138; // [sp+1Ch] [bp-4h]@33
+
+        pPlayer = &pParty->pPlayers[uPlayerID-1];
+        v2 = pIcons_LOD->LoadTexture("fr_stats", TEXTURE_16BIT_PALETTE);
+        pRenderer->DrawTextureIndexed(8, 8, (Texture *)(v2 != -1 ? (int)&pIcons_LOD->pTextures[v2] : 0));
+        v3 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+        sprintf(pTmpBuf, "\f%05d", v3);
+        sprintf(pTmpBuf2, pGlobalTXT_LocalizationStrings[429], pPlayer->pName, pClassNames[pPlayer->classType]);//^Pi[%s] %s
+        strcat(pTmpBuf, pTmpBuf2);
+        if ( pPlayer->uSkillPoints )
+            v4 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0);
+        else
+            v4 = 0xFFFFu;
+        sprintf(pTmpBuf2,  "\f00000\r180%s: \f%05d%d\f00000\n\n\n", pGlobalTXT_LocalizationStrings[207], v4, pPlayer->uSkillPoints);//Skill points
+        strcat(pTmpBuf, pTmpBuf2);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, 18, 0, pTmpBuf, 0, 0, 0);
+        v5 = pPlayer->GetBaseStrength();
+        v6 = pPlayer->GetActualMight();
+        v7 = pPlayer->GetBaseStrength();
+        v8 = pPlayer->GetActualMight();
+        v9 = UI_GetHealthManaStringColor(v8, v7);
+        sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[144], v9, v6, v5);//Might
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, 53, 0, pTmpBuf, 0, 0, 0);
+        v10 = LOBYTE(pFontArrus->uFontHeight) + 51;
+        v11 = pPlayer->GetBaseIntelligence();
+        v12 = pPlayer->GetActualIntelligence();
+        v13 = pPlayer->GetBaseIntelligence();
+        v14 = pPlayer->GetActualIntelligence();
+        v15 = UI_GetHealthManaStringColor(v14, v13);
+        sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[116], v15, v12, v11);//Intellect
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf, 0, 0, 0);
+        v16 = LOBYTE(pFontArrus->uFontHeight) + v10 - 2;
+        v17 = pPlayer->GetBaseWillpower();
+        v18 = pPlayer->GetActualWillpower();
+        v19 = pPlayer->GetBaseWillpower();
+        v20 = pPlayer->GetActualWillpower();
+        v21 = UI_GetHealthManaStringColor(v20, v19);
+        sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[163], v21, v18, v17);//
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v16, 0, pTmpBuf, 0, 0, 0);
+        v22 = LOBYTE(pFontArrus->uFontHeight) + v16 - 2;
+        v23 = pPlayer->GetBaseEndurance();
+        v24 = pPlayer->GetActualEndurance();
+        v25 = pPlayer->GetBaseEndurance();
+        v26 = pPlayer->GetActualEndurance();
+        v27 = UI_GetHealthManaStringColor(v26, v25);
+        sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[75], v27, v24, v23);//
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v22, 0, pTmpBuf, 0, 0, 0);
+        v28 = LOBYTE(pFontArrus->uFontHeight) + v22 - 2;
+        v29 = pPlayer->GetBaseAccuracy();
+        v30 = pPlayer->GetActualAccuracy();
+        v31 = pPlayer->GetBaseAccuracy();
+        v32 = pPlayer->GetActualAccuracy();
+        v33 = UI_GetHealthManaStringColor(v32, v31);
+        sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[1], v33, v30, v29);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v28, 0, pTmpBuf, 0, 0, 0);
+        v34 = LOBYTE(pFontArrus->uFontHeight) + v28 - 2;
+        v35 = pPlayer->GetBaseSpeed();
+        v36 = pPlayer->GetActualSpeed();
+        v37 = pPlayer->GetBaseSpeed();
+        v38 = pPlayer->GetActualSpeed();
+        v39 = UI_GetHealthManaStringColor(v38, v37);
+        sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[211], v39, v36, v35);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v34, 0, pTmpBuf, 0, 0, 0);
+        v40 = LOBYTE(pFontArrus->uFontHeight) + v34 - 2;
+        v41 = pPlayer->GetBaseLuck();
+        v42 = pPlayer->GetActualLuck();
+        v43 = pPlayer->GetBaseLuck();
+        v44 = pPlayer->GetActualLuck();
+        v45 = UI_GetHealthManaStringColor(v44, v43);
+        sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n\n", pGlobalTXT_LocalizationStrings[136], v45, v42, v41);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v40, 0, pTmpBuf, 0, 0, 0);
+        a2 = "%s\f%05u\r424%d\f00000 /\t185%d\n";
+        v46 = v40 + 2 * LOBYTE(pFontArrus->uFontHeight) + 5;
+        if ( pPlayer->GetMaxHealth() >= 1000 )
+            a2 = "%s\f%05u\r388%d\f00000 / %d\n";
+        v47 = pPlayer->GetMaxHealth();
+        v48 = pPlayer->sHealth;
+        v49 = pPlayer->GetMaxHealth();
+        v50 = UI_GetHealthManaStringColor(pPlayer->sHealth, v49);
+        sprintf(pTmpBuf, a2, pGlobalTXT_LocalizationStrings[108], v50, v48, v47);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v46, 0, pTmpBuf, 0, 0, 0);
+        a2a = "%s\f%05u\r424%d\f00000 /\t185%d\n";
+        uY = LOBYTE(pFontArrus->uFontHeight) + v46 - 2;
+        if ( pPlayer->GetMaxMana() >= 1000 )
+            a2a = "%s\f%05u\r388%d\f00000 / %d\n";
+        v51 = pPlayer->GetMaxMana();
+        v52 = pPlayer->sMana;
+        v53 = pPlayer->GetMaxMana();
+        v54 = UI_GetHealthManaStringColor(pPlayer->sMana, v53);
+        sprintf(pTmpBuf, a2a, pGlobalTXT_LocalizationStrings[212], v54, v52, v51);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, uY, 0, pTmpBuf, 0, 0, 0);
+        v55 = LOBYTE(pFontArrus->uFontHeight) + uY - 2;
+        v56 = pPlayer->GetBaseAC();
+        v57 = pPlayer->GetActualAC();
+        v58 = pPlayer->GetBaseAC();
+        v59 = pPlayer->GetActualAC();
+        v60 = UI_GetHealthManaStringColor(v59, v58);
+        sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n\n", pGlobalTXT_LocalizationStrings[12], v60, v57, v56);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v55, 0, pTmpBuf, 0, 0, 0);
+        v61 = v55 + 2 * LOBYTE(pFontArrus->uFontHeight) - 2;
+        v62 = pPlayer->GetMajorConditionIdx();
+        v63 = aCharacterConditionNames[v62];
+        v64 = GetConditionDrawColor(v62);
+        sprintf(pTmpBuf, "%s: \f%05d%s\n", pGlobalTXT_LocalizationStrings[47], v64, v63);
+        pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x1Au, v61, 0, pTmpBuf, 226, 0);
+        v65 = LOBYTE(pFontArrus->uFontHeight) + v61 - 1;
+        v66 = pPlayer->uQuickSpell;
+        if ( v66 )
+            v67 = pSpellStats->pInfos[v66].pShortName;
+        else
+            v67 = pGlobalTXT_LocalizationStrings[153];
+        sprintf(pTmpBuf, "%s: %s", pGlobalTXT_LocalizationStrings[172], v67);
+        pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x1Au, v65, 0, pTmpBuf, 226, 0);
+        v68 = pPlayer->GetBaseAge();
+        v69 = pPlayer->GetActualAge();
+        v70 = pPlayer->GetBaseAge();
+        v71 = pPlayer->GetActualAge();
+        v72 = UI_GetHealthManaStringColor(v71, v70);
+        sprintf(pTmpBuf, "%s\f%05u\t100%d\f00000 / %d\n", pGlobalTXT_LocalizationStrings[5], v72, v69, v68);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, 50, 0, pTmpBuf, 0, 0, 0);
+        a2b = "%s\f%05u\t100%d\f00000 / %d\n";
+        uYa = LOBYTE(pFontArrus->uFontHeight) + 48;
+        if ( pPlayer->GetBaseLevel() > 99 )
+            a2b = format_4E2E68;
+        v73 = pPlayer->GetBaseLevel();
+        v74 = pPlayer->GetActualLevel();
+        v75 = pPlayer->GetBaseLevel();
+        v76 = pPlayer->GetActualLevel();
+        v77 = UI_GetHealthManaStringColor(v76, v75);
+        sprintf(pTmpBuf, a2b, pGlobalTXT_LocalizationStrings[131], v77, v74, v73);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYa, 0, pTmpBuf, 0, 0, 0);
+        uYb = uYa + LOBYTE(pFontArrus->uFontHeight) - 2;
+        if ( (signed __int64)pPlayer->uExperience <= 9999999 )
+            v78 = pGlobalTXT_LocalizationStrings[83];
+        else
+            v78 = pGlobalTXT_LocalizationStrings[17];
+        v79 = LODWORD(pPlayer->uExperience);
+        v80 = v78;
+        v81 = pPlayer->GetExperienceDisplayColor();
+        sprintf(pTmpBuf, "%s\r180\f%05d%lu\f00000\n\n", v80, v81, v79);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYb, 0, pTmpBuf, 0, 0, 0);
+        v82 = uYb + 2 * LOBYTE(pFontArrus->uFontHeight);
+        v83 = pPlayer->GetActualAttack(0);
+        sprintf(pTmpBuf, "%s\t100%+d\n", pGlobalTXT_LocalizationStrings[18], v83);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v82, 0, pTmpBuf, 0, 0, 0);
+        v84 = v82 + LOBYTE(pFontArrus->uFontHeight) - 2;
+        v85 = pPlayer->GetMeleeDamageString();
+        sprintf(pTmpBuf, "%s\t100 %s\n", pGlobalTXT_LocalizationStrings[53], v85);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v84, 0, pTmpBuf, 0, 0, 0);
+        v86 = v84 + LOBYTE(pFontArrus->uFontHeight) - 2;
+        v87 = pPlayer->GetRangedAttack();
+        sprintf(pTmpBuf, "%s\t100%+d\n", pGlobalTXT_LocalizationStrings[203], v87);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v86, 0, pTmpBuf, 0, 0, 0);
+        v88 = v86 + LOBYTE(pFontArrus->uFontHeight) - 2;
+        v89 = pPlayer->GetRangedDamageString();
+        sprintf(pTmpBuf, "%s\t100 %s\n\n", pGlobalTXT_LocalizationStrings[53], v89);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v88, 0, pTmpBuf, 0, 0, 0);
+        a2c = format_4E2E10;
+        uYc = v88 + 2 * LOBYTE(pFontArrus->uFontHeight) - 4;
+        v131 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_FIRE);
+        v90 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_FIRE);
+        if ( v131 > 99 || v90 > 99 )
+            a2c = format_4E2E68;
+        v91 = v90;
+        v92 = UI_GetHealthManaStringColor(v131, v90);
+        sprintf(pTmpBuf, a2c, pGlobalTXT_LocalizationStrings[87], v92, v131, v91);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYc, 0, pTmpBuf, 0, 0, 0);
+        a2d = format_4E2E10;
+        uYd = uYc + LOBYTE(pFontArrus->uFontHeight) - 2;
+        v132 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_AIR);
+        v93 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_AIR);
+        if ( v132 > 99 || v93 > 99 )
+            a2d = format_4E2E68;
+        v94 = v93;
+        v95 = UI_GetHealthManaStringColor(v132, v93);
+        sprintf(pTmpBuf, a2d, pGlobalTXT_LocalizationStrings[6], v95, v132, v94);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYd, 0, pTmpBuf, 0, 0, 0);
+        a2e = format_4E2E10;
+        uYe = uYd + LOBYTE(pFontArrus->uFontHeight) - 2;
+        v133 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_WATER);
+        v96 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_WATER);
+        if ( v133 > 99 || v96 > 99 )
+            a2e = format_4E2E68;
+        v97 = v96;
+        v98 = UI_GetHealthManaStringColor(v133, v96);
+        sprintf(pTmpBuf, a2e, pGlobalTXT_LocalizationStrings[240], v98, v133, v97);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYe, 0, pTmpBuf, 0, 0, 0);
+        a2f = format_4E2E10;
+        uYf = uYe + LOBYTE(pFontArrus->uFontHeight) - 2;
+        v134 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_EARTH);
+        v99 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_EARTH);
+        if ( v134 > 99 )
+            a2f = format_4E2E68;
+        v100 = v99;
+        v101 = UI_GetHealthManaStringColor(v134, v99);
+        sprintf(pTmpBuf, a2f, pGlobalTXT_LocalizationStrings[70], v101, v134, v100);
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYf, 0, pTmpBuf, 0, 0, 0);
+        a2g = format_4E2E10;
+        uYg = uYf + LOBYTE(pFontArrus->uFontHeight) - 2;
+        v135 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_MIND);
+        v102 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_MIND);
+        v137 = v102;
+        if ( v135 > 99 || v102 > 99 )
+            a2g = format_4E2E68;
+        v103 = v102;
+        v104 = UI_GetHealthManaStringColor(v135, v102);
+        sprintf(pTmpBuf, a2g, pGlobalTXT_LocalizationStrings[142], v104, v135, v103);
+        if ( pPlayer->classType == PLAYER_CLASS_LICH && v137 == 200 )
+            {
+            v105 = pGlobalTXT_LocalizationStrings[625];
+            v106 = UI_GetHealthManaStringColor(v135, 200);
+            sprintf(pTmpBuf, format_4E2E00, pGlobalTXT_LocalizationStrings[142], v106, v105);
+            }
+        pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYg, 0, pTmpBuf, 0, 0, 0);
+        a2h = format_4E2E10;
+        uYh = uYg + LOBYTE(pFontArrus->uFontHeight) - 2;
+        v136 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_BODY);
+        v107 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_BODY);
+        v138 = v107;
+        if ( v136 > 99 || v107 > 99 )
+            a2h = format_4E2E68;
+        v108 = v107;
+        v109 = UI_GetHealthManaStringColor(v136, v107);
+        sprintf(pTmpBuf, a2h, pGlobalTXT_LocalizationStrings[29], v109, v136, v108);
+        if ( pPlayer->classType == PLAYER_CLASS_LICH && v138 == 200 )
+            {
+            v110 = pGlobalTXT_LocalizationStrings[625];
+            v111 = UI_GetHealthManaStringColor(v136, 200);
+            sprintf(pTmpBuf, format_4E2E00, pGlobalTXT_LocalizationStrings[29], v111, v110);
+            }
+        return pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYh, 0, pTmpBuf, 0, 0, 0);
+        }
+
+    //----- (00419100) --------------------------------------------------------
+    void FillAwardsData()
+        {
+        Player *pPlayer; // esi@1
+
+        pPlayer = pPlayers[uActiveCharacter];
+        memset(&achievedAwardsIndex, 0, 4000);
+        memset(pTmpBuf2, 0, 0x7D0u);
+        dword_506544 = 0;
+        dword_506548 = 0;
+        awards_count = 0;
+        dword_50651C = 0;
+        dword_506528 = 0;
+        for(int i=0; i<105; ++i)
+            {
+            if ( _449B57_test_bit((unsigned char*)&pPlayer->_guilds_member_bits, i) && pAwards[i].pText )
+                achievedAwardsIndex[awards_count++] = i;
+            }
+        awards_count2 = awards_count;
+        awards_count = 0;
+        //sort awards index 
+        if ( awards_count2>0 )
+            {
+            for(int i=0; i<awards_count2; ++i)
+                achievedAwardsIndex[awards_count2 + i] = rand() % 16;
+
+            for(int i=1; i<awards_count2-1; ++i)
+                {
+                for (int j = i; j < awards_count2-1; ++j )
+                    {
+                    int tmp=achievedAwardsIndex[j];
+                    if(pAwards[j].uSort < pAwards[i].uSort)
+                        {
+                        achievedAwardsIndex[j] = achievedAwardsIndex[i];
+                        achievedAwardsIndex[i] = tmp;
+                        }
+                    }
+                }
+            }
+        }