uint __thiscall FUN_0057c590(int param_1_00,char param_2) { int iVar1; bool bVar2; cEditorSkinMesh *pcVar3; cEditorSkinMesh *in_EAX; Thumbnail_cImportExport *this; uint3 extraout_var; uint3 uVar8; string16 *psVar4; uint uVar5; cEditorSkinMesh *pcVar6; uint uVar7; wchar_t *pwVar9; wchar_t *pwVar10; wchar_t *pwVar11; wchar_t *pwVar12; string16 local_220; uint local_210; wchar_t local_208 [260]; if (param_2 != '\0') { if (*(int *)(param_1_00 + 0x78) != 0) { FUN_005dd4e0(*(int *)(param_1_00 + 0x78)); } return CONCAT31((int3)((uint)in_EAX >> 8),1); } if (*(cEditorSkin **)(param_1_00 + 0x150) == (cEditorSkin *)0x0) { pcVar6 = (cEditorSkinMesh *)0x0; local_220.mpBegin = (wchar16 *)in_EAX; } else { local_220.mpBegin = (wchar16 *)Editors::cEditorSkin::GetMesh(*(cEditorSkin **)(param_1_00 + 0x150),1); pcVar6 = (cEditorSkinMesh *)local_220.mpBegin; } if ((*(int *)(param_1_00 + 0x98) == 0) || (pcVar6 == (cEditorSkinMesh *)0x0)) { LAB_0057c75e: return (uint)local_220.mpBegin & 0xffffff00; } local_220.mpBegin = (wchar16 *)&_Src_01667bac; local_220.mpEnd = (wchar16 *)&_Src_01667bac; local_220.mpCapacity = &DAT_01667bae; this = App::Thumbnail_cImportExport::Get(); if (this == (Thumbnail_cImportExport *)0x0) { if ((2 < (int)((int)local_220.mpCapacity - (int)local_220.mpBegin & 0xfffffffeU)) && ((cEditorSkinMesh *)local_220.mpBegin != (cEditorSkinMesh *)0x0)) { GeneralAllocator::delete_(local_220.mpBegin); } goto LAB_0057c75e; } App::Thumbnail_cImportExport::GetFolderPath(this,0x2b978c46,&local_220); if (local_220.mpBegin == local_220.mpEnd) { uVar8 = extraout_var; FUN_00933930((int *)&local_220); return (uint)uVar8 << 8; } pwVar12 = (wchar_t *)0x0; pwVar11 = local_208; pwVar10 = (wchar_t *)0x0; pwVar9 = (wchar_t *)0x0; psVar4 = Editors::EditorModel::GetCreationName(*(EditorModel **)(param_1_00 + 0x98)); FUN_009303f0((wchar_t *)psVar4,pwVar9,pwVar10,pwVar11,pwVar12); pcVar3 = (cEditorSkinMesh *)local_220.mpBegin; iVar1 = pcVar6->field_34; if (iVar1 != 0) { if (((int)(pcVar6->field_7C).mpEnd - (int)(pcVar6->field_7C).mpBegin) / 0x14 == (*(int *)(iVar1 + 0xc) - *(int *)(iVar1 + 8)) / 0xc) { bVar2 = true; goto LAB_0057c6a3; } } bVar2 = false; LAB_0057c6a3: uVar5 = FUN_004c46a0(*(uint *)(param_1_00 + 0x150)); if (((char)uVar5 == '\0') || (!bVar2)) { local_210 = local_210 & 0xffff0000; FUN_004c3950(*(undefined4 **)(param_1_00 + 0x150),0,'\x01',local_210); FUN_004ca750((int)pcVar6); FUN_004cb3b0((int)pcVar6); FUN_004cb890((int)pcVar6); } else { FUN_004c59f0(*(int *)(param_1_00 + 0x150),local_208); } if (*(cEditorSkin **)(param_1_00 + 0x150) == (cEditorSkin *)0x0) { pcVar6 = (cEditorSkinMesh *)0x0; } else { pcVar6 = Editors::cEditorSkin::GetMesh(*(cEditorSkin **)(param_1_00 + 0x150),1); } uVar7 = FUN_00462eb0(*(int *)(param_1_00 + 0x98),&pcVar6->_vftable0,(int)pcVar3); uVar5 = uVar7; FUN_00933930((int *)&local_220); return uVar5 & 0xffffff00 | uVar7 & 0xff; }