1
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-12-11 00:41:20 +04:00
Files
parkan-playground/ParkanPlayground/from_ghidra/CLandscape_ctor.c
bird_egop fcfb8d0e8a feat: Add landscape mesh support to MshConverter
- Auto-detect Model vs Landscape mesh types
- Model: uses indexed triangles (06, 0D, 07)
- Landscape: uses direct triangles (0B, 15)
- Add MSH_FORMAT.md documentation (Russian)
- Add Ghidra decompiled code for CLandscape
2025-12-05 18:04:50 +03:00

2481 lines
84 KiB
C

// Decompiled C Code:
/* WARNING: Enum "DRAW_PRIMITIVE_FLAGS": Some values do not have unique names */
CLandscape * __thiscall
CLandscape::ctor(CLandscape *this,LPCSTR materialConfigName,char *landscapeBaseName,
IComponent **owner)
{
CGameObject *pCVar1;
BoundingBox *pBVar2;
char cVar3;
float fVar4;
float fVar5;
float fVar6;
ushort uVar7;
int (*paiVar8) [5];
undefined4 *puVar9;
char *mem;
ushort *mem_00;
I3DRender **ppIVar10;
I3DSound **ppIVar11;
ISoundPool **ppIVar12;
IMatManager **ppIVar13;
undefined4 uVar14;
ILightManager **ppIVar15;
IComponent **ppIVar16;
BOOL BVar17;
SystemArealMap *this_00;
INResFile **ppIVar18;
nres_metadata_item *pnVar19;
Vector3 *pVVar20;
MSH_15_element *pMVar21;
MSH_02_file *pMVar22;
MshMetaForLandscape *pMVar23;
MSH_15_element *puVar20;
int *piVar24;
int *piVar25;
undefined4 *puVar26;
CShade *pCVar27;
int iVar28;
uint uVar29;
uint uVar30;
Vector3 *pfVar29;
int iVar31;
byte (*data_ptr) [212];
char *pcVar32;
Vector3 *pVVar33;
BoundingBox *pfVar35;
Vector3 *pfVar34;
float fVar34;
char *pcVar35;
ushort *puVar36;
ushort *puVar37;
char *pcVar38;
BoundingBox *pBVar39;
Vector3 *pfVar40;
undefined4 *puVar40;
byte *pbVar41;
uint uStack_1ec;
int iStack_1e4;
BoundingBox fStack_1e0;
Vector3 VStack_178;
Vector3 VStack_16c;
Vector3 VStack_160;
Vector3 VStack_154;
Vector3 VStack_148;
Vector3 VStack_13c;
float fStack_130;
float fStack_12c;
float fStack_128;
float fStack_124;
float fStack_120;
float fStack_11c;
float fStack_118;
float fStack_114;
float fStack_110;
Vector3 fStack_10c;
Vector3 fStack_f4;
Vector3 fStack_e8;
Vector3 fStack_d8;
Vector3 VStack_78;
Vector3 VStack_6c;
Vector3 VStack_60;
Vector3 VStack_54;
Vector3 VStack_48;
Vector3 VStack_3c;
Vector3 VStack_30;
Vector3 VStack_24;
StackException exception2;
StackException exception;
exception.Offset = -1;
exception.Handler = (undefined4 *)&LAB_1006320e;
exception.ExceptionList = (undefined4 *)ExceptionList;
ExceptionList = &exception;
this->IComponent = (IComponent *)&PTR_pure_virtual_100655d0;
CGameObject::ctor(&this->game_object,owner);
this->ITerrain = (ITerrain *)&PTR_pure_virtual_100655a0;
this->IMesh2 = (IMesh2 *)&PTR_pure_virtual_10065560;
this->I0x1 = (I0x1 *)&PTR_pure_virtual_1006552c;
this->IControl = (IControl *)&PTR_pure_virtual_100654d8;
this->IUnknown_0x22 = (I0x22 *)&PTR_pure_virtual_100654c8;
exception.Offset = 0;
this->field104_0x1e8 = 0;
this->field105_0x1ec = -2;
paiVar8 = this->field115_0x214;
iVar28 = 3;
do {
(*paiVar8)[0] = 0;
(*paiVar8)[1] = -2;
(*paiVar8)[2] = -1;
(*paiVar8)[3] = -1;
(*paiVar8)[4] = -1;
paiVar8 = paiVar8 + 1;
iVar28 = iVar28 + -1;
} while (iVar28 != 0);
puVar9 = (undefined4 *)operator_new(8000);
(this->array_0x278).data = puVar9;
(this->array_0x278).capacity = 1000;
(this->array_0x278).count = 0;
exception.Offset = CONCAT31(exception.Offset._1_3_,1);
data_ptr = this->unk_obj_array_elemsize_212;
uStack_1ec = 100;
do {
vector_initializer(data_ptr,0xc,8,move_to_eax_return);
data_ptr = data_ptr + 1;
uStack_1ec = uStack_1ec + -1;
} while (uStack_1ec != 0);
puVar9 = (undefined4 *)operator_new(400);
(this->array_0x7a40).data = puVar9;
(this->array_0x7a40).capacity = 100;
(this->array_0x7a40).count = 0;
exception.Offset = CONCAT31(exception.Offset._1_3_,2);
puVar9 = (undefined4 *)operator_new(4000);
(this->array_0x7c00).data = puVar9;
(this->array_0x7c00).capacity = 1000;
(this->array_0x7c00).count = 0;
exception.Offset = CONCAT31(exception.Offset._1_3_,3);
puVar9 = (undefined4 *)operator_new(400);
(this->array_0x7c0c).data = puVar9;
(this->array_0x7c0c).capacity = 100;
(this->array_0x7c0c).count = 0;
exception.Offset = CONCAT31(exception.Offset._1_3_,4);
puVar9 = (undefined4 *)operator_new(400);
(this->array_0x7c2c).data = puVar9;
(this->array_0x7c2c).capacity = 100;
(this->array_0x7c2c).count = 0;
exception.Offset = CONCAT31(exception.Offset._1_3_,5);
puVar9 = (undefined4 *)operator_new(0xa0);
(this->array_0x7c84).data = puVar9;
(this->array_0x7c84).capacity = 0x28;
(this->array_0x7c84).count = 0;
(this->m_CollisionContext).logicID = Landscape;
(this->m_CollisionContext).GameObjectID = 0;
(this->m_CollisionContext).field2_0x8 = 0;
(this->m_CollisionContext).field3_0xc = 0;
(this->m_CollisionContext).field4_0x10 = 0;
(this->m_CollisionContext).field5_0x14 = 0;
(this->m_CollisionContext).mSweptSphere.position.z = 0.0;
(this->m_CollisionContext).mSweptSphere.position.y = 0.0;
(this->m_CollisionContext).mSweptSphere.position.x = 0.0;
(this->m_CollisionContext).mSweptSphere.targetPosition.z = 0.0;
(this->m_CollisionContext).mSweptSphere.targetPosition.y = 0.0;
(this->m_CollisionContext).mSweptSphere.targetPosition.x = 0.0;
(this->m_CollisionContext).mSweptSphere.radius = -1.0;
(this->m_CollisionContext).pSweptSphere2 = (SweptSphere *)0x0;
(this->m_CollisionContext).ResolvedIMesh2 = (IMesh2 **)0x0;
(this->m_CollisionContext).I0x25 = (void **)0x0;
(this->m_CollisionContext).ResolvedICollManager = (ICollManager **)0x0;
this->IComponent = &IComponent_of_CLandscape;
(this->game_object).vptr = &IGameObject_of_CLandscape;
this->ITerrain = &ITerrain_of_CLandscape;
this->IMesh2 = &IMesh2_of_CLandscape;
this->I0x1 = &I0x1_of_CLandscape;
this->IControl = &IControl_1006536c;
this->IUnknown_0x22 = &I0x22_1006535c;
this->IComponent_owner = owner;
uVar29 = 0xffffffff;
exception.Offset = CONCAT31(exception.Offset._1_3_,6);
pcVar32 = landscapeBaseName;
do {
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
cVar3 = *pcVar32;
pcVar32 = pcVar32 + 1;
} while (cVar3 != '\0');
pBVar2 = &this->bounding_box;
fStack_1e0.TopBackLeft.y = (float)operator_new(~uVar29 + 4);
uVar29 = 0xffffffff;
pcVar32 = landscapeBaseName;
do {
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
cVar3 = *pcVar32;
pcVar32 = pcVar32 + 1;
} while (cVar3 != '\0');
fStack_1e0.TopBackLeft.x = (float)operator_new(~uVar29 + 5);
uVar29 = 0xffffffff;
pcVar32 = landscapeBaseName;
do {
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
cVar3 = *pcVar32;
pcVar32 = pcVar32 + 1;
} while (cVar3 != '\0');
mem = (char *)operator_new(~uVar29 + 5);
uVar29 = 0xffffffff;
pcVar32 = landscapeBaseName;
do {
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
cVar3 = *pcVar32;
pcVar32 = pcVar32 + 1;
} while (cVar3 != '\0');
mem_00 = (ushort *)operator_new(~uVar29 + 4);
uVar29 = 0xffffffff;
pcVar32 = landscapeBaseName;
do {
pcVar38 = pcVar32;
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
pcVar38 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar38;
} while (cVar3 != '\0');
uVar29 = ~uVar29;
pcVar32 = pcVar38 + -uVar29;
pcVar38 = (char *)fStack_1e0.TopBackLeft.y;
for (uVar30 = uVar29 >> 2; uVar30 != 0; uVar30 = uVar30 - 1) {
*(undefined4 *)pcVar38 = *(undefined4 *)pcVar32;
pcVar32 = pcVar32 + 4;
pcVar38 = pcVar38 + 4;
}
for (uVar29 = uVar29 & 3; uVar29 != 0; uVar29 = uVar29 - 1) {
*pcVar38 = *pcVar32;
pcVar32 = pcVar32 + 1;
pcVar38 = pcVar38 + 1;
}
uVar29 = 0xffffffff;
pcVar32 = s__msh_1006bfb4;
do {
pcVar38 = pcVar32;
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
pcVar38 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar38;
} while (cVar3 != '\0');
uVar29 = ~uVar29;
iVar28 = -1;
pcVar32 = (char *)fStack_1e0.TopBackLeft.y;
do {
pcVar35 = pcVar32;
if (iVar28 == 0) break;
iVar28 = iVar28 + -1;
pcVar35 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar35;
} while (cVar3 != '\0');
pcVar32 = pcVar38 + -uVar29;
pcVar38 = pcVar35 + -1;
for (uVar30 = uVar29 >> 2; uVar30 != 0; uVar30 = uVar30 - 1) {
*(undefined4 *)pcVar38 = *(undefined4 *)pcVar32;
pcVar32 = pcVar32 + 4;
pcVar38 = pcVar38 + 4;
}
for (uVar29 = uVar29 & 3; uVar29 != 0; uVar29 = uVar29 - 1) {
*pcVar38 = *pcVar32;
pcVar32 = pcVar32 + 1;
pcVar38 = pcVar38 + 1;
}
uVar29 = 0xffffffff;
pcVar32 = landscapeBaseName;
do {
pcVar38 = pcVar32;
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
pcVar38 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar38;
} while (cVar3 != '\0');
uVar29 = ~uVar29;
pcVar32 = pcVar38 + -uVar29;
pcVar38 = (char *)fStack_1e0.TopBackLeft.x;
for (uVar30 = uVar29 >> 2; uVar30 != 0; uVar30 = uVar30 - 1) {
*(undefined4 *)pcVar38 = *(undefined4 *)pcVar32;
pcVar32 = pcVar32 + 4;
pcVar38 = pcVar38 + 4;
}
for (uVar29 = uVar29 & 3; uVar29 != 0; uVar29 = uVar29 - 1) {
*pcVar38 = *pcVar32;
pcVar32 = pcVar32 + 1;
pcVar38 = pcVar38 + 1;
}
uVar29 = 0xffffffff;
pcVar32 = s_1_wea_1006bfac;
do {
pcVar38 = pcVar32;
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
pcVar38 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar38;
} while (cVar3 != '\0');
uVar29 = ~uVar29;
iVar28 = -1;
pcVar32 = (char *)fStack_1e0.TopBackLeft.x;
do {
pcVar35 = pcVar32;
if (iVar28 == 0) break;
iVar28 = iVar28 + -1;
pcVar35 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar35;
} while (cVar3 != '\0');
pcVar32 = pcVar38 + -uVar29;
pcVar38 = pcVar35 + -1;
for (uVar30 = uVar29 >> 2; uVar30 != 0; uVar30 = uVar30 - 1) {
*(undefined4 *)pcVar38 = *(undefined4 *)pcVar32;
pcVar32 = pcVar32 + 4;
pcVar38 = pcVar38 + 4;
}
for (uVar29 = uVar29 & 3; uVar29 != 0; uVar29 = uVar29 - 1) {
*pcVar38 = *pcVar32;
pcVar32 = pcVar32 + 1;
pcVar38 = pcVar38 + 1;
}
uVar29 = 0xffffffff;
pcVar32 = landscapeBaseName;
do {
pcVar38 = pcVar32;
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
pcVar38 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar38;
} while (cVar3 != '\0');
uVar29 = ~uVar29;
pcVar32 = pcVar38 + -uVar29;
pcVar38 = mem;
for (uVar30 = uVar29 >> 2; uVar30 != 0; uVar30 = uVar30 - 1) {
*(undefined4 *)pcVar38 = *(undefined4 *)pcVar32;
pcVar32 = pcVar32 + 4;
pcVar38 = pcVar38 + 4;
}
for (uVar29 = uVar29 & 3; uVar29 != 0; uVar29 = uVar29 - 1) {
*pcVar38 = *pcVar32;
pcVar32 = pcVar32 + 1;
pcVar38 = pcVar38 + 1;
}
uVar29 = 0xffffffff;
pcVar32 = s_2_wea_1006bfa4;
do {
pcVar38 = pcVar32;
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
pcVar38 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar38;
} while (cVar3 != '\0');
uVar29 = ~uVar29;
iVar28 = -1;
pcVar32 = mem;
do {
pcVar35 = pcVar32;
if (iVar28 == 0) break;
iVar28 = iVar28 + -1;
pcVar35 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar35;
} while (cVar3 != '\0');
pcVar32 = pcVar38 + -uVar29;
pcVar38 = pcVar35 + -1;
for (uVar30 = uVar29 >> 2; uVar30 != 0; uVar30 = uVar30 - 1) {
*(undefined4 *)pcVar38 = *(undefined4 *)pcVar32;
pcVar32 = pcVar32 + 4;
pcVar38 = pcVar38 + 4;
}
for (uVar29 = uVar29 & 3; uVar29 != 0; uVar29 = uVar29 - 1) {
*pcVar38 = *pcVar32;
pcVar32 = pcVar32 + 1;
pcVar38 = pcVar38 + 1;
}
uVar29 = 0xffffffff;
do {
pcVar32 = landscapeBaseName;
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
pcVar32 = landscapeBaseName + 1;
cVar3 = *landscapeBaseName;
landscapeBaseName = pcVar32;
} while (cVar3 != '\0');
uVar29 = ~uVar29;
pcVar32 = pcVar32 + -uVar29;
puVar36 = mem_00;
for (uVar30 = uVar29 >> 2; uVar30 != 0; uVar30 = uVar30 - 1) {
*(undefined4 *)puVar36 = *(undefined4 *)pcVar32;
pcVar32 = pcVar32 + 4;
puVar36 = puVar36 + 2;
}
for (uVar29 = uVar29 & 3; uVar29 != 0; uVar29 = uVar29 - 1) {
*(char *)puVar36 = *pcVar32;
pcVar32 = pcVar32 + 1;
puVar36 = (ushort *)((int)puVar36 + 1);
}
uVar29 = 0xffffffff;
pcVar32 = s__map_1006bf9c;
do {
pcVar38 = pcVar32;
if (uVar29 == 0) break;
uVar29 = uVar29 - 1;
pcVar38 = pcVar32 + 1;
cVar3 = *pcVar32;
pcVar32 = pcVar38;
} while (cVar3 != '\0');
uVar29 = ~uVar29;
iVar28 = -1;
puVar36 = mem_00;
do {
puVar37 = puVar36;
if (iVar28 == 0) break;
iVar28 = iVar28 + -1;
puVar37 = (ushort *)((int)puVar36 + 1);
uVar7 = *puVar36;
puVar36 = puVar37;
} while ((char)uVar7 != '\0');
pcVar32 = pcVar38 + -uVar29;
pcVar38 = (char *)((int)puVar37 + -1);
for (uVar30 = uVar29 >> 2; uVar30 != 0; uVar30 = uVar30 - 1) {
*(undefined4 *)pcVar38 = *(undefined4 *)pcVar32;
pcVar32 = pcVar32 + 4;
pcVar38 = pcVar38 + 4;
}
for (uVar29 = uVar29 & 3; uVar29 != 0; uVar29 = uVar29 - 1) {
*pcVar38 = *pcVar32;
pcVar32 = pcVar32 + 1;
pcVar38 = pcVar38 + 1;
}
ppIVar10 = niGet3DRender();
this->I3DRender__ = ppIVar10;
if (ppIVar10 == (I3DRender **)0x0) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_3D_Render_was_not_initialized_1006bf7c);
}
ppIVar11 = niGet3DSound();
this->I3DSound = ppIVar11;
if (ppIVar11 == (I3DSound **)0x0) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_3D_Sound_was_not_initialized_1006bf40);
}
pCVar1 = &this->game_object;
ppIVar12 = (ISoundPool **)
(*(*this->I3DSound)->CreateSoundPool)
((int *)this->I3DSound,0,0,-(uint)(this != (CLandscape *)0x0) & (uint)pCVar1)
;
this->ISoundPool = ppIVar12;
if (this->I3DRender__ != 0) {
ppIVar13 = LoadMatManager(materialConfigName,(LPCSTR)fStack_1e0.TopBackLeft.x,
(IComponent **)(-(uint)(this != (CLandscape *)0x0) & (uint)pCVar1));
this->IMatManager = ppIVar13;
uVar14 = (*(code *)(*ppIVar13)->LoadWear)(ppIVar13,materialConfigName,mem);
this->wear_ptr = uVar14;
}
ppIVar15 = CreateLightManager(0,(undefined4 *)0x0,
(IComponent **)(-(uint)(this != (CLandscape *)0x0) & (uint)pCVar1));
this->ILightManager_owned = ppIVar15;
ppIVar16 = CreateCollManager((IComponent **)(-(uint)(this != (CLandscape *)0x0) & (uint)pCVar1));
BVar17 = (*(*ppIVar16)->QueryInterface)(ppIVar16,ICollManager,&this->ResolvedICollManager);
if (BVar17 == 0) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_obtain_ICollManager_in_1006bf18);
}
ppIVar16 = CreateFxManager(0,0,(IComponent **)(-(uint)(this != (CLandscape *)0x0) & (uint)pCVar1))
;
BVar17 = (*(*ppIVar16)->QueryInterface)(ppIVar16,IEffectManager,&this->ResolvedIEffectManager);
if (BVar17 == 0) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_obtain_IEffectManager_i_1006beec);
}
this_00 = CreateSystemArealMap
(0,mem_00,(void *)(-(uint)(this != (CLandscape *)0x0) & (uint)pCVar1));
BVar17 = (*(this_00->ISystemArealMap->IComponent).QueryInterface)
(this_00,ISystemArealMap,&this->ResolvedISystemArealMap);
if (BVar17 == 0) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_obtain_ISystemArealMap_1006bec0);
}
ppIVar18 = niOpenResFile((LPCSTR)fStack_1e0.TopBackLeft.y);
this->INResFile = ppIVar18;
if (ppIVar18 == (INResFile **)0x0) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_open_library_1006bea8);
}
pnVar19 = (*(*this->INResFile)->get_metadata_ptr)(this->INResFile);
this->_count_unk_obj_array_elemsize_212 = 1;
iVar28 = (*(*this->INResFile)->find_index_of_type)(this->INResFile,3);
if (iVar28 == -1) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_open_file_1006be94);
}
this->vertices_count = pnVar19[iVar28].element_count_or_version;
/* сначала читается тип файла, потом страйд */
pVVar20 = (Vector3 *)(*(*this->INResFile)->get_item_data_ptr_by_index)(this->INResFile,iVar28,1);
this->_3_vertices_data_ptr = pVVar20;
this->_3_vertices_stride = 0xc;
iVar28 = (*(*this->INResFile)->find_index_of_type)(this->INResFile,4);
if (iVar28 == -1) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_open_file_1006be94);
}
puVar9 = (*(*this->INResFile)->get_item_data_ptr_by_index)(this->INResFile,iVar28,1);
this->_4_data_ptr = puVar9;
this->_4_stride = 4;
iVar28 = (*(*this->INResFile)->find_index_of_type)(this->INResFile,5);
if (iVar28 == -1) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_open_file_1006be94);
}
puVar9 = (*(*this->INResFile)->get_item_data_ptr_by_index)(this->INResFile,iVar28,1);
this->_5_data_ptr = puVar9;
this->_5_stride = 4;
this->_2_microtexture_mapping_data_ptr = 0;
iVar28 = (*(*this->INResFile)->find_index_of_type)(this->INResFile,0x12);
if (iVar28 == -1) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_find_microtexture_mapp_1006be68);
}
puVar9 = (*(*this->INResFile)->get_item_data_ptr_by_index)(this->INResFile,iVar28,1);
this->_2_microtexture_mapping_data_ptr = puVar9;
this->_2_microtexture_mapping_stride = 4;
iVar28 = (*(*this->INResFile)->find_index_of_type)(this->INResFile,0xe);
if (iVar28 == -1) {
this->_e_data_ptr = 0;
}
else {
puVar9 = (*(*this->INResFile)->get_item_data_ptr_by_index)(this->INResFile,iVar28,1);
this->_e_data_ptr = puVar9;
this->_e_stride = 4;
}
this->field138_0x2a4 = 0;
this->field143_0x2ac = 0;
iVar28 = (*(*this->INResFile)->find_index_of_type)(this->INResFile,0x15);
if (iVar28 == -1) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_open_file_1006be94);
}
this->_5_element_count = pnVar19[iVar28].element_count_or_version;
pMVar21 = (MSH_15_element *)
(*(*this->INResFile)->get_item_data_ptr_by_index)(this->INResFile,iVar28,1);
this->_5_data_ptr = pMVar21;
iVar28 = (*(*this->INResFile)->find_index_of_type)(this->INResFile,2);
if (iVar28 == -1) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_open_file_1006be94);
}
pMVar22 = (MSH_02_file *)
(*(*this->INResFile)->get_item_data_ptr_by_index)(this->INResFile,iVar28,0);
this->msh_02_data_ptr = pMVar22;
pMVar23 = (MshMetaForLandscape *)operator_new(0x28);
this->mshmeta_ptr = pMVar23;
pMVar22 = this->msh_02_data_ptr;
pBVar39 = &this->bounding_box_from_msh_02;
for (iVar28 = 0x18; iVar28 != 0; iVar28 = iVar28 + -1) {
(pBVar39->BottomFrontLeft).x = (pMVar22->header).bounding_box.BottomFrontLeft.x;
pMVar22 = (MSH_02_file *)&(pMVar22->header).bounding_box.BottomFrontLeft.y;
pBVar39 = (BoundingBox *)&(pBVar39->BottomFrontLeft).y;
}
this->mshmeta_ptr->min_x = (this->msh_02_data_ptr->header).bounding_box.BottomFrontLeft.x;
this->mshmeta_ptr->min_y = (this->msh_02_data_ptr->header).bounding_box.BottomFrontLeft.y;
iVar28 = (*(*this->INResFile)->find_index_of_type)(this->INResFile,1);
if (iVar28 == -1) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_open_file_1006be94);
}
puVar9 = (*(*this->INResFile)->get_item_data_ptr_by_index)(this->INResFile,iVar28,0);
this->_1_data_ptr = puVar9;
this->mshmeta_ptr->_1_element_count = pnVar19[iVar28].element_count_or_version;
this->mshmeta_ptr->_1_magic1 = pnVar19[iVar28].magic1;
pMVar23 = this->mshmeta_ptr;
pMVar23->_1_element_count_magic1 = pMVar23->_1_element_count / pMVar23->_1_magic1;
pMVar22 = this->msh_02_data_ptr;
pVVar33 = &pMVar22->elements[0].local_minimum;
pVVar20 = Vector3::ctor(&VStack_148,pVVar33->x,pMVar22->elements[0].local_minimum.y,
pMVar22->elements[0].local_minimum.z);
fVar34 = pVVar20->x;
fVar4 = pVVar20->y;
Vector3::ctor(&VStack_13c,pMVar22->elements[0].local_maximum.x,
pMVar22->elements[0].local_minimum.y,pMVar22->elements[0].local_minimum.z);
Vector3::ctor(&VStack_154,pMVar22->elements[0].local_maximum.x,
pMVar22->elements[0].local_maximum.y,pMVar22->elements[0].local_minimum.z);
pVVar20 = Vector3::ctor(&VStack_16c,pMVar22->elements[0].local_maximum.x,
pMVar22->elements[0].local_maximum.y,pMVar22->elements[0].local_maximum.z)
;
fVar5 = pVVar20->x;
fVar6 = pVVar20->y;
Vector3::ctor((Vector3 *)&fStack_1e0.TopFrontLeft.z,pVVar33->x,
pMVar22->elements[0].local_maximum.y,pMVar22->elements[0].local_maximum.z);
Vector3::ctor(&VStack_160,pVVar33->x,pMVar22->elements[0].local_minimum.y,
pMVar22->elements[0].local_maximum.z);
Vector3::ctor((Vector3 *)&fStack_1e0.TopBackLeft.z,pVVar33->x,pMVar22->elements[0].local_maximum.y
,pMVar22->elements[0].local_minimum.z);
Vector3::ctor(&VStack_178,pMVar22->elements[0].local_maximum.x,
pMVar22->elements[0].local_minimum.y,pMVar22->elements[0].local_maximum.z);
this->mshmeta_ptr->width = fVar5 - fVar34;
this->mshmeta_ptr->height = fVar6 - fVar4;
this->mshmeta_ptr->inv_width = FLOAT_1006516c / this->mshmeta_ptr->width;
this->mshmeta_ptr->inv_height = FLOAT_1006516c / this->mshmeta_ptr->height;
iVar28 = (*(*this->INResFile)->find_index_of_type)(this->INResFile,0xb);
if (iVar28 == -1) {
/* WARNING: Subroutine does not return */
print_error_and_die(s_TERRAIN_DLL_1006b3f4,s_CLandscape__CLandscape___1006bf60,
s_Unable_to_open_file_1006be94);
}
puVar9 = (*(*this->INResFile)->get_item_data_ptr_by_index)(this->INResFile,iVar28,1);
this->_b_data_ptr = puVar9;
operator_delete((void *)fStack_1e0.TopBackLeft.y);
operator_delete((void *)fStack_1e0.TopBackLeft.x);
operator_delete(mem);
operator_delete(mem_00);
(this->m_CollisionContext).extraArg = (void **)0xbf800000;
uVar29 = 0;
if (this->_5_element_count != 0) {
pMVar21 = this->_5_data_ptr;
do {
if ((pMVar21->flags & 0x20000) != 0) {
(this->m_CollisionContext).extraArg =
*(void ***)
((int)&this->_3_vertices_data_ptr->z +
(uint)pMVar21->vertex1_idx * this->_3_vertices_stride);
break;
}
uVar29 = uVar29 + 1;
pMVar21 = pMVar21 + 1;
} while (uVar29 < this->_5_element_count);
}
pfVar35 = &g_bounding_box;
pBVar39 = pBVar2;
for (iVar28 = 0x18; iVar28 != 0; iVar28 = iVar28 + -1) {
(pBVar39->BottomFrontLeft).x = (pfVar35->BottomFrontLeft).x;
pfVar35 = (BoundingBox *)&(pfVar35->BottomFrontLeft).y;
pBVar39 = (BoundingBox *)&(pBVar39->BottomFrontLeft).y;
}
uStack_1ec = 0;
if (this->_5_element_count != 0) {
iStack_1e4 = 0;
do {
puVar20 = (MSH_15_element *)((int)&this->_5_data_ptr->flags + iStack_1e4);
if ((puVar20->flags & 0x20000) != 0) {
iVar28 = this->_3_vertices_stride;
pfVar29 = (Vector3 *)
((int)&this->_3_vertices_data_ptr->x + (uint)puVar20->vertex1_idx * iVar28);
pfVar34 = (Vector3 *)
((int)&this->_3_vertices_data_ptr->x + (uint)puVar20->vertex2_idx * iVar28);
pfVar40 = (Vector3 *)
((int)&this->_3_vertices_data_ptr->x + (uint)puVar20->vertex3_idx * iVar28);
fStack_1e0.BottomFrontLeft.x = (pBVar2->BottomFrontLeft).x;
fStack_1e0.BottomFrontLeft.y = (this->bounding_box).BottomFrontLeft.y;
fStack_1e0.BottomFrontLeft.z = (this->bounding_box).BottomFrontLeft.z;
fStack_1e0.BottomBackRight.x = (this->bounding_box).TopFrontLeft.x;
fStack_1e0.BottomBackRight.y = (this->bounding_box).TopFrontLeft.y;
fStack_1e0.BottomBackRight.z = (this->bounding_box).TopFrontLeft.z;
if (pfVar29->x < fStack_1e0.BottomFrontLeft.x) {
fStack_1e0.BottomFrontLeft.x = pfVar29->x;
}
if (pfVar29->y < fStack_1e0.BottomFrontLeft.y) {
fStack_1e0.BottomFrontLeft.y = pfVar29->y;
}
if (pfVar29->z < fStack_1e0.BottomFrontLeft.z) {
fStack_1e0.BottomFrontLeft.z = pfVar29->z;
}
if (fStack_1e0.BottomBackRight.x < pfVar29->x) {
fStack_1e0.BottomBackRight.x = pfVar29->x;
}
if (fStack_1e0.BottomBackRight.y < pfVar29->y) {
fStack_1e0.BottomBackRight.y = pfVar29->y;
}
if (fStack_1e0.BottomBackRight.z < pfVar29->z) {
fStack_1e0.BottomBackRight.z = pfVar29->z;
}
fStack_10c.x = fStack_1e0.BottomBackRight.x;
fStack_10c.y = fStack_1e0.BottomBackRight.y;
fStack_10c.z = fStack_1e0.BottomFrontLeft.z;
(pBVar2->BottomFrontLeft).x = fStack_1e0.BottomFrontLeft.x;
(this->bounding_box).BottomFrontLeft.y = fStack_1e0.BottomFrontLeft.y;
(this->bounding_box).BottomFrontLeft.z = fStack_1e0.BottomFrontLeft.z;
(this->bounding_box).BottomFrontRight.x = fStack_1e0.BottomBackRight.x;
(this->bounding_box).BottomFrontRight.y = fStack_1e0.BottomFrontLeft.y;
(this->bounding_box).BottomFrontRight.z = fStack_1e0.BottomFrontLeft.z;
(this->bounding_box).BottomBackRight.x = fStack_1e0.BottomBackRight.x;
(this->bounding_box).BottomBackRight.y = fStack_1e0.BottomBackRight.y;
fStack_124 = fStack_1e0.BottomFrontLeft.x;
(this->bounding_box).BottomBackRight.z = fStack_1e0.BottomFrontLeft.z;
(this->bounding_box).TopFrontLeft.x = fStack_1e0.BottomBackRight.x;
fStack_120 = fStack_1e0.BottomBackRight.y;
(this->bounding_box).TopFrontLeft.y = fStack_1e0.BottomBackRight.y;
(this->bounding_box).TopFrontLeft.z = fStack_1e0.BottomBackRight.z;
(this->bounding_box).TopBackRight.x = fStack_1e0.BottomFrontLeft.x;
fStack_11c = fStack_1e0.BottomBackRight.z;
(this->bounding_box).TopBackRight.y = fStack_1e0.BottomBackRight.y;
(this->bounding_box).TopBackRight.z = fStack_1e0.BottomBackRight.z;
fStack_118 = fStack_1e0.BottomFrontLeft.x;
fStack_114 = fStack_1e0.BottomFrontLeft.y;
(this->bounding_box).TopFrontRight.x = fStack_1e0.BottomFrontLeft.x;
fStack_110 = fStack_1e0.BottomBackRight.z;
(this->bounding_box).TopFrontRight.y = fStack_1e0.BottomFrontLeft.y;
(this->bounding_box).TopFrontRight.z = fStack_1e0.BottomBackRight.z;
pVVar20 = Vector3::ctor((Vector3 *)&exception2,fStack_1e0.BottomFrontLeft.x,
fStack_1e0.BottomBackRight.y,fStack_1e0.BottomFrontLeft.z);
(this->bounding_box).BottomBackLeft.x = pVVar20->x;
(this->bounding_box).BottomBackLeft.y = pVVar20->y;
(this->bounding_box).BottomBackLeft.z = pVVar20->z;
pVVar20 = Vector3::ctor(&VStack_78,fStack_1e0.BottomBackRight.x,fStack_1e0.BottomFrontLeft.y
,fStack_1e0.BottomBackRight.z);
(this->bounding_box).TopBackLeft.x = pVVar20->x;
(this->bounding_box).TopBackLeft.y = pVVar20->y;
(this->bounding_box).TopBackLeft.z = pVVar20->z;
fStack_1e0.BottomFrontRight.x = (pBVar2->BottomFrontLeft).x;
fStack_1e0.BottomFrontRight.y = (this->bounding_box).BottomFrontLeft.y;
fStack_1e0.BottomFrontRight.z = (this->bounding_box).BottomFrontLeft.z;
pVVar20 = &(this->bounding_box).TopFrontLeft;
fStack_1e0.BottomBackLeft.x = pVVar20->x;
fStack_1e0.BottomBackLeft.y = (this->bounding_box).TopFrontLeft.y;
fStack_1e0.BottomBackLeft.z = (this->bounding_box).TopFrontLeft.z;
if (pfVar34->x < fStack_1e0.BottomFrontRight.x) {
fStack_1e0.BottomFrontRight.x = pfVar34->x;
}
if (pfVar34->y < fStack_1e0.BottomFrontRight.y) {
fStack_1e0.BottomFrontRight.y = pfVar34->y;
}
if (pfVar34->z < fStack_1e0.BottomFrontRight.z) {
fStack_1e0.BottomFrontRight.z = pfVar34->z;
}
if (fStack_1e0.BottomBackLeft.x < pfVar34->x) {
fStack_1e0.BottomBackLeft.x = pfVar34->x;
}
if (fStack_1e0.BottomBackLeft.y < pfVar34->y) {
fStack_1e0.BottomBackLeft.y = pfVar34->y;
}
if (fStack_1e0.BottomBackLeft.z < pfVar34->z) {
fStack_1e0.BottomBackLeft.z = pfVar34->z;
}
fVar34 = fStack_1e0.BottomBackLeft.z;
fStack_130 = fStack_1e0.BottomFrontRight.x;
fStack_12c = fStack_1e0.BottomFrontRight.y;
fStack_128 = fStack_1e0.BottomFrontRight.z;
VStack_178.x = fStack_1e0.BottomBackLeft.x;
VStack_178.y = fStack_1e0.BottomFrontRight.y;
VStack_178.z = fStack_1e0.BottomFrontRight.z;
fStack_1e0.TopBackLeft.z = fStack_1e0.BottomBackLeft.x;
(pBVar2->BottomFrontLeft).x = fStack_1e0.BottomFrontRight.x;
fStack_1e0.TopFrontLeft.x = fStack_1e0.BottomBackLeft.y;
(this->bounding_box).BottomFrontLeft.y = fStack_1e0.BottomFrontRight.y;
fStack_1e0.TopFrontLeft.y = fStack_1e0.BottomFrontRight.z;
(this->bounding_box).BottomFrontLeft.z = fStack_1e0.BottomFrontRight.z;
VStack_160.x = fStack_1e0.BottomBackLeft.x;
(this->bounding_box).BottomFrontRight.x = fStack_1e0.BottomBackLeft.x;
VStack_160.y = fStack_1e0.BottomBackLeft.y;
(this->bounding_box).BottomFrontRight.y = fStack_1e0.BottomFrontRight.y;
(this->bounding_box).BottomFrontRight.z = fStack_1e0.BottomFrontRight.z;
VStack_160.z = fStack_1e0.BottomBackLeft.z;
(this->bounding_box).BottomBackRight.x = fStack_1e0.BottomBackLeft.x;
fStack_1e0.TopFrontLeft.z = fStack_1e0.BottomFrontRight.x;
(this->bounding_box).BottomBackRight.y = fStack_1e0.BottomBackLeft.y;
(this->bounding_box).BottomBackRight.z = fStack_1e0.BottomFrontRight.z;
pVVar20->x = fStack_1e0.BottomBackLeft.x;
(this->bounding_box).TopFrontLeft.y = fStack_1e0.BottomBackLeft.y;
(this->bounding_box).TopFrontLeft.z = fStack_1e0.BottomBackLeft.z;
(this->bounding_box).TopBackRight.x = fStack_1e0.BottomFrontRight.x;
(this->bounding_box).TopBackRight.y = fStack_1e0.BottomBackLeft.y;
(this->bounding_box).TopBackRight.z = fStack_1e0.BottomBackLeft.z;
pVVar20 = Vector3::ctor(&VStack_3c,fStack_1e0.BottomFrontRight.x,
fStack_1e0.BottomFrontRight.y,fStack_1e0.BottomBackLeft.z);
(this->bounding_box).TopFrontRight.x = pVVar20->x;
(this->bounding_box).TopFrontRight.y = pVVar20->y;
(this->bounding_box).TopFrontRight.z = pVVar20->z;
pVVar20 = Vector3::ctor(&VStack_54,fStack_1e0.BottomFrontRight.x,fStack_1e0.BottomBackLeft.y
,fStack_1e0.BottomFrontRight.z);
(this->bounding_box).BottomBackLeft.x = pVVar20->x;
(this->bounding_box).BottomBackLeft.y = pVVar20->y;
(this->bounding_box).BottomBackLeft.z = pVVar20->z;
pVVar20 = Vector3::ctor(&VStack_24,fStack_1e0.BottomBackLeft.x,fStack_1e0.BottomFrontRight.y
,fVar34);
(this->bounding_box).TopBackLeft.x = pVVar20->x;
(this->bounding_box).TopBackLeft.y = pVVar20->y;
(this->bounding_box).TopBackLeft.z = pVVar20->z;
fStack_1e0.TopBackRight.x = (pBVar2->BottomFrontLeft).x;
fStack_1e0.TopBackRight.y = (this->bounding_box).BottomFrontLeft.y;
fStack_1e0.TopBackRight.z = (this->bounding_box).BottomFrontLeft.z;
pVVar20 = &(this->bounding_box).TopFrontLeft;
fStack_1e0.TopFrontRight.x = pVVar20->x;
fStack_1e0.TopFrontRight.y = (this->bounding_box).TopFrontLeft.y;
fVar34 = (this->bounding_box).TopFrontLeft.z;
if (pfVar40->x < fStack_1e0.TopBackRight.x) {
fStack_1e0.TopBackRight.x = pfVar40->x;
}
fVar4 = fStack_1e0.TopBackRight.x;
if (pfVar40->y < fStack_1e0.TopBackRight.y) {
fStack_1e0.TopBackRight.y = pfVar40->y;
}
if (pfVar40->z < fStack_1e0.TopBackRight.z) {
fStack_1e0.TopBackRight.z = pfVar40->z;
}
if (fStack_1e0.TopFrontRight.x < pfVar40->x) {
fStack_1e0.TopFrontRight.x = pfVar40->x;
}
if (fStack_1e0.TopFrontRight.y < pfVar40->y) {
fStack_1e0.TopFrontRight.y = pfVar40->y;
}
if (fVar34 < pfVar40->z) {
fVar34 = pfVar40->z;
}
VStack_16c.x = fStack_1e0.TopBackRight.x;
VStack_16c.y = fStack_1e0.TopBackRight.y;
VStack_16c.z = fStack_1e0.TopBackRight.z;
VStack_154.x = fStack_1e0.TopFrontRight.x;
VStack_154.y = fStack_1e0.TopBackRight.y;
VStack_154.z = fStack_1e0.TopBackRight.z;
(pBVar2->BottomFrontLeft).x = fStack_1e0.TopBackRight.x;
VStack_13c.x = fStack_1e0.TopFrontRight.x;
(this->bounding_box).BottomFrontLeft.y = fStack_1e0.TopBackRight.y;
VStack_13c.y = fStack_1e0.TopFrontRight.y;
(this->bounding_box).BottomFrontLeft.z = fStack_1e0.TopBackRight.z;
VStack_13c.z = fStack_1e0.TopBackRight.z;
(this->bounding_box).BottomFrontRight.x = fStack_1e0.TopFrontRight.x;
VStack_148.x = fStack_1e0.TopFrontRight.x;
(this->bounding_box).BottomFrontRight.y = fStack_1e0.TopBackRight.y;
(this->bounding_box).BottomFrontRight.z = fStack_1e0.TopBackRight.z;
VStack_148.y = fStack_1e0.TopFrontRight.y;
(this->bounding_box).BottomBackRight.x = fStack_1e0.TopFrontRight.x;
(this->bounding_box).BottomBackRight.y = fStack_1e0.TopFrontRight.y;
(this->bounding_box).BottomBackRight.z = fStack_1e0.TopBackRight.z;
pVVar20->x = fStack_1e0.TopFrontRight.x;
(this->bounding_box).TopFrontLeft.y = fStack_1e0.TopFrontRight.y;
(this->bounding_box).TopFrontLeft.z = fVar34;
fStack_1e0.TopFrontRight.z = fVar34;
VStack_148.z = fVar34;
pVVar20 = Vector3::ctor(&VStack_6c,fStack_1e0.TopBackRight.x,fStack_1e0.TopFrontRight.y,
fVar34);
(this->bounding_box).TopBackRight.x = pVVar20->x;
(this->bounding_box).TopBackRight.y = pVVar20->y;
(this->bounding_box).TopBackRight.z = pVVar20->z;
pVVar20 = Vector3::ctor(&VStack_60,fVar4,fStack_1e0.TopBackRight.y,fVar34);
(this->bounding_box).TopFrontRight.x = pVVar20->x;
(this->bounding_box).TopFrontRight.y = pVVar20->y;
(this->bounding_box).TopFrontRight.z = pVVar20->z;
pVVar20 = Vector3::ctor(&VStack_48,fVar4,fStack_1e0.TopFrontRight.y,
fStack_1e0.TopBackRight.z);
(this->bounding_box).BottomBackLeft.x = pVVar20->x;
(this->bounding_box).BottomBackLeft.y = pVVar20->y;
(this->bounding_box).BottomBackLeft.z = pVVar20->z;
pVVar20 = Vector3::ctor(&VStack_30,fStack_1e0.TopFrontRight.x,fStack_1e0.TopBackRight.y,
fVar34);
(this->bounding_box).TopBackLeft.x = pVVar20->x;
(this->bounding_box).TopBackLeft.y = pVVar20->y;
(this->bounding_box).TopBackLeft.z = pVVar20->z;
}
uStack_1ec = uStack_1ec + 1;
iStack_1e4 = iStack_1e4 + 0x1c;
} while (uStack_1ec < this->_5_element_count);
}
iVar28 = this->mshmeta_ptr->_1_element_count;
piVar24 = (int *)operator_new(iVar28 * 0xc + 4);
exception.Offset = CONCAT31(exception.Offset._1_3_,7);
if (piVar24 == (int *)0x0) {
piVar25 = (int *)0x0;
}
else {
piVar25 = piVar24 + 1;
*piVar24 = iVar28;
vector_constructor_iterator(piVar25,0xc,iVar28,KindaArray::ctor_capacity5_elemsize8);
}
this->field9815_0x7b64 = piVar25;
exception.Offset = CONCAT31(exception.Offset._1_3_,6);
iVar28 = this->mshmeta_ptr->_1_element_count;
piVar24 = (int *)operator_new(iVar28 * 0xc + 4);
exception.Offset = CONCAT31(exception.Offset._1_3_,8);
if (piVar24 == (int *)0x0) {
piVar25 = (int *)0x0;
}
else {
piVar25 = piVar24 + 1;
*piVar24 = iVar28;
vector_constructor_iterator(piVar25,0xc,iVar28,KindaArray::ctor_capacity100_elemsize4);
}
this->field9818_0x7b70 = piVar25;
exception.Offset = CONCAT31(exception.Offset._1_3_,6);
iVar28 = this->mshmeta_ptr->_1_element_count;
piVar24 = (int *)operator_new(iVar28 * 0xc + 4);
exception.Offset = CONCAT31(exception.Offset._1_3_,9);
if (piVar24 == (int *)0x0) {
piVar25 = (int *)0x0;
}
else {
piVar25 = piVar24 + 1;
*piVar24 = iVar28;
vector_constructor_iterator(piVar25,0xc,iVar28,KindaArray::ctor_capacity5_elemsize4);
}
this->field9816_0x7b68 = piVar25;
this->field62_0x194 = &this->field9784_0x7b3c;
this->field95_0x1c4 = this->wear_ptr;
this->field63_0x198 = &this->field9793_0x7b48;
this->field22_0x160 = &this->field_0x7c54;
this->field23_0x164 = &this->field_0x7c5c;
this->field64_0x19c = &this->field_0x7b54;
this->field96_0x1c8 = &this->field_0x7c6c;
this->field24_0x168 = &this->field_0x7c64;
this->field97_0x1cc = &this->field9885_0x7c74;
this->field65_0x1a0 = -1;
this->field70_0x1a8 = 0;
this->field98_0x1d0 = &this->field9890_0x7c7c;
this->field29_0x170 = &this->field_0x7c48;
this->field101_0x1dc = -1;
this->field103_0x1e4 = -1;
this->field107_0x1f4 = 0;
this->field104_0x1e8 = 0;
this->field105_0x1ec = -2;
this->field106_0x1f0 = 0;
this->field108_0x1f8 = 0;
this->field109_0x1fc = 0;
this->field110_0x200 = 0;
this->field111_0x204 = 0;
uVar29 = this->_5_element_count;
exception.Offset = CONCAT31(exception.Offset._1_3_,6);
if ((this->array_0x278).data == (undefined4 *)0x0) {
puVar9 = (undefined4 *)operator_new(8000);
(this->array_0x278).data = puVar9;
}
iVar28 = uVar29 + (this->array_0x278).count;
if ((this->array_0x278).capacity < iVar28) {
puVar26 = (undefined4 *)operator_new(iVar28 * 8 + 800);
puVar9 = (this->array_0x278).data;
puVar40 = puVar26;
for (uVar30 = (uint)((this->array_0x278).capacity << 3) >> 2; uVar30 != 0; uVar30 = uVar30 - 1)
{
*puVar40 = *puVar9;
puVar9 = puVar9 + 1;
puVar40 = puVar40 + 1;
}
for (iVar28 = 0; iVar28 != 0; iVar28 = iVar28 + -1) {
*(undefined1 *)puVar40 = *(undefined1 *)puVar9;
puVar9 = (undefined4 *)((int)puVar9 + 1);
puVar40 = (undefined4 *)((int)puVar40 + 1);
}
operator_delete((this->array_0x278).data);
iVar28 = (this->array_0x278).count + uVar29;
(this->array_0x278).data = puVar26;
(this->array_0x278).capacity = iVar28 + 100;
}
(this->array_0x278).count = iVar28;
uVar29 = 0;
if (this->_5_element_count != 0) {
iVar28 = 0;
do {
iVar31 = (int)&this->_5_data_ptr->flags + iVar28;
iVar28 = iVar28 + 0x1c;
(this->array_0x278).data[uVar29 * 2] = iVar31;
*(undefined1 *)((this->array_0x278).data + uVar29 * 2 + 1) = 0;
uVar29 = uVar29 + 1;
} while (uVar29 < this->_5_element_count);
}
pbVar41 = this->unk_obj_array_elemsize_212[99] + 0x60;
for (iVar28 = 0x19; iVar28 != 0; iVar28 = iVar28 + -1) {
pbVar41[0] = 0;
pbVar41[1] = 0;
pbVar41[2] = 0;
pbVar41[3] = 0;
pbVar41 = pbVar41 + 4;
}
this->field9896_0x7c90 = (undefined4 *)0x0;
pCVar27 = GetShade();
this->Shade = pCVar27;
this->field9833_0x7c20 = 0;
this->flags_of_mesh_part = 0x10;
this->_CheckMaxBasementAngleStep = 2;
ExceptionList = exception.ExceptionList;
return this;
}
---
// Assembly:
1000eba0 PUSH -0x1
1000eba2 PUSH 0x1006320e
1000eba7 MOV EAX,FS:[0x0]
1000ebad PUSH EAX
1000ebae MOV dword ptr FS:[0x0],ESP
1000ebb5 SUB ESP,0x1e0
1000ebbb MOV EAX,dword ptr [ESP + 0x1fc]
1000ebc2 PUSH EBX
1000ebc3 PUSH EBP
1000ebc4 PUSH ESI
1000ebc5 PUSH EDI
1000ebc6 MOV EDI,dword ptr [ESP + 0x208]
1000ebcd MOV EBP,ECX
1000ebcf PUSH EAX
1000ebd0 PUSH EDI
1000ebd1 MOV dword ptr [ESP + 0x128],EBP
1000ebd8 LEA ECX,[EBP + 0x4]
1000ebdb MOV dword ptr [EBP],0x100655d0
1000ebe2 CALL 0x100565d0
1000ebe7 MOV dword ptr [EBP + 0x134],0x100655a0
1000ebf1 MOV dword ptr [EBP + 0x138],0x10065560
1000ebfb MOV dword ptr [EBP + 0x13c],0x1006552c
1000ec05 XOR ESI,ESI
1000ec07 MOV dword ptr [EBP + 0x140],0x100654d8
1000ec11 MOV EBX,0xfffffffe
1000ec16 MOV dword ptr [EBP + 0x144],0x100654c8
1000ec20 MOV dword ptr [ESP + 0x1f8],ESI
1000ec27 MOV dword ptr [EBP + 0x1e8],ESI
1000ec2d MOV dword ptr [EBP + 0x1ec],EBX
1000ec33 LEA EAX,[EBP + 0x214]
1000ec39 MOV ECX,0x3
1000ec3e OR EDX,0xffffffff
1000ec41 MOV dword ptr [EAX],ESI
1000ec43 MOV dword ptr [EAX + 0x4],EBX
1000ec46 MOV dword ptr [EAX + 0x8],EDX
1000ec49 MOV dword ptr [EAX + 0xc],EDX
1000ec4c MOV dword ptr [EAX + 0x10],EDX
1000ec4f ADD EAX,0x14
1000ec52 DEC ECX
1000ec53 JNZ 0x1000ec41
1000ec55 PUSH 0x1f40
1000ec5a CALL 0x100597e7
1000ec5f ADD ESP,0x4
1000ec62 MOV dword ptr [EBP + 0x278],EAX
1000ec68 MOV dword ptr [EBP + 0x280],0x3e8
1000ec72 MOV dword ptr [EBP + 0x27c],ESI
1000ec78 MOV EBX,0x64
1000ec7d MOV byte ptr [ESP + 0x1f8],0x1
1000ec85 LEA ESI,[EBP + 0x2fc]
1000ec8b MOV dword ptr [ESP + 0x10],EBX
1000ec8f PUSH 0x1000da50
1000ec94 PUSH 0x8
1000ec96 PUSH 0xc
1000ec98 PUSH ESI
1000ec99 CALL 0x10001330
1000ec9e MOV EAX,dword ptr [ESP + 0x10]
1000eca2 ADD ESI,0xd4
1000eca8 DEC EAX
1000eca9 MOV dword ptr [ESP + 0x10],EAX
1000ecad JNZ 0x1000ec8f
1000ecaf PUSH 0x190
1000ecb4 CALL 0x100597e7
1000ecb9 XOR ESI,ESI
1000ecbb MOV dword ptr [EBP + 0x7b74],EAX
1000ecc1 MOV dword ptr [EBP + 0x7b7c],EBX
1000ecc7 MOV dword ptr [EBP + 0x7b78],ESI
1000eccd PUSH 0xfa0
1000ecd2 MOV byte ptr [ESP + 0x200],0x2
1000ecda CALL 0x100597e7
1000ecdf MOV dword ptr [EBP + 0x7c00],EAX
1000ece5 MOV dword ptr [EBP + 0x7c08],0x3e8
1000ecef MOV dword ptr [EBP + 0x7c04],ESI
1000ecf5 PUSH 0x190
1000ecfa MOV byte ptr [ESP + 0x204],0x3
1000ed02 CALL 0x100597e7
1000ed07 MOV dword ptr [EBP + 0x7c0c],EAX
1000ed0d MOV dword ptr [EBP + 0x7c14],EBX
1000ed13 MOV dword ptr [EBP + 0x7c10],ESI
1000ed19 PUSH 0x190
1000ed1e MOV byte ptr [ESP + 0x208],0x4
1000ed26 CALL 0x100597e7
1000ed2b MOV dword ptr [EBP + 0x7c2c],EAX
1000ed31 MOV dword ptr [EBP + 0x7c34],EBX
1000ed37 MOV dword ptr [EBP + 0x7c30],ESI
1000ed3d PUSH 0xa0
1000ed42 MOV byte ptr [ESP + 0x20c],0x5
1000ed4a CALL 0x100597e7
1000ed4f MOV dword ptr [EBP + 0x7c84],EAX
1000ed55 MOV dword ptr [EBP + 0x7c8c],0x28
1000ed5f MOV dword ptr [EBP + 0x7c88],ESI
1000ed65 MOV dword ptr [EBP + 0x7c98],0x1
1000ed6f MOV dword ptr [EBP + 0x7c9c],ESI
1000ed75 MOV dword ptr [EBP + 0x7ca0],ESI
1000ed7b MOV dword ptr [EBP + 0x7ca4],ESI
1000ed81 MOV dword ptr [EBP + 0x7ca8],ESI
1000ed87 MOV dword ptr [EBP + 0x7cac],ESI
1000ed8d MOV dword ptr [EBP + 0x7cb8],ESI
1000ed93 MOV dword ptr [EBP + 0x7cb4],ESI
1000ed99 MOV dword ptr [EBP + 0x7cb0],ESI
1000ed9f MOV dword ptr [EBP + 0x7cc4],ESI
1000eda5 MOV dword ptr [EBP + 0x7cc0],ESI
1000edab MOV dword ptr [EBP + 0x7cbc],ESI
1000edb1 MOV dword ptr [EBP + 0x7cc8],0xbf800000
1000edbb MOV dword ptr [EBP + 0x7ccc],ESI
1000edc1 MOV dword ptr [EBP + 0x7cd0],ESI
1000edc7 MOV dword ptr [EBP + 0x7cd4],ESI
1000edcd MOV dword ptr [EBP + 0x7cd8],ESI
1000edd3 MOV ESI,dword ptr [ESP + 0x218]
1000edda MOV dword ptr [EBP],0x100654c0
1000ede1 MOV dword ptr [EBP + 0x4],0x10065464
1000ede8 MOV dword ptr [EBP + 0x134],0x10065434
1000edf2 MOV dword ptr [EBP + 0x138],0x100653f4
1000edfc MOV dword ptr [EBP + 0x13c],0x100653c0
1000ee06 MOV dword ptr [EBP + 0x140],0x1006536c
1000ee10 MOV dword ptr [EBP + 0x144],0x1006535c
1000ee1a MOV dword ptr [EBP + 0x274],EDI
1000ee20 MOV EDI,ESI
1000ee22 OR ECX,0xffffffff
1000ee25 XOR EAX,EAX
1000ee27 MOV byte ptr [ESP + 0x20c],0x6
1000ee2f SCASB.REPNE ES:EDI
1000ee31 NOT ECX
1000ee33 ADD ECX,0x4
1000ee36 LEA EBX,[EBP + 0x7ce0]
1000ee3c PUSH ECX
1000ee3d CALL 0x100597e7
1000ee42 MOV dword ptr [ESP + 0x80],EAX
1000ee49 MOV EDI,ESI
1000ee4b OR ECX,0xffffffff
1000ee4e XOR EAX,EAX
1000ee50 SCASB.REPNE ES:EDI
1000ee52 NOT ECX
1000ee54 ADD ECX,0x5
1000ee57 PUSH ECX
1000ee58 CALL 0x100597e7
1000ee5d MOV dword ptr [ESP + 0x80],EAX
1000ee64 MOV EDI,ESI
1000ee66 OR ECX,0xffffffff
1000ee69 XOR EAX,EAX
1000ee6b SCASB.REPNE ES:EDI
1000ee6d NOT ECX
1000ee6f ADD ECX,0x5
1000ee72 PUSH ECX
1000ee73 CALL 0x100597e7
1000ee78 MOV dword ptr [ESP + 0x38],EAX
1000ee7c MOV EDI,ESI
1000ee7e OR ECX,0xffffffff
1000ee81 XOR EAX,EAX
1000ee83 SCASB.REPNE ES:EDI
1000ee85 NOT ECX
1000ee87 ADD ECX,0x4
1000ee8a PUSH ECX
1000ee8b CALL 0x100597e7
1000ee90 MOV dword ptr [ESP + 0x34],EAX
1000ee94 OR ECX,0xffffffff
1000ee97 MOV EDI,ESI
1000ee99 XOR EAX,EAX
1000ee9b ADD ESP,0x24
1000ee9e MOV EDX,dword ptr [ESP + 0x68]
1000eea2 SCASB.REPNE ES:EDI
1000eea4 NOT ECX
1000eea6 SUB EDI,ECX
1000eea8 MOV EAX,ECX
1000eeaa MOV ESI,EDI
1000eeac SHR ECX,0x2
1000eeaf MOV EDI,EDX
1000eeb1 MOVSD.REP ES:EDI,ESI
1000eeb3 MOV ECX,EAX
1000eeb5 XOR EAX,EAX
1000eeb7 AND ECX,0x3
1000eeba MOVSB.REP ES:EDI,ESI
1000eebc MOV EDI,0x1006bfb4
1000eec1 OR ECX,0xffffffff
1000eec4 SCASB.REPNE ES:EDI
1000eec6 NOT ECX
1000eec8 SUB EDI,ECX
1000eeca MOV EAX,ECX
1000eecc MOV ESI,EDI
1000eece MOV EDI,EDX
1000eed0 MOV EDX,EAX
1000eed2 OR ECX,0xffffffff
1000eed5 XOR EAX,EAX
1000eed7 SCASB.REPNE ES:EDI
1000eed9 MOV ECX,EDX
1000eedb DEC EDI
1000eedc SHR ECX,0x2
1000eedf MOVSD.REP ES:EDI,ESI
1000eee1 MOV ECX,EDX
1000eee3 MOV EDX,dword ptr [ESP + 0x64]
1000eee7 AND ECX,0x3
1000eeea MOVSB.REP ES:EDI,ESI
1000eeec MOV EDI,dword ptr [ESP + 0x204]
1000eef3 OR ECX,0xffffffff
1000eef6 SCASB.REPNE ES:EDI
1000eef8 NOT ECX
1000eefa SUB EDI,ECX
1000eefc MOV EAX,ECX
1000eefe MOV ESI,EDI
1000ef00 MOV EDI,EDX
1000ef02 SHR ECX,0x2
1000ef05 MOVSD.REP ES:EDI,ESI
1000ef07 MOV ECX,EAX
1000ef09 XOR EAX,EAX
1000ef0b AND ECX,0x3
1000ef0e MOVSB.REP ES:EDI,ESI
1000ef10 MOV EDI,0x1006bfac
1000ef15 OR ECX,0xffffffff
1000ef18 SCASB.REPNE ES:EDI
1000ef1a NOT ECX
1000ef1c SUB EDI,ECX
1000ef1e MOV EAX,ECX
1000ef20 MOV ESI,EDI
1000ef22 OR ECX,0xffffffff
1000ef25 MOV dword ptr [ESP + 0x14],EAX
1000ef29 MOV EDI,EDX
1000ef2b XOR EAX,EAX
1000ef2d MOV EDX,dword ptr [ESP + 0x14]
1000ef31 SCASB.REPNE ES:EDI
1000ef33 MOV ECX,EDX
1000ef35 DEC EDI
1000ef36 SHR ECX,0x2
1000ef39 MOVSD.REP ES:EDI,ESI
1000ef3b MOV ECX,EDX
1000ef3d MOV EDX,dword ptr [ESP + 0x18]
1000ef41 AND ECX,0x3
1000ef44 MOVSB.REP ES:EDI,ESI
1000ef46 MOV EDI,dword ptr [ESP + 0x204]
1000ef4d OR ECX,0xffffffff
1000ef50 SCASB.REPNE ES:EDI
1000ef52 NOT ECX
1000ef54 SUB EDI,ECX
1000ef56 MOV EAX,ECX
1000ef58 MOV ESI,EDI
1000ef5a SHR ECX,0x2
1000ef5d MOV EDI,EDX
1000ef5f MOVSD.REP ES:EDI,ESI
1000ef61 MOV ECX,EAX
1000ef63 XOR EAX,EAX
1000ef65 AND ECX,0x3
1000ef68 MOVSB.REP ES:EDI,ESI
1000ef6a OR ECX,0xffffffff
1000ef6d MOV EDI,0x1006bfa4
1000ef72 SCASB.REPNE ES:EDI
1000ef74 NOT ECX
1000ef76 SUB EDI,ECX
1000ef78 MOV EAX,ECX
1000ef7a MOV ESI,EDI
1000ef7c OR ECX,0xffffffff
1000ef7f MOV EDI,EDX
1000ef81 MOV EDX,EAX
1000ef83 XOR EAX,EAX
1000ef85 SCASB.REPNE ES:EDI
1000ef87 MOV ECX,EDX
1000ef89 DEC EDI
1000ef8a SHR ECX,0x2
1000ef8d MOVSD.REP ES:EDI,ESI
1000ef8f MOV ECX,EDX
1000ef91 MOV EDX,dword ptr [ESP + 0x10]
1000ef95 AND ECX,0x3
1000ef98 MOVSB.REP ES:EDI,ESI
1000ef9a MOV EDI,dword ptr [ESP + 0x204]
1000efa1 OR ECX,0xffffffff
1000efa4 SCASB.REPNE ES:EDI
1000efa6 NOT ECX
1000efa8 SUB EDI,ECX
1000efaa MOV EAX,ECX
1000efac MOV ESI,EDI
1000efae MOV EDI,EDX
1000efb0 SHR ECX,0x2
1000efb3 MOVSD.REP ES:EDI,ESI
1000efb5 MOV ECX,EAX
1000efb7 XOR EAX,EAX
1000efb9 AND ECX,0x3
1000efbc MOVSB.REP ES:EDI,ESI
1000efbe MOV EDI,0x1006bf9c
1000efc3 OR ECX,0xffffffff
1000efc6 SCASB.REPNE ES:EDI
1000efc8 NOT ECX
1000efca SUB EDI,ECX
1000efcc MOV EAX,ECX
1000efce MOV ESI,EDI
1000efd0 MOV EDI,EDX
1000efd2 MOV EDX,EAX
1000efd4 OR ECX,0xffffffff
1000efd7 XOR EAX,EAX
1000efd9 SCASB.REPNE ES:EDI
1000efdb MOV ECX,EDX
1000efdd DEC EDI
1000efde SHR ECX,0x2
1000efe1 MOVSD.REP ES:EDI,ESI
1000efe3 MOV ECX,EDX
1000efe5 AND ECX,0x3
1000efe8 MOVSB.REP ES:EDI,ESI
1000efea CALL 0x10056568
1000efef MOV dword ptr [EBP + 0x7c1c],EAX
1000eff5 TEST EAX,EAX
1000eff7 JNZ 0x1000f00d
1000eff9 PUSH 0x1006bf7c
1000effe MOV EDX,0x1006bf60
1000f003 MOV ECX,0x1006b3f4
1000f008 CALL 0x10051b20
1000f00d CALL 0x10056562
1000f012 TEST EAX,EAX
1000f014 MOV dword ptr [EBP + 0x7bf8],EAX
1000f01a JNZ 0x1000f030
1000f01c PUSH 0x1006bf40
1000f021 MOV EDX,0x1006bf60
1000f026 MOV ECX,0x1006b3f4
1000f02b CALL 0x10051b20
1000f030 MOV ECX,dword ptr [EBP + 0x7bf8]
1000f036 MOV EAX,EBP
1000f038 NEG EAX
1000f03a MOV EDX,dword ptr [ECX]
1000f03c LEA ESI,[EBP + 0x4]
1000f03f SBB EAX,EAX
1000f041 AND EAX,ESI
1000f043 PUSH EAX
1000f044 PUSH 0x0
1000f046 PUSH 0x0
1000f048 PUSH ECX
1000f049 CALL dword ptr [EDX + 0x10]
1000f04c MOV dword ptr [EBP + 0x7bf4],EAX
1000f052 MOV EAX,dword ptr [EBP + 0x7c1c]
1000f058 TEST EAX,EAX
1000f05a JZ 0x1000f08f
1000f05c MOV EAX,EBP
1000f05e MOV EDI,dword ptr [ESP + 0x200]
1000f065 NEG EAX
1000f067 SBB EAX,EAX
1000f069 AND EAX,ESI
1000f06b PUSH EAX
1000f06c MOV EAX,dword ptr [ESP + 0x68]
1000f070 PUSH EAX
1000f071 PUSH EDI
1000f072 CALL 0x1005658c
1000f077 MOV EDX,dword ptr [ESP + 0x18]
1000f07b MOV dword ptr [EBP + 0x7be0],EAX
1000f081 MOV ECX,dword ptr [EAX]
1000f083 PUSH EDX
1000f084 PUSH EDI
1000f085 PUSH EAX
1000f086 CALL dword ptr [ECX + 0x18]
1000f089 MOV dword ptr [EBP + 0x7be4],EAX
1000f08f MOV EAX,EBP
1000f091 NEG EAX
1000f093 SBB EAX,EAX
1000f095 AND EAX,ESI
1000f097 PUSH EAX
1000f098 PUSH 0x0
1000f09a PUSH 0x0
1000f09c CALL 0x1004d7d0
1000f0a1 MOV dword ptr [EBP + 0x7bfc],EAX
1000f0a7 MOV EAX,EBP
1000f0a9 NEG EAX
1000f0ab SBB EAX,EAX
1000f0ad AND EAX,ESI
1000f0af PUSH EAX
1000f0b0 CALL 0x10057a5c
1000f0b5 MOV EDI,dword ptr [EAX]
1000f0b7 LEA ECX,[EBP + 0x7bf0]
1000f0bd PUSH ECX
1000f0be MOV EDX,0x203
1000f0c3 MOV ECX,EAX
1000f0c5 CALL dword ptr [EDI]
1000f0c7 TEST EAX,EAX
1000f0c9 JNZ 0x1000f0df
1000f0cb PUSH 0x1006bf18
1000f0d0 MOV EDX,0x1006bf60
1000f0d5 MOV ECX,0x1006b3f4
1000f0da CALL 0x10051b20
1000f0df MOV EAX,EBP
1000f0e1 NEG EAX
1000f0e3 SBB EAX,EAX
1000f0e5 AND EAX,ESI
1000f0e7 PUSH EAX
1000f0e8 PUSH 0x0
1000f0ea PUSH 0x0
1000f0ec CALL 0x10057a56
1000f0f1 MOV EDI,dword ptr [EAX]
1000f0f3 LEA EDX,[EBP + 0x7be8]
1000f0f9 PUSH EDX
1000f0fa MOV EDX,0x13
1000f0ff MOV ECX,EAX
1000f101 CALL dword ptr [EDI]
1000f103 TEST EAX,EAX
1000f105 JNZ 0x1000f11b
1000f107 PUSH 0x1006beec
1000f10c MOV EDX,0x1006bf60
1000f111 MOV ECX,0x1006b3f4
1000f116 CALL 0x10051b20
1000f11b MOV EAX,EBP
1000f11d NEG EAX
1000f11f SBB EAX,EAX
1000f121 AND EAX,ESI
1000f123 PUSH EAX
1000f124 MOV EAX,dword ptr [ESP + 0x14]
1000f128 PUSH EAX
1000f129 PUSH 0x0
1000f12b CALL 0x10057a50
1000f130 MOV ESI,dword ptr [EAX]
1000f132 LEA ECX,[EBP + 0x7bec]
1000f138 PUSH ECX
1000f139 MOV EDX,0x302
1000f13e MOV ECX,EAX
1000f140 CALL dword ptr [ESI]
1000f142 TEST EAX,EAX
1000f144 JNZ 0x1000f15a
1000f146 PUSH 0x1006bec0
1000f14b MOV EDX,0x1006bf60
1000f150 MOV ECX,0x1006b3f4
1000f155 CALL 0x10051b20
1000f15a MOV EDX,dword ptr [ESP + 0x68]
1000f15e PUSH EDX
1000f15f CALL 0x1005655c
1000f164 TEST EAX,EAX
1000f166 MOV dword ptr [EBP + 0x7c28],EAX
1000f16c JNZ 0x1000f182
1000f16e PUSH 0x1006bea8
1000f173 MOV EDX,0x1006bf60
1000f178 MOV ECX,0x1006b3f4
1000f17d CALL 0x10051b20
1000f182 MOV EAX,dword ptr [EBP + 0x7c28]
1000f188 PUSH EAX
1000f189 MOV ECX,dword ptr [EAX]
1000f18b CALL dword ptr [ECX + 0x14]
1000f18e MOV dword ptr [ESP + 0x14],EAX
1000f192 MOV dword ptr [EBP + 0x284],0x1
1000f19c MOV EAX,dword ptr [EBP + 0x7c28]
1000f1a2 PUSH 0x3
1000f1a4 PUSH EAX
1000f1a5 MOV EDX,dword ptr [EAX]
1000f1a7 CALL dword ptr [EDX + 0x20]
1000f1aa MOV ESI,EAX
1000f1ac CMP ESI,-0x1
1000f1af JNZ 0x1000f1c5
1000f1b1 PUSH 0x1006be94
1000f1b6 MOV EDX,0x1006bf60
1000f1bb MOV ECX,0x1006b3f4
1000f1c0 CALL 0x10051b20
1000f1c5 MOV ECX,dword ptr [ESP + 0x14]
1000f1c9 MOV EAX,ESI
1000f1cb SHL EAX,0x6
1000f1ce PUSH 0x1
1000f1d0 PUSH ESI
1000f1d1 MOV EDX,dword ptr [EAX + ECX*0x1 + 0x4]
1000f1d5 MOV dword ptr [EBP + 0x288],EDX
1000f1db MOV EAX,dword ptr [EBP + 0x7c28]
1000f1e1 PUSH EAX
1000f1e2 MOV ECX,dword ptr [EAX]
1000f1e4 CALL dword ptr [ECX + 0x18]
1000f1e7 MOV dword ptr [EBP + 0x294],EAX
1000f1ed MOV dword ptr [EBP + 0x298],0xc
1000f1f7 MOV EAX,dword ptr [EBP + 0x7c28]
1000f1fd MOV EDI,0x4
1000f202 PUSH EDI
1000f203 PUSH EAX
1000f204 MOV EDX,dword ptr [EAX]
1000f206 CALL dword ptr [EDX + 0x20]
1000f209 MOV ESI,EAX
1000f20b CMP ESI,-0x1
1000f20e JNZ 0x1000f224
1000f210 PUSH 0x1006be94
1000f215 MOV EDX,0x1006bf60
1000f21a MOV ECX,0x1006b3f4
1000f21f CALL 0x10051b20
1000f224 MOV EAX,dword ptr [EBP + 0x7c28]
1000f22a PUSH 0x1
1000f22c PUSH ESI
1000f22d PUSH EAX
1000f22e MOV ECX,dword ptr [EAX]
1000f230 CALL dword ptr [ECX + 0x18]
1000f233 MOV dword ptr [EBP + 0x29c],EAX
1000f239 MOV dword ptr [EBP + 0x2a0],EDI
1000f23f MOV EAX,dword ptr [EBP + 0x7c28]
1000f245 PUSH 0x5
1000f247 PUSH EAX
1000f248 MOV EDX,dword ptr [EAX]
1000f24a CALL dword ptr [EDX + 0x20]
1000f24d MOV ESI,EAX
1000f24f CMP ESI,-0x1
1000f252 JNZ 0x1000f268
1000f254 PUSH 0x1006be94
1000f259 MOV EDX,0x1006bf60
1000f25e MOV ECX,0x1006b3f4
1000f263 CALL 0x10051b20
1000f268 MOV EAX,dword ptr [EBP + 0x7c28]
1000f26e PUSH 0x1
1000f270 PUSH ESI
1000f271 PUSH EAX
1000f272 MOV ECX,dword ptr [EAX]
1000f274 CALL dword ptr [ECX + 0x18]
1000f277 MOV dword ptr [EBP + 0x2b4],EAX
1000f27d MOV dword ptr [EBP + 0x2b8],EDI
1000f283 MOV dword ptr [EBP + 0x2bc],0x0
1000f28d MOV EAX,dword ptr [EBP + 0x7c28]
1000f293 PUSH 0x12
1000f295 PUSH EAX
1000f296 MOV EDX,dword ptr [EAX]
1000f298 CALL dword ptr [EDX + 0x20]
1000f29b MOV ESI,EAX
1000f29d CMP ESI,-0x1
1000f2a0 JNZ 0x1000f2b6
1000f2a2 PUSH 0x1006be68
1000f2a7 MOV EDX,0x1006bf60
1000f2ac MOV ECX,0x1006b3f4
1000f2b1 CALL 0x10051b20
1000f2b6 MOV EAX,dword ptr [EBP + 0x7c28]
1000f2bc PUSH 0x1
1000f2be PUSH ESI
1000f2bf PUSH EAX
1000f2c0 MOV ECX,dword ptr [EAX]
1000f2c2 CALL dword ptr [ECX + 0x18]
1000f2c5 MOV dword ptr [EBP + 0x2bc],EAX
1000f2cb MOV dword ptr [EBP + 0x2c0],EDI
1000f2d1 MOV EAX,dword ptr [EBP + 0x7c28]
1000f2d7 PUSH 0xe
1000f2d9 PUSH EAX
1000f2da MOV EDX,dword ptr [EAX]
1000f2dc CALL dword ptr [EDX + 0x20]
1000f2df CMP EAX,-0x1
1000f2e2 JNZ 0x1000f2ee
1000f2e4 XOR EAX,EAX
1000f2e6 MOV dword ptr [EBP + 0x2ec],EAX
1000f2ec JMP 0x1000f30b
1000f2ee MOV ECX,dword ptr [EBP + 0x7c28]
1000f2f4 PUSH 0x1
1000f2f6 PUSH EAX
1000f2f7 PUSH ECX
1000f2f8 MOV EDX,dword ptr [ECX]
1000f2fa CALL dword ptr [EDX + 0x18]
1000f2fd MOV dword ptr [EBP + 0x2ec],EAX
1000f303 MOV dword ptr [EBP + 0x2f0],EDI
1000f309 XOR EAX,EAX
1000f30b MOV dword ptr [EBP + 0x2a4],EAX
1000f311 MOV dword ptr [EBP + 0x2ac],EAX
1000f317 MOV EAX,dword ptr [EBP + 0x7c28]
1000f31d PUSH 0x15
1000f31f PUSH EAX
1000f320 MOV ECX,dword ptr [EAX]
1000f322 CALL dword ptr [ECX + 0x20]
1000f325 MOV ESI,EAX
1000f327 CMP ESI,-0x1
1000f32a JNZ 0x1000f340
1000f32c PUSH 0x1006be94
1000f331 MOV EDX,0x1006bf60
1000f336 MOV ECX,0x1006b3f4
1000f33b CALL 0x10051b20
1000f340 MOV EAX,dword ptr [ESP + 0x14]
1000f344 MOV EDX,ESI
1000f346 SHL EDX,0x6
1000f349 PUSH 0x1
1000f34b PUSH ESI
1000f34c MOV ECX,dword ptr [EDX + EAX*0x1 + 0x4]
1000f350 MOV dword ptr [EBP + 0x28c],ECX
1000f356 MOV EAX,dword ptr [EBP + 0x7c28]
1000f35c PUSH EAX
1000f35d MOV EDX,dword ptr [EAX]
1000f35f CALL dword ptr [EDX + 0x18]
1000f362 MOV dword ptr [EBP + 0x2f4],EAX
1000f368 MOV EAX,dword ptr [EBP + 0x7c28]
1000f36e PUSH 0x2
1000f370 PUSH EAX
1000f371 MOV ECX,dword ptr [EAX]
1000f373 CALL dword ptr [ECX + 0x20]
1000f376 MOV ESI,EAX
1000f378 CMP ESI,-0x1
1000f37b JNZ 0x1000f391
1000f37d PUSH 0x1006be94
1000f382 MOV EDX,0x1006bf60
1000f387 MOV ECX,0x1006b3f4
1000f38c CALL 0x10051b20
1000f391 MOV EAX,dword ptr [EBP + 0x7c28]
1000f397 PUSH 0x0
1000f399 PUSH ESI
1000f39a PUSH EAX
1000f39b MOV EDX,dword ptr [EAX]
1000f39d CALL dword ptr [EDX + 0x18]
1000f3a0 PUSH 0x28
1000f3a2 MOV dword ptr [EBP + 0x14c],EAX
1000f3a8 CALL 0x100597e7
1000f3ad MOV dword ptr [EBP + 0x7b60],EAX
1000f3b3 MOV ESI,dword ptr [EBP + 0x14c]
1000f3b9 MOV ECX,0x18
1000f3be LEA EDI,[EBP + 0x7b80]
1000f3c4 MOVSD.REP ES:EDI,ESI
1000f3c6 MOV EAX,dword ptr [EBP + 0x14c]
1000f3cc MOV ECX,dword ptr [EBP + 0x7b60]
1000f3d2 ADD ESP,0x4
1000f3d5 MOV EDX,dword ptr [EAX]
1000f3d7 MOV dword ptr [ECX + 0x4],EDX
1000f3da MOV EAX,dword ptr [EBP + 0x14c]
1000f3e0 MOV ECX,dword ptr [EBP + 0x7b60]
1000f3e6 PUSH 0x1
1000f3e8 MOV EDX,dword ptr [EAX + 0x4]
1000f3eb MOV dword ptr [ECX + 0x8],EDX
1000f3ee MOV EAX,dword ptr [EBP + 0x7c28]
1000f3f4 PUSH EAX
1000f3f5 MOV ECX,dword ptr [EAX]
1000f3f7 CALL dword ptr [ECX + 0x20]
1000f3fa MOV ESI,EAX
1000f3fc CMP ESI,-0x1
1000f3ff JNZ 0x1000f415
1000f401 PUSH 0x1006be94
1000f406 MOV EDX,0x1006bf60
1000f40b MOV ECX,0x1006b3f4
1000f410 CALL 0x10051b20
1000f415 MOV EAX,dword ptr [EBP + 0x7c28]
1000f41b PUSH 0x0
1000f41d PUSH ESI
1000f41e PUSH EAX
1000f41f MOV EDX,dword ptr [EAX]
1000f421 CALL dword ptr [EDX + 0x18]
1000f424 MOV dword ptr [EBP + 0x148],EAX
1000f42a MOV EAX,dword ptr [ESP + 0x14]
1000f42e MOV ECX,dword ptr [EBP + 0x7b60]
1000f434 SHL ESI,0x6
1000f437 ADD EAX,ESI
1000f439 MOV EDX,dword ptr [EAX + 0x4]
1000f43c MOV dword ptr [ECX + 0x24],EDX
1000f43f MOV ECX,dword ptr [EBP + 0x7b60]
1000f445 MOV EDX,dword ptr [EAX + 0x8]
1000f448 MOV dword ptr [ECX + 0x1c],EDX
1000f44b MOV ECX,dword ptr [EBP + 0x7b60]
1000f451 MOV EAX,dword ptr [ECX + 0x24]
1000f454 CDQ
1000f455 IDIV dword ptr [ECX + 0x1c]
1000f458 MOV dword ptr [ECX + 0x20],EAX
1000f45b MOV ESI,dword ptr [EBP + 0x14c]
1000f461 ADD ESI,0x94
1000f467 MOV EAX,dword ptr [ESI + 0x8]
1000f46a MOV ECX,dword ptr [ESI + 0x4]
1000f46d MOV EDX,dword ptr [ESI]
1000f46f PUSH EAX
1000f470 PUSH ECX
1000f471 PUSH EDX
1000f472 LEA ECX,[ESP + 0xc0]
1000f479 CALL 0x1000e230
1000f47e MOV ECX,dword ptr [EAX]
1000f480 MOV dword ptr [ESP + 0x124],ECX
1000f487 MOV ECX,dword ptr [ESI + 0x8]
1000f48a MOV EDX,dword ptr [EAX + 0x4]
1000f48d PUSH ECX
1000f48e MOV dword ptr [ESP + 0x12c],EDX
1000f495 MOV EDX,dword ptr [ESI + 0x4]
1000f498 MOV EAX,dword ptr [EAX + 0x8]
1000f49b PUSH EDX
1000f49c MOV dword ptr [ESP + 0x134],EAX
1000f4a3 MOV EAX,dword ptr [ESI + 0xc]
1000f4a6 PUSH EAX
1000f4a7 LEA ECX,[ESP + 0xcc]
1000f4ae CALL 0x1000e230
1000f4b3 MOV ECX,dword ptr [ESI + 0x8]
1000f4b6 MOV EDX,dword ptr [ESI + 0x10]
1000f4b9 MOV EAX,dword ptr [ESI + 0xc]
1000f4bc PUSH ECX
1000f4bd PUSH EDX
1000f4be PUSH EAX
1000f4bf LEA ECX,[ESP + 0xb4]
1000f4c6 CALL 0x1000e230
1000f4cb MOV ECX,dword ptr [ESI + 0x14]
1000f4ce MOV EDX,dword ptr [ESI + 0x10]
1000f4d1 MOV EAX,dword ptr [ESI + 0xc]
1000f4d4 PUSH ECX
1000f4d5 PUSH EDX
1000f4d6 PUSH EAX
1000f4d7 LEA ECX,[ESP + 0x9c]
1000f4de CALL 0x1000e230
1000f4e3 MOV ECX,dword ptr [EAX]
1000f4e5 MOV dword ptr [ESP + 0x178],ECX
1000f4ec MOV ECX,dword ptr [ESI + 0x14]
1000f4ef MOV EDX,dword ptr [EAX + 0x4]
1000f4f2 PUSH ECX
1000f4f3 MOV dword ptr [ESP + 0x180],EDX
1000f4fa MOV EDX,dword ptr [ESI + 0x10]
1000f4fd MOV EAX,dword ptr [EAX + 0x8]
1000f500 PUSH EDX
1000f501 MOV dword ptr [ESP + 0x188],EAX
1000f508 MOV EAX,dword ptr [ESI]
1000f50a PUSH EAX
1000f50b LEA ECX,[ESP + 0x84]
1000f512 CALL 0x1000e230
1000f517 MOV ECX,dword ptr [ESI + 0x14]
1000f51a MOV EDX,dword ptr [ESI + 0x4]
1000f51d MOV EAX,dword ptr [ESI]
1000f51f PUSH ECX
1000f520 PUSH EDX
1000f521 PUSH EAX
1000f522 LEA ECX,[ESP + 0xa8]
1000f529 CALL 0x1000e230
1000f52e MOV ECX,dword ptr [ESI + 0x8]
1000f531 MOV EDX,dword ptr [ESI + 0x10]
1000f534 MOV EAX,dword ptr [ESI]
1000f536 PUSH ECX
1000f537 PUSH EDX
1000f538 PUSH EAX
1000f539 LEA ECX,[ESP + 0x78]
1000f53d CALL 0x1000e230
1000f542 MOV ECX,dword ptr [ESI + 0x14]
1000f545 MOV EDX,dword ptr [ESI + 0x4]
1000f548 MOV EAX,dword ptr [ESI + 0xc]
1000f54b PUSH ECX
1000f54c PUSH EDX
1000f54d PUSH EAX
1000f54e LEA ECX,[ESP + 0x90]
1000f555 CALL 0x1000e230
1000f55a FLD float ptr [ESP + 0x178]
1000f561 FSUB float ptr [ESP + 0x124]
1000f568 MOV ECX,dword ptr [EBP + 0x7b60]
1000f56e PUSH 0xb
1000f570 FSTP float ptr [ECX + 0xc]
1000f573 FLD float ptr [ESP + 0x180]
1000f57a FSUB float ptr [ESP + 0x12c]
1000f581 MOV EDX,dword ptr [EBP + 0x7b60]
1000f587 FSTP float ptr [EDX + 0x10]
1000f58a MOV EAX,dword ptr [EBP + 0x7b60]
1000f590 FLD float ptr [0x1006516c]
1000f596 FDIV float ptr [EAX + 0xc]
1000f599 FSTP float ptr [EAX + 0x14]
1000f59c MOV EAX,dword ptr [EBP + 0x7b60]
1000f5a2 FLD float ptr [0x1006516c]
1000f5a8 FDIV float ptr [EAX + 0x10]
1000f5ab FSTP float ptr [EAX + 0x18]
1000f5ae MOV EAX,dword ptr [EBP + 0x7c28]
1000f5b4 PUSH EAX
1000f5b5 MOV ECX,dword ptr [EAX]
1000f5b7 CALL dword ptr [ECX + 0x20]
1000f5ba MOV ESI,EAX
1000f5bc CMP ESI,-0x1
1000f5bf JNZ 0x1000f5d5
1000f5c1 PUSH 0x1006be94
1000f5c6 MOV EDX,0x1006bf60
1000f5cb MOV ECX,0x1006b3f4
1000f5d0 CALL 0x10051b20
1000f5d5 MOV EAX,dword ptr [EBP + 0x7c28]
1000f5db PUSH 0x1
1000f5dd PUSH ESI
1000f5de PUSH EAX
1000f5df MOV EDX,dword ptr [EAX]
1000f5e1 CALL dword ptr [EDX + 0x18]
1000f5e4 MOV dword ptr [EBP + 0x150],EAX
1000f5ea MOV EAX,dword ptr [ESP + 0x68]
1000f5ee PUSH EAX
1000f5ef CALL 0x10059600
1000f5f4 MOV ECX,dword ptr [ESP + 0x68]
1000f5f8 PUSH ECX
1000f5f9 CALL 0x10059600
1000f5fe MOV EDX,dword ptr [ESP + 0x20]
1000f602 PUSH EDX
1000f603 CALL 0x10059600
1000f608 MOV EAX,dword ptr [ESP + 0x1c]
1000f60c PUSH EAX
1000f60d CALL 0x10059600
1000f612 MOV dword ptr [EBP + 0x7cdc],0xbf800000
1000f61c MOV EAX,dword ptr [EBP + 0x28c]
1000f622 ADD ESP,0x10
1000f625 XOR ECX,ECX
1000f627 TEST EAX,EAX
1000f629 JBE 0x1000f661
1000f62b MOV EDX,dword ptr [EBP + 0x2f4]
1000f631 TEST dword ptr [EDX],0x20000
1000f637 JNZ 0x1000f643
1000f639 INC ECX
1000f63a ADD EDX,0x1c
1000f63d CMP ECX,EAX
1000f63f JC 0x1000f631
1000f641 JMP 0x1000f661
1000f643 XOR EAX,EAX
1000f645 MOV ECX,dword ptr [EBP + 0x294]
1000f64b MOV AX,word ptr [EDX + 0x8]
1000f64f IMUL EAX,dword ptr [EBP + 0x298]
1000f656 ADD EAX,ECX
1000f658 MOV ECX,dword ptr [EAX + 0x8]
1000f65b MOV dword ptr [EBP + 0x7cdc],ECX
1000f661 MOV ECX,0x18
1000f666 MOV ESI,0x10070950
1000f66b MOV EDI,EBX
1000f66d XOR EAX,EAX
1000f66f MOVSD.REP ES:EDI,ESI
1000f671 MOV ECX,dword ptr [EBP + 0x28c]
1000f677 MOV dword ptr [ESP + 0x10],EAX
1000f67b CMP ECX,EAX
1000f67d JBE 0x1000fe21
1000f683 MOV dword ptr [ESP + 0x18],EAX
1000f687 ADD EAX,dword ptr [EBP + 0x2f4]
1000f68d TEST dword ptr [EAX],0x20000
1000f693 JZ 0x1000fdff
1000f699 MOV EDX,dword ptr [EBP + 0x298]
1000f69f XOR ECX,ECX
1000f6a1 MOV CX,word ptr [EAX + 0x8]
1000f6a5 XOR ESI,ESI
1000f6a7 MOV SI,word ptr [EAX + 0xa]
1000f6ab IMUL ECX,EDX
1000f6ae IMUL ESI,EDX
1000f6b1 MOV EDI,dword ptr [EBP + 0x294]
1000f6b7 ADD ECX,EDI
1000f6b9 ADD ESI,EDI
1000f6bb XOR EDI,EDI
1000f6bd MOV DI,word ptr [EAX + 0xc]
1000f6c1 MOV EAX,dword ptr [EBP + 0x294]
1000f6c7 IMUL EDI,EDX
1000f6ca FLD float ptr [ECX]
1000f6cc MOV EDX,EBX
1000f6ce ADD EDI,EAX
1000f6d0 MOV EAX,dword ptr [EDX]
1000f6d2 MOV dword ptr [ESP + 0x1c],EAX
1000f6d6 MOV EAX,dword ptr [EDX + 0x4]
1000f6d9 MOV dword ptr [ESP + 0x20],EAX
1000f6dd LEA EAX,[EBX + 0x54]
1000f6e0 MOV EDX,dword ptr [EDX + 0x8]
1000f6e3 FCOMP float ptr [ESP + 0x1c]
1000f6e7 MOV dword ptr [ESP + 0x24],EDX
1000f6eb MOV EDX,dword ptr [EAX]
1000f6ed MOV dword ptr [ESP + 0x34],EDX
1000f6f1 MOV EDX,dword ptr [EAX + 0x4]
1000f6f4 MOV dword ptr [ESP + 0x38],EDX
1000f6f8 MOV EAX,dword ptr [EAX + 0x8]
1000f6fb MOV dword ptr [ESP + 0x3c],EAX
1000f6ff FNSTSW AX
1000f701 TEST AH,0x1
1000f704 JZ 0x1000f70c
1000f706 MOV EDX,dword ptr [ECX]
1000f708 MOV dword ptr [ESP + 0x1c],EDX
1000f70c FLD float ptr [ECX + 0x4]
1000f70f FCOMP float ptr [ESP + 0x20]
1000f713 FNSTSW AX
1000f715 TEST AH,0x1
1000f718 JZ 0x1000f721
1000f71a MOV EAX,dword ptr [ECX + 0x4]
1000f71d MOV dword ptr [ESP + 0x20],EAX
1000f721 FLD float ptr [ECX + 0x8]
1000f724 FCOMP float ptr [ESP + 0x24]
1000f728 FNSTSW AX
1000f72a TEST AH,0x1
1000f72d JZ 0x1000f736
1000f72f MOV EDX,dword ptr [ECX + 0x8]
1000f732 MOV dword ptr [ESP + 0x24],EDX
1000f736 FLD float ptr [ECX]
1000f738 FCOMP float ptr [ESP + 0x34]
1000f73c FNSTSW AX
1000f73e TEST AH,0x41
1000f741 JNZ 0x1000f749
1000f743 MOV EAX,dword ptr [ECX]
1000f745 MOV dword ptr [ESP + 0x34],EAX
1000f749 FLD float ptr [ECX + 0x4]
1000f74c FCOMP float ptr [ESP + 0x38]
1000f750 FNSTSW AX
1000f752 TEST AH,0x41
1000f755 JNZ 0x1000f75e
1000f757 MOV EDX,dword ptr [ECX + 0x4]
1000f75a MOV dword ptr [ESP + 0x38],EDX
1000f75e FLD float ptr [ECX + 0x8]
1000f761 FCOMP float ptr [ESP + 0x3c]
1000f765 FNSTSW AX
1000f767 TEST AH,0x41
1000f76a JNZ 0x1000f773
1000f76c MOV EAX,dword ptr [ECX + 0x8]
1000f76f MOV dword ptr [ESP + 0x3c],EAX
1000f773 FLD float ptr [ESP + 0x1c]
1000f777 FSTP float ptr [ESP + 0x114]
1000f77e FLD float ptr [ESP + 0x20]
1000f782 FSTP float ptr [ESP + 0x118]
1000f789 FLD float ptr [ESP + 0x24]
1000f78d FSTP float ptr [ESP + 0x11c]
1000f794 FLD float ptr [ESP + 0x34]
1000f798 FSTP float ptr [ESP + 0x108]
1000f79f FLD float ptr [ESP + 0x20]
1000f7a3 FSTP float ptr [ESP + 0x10c]
1000f7aa FLD float ptr [ESP + 0x24]
1000f7ae FSTP float ptr [ESP + 0x110]
1000f7b5 FLD float ptr [ESP + 0x34]
1000f7b9 MOV EDX,dword ptr [ESP + 0x114]
1000f7c0 MOV EAX,dword ptr [ESP + 0x118]
1000f7c7 FSTP float ptr [ESP + 0xf0]
1000f7ce FLD float ptr [ESP + 0x38]
1000f7d2 FSTP float ptr [ESP + 0xf4]
1000f7d9 FLD float ptr [ESP + 0x24]
1000f7dd MOV ECX,EBX
1000f7df FSTP float ptr [ESP + 0xf8]
1000f7e6 FLD float ptr [ESP + 0x34]
1000f7ea MOV dword ptr [ECX],EDX
1000f7ec MOV EDX,dword ptr [ESP + 0x11c]
1000f7f3 FSTP float ptr [ESP + 0xfc]
1000f7fa FLD float ptr [ESP + 0x38]
1000f7fe MOV dword ptr [ECX + 0x4],EAX
1000f801 LEA EAX,[EBX + 0xc]
1000f804 FSTP float ptr [ESP + 0x100]
1000f80b MOV dword ptr [ECX + 0x8],EDX
1000f80e MOV ECX,dword ptr [ESP + 0x108]
1000f815 MOV EDX,dword ptr [ESP + 0x10c]
1000f81c MOV dword ptr [EAX],ECX
1000f81e MOV ECX,dword ptr [ESP + 0x110]
1000f825 FLD float ptr [ESP + 0x3c]
1000f829 MOV dword ptr [EAX + 0x4],EDX
1000f82c LEA EDX,[EBX + 0x18]
1000f82f FSTP float ptr [ESP + 0x104]
1000f836 FLD float ptr [ESP + 0x1c]
1000f83a MOV dword ptr [EAX + 0x8],ECX
1000f83d MOV EAX,dword ptr [ESP + 0xf0]
1000f844 MOV ECX,dword ptr [ESP + 0xf4]
1000f84b MOV dword ptr [EDX],EAX
1000f84d MOV EAX,dword ptr [ESP + 0xf8]
1000f854 MOV dword ptr [EDX + 0x4],ECX
1000f857 MOV ECX,dword ptr [ESP + 0xfc]
1000f85e FSTP float ptr [ESP + 0xd8]
1000f865 FLD float ptr [ESP + 0x38]
1000f869 MOV dword ptr [EDX + 0x8],EAX
1000f86c MOV EDX,dword ptr [ESP + 0x100]
1000f873 MOV EAX,dword ptr [ESP + 0x104]
1000f87a MOV dword ptr [EBX + 0x54],ECX
1000f87d FSTP float ptr [ESP + 0xdc]
1000f884 FLD float ptr [ESP + 0x3c]
1000f888 MOV dword ptr [EBX + 0x58],EDX
1000f88b MOV EDX,dword ptr [ESP + 0xd8]
1000f892 LEA ECX,[EBX + 0x30]
1000f895 MOV dword ptr [EBX + 0x5c],EAX
1000f898 MOV EAX,dword ptr [ESP + 0xdc]
1000f89f MOV dword ptr [ECX],EDX
1000f8a1 FSTP float ptr [ESP + 0xe0]
1000f8a8 MOV EDX,dword ptr [ESP + 0xe0]
1000f8af MOV dword ptr [ECX + 0x4],EAX
1000f8b2 FLD float ptr [ESP + 0x1c]
1000f8b6 MOV dword ptr [ECX + 0x8],EDX
1000f8b9 FSTP float ptr [ESP + 0xe4]
1000f8c0 FLD float ptr [ESP + 0x20]
1000f8c4 MOV ECX,dword ptr [ESP + 0xe4]
1000f8cb LEA EAX,[EBX + 0x3c]
1000f8ce FSTP float ptr [ESP + 0xe8]
1000f8d5 FLD float ptr [ESP + 0x3c]
1000f8d9 MOV EDX,dword ptr [ESP + 0xe8]
1000f8e0 MOV dword ptr [EAX],ECX
1000f8e2 FSTP float ptr [ESP + 0xec]
1000f8e9 MOV ECX,dword ptr [ESP + 0xec]
1000f8f0 MOV dword ptr [EAX + 0x4],EDX
1000f8f3 MOV EDX,dword ptr [ESP + 0x24]
1000f8f7 MOV dword ptr [EAX + 0x8],ECX
1000f8fa MOV EAX,dword ptr [ESP + 0x38]
1000f8fe MOV ECX,dword ptr [ESP + 0x1c]
1000f902 PUSH EDX
1000f903 PUSH EAX
1000f904 PUSH ECX
1000f905 LEA ECX,[ESP + 0x1f0]
1000f90c CALL 0x1000e230
1000f911 MOV ECX,dword ptr [EAX]
1000f913 LEA EDX,[EBX + 0x24]
1000f916 MOV dword ptr [EBX + 0x24],ECX
1000f919 MOV ECX,dword ptr [EAX + 0x4]
1000f91c MOV dword ptr [EDX + 0x4],ECX
1000f91f MOV EAX,dword ptr [EAX + 0x8]
1000f922 MOV ECX,dword ptr [ESP + 0x3c]
1000f926 MOV dword ptr [EDX + 0x8],EAX
1000f929 MOV EDX,dword ptr [ESP + 0x20]
1000f92d MOV EAX,dword ptr [ESP + 0x34]
1000f931 PUSH ECX
1000f932 PUSH EDX
1000f933 PUSH EAX
1000f934 LEA ECX,[ESP + 0x190]
1000f93b CALL 0x1000e230
1000f940 MOV EDX,dword ptr [EAX]
1000f942 LEA ECX,[EBX + 0x48]
1000f945 MOV dword ptr [EBX + 0x48],EDX
1000f948 MOV EDX,dword ptr [EAX + 0x4]
1000f94b MOV dword ptr [ECX + 0x4],EDX
1000f94e MOV EAX,dword ptr [EAX + 0x8]
1000f951 MOV dword ptr [ECX + 0x8],EAX
1000f954 MOV ECX,EBX
1000f956 FLD float ptr [ESI]
1000f958 MOV EDX,dword ptr [ECX]
1000f95a MOV dword ptr [ESP + 0x28],EDX
1000f95e MOV EAX,dword ptr [ECX + 0x4]
1000f961 FCOMP float ptr [ESP + 0x28]
1000f965 MOV ECX,dword ptr [ECX + 0x8]
1000f968 MOV dword ptr [ESP + 0x2c],EAX
1000f96c MOV dword ptr [ESP + 0x30],ECX
1000f970 LEA ECX,[EBX + 0x54]
1000f973 MOV EDX,ECX
1000f975 MOV EAX,dword ptr [EDX]
1000f977 MOV dword ptr [ESP + 0x40],EAX
1000f97b MOV EAX,dword ptr [EDX + 0x4]
1000f97e MOV dword ptr [ESP + 0x44],EAX
1000f982 MOV EDX,dword ptr [EDX + 0x8]
1000f985 FNSTSW AX
1000f987 MOV dword ptr [ESP + 0x48],EDX
1000f98b TEST AH,0x1
1000f98e JZ 0x1000f996
1000f990 MOV EAX,dword ptr [ESI]
1000f992 MOV dword ptr [ESP + 0x28],EAX
1000f996 FLD float ptr [ESI + 0x4]
1000f999 FCOMP float ptr [ESP + 0x2c]
1000f99d FNSTSW AX
1000f99f TEST AH,0x1
1000f9a2 JZ 0x1000f9ab
1000f9a4 MOV EDX,dword ptr [ESI + 0x4]
1000f9a7 MOV dword ptr [ESP + 0x2c],EDX
1000f9ab FLD float ptr [ESI + 0x8]
1000f9ae FCOMP float ptr [ESP + 0x30]
1000f9b2 FNSTSW AX
1000f9b4 TEST AH,0x1
1000f9b7 JZ 0x1000f9c0
1000f9b9 MOV EAX,dword ptr [ESI + 0x8]
1000f9bc MOV dword ptr [ESP + 0x30],EAX
1000f9c0 FLD float ptr [ESI]
1000f9c2 FCOMP float ptr [ESP + 0x40]
1000f9c6 FNSTSW AX
1000f9c8 TEST AH,0x41
1000f9cb JNZ 0x1000f9d3
1000f9cd MOV EDX,dword ptr [ESI]
1000f9cf MOV dword ptr [ESP + 0x40],EDX
1000f9d3 FLD float ptr [ESI + 0x4]
1000f9d6 FCOMP float ptr [ESP + 0x44]
1000f9da FNSTSW AX
1000f9dc TEST AH,0x41
1000f9df JNZ 0x1000f9e8
1000f9e1 MOV EAX,dword ptr [ESI + 0x4]
1000f9e4 MOV dword ptr [ESP + 0x44],EAX
1000f9e8 FLD float ptr [ESI + 0x8]
1000f9eb FCOMP float ptr [ESP + 0x48]
1000f9ef FNSTSW AX
1000f9f1 TEST AH,0x41
1000f9f4 JNZ 0x1000f9fd
1000f9f6 MOV EDX,dword ptr [ESI + 0x8]
1000f9f9 MOV dword ptr [ESP + 0x48],EDX
1000f9fd FLD float ptr [ESP + 0x28]
1000fa01 FSTP float ptr [ESP + 0xcc]
1000fa08 FLD float ptr [ESP + 0x2c]
1000fa0c FSTP float ptr [ESP + 0xd0]
1000fa13 FLD float ptr [ESP + 0x30]
1000fa17 FSTP float ptr [ESP + 0xd4]
1000fa1e FLD float ptr [ESP + 0x40]
1000fa22 FSTP float ptr [ESP + 0x84]
1000fa29 FLD float ptr [ESP + 0x2c]
1000fa2d FSTP float ptr [ESP + 0x88]
1000fa34 FLD float ptr [ESP + 0x30]
1000fa38 MOV EDX,dword ptr [ESP + 0xcc]
1000fa3f MOV EAX,EBX
1000fa41 FSTP float ptr [ESP + 0x8c]
1000fa48 FLD float ptr [ESP + 0x40]
1000fa4c FSTP float ptr [ESP + 0x6c]
1000fa50 FLD float ptr [ESP + 0x44]
1000fa54 MOV dword ptr [EAX],EDX
1000fa56 MOV EDX,dword ptr [ESP + 0xd0]
1000fa5d FSTP float ptr [ESP + 0x70]
1000fa61 FLD float ptr [ESP + 0x30]
1000fa65 MOV dword ptr [EAX + 0x4],EDX
1000fa68 MOV EDX,dword ptr [ESP + 0xd4]
1000fa6f FSTP float ptr [ESP + 0x74]
1000fa73 FLD float ptr [ESP + 0x40]
1000fa77 MOV dword ptr [EAX + 0x8],EDX
1000fa7a MOV EDX,dword ptr [ESP + 0x84]
1000fa81 LEA EAX,[EBX + 0xc]
1000fa84 MOV ESI,dword ptr [ESP + 0x48]
1000fa88 FSTP float ptr [ESP + 0x9c]
1000fa8f FLD float ptr [ESP + 0x44]
1000fa93 MOV dword ptr [EAX],EDX
1000fa95 MOV EDX,dword ptr [ESP + 0x88]
1000fa9c FSTP float ptr [ESP + 0xa0]
1000faa3 MOV dword ptr [EAX + 0x4],EDX
1000faa6 MOV EDX,dword ptr [ESP + 0x8c]
1000faad FLD float ptr [ESP + 0x48]
1000fab1 MOV dword ptr [EAX + 0x8],EDX
1000fab4 MOV EDX,dword ptr [ESP + 0x6c]
1000fab8 LEA EAX,[EBX + 0x18]
1000fabb PUSH ESI
1000fabc FSTP float ptr [ESP + 0xa8]
1000fac3 FLD float ptr [ESP + 0x2c]
1000fac7 MOV dword ptr [EAX],EDX
1000fac9 MOV EDX,dword ptr [ESP + 0x74]
1000facd FSTP float ptr [ESP + 0x7c]
1000fad1 MOV dword ptr [EAX + 0x4],EDX
1000fad4 MOV EDX,dword ptr [ESP + 0x78]
1000fad8 FLD float ptr [ESP + 0x48]
1000fadc MOV dword ptr [EAX + 0x8],EDX
1000fadf MOV EAX,dword ptr [ESP + 0xa0]
1000fae6 MOV EDX,dword ptr [ESP + 0xa4]
1000faed MOV dword ptr [ECX],EAX
1000faef MOV EAX,dword ptr [ESP + 0xa8]
1000faf6 MOV dword ptr [ECX + 0x4],EDX
1000faf9 MOV EDX,dword ptr [ESP + 0x7c]
1000fafd MOV dword ptr [ECX + 0x8],EAX
1000fb00 FSTP float ptr [ESP + 0x80]
1000fb07 FLD float ptr [ESP + 0x4c]
1000fb0b MOV EAX,dword ptr [ESP + 0x80]
1000fb12 LEA ECX,[EBX + 0x30]
1000fb15 FSTP float ptr [ESP + 0x84]
1000fb1c MOV dword ptr [ECX],EDX
1000fb1e MOV EDX,dword ptr [ESP + 0x84]
1000fb25 MOV dword ptr [ECX + 0x4],EAX
1000fb28 MOV dword ptr [ECX + 0x8],EDX
1000fb2b MOV EAX,dword ptr [ESP + 0x30]
1000fb2f MOV ECX,dword ptr [ESP + 0x2c]
1000fb33 PUSH EAX
1000fb34 PUSH ECX
1000fb35 LEA ECX,[ESP + 0x1cc]
1000fb3c CALL 0x1000e230
1000fb41 MOV ECX,dword ptr [EAX]
1000fb43 LEA EDX,[EBX + 0x3c]
1000fb46 MOV dword ptr [EBX + 0x3c],ECX
1000fb49 MOV ECX,dword ptr [EAX + 0x4]
1000fb4c MOV dword ptr [EDX + 0x4],ECX
1000fb4f MOV EAX,dword ptr [EAX + 0x8]
1000fb52 MOV ECX,dword ptr [ESP + 0x30]
1000fb56 MOV dword ptr [EDX + 0x8],EAX
1000fb59 MOV EDX,dword ptr [ESP + 0x44]
1000fb5d MOV EAX,dword ptr [ESP + 0x28]
1000fb61 PUSH ECX
1000fb62 PUSH EDX
1000fb63 PUSH EAX
1000fb64 LEA ECX,[ESP + 0x1b4]
1000fb6b CALL 0x1000e230
1000fb70 MOV EDX,dword ptr [EAX]
1000fb72 LEA ECX,[EBX + 0x24]
1000fb75 PUSH ESI
1000fb76 MOV dword ptr [ECX],EDX
1000fb78 MOV EDX,dword ptr [EAX + 0x4]
1000fb7b MOV dword ptr [ECX + 0x4],EDX
1000fb7e MOV EAX,dword ptr [EAX + 0x8]
1000fb81 MOV EDX,dword ptr [ESP + 0x44]
1000fb85 MOV dword ptr [ECX + 0x8],EAX
1000fb88 MOV ECX,dword ptr [ESP + 0x30]
1000fb8c PUSH ECX
1000fb8d PUSH EDX
1000fb8e LEA ECX,[ESP + 0x1e4]
1000fb95 CALL 0x1000e230
1000fb9a MOV EDX,dword ptr [EAX]
1000fb9c LEA ECX,[EBX + 0x48]
1000fb9f MOV dword ptr [EBX + 0x48],EDX
1000fba2 MOV EDX,dword ptr [EAX + 0x4]
1000fba5 MOV dword ptr [ECX + 0x4],EDX
1000fba8 MOV EAX,dword ptr [EAX + 0x8]
1000fbab MOV dword ptr [ECX + 0x8],EAX
1000fbae MOV ECX,EBX
1000fbb0 FLD float ptr [EDI]
1000fbb2 MOV EDX,dword ptr [ECX]
1000fbb4 MOV dword ptr [ESP + 0x4c],EDX
1000fbb8 MOV EAX,dword ptr [ECX + 0x4]
1000fbbb FCOMP float ptr [ESP + 0x4c]
1000fbbf MOV ECX,dword ptr [ECX + 0x8]
1000fbc2 MOV dword ptr [ESP + 0x50],EAX
1000fbc6 MOV dword ptr [ESP + 0x54],ECX
1000fbca LEA ECX,[EBX + 0x54]
1000fbcd MOV EDX,ECX
1000fbcf MOV EAX,dword ptr [EDX]
1000fbd1 MOV dword ptr [ESP + 0x58],EAX
1000fbd5 MOV EAX,dword ptr [EDX + 0x4]
1000fbd8 MOV dword ptr [ESP + 0x5c],EAX
1000fbdc MOV ESI,dword ptr [EDX + 0x8]
1000fbdf FNSTSW AX
1000fbe1 MOV dword ptr [ESP + 0x60],ESI
1000fbe5 TEST AH,0x1
1000fbe8 JZ 0x1000fbf0
1000fbea MOV EDX,dword ptr [EDI]
1000fbec MOV dword ptr [ESP + 0x4c],EDX
1000fbf0 FLD float ptr [EDI + 0x4]
1000fbf3 FCOMP float ptr [ESP + 0x50]
1000fbf7 FNSTSW AX
1000fbf9 TEST AH,0x1
1000fbfc JZ 0x1000fc05
1000fbfe MOV EAX,dword ptr [EDI + 0x4]
1000fc01 MOV dword ptr [ESP + 0x50],EAX
1000fc05 FLD float ptr [EDI + 0x8]
1000fc08 FCOMP float ptr [ESP + 0x54]
1000fc0c FNSTSW AX
1000fc0e TEST AH,0x1
1000fc11 JZ 0x1000fc1a
1000fc13 MOV EDX,dword ptr [EDI + 0x8]
1000fc16 MOV dword ptr [ESP + 0x54],EDX
1000fc1a FLD float ptr [EDI]
1000fc1c FCOMP float ptr [ESP + 0x58]
1000fc20 FNSTSW AX
1000fc22 TEST AH,0x41
1000fc25 JNZ 0x1000fc2d
1000fc27 MOV EAX,dword ptr [EDI]
1000fc29 MOV dword ptr [ESP + 0x58],EAX
1000fc2d FLD float ptr [EDI + 0x4]
1000fc30 FCOMP float ptr [ESP + 0x5c]
1000fc34 FNSTSW AX
1000fc36 TEST AH,0x41
1000fc39 JNZ 0x1000fc42
1000fc3b MOV EDX,dword ptr [EDI + 0x4]
1000fc3e MOV dword ptr [ESP + 0x5c],EDX
1000fc42 FLD float ptr [EDI + 0x8]
1000fc45 FCOMP float ptr [ESP + 0x60]
1000fc49 FNSTSW AX
1000fc4b TEST AH,0x41
1000fc4e JNZ 0x1000fc59
1000fc50 MOV EAX,dword ptr [EDI + 0x8]
1000fc53 MOV dword ptr [ESP + 0x60],EAX
1000fc57 MOV ESI,EAX
1000fc59 FLD float ptr [ESP + 0x4c]
1000fc5d FSTP float ptr [ESP + 0x90]
1000fc64 FLD float ptr [ESP + 0x50]
1000fc68 FSTP float ptr [ESP + 0x94]
1000fc6f FLD float ptr [ESP + 0x54]
1000fc73 FSTP float ptr [ESP + 0x98]
1000fc7a FLD float ptr [ESP + 0x58]
1000fc7e FSTP float ptr [ESP + 0xa8]
1000fc85 FLD float ptr [ESP + 0x50]
1000fc89 MOV EAX,dword ptr [ESP + 0x90]
1000fc90 MOV EDX,EBX
1000fc92 FSTP float ptr [ESP + 0xac]
1000fc99 FLD float ptr [ESP + 0x54]
1000fc9d FSTP float ptr [ESP + 0xb0]
1000fca4 FLD float ptr [ESP + 0x58]
1000fca8 MOV dword ptr [EDX],EAX
1000fcaa MOV EAX,dword ptr [ESP + 0x94]
1000fcb1 FSTP float ptr [ESP + 0xc0]
1000fcb8 FLD float ptr [ESP + 0x5c]
1000fcbc MOV dword ptr [EDX + 0x4],EAX
1000fcbf MOV EAX,dword ptr [ESP + 0x98]
1000fcc6 FSTP float ptr [ESP + 0xc4]
1000fccd FLD float ptr [ESP + 0x54]
1000fcd1 MOV dword ptr [EDX + 0x8],EAX
1000fcd4 MOV EAX,dword ptr [ESP + 0xa8]
1000fcdb LEA EDX,[EBX + 0xc]
1000fcde MOV EDI,dword ptr [ESP + 0x4c]
1000fce2 FSTP float ptr [ESP + 0xc8]
1000fce9 FLD float ptr [ESP + 0x58]
1000fced MOV dword ptr [EDX],EAX
1000fcef MOV EAX,dword ptr [ESP + 0xac]
1000fcf6 FSTP float ptr [ESP + 0xb4]
1000fcfd MOV dword ptr [EDX + 0x4],EAX
1000fd00 MOV EAX,dword ptr [ESP + 0xb0]
1000fd07 FLD float ptr [ESP + 0x5c]
1000fd0b MOV dword ptr [EDX + 0x8],EAX
1000fd0e MOV EAX,dword ptr [ESP + 0xc0]
1000fd15 LEA EDX,[EBX + 0x18]
1000fd18 PUSH ESI
1000fd19 FSTP float ptr [ESP + 0xbc]
1000fd20 FLD float ptr [ESP + 0x64]
1000fd24 MOV dword ptr [EDX],EAX
1000fd26 MOV EAX,dword ptr [ESP + 0xc8]
1000fd2d FSTP float ptr [ESP + 0xc0]
1000fd34 MOV dword ptr [EDX + 0x4],EAX
1000fd37 MOV EAX,dword ptr [ESP + 0xcc]
1000fd3e MOV dword ptr [EDX + 0x8],EAX
1000fd41 MOV EDX,dword ptr [ESP + 0xb8]
1000fd48 MOV EAX,dword ptr [ESP + 0xbc]
1000fd4f MOV dword ptr [ECX],EDX
1000fd51 MOV EDX,dword ptr [ESP + 0xc0]
1000fd58 MOV dword ptr [ECX + 0x4],EAX
1000fd5b MOV EAX,dword ptr [ESP + 0x60]
1000fd5f MOV dword ptr [ECX + 0x8],EDX
1000fd62 PUSH EAX
1000fd63 PUSH EDI
1000fd64 LEA ECX,[ESP + 0x19c]
1000fd6b CALL 0x1000e230
1000fd70 MOV EDX,dword ptr [EAX]
1000fd72 LEA ECX,[EBX + 0x30]
1000fd75 PUSH ESI
1000fd76 MOV dword ptr [ECX],EDX
1000fd78 MOV EDX,dword ptr [EAX + 0x4]
1000fd7b MOV dword ptr [ECX + 0x4],EDX
1000fd7e MOV EAX,dword ptr [EAX + 0x8]
1000fd81 MOV dword ptr [ECX + 0x8],EAX
1000fd84 MOV ECX,dword ptr [ESP + 0x54]
1000fd88 PUSH ECX
1000fd89 PUSH EDI
1000fd8a LEA ECX,[ESP + 0x1a8]
1000fd91 CALL 0x1000e230
1000fd96 MOV ECX,dword ptr [EAX]
1000fd98 LEA EDX,[EBX + 0x3c]
1000fd9b MOV dword ptr [EBX + 0x3c],ECX
1000fd9e MOV ECX,dword ptr [EAX + 0x4]
1000fda1 MOV dword ptr [EDX + 0x4],ECX
1000fda4 MOV EAX,dword ptr [EAX + 0x8]
1000fda7 MOV ECX,dword ptr [ESP + 0x54]
1000fdab MOV dword ptr [EDX + 0x8],EAX
1000fdae MOV EDX,dword ptr [ESP + 0x5c]
1000fdb2 PUSH ECX
1000fdb3 PUSH EDX
1000fdb4 PUSH EDI
1000fdb5 LEA ECX,[ESP + 0x1c0]
1000fdbc CALL 0x1000e230
1000fdc1 MOV EDX,dword ptr [EAX]
1000fdc3 LEA ECX,[EBX + 0x24]
1000fdc6 PUSH ESI
1000fdc7 MOV dword ptr [ECX],EDX
1000fdc9 MOV EDX,dword ptr [EAX + 0x4]
1000fdcc MOV dword ptr [ECX + 0x4],EDX
1000fdcf MOV EAX,dword ptr [EAX + 0x8]
1000fdd2 MOV EDX,dword ptr [ESP + 0x5c]
1000fdd6 MOV dword ptr [ECX + 0x8],EAX
1000fdd9 MOV ECX,dword ptr [ESP + 0x54]
1000fddd PUSH ECX
1000fdde PUSH EDX
1000fddf LEA ECX,[ESP + 0x1d8]
1000fde6 CALL 0x1000e230
1000fdeb MOV EDX,dword ptr [EAX]
1000fded LEA ECX,[EBX + 0x48]
1000fdf0 MOV dword ptr [EBX + 0x48],EDX
1000fdf3 MOV EDX,dword ptr [EAX + 0x4]
1000fdf6 MOV dword ptr [ECX + 0x4],EDX
1000fdf9 MOV EAX,dword ptr [EAX + 0x8]
1000fdfc MOV dword ptr [ECX + 0x8],EAX
1000fdff MOV ECX,dword ptr [ESP + 0x10]
1000fe03 MOV EAX,dword ptr [ESP + 0x18]
1000fe07 MOV EDX,dword ptr [EBP + 0x28c]
1000fe0d INC ECX
1000fe0e ADD EAX,0x1c
1000fe11 CMP ECX,EDX
1000fe13 MOV dword ptr [ESP + 0x10],ECX
1000fe17 MOV dword ptr [ESP + 0x18],EAX
1000fe1b JC 0x1000f687
1000fe21 MOV ECX,dword ptr [EBP + 0x7b60]
1000fe27 MOV ESI,dword ptr [ECX + 0x24]
1000fe2a LEA EDX,[ESI + ESI*0x2]
1000fe2d LEA EAX,[EDX*0x4 + 0x4]
1000fe34 PUSH EAX
1000fe35 CALL 0x100597e7
1000fe3a ADD ESP,0x4
1000fe3d MOV dword ptr [ESP + 0x10],EAX
1000fe41 XOR EBX,EBX
1000fe43 MOV byte ptr [ESP + 0x1f8],0x7
1000fe4b CMP EAX,EBX
1000fe4d JZ 0x1000fe69
1000fe4f PUSH 0x10044900
1000fe54 PUSH 0x10015d00
1000fe59 LEA EDI,[EAX + 0x4]
1000fe5c PUSH ESI
1000fe5d PUSH 0xc
1000fe5f PUSH EDI
1000fe60 MOV dword ptr [EAX],ESI
1000fe62 CALL 0x10059d5f
1000fe67 JMP 0x1000fe6b
1000fe69 XOR EDI,EDI
1000fe6b MOV ECX,dword ptr [EBP + 0x7b60]
1000fe71 MOV dword ptr [EBP + 0x7b64],EDI
1000fe77 MOV byte ptr [ESP + 0x1f8],0x6
1000fe7f MOV ESI,dword ptr [ECX + 0x24]
1000fe82 LEA EDX,[ESI + ESI*0x2]
1000fe85 LEA EAX,[EDX*0x4 + 0x4]
1000fe8c PUSH EAX
1000fe8d CALL 0x100597e7
1000fe92 ADD ESP,0x4
1000fe95 MOV dword ptr [ESP + 0x10],EAX
1000fe99 CMP EAX,EBX
1000fe9b MOV byte ptr [ESP + 0x1f8],0x8
1000fea3 JZ 0x1000febf
1000fea5 PUSH 0x10044900
1000feaa PUSH 0x10015c50
1000feaf LEA EDI,[EAX + 0x4]
1000feb2 PUSH ESI
1000feb3 PUSH 0xc
1000feb5 PUSH EDI
1000feb6 MOV dword ptr [EAX],ESI
1000feb8 CALL 0x10059d5f
1000febd JMP 0x1000fec1
1000febf XOR EDI,EDI
1000fec1 MOV ECX,dword ptr [EBP + 0x7b60]
1000fec7 MOV dword ptr [EBP + 0x7b70],EDI
1000fecd MOV byte ptr [ESP + 0x1f8],0x6
1000fed5 MOV ESI,dword ptr [ECX + 0x24]
1000fed8 LEA EDX,[ESI + ESI*0x2]
1000fedb LEA EAX,[EDX*0x4 + 0x4]
1000fee2 PUSH EAX
1000fee3 CALL 0x100597e7
1000fee8 ADD ESP,0x4
1000feeb MOV dword ptr [ESP + 0x10],EAX
1000feef CMP EAX,EBX
1000fef1 MOV byte ptr [ESP + 0x1f8],0x9
1000fef9 JZ 0x1000ff17
1000fefb PUSH 0x10044900
1000ff00 PUSH 0x10015d30
1000ff05 LEA EDI,[EAX + 0x4]
1000ff08 PUSH ESI
1000ff09 PUSH 0xc
1000ff0b PUSH EDI
1000ff0c MOV dword ptr [EAX],ESI
1000ff0e CALL 0x10059d5f
1000ff13 MOV EAX,EDI
1000ff15 JMP 0x1000ff19
1000ff17 XOR EAX,EAX
1000ff19 MOV dword ptr [EBP + 0x7b68],EAX
1000ff1f LEA EAX,[EBP + 0x7b3c]
1000ff25 MOV EDX,dword ptr [EBP + 0x7be4]
1000ff2b MOV dword ptr [EBP + 0x194],EAX
1000ff31 LEA EAX,[EBP + 0x7b48]
1000ff37 MOV dword ptr [EBP + 0x1c4],EDX
1000ff3d MOV dword ptr [EBP + 0x198],EAX
1000ff43 LEA EAX,[EBP + 0x7c54]
1000ff49 MOV dword ptr [EBP + 0x160],EAX
1000ff4f LEA EAX,[EBP + 0x7c5c]
1000ff55 MOV dword ptr [EBP + 0x164],EAX
1000ff5b LEA EDX,[EBP + 0x7b54]
1000ff61 LEA EAX,[EBP + 0x7c6c]
1000ff67 MOV dword ptr [EBP + 0x19c],EDX
1000ff6d MOV dword ptr [EBP + 0x1c8],EAX
1000ff73 LEA EDX,[EBP + 0x7c64]
1000ff79 LEA EAX,[EBP + 0x7c74]
1000ff7f MOV dword ptr [EBP + 0x168],EDX
1000ff85 MOV dword ptr [EBP + 0x1cc],EAX
1000ff8b OR ECX,0xffffffff
1000ff8e LEA EDX,[EBP + 0x7c7c]
1000ff94 LEA EAX,[EBP + 0x7c48]
1000ff9a MOV dword ptr [EBP + 0x1a0],ECX
1000ffa0 MOV dword ptr [EBP + 0x1a8],EBX
1000ffa6 MOV dword ptr [EBP + 0x1d0],EDX
1000ffac MOV dword ptr [EBP + 0x170],EAX
1000ffb2 MOV dword ptr [EBP + 0x1dc],ECX
1000ffb8 MOV dword ptr [EBP + 0x1e4],ECX
1000ffbe MOV dword ptr [EBP + 0x1f4],EBX
1000ffc4 MOV dword ptr [EBP + 0x1e8],EBX
1000ffca MOV dword ptr [EBP + 0x1ec],0xfffffffe
1000ffd4 MOV dword ptr [EBP + 0x1f0],EBX
1000ffda MOV dword ptr [EBP + 0x1f8],EBX
1000ffe0 MOV dword ptr [EBP + 0x1fc],EBX
1000ffe6 MOV dword ptr [EBP + 0x200],EBX
1000ffec MOV dword ptr [EBP + 0x204],EBX
1000fff2 MOV EAX,dword ptr [EBP + 0x278]
1000fff8 MOV ESI,dword ptr [EBP + 0x28c]
1000fffe CMP EAX,EBX
10010000 MOV byte ptr [ESP + 0x1f8],0x6
10010008 MOV dword ptr [ESP + 0x18],ESI
1001000c JNZ 0x10010021
1001000e PUSH 0x1f40
10010013 CALL 0x100597e7
10010018 ADD ESP,0x4
1001001b MOV dword ptr [EBP + 0x278],EAX
10010021 MOV ECX,dword ptr [EBP + 0x27c]
10010027 LEA EAX,[ESI + ECX*0x1]
1001002a MOV ECX,dword ptr [EBP + 0x280]
10010030 CMP EAX,ECX
10010032 JLE 0x10010092
10010034 LEA EDX,[EAX*0x8 + 0x320]
1001003b PUSH EDX
1001003c CALL 0x100597e7
10010041 MOV ECX,dword ptr [EBP + 0x280]
10010047 MOV ESI,dword ptr [EBP + 0x278]
1001004d SHL ECX,0x3
10010050 MOV dword ptr [ESP + 0x14],EAX
10010054 MOV EDI,EAX
10010056 MOV EAX,ECX
10010058 SHR ECX,0x2
1001005b MOVSD.REP ES:EDI,ESI
1001005d MOV ECX,EAX
1001005f AND ECX,0x3
10010062 MOVSB.REP ES:EDI,ESI
10010064 MOV ECX,dword ptr [EBP + 0x278]
1001006a PUSH ECX
1001006b CALL 0x10059600
10010070 MOV EAX,dword ptr [EBP + 0x27c]
10010076 MOV ECX,dword ptr [ESP + 0x20]
1001007a MOV EDX,dword ptr [ESP + 0x18]
1001007e ADD ESP,0x8
10010081 ADD EAX,ECX
10010083 MOV dword ptr [EBP + 0x278],EDX
10010089 LEA EDX,[EAX + 0x64]
1001008c MOV dword ptr [EBP + 0x280],EDX
10010092 MOV dword ptr [EBP + 0x27c],EAX
10010098 MOV ECX,dword ptr [EBP + 0x28c]
1001009e XOR EAX,EAX
100100a0 CMP ECX,EBX
100100a2 JBE 0x100100d2
100100a4 XOR ECX,ECX
100100a6 MOV ESI,dword ptr [EBP + 0x2f4]
100100ac MOV EDX,ECX
100100ae ADD EDX,ESI
100100b0 MOV ESI,dword ptr [EBP + 0x278]
100100b6 ADD ECX,0x1c
100100b9 MOV dword ptr [ESI + EAX*0x8],EDX
100100bc MOV EDX,dword ptr [EBP + 0x278]
100100c2 MOV byte ptr [EDX + EAX*0x8 + 0x4],0x0
100100c7 MOV EDX,dword ptr [EBP + 0x28c]
100100cd INC EAX
100100ce CMP EAX,EDX
100100d0 JC 0x100100a6
100100d2 LEA EDI,[EBP + 0x5558]
100100d8 MOV ECX,0x19
100100dd XOR EAX,EAX
100100df STOSD.REP ES:EDI
100100e1 MOV dword ptr [EBP + 0x7c90],EBX
100100e7 CALL 0x100282c0
100100ec MOV ECX,dword ptr [ESP + 0x1f0]
100100f3 MOV dword ptr [EBP + 0x7c18],EAX
100100f9 POP EDI
100100fa MOV dword ptr [EBP + 0x7c20],EBX
10010100 MOV dword ptr [EBP + 0x7c24],0x10
1001010a MOV dword ptr [EBP + 0x7c94],0x2
10010114 MOV EAX,EBP
10010116 POP ESI
10010117 POP EBP
10010118 POP EBX
10010119 MOV dword ptr FS:[0x0],ECX
10010120 ADD ESP,0x1ec
10010126 RET 0x10