Function at 0x100398a0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x100da1f5
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xd8
push ebx
push esi
mov esi, ecx
push edi
mov dword [esp + 0x6c], esi
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::MaterialPtr::constructor_void_]
xor edi, edi
lea ecx, [esi + 0xc]
mov dword [esp + 0xec], edi
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::MaterialPtr::constructor_void_]
lea ecx, [esp + 0x70]
mov byte [esp + 0xec], 1
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_void_]
mov byte [esp + 0xec], 2
mov bl, 3
mov edi, edi
push edi
push 0x20
push edi
push 6
call dword [sym.imp.OgreMain.dll_public:_static_float___cdecl_Ogre::Math::UnitRandom_void_]
push ecx
lea eax, [esp + 0xa0]
fstp dword [esp]
push eax
call dword [sym.imp.OgreMain.dll_public:_static_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_Ogre::StringConverter::toString_float__unsigned_short_int__unsigned_short_int__char__int_]
mov esi, eax
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 4]
push str.MaterialInstance
add eax, 0xc
push eax
lea edx, [esp + 0xe4]
push edx
mov byte [esp + 0x110], bl
call fcn.10001500
push esi
push eax
lea eax, [esp + 0x70]
push eax
mov byte [esp + 0x11c], 4
call fcn.10001400
add esp, 0x30
push eax
lea ecx, [esp + 0x74]
mov byte [esp + 0xf0], 5
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea ecx, [esp + 0x44]
mov byte [esp + 0xec], 4
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xc4]
mov byte [esp + 0xec], bl
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x8c]
mov byte [esp + 0xec], 2
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
call dword [sym.imp.OgreMain.dll_public:_static_class_Ogre::MaterialManager____cdecl_Ogre::MaterialManager::getSingleton_void_]
mov edx, dword [eax]
lea ecx, [esp + 0x70]
push ecx
mov ecx, eax
call dword [edx + 0x50]
test al, al
jne 0x10039900
lea ecx, [esp + 0x20]
call fcn.1000acb0
mov dword [esp + 0x24], eax
mov byte [eax + 0x45], 1
mov eax, dword [esp + 0x24]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x24]
mov dword [eax], eax
mov eax, dword [esp + 0x24]
mov dword [eax + 8], eax
mov dword [esp + 0x28], edi
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 4]
lea eax, [esp + 0x34]
xor bl, bl
push eax
mov byte [esp + 0xf0], 6
mov byte [esp + 0x17], 0
mov byte [esp + 0x16], bl
mov byte [esp + 0x15], bl
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::VectorIterator_class_std::vector_class_Ogre::Technique___class_std::allocator_class_Ogre::Technique_______thiscall_Ogre::Material::getTechniqueIterator_void_]
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x38]
je 0x10039b96
mov ecx, eax
add eax, 4
lea edx, [esp + 0x3c]
mov dword [esp + 0x34], eax
mov ecx, dword [ecx]
push edx
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::VectorIterator_class_std::vector_class_Ogre::Pass___class_std::allocator_class_Ogre::Pass_______thiscall_Ogre::Technique::getPassIterator_void_const]
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x40]
je 0x10039b88
mov ecx, eax
add eax, 4
mov dword [esp + 0x3c], eax
mov esi, dword [ecx]
mov ecx, esi
call dword [sym.imp.OgreMain.dll_public:_bool___thiscall_Ogre::Pass::getDepthWriteEnabled_void_const]
test al, al
je 0x10039a61
mov byte [esp + 0x13], 1
cmp dword [esi + 0x84], 1
je 0x10039a6f
mov byte [esp + 0x12], 1
lea eax, [esp + 0x2c]
push eax
mov ecx, esi
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::VectorIterator_class_std::vector_class_Ogre::TextureUnitState___class_std::allocator_class_Ogre::TextureUnitState_______thiscall_Ogre::Pass::getTextureUnitStateIterator_void_]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x30]
je 0x10039b7a
lea ebx, [ebx]
mov ecx, eax
add eax, 4
mov dword [esp + 0x2c], eax
mov esi, dword [ecx]
mov ecx, esi
call dword [sym.imp.OgreMain.dll_public:_enum_Ogre::TextureType___thiscall_Ogre::TextureUnitState::getTextureType_void_]
cmp eax, 2
jne 0x10039b59
test bl, bl
jne 0x10039b59
push str._baseTexture_
lea ecx, [esp + 0x48]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov ecx, esi
mov byte [esp + 0xec], 7
call dword [sym.imp.OgreMain.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const____thiscall_Ogre::TextureUnitState::getTextureName_void_const]
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esp + 0x90]
mov edi, eax
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
push edi
lea ecx, [esp + 0xac]
mov byte [esp + 0xf0], 8
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea edx, [esp + 0x8c]
push edx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0xf4], 9
call fcn.1000af40
lea ecx, [esp + 0xa8]
mov byte [esp + 0xec], 0xa
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x8c]
mov byte [esp + 0xec], 7
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x44]
mov byte [esp + 0xec], 6
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov bl, 1
mov ecx, esi
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::LayerBlendModeEx_const____thiscall_Ogre::TextureUnitState::getColourBlendMode_void_const]
cmp dword [eax + 4], 5
jne 0x10039b6c
mov byte [esp + 0x11], 1
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x30]
jne 0x10039a90
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x40]
jne 0x10039a45
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x38]
jne 0x10039a21
mov edi, dword [sym.imp.OgreMain.dll_public:_static_class_Ogre::MaterialManager____cdecl_Ogre::MaterialManager::getSingleton_void_]
call edi
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 4]
mov edx, dword [eax]
push 0
push 0
add ecx, 0x28
push 0
push ecx
lea ecx, [esp + 0x80]
push ecx
lea ecx, [esp + 0x28]
push ecx
mov ecx, eax
call dword [edx + 0x10]
mov ebx, dword [esp + 0x6c]
push eax
lea ecx, [ebx + 0xc]
mov byte [esp + 0xf0], 0xb
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::MaterialPtr____thiscall_Ogre::MaterialPtr::operator_class_Ogre::SharedPtr_class_Ogre::Resource__const__]
mov eax, dword [esp + 0x1c]
test eax, eax
mov byte [esp + 0xec], 6
mov dword [esp + 0x14], 0x100ec508
je 0x10039c06
dec dword [eax]
mov edx, dword [esp + 0x1c]
cmp dword [edx], 0
jne 0x10039c06
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x14]
call dword [eax + 4]
push 0
push 0x20
push 0
push 6
call dword [sym.imp.OgreMain.dll_public:_static_float___cdecl_Ogre::Math::UnitRandom_void_]
push ecx
lea ecx, [esp + 0x58]
fstp dword [esp]
push ecx
call dword [sym.imp.OgreMain.dll_public:_static_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_Ogre::StringConverter::toString_float__unsigned_short_int__unsigned_short_int__char__int_]
mov esi, eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
add eax, 0xc
push str.MaterialInstance2
push eax
lea eax, [esp + 0xe4]
push eax
mov byte [esp + 0x110], 0xc
call fcn.10001500
push esi
push eax
lea ecx, [esp + 0xb8]
push ecx
mov byte [esp + 0x11c], 0xd
call fcn.10001400
add esp, 0x30
push eax
lea ecx, [esp + 0x74]
mov byte [esp + 0xf0], 0xe
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea ecx, [esp + 0x8c]
mov byte [esp + 0xec], 0xd
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xc4]
mov byte [esp + 0xec], 0xc
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x44]
mov byte [esp + 0xec], 6
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
call edi
mov edx, dword [eax]
lea ecx, [esp + 0x70]
push ecx
mov ecx, eax
call dword [edx + 0x50]
test al, al
jne 0x10039c06
mov eax, dword [sym.imp.OgreMain.dll_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const_Ogre::StringUtil::BLANK]
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 4]
push eax
xor esi, esi
push esi
lea edx, [esp + 0x78]
push edx
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::MaterialPtr___thiscall_Ogre::Material::clone_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___bool__class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
push eax
mov ecx, ebx
mov byte [esp + 0xf0], 0xf
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::MaterialPtr____thiscall_Ogre::MaterialPtr::operator_class_Ogre::MaterialPtr_const__]
lea ecx, [esp + 0x14]
mov byte [esp + 0xec], 6
call dword [sym.imp.OgreMain.dll_public_virtual:_void___thiscall_Ogre::MaterialPtr::destructor_void_]
lea ecx, [esp + 0x60]
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::MaterialPtr::constructor_void_]
mov al, byte [esp + 0x13]
test al, al
mov byte [esp + 0xec], 0x10
je 0x10039d73
mov al, byte [esp + 0x12]
test al, al
je 0x10039d73
push str.Transparent_AlphaTemplate
lea ecx, [esp + 0x48]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov byte [esp + 0xec], 0x11
call edi
mov edx, dword [eax]
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esp + 0x18]
push ecx
mov ecx, eax
call dword [edx + 0x44]
push eax
lea ecx, [esp + 0x64]
mov byte [esp + 0xf0], 0x12
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::MaterialPtr____thiscall_Ogre::MaterialPtr::operator_class_Ogre::SharedPtr_class_Ogre::Resource__const__]
mov byte [esp + 0xec], 0x11
jmp 0x10039db8
push str.Transparent_NoAlphaTemplate
lea ecx, [esp + 0x48]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov byte [esp + 0xec], 0x13
call edi
mov edx, dword [eax]
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esp + 0x18]
push ecx
mov ecx, eax
call dword [edx + 0x44]
push eax
lea ecx, [esp + 0x64]
mov byte [esp + 0xf0], 0x14
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::MaterialPtr____thiscall_Ogre::MaterialPtr::operator_class_Ogre::SharedPtr_class_Ogre::Resource__const__]
mov byte [esp + 0xec], 0x13
mov eax, dword [esp + 0x1c]
cmp eax, esi
mov dword [esp + 0x14], 0x100ec508
je 0x10039ddd
dec dword [eax]
mov edx, dword [esp + 0x1c]
cmp dword [edx], esi
jne 0x10039ddd
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x14]
call dword [eax + 4]
lea ecx, [esp + 0x44]
mov byte [esp + 0xec], 0x10
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov ecx, dword [esp + 0x64]
cmp ecx, esi
jne 0x10039eda
push str.cant_find_the_transparent_material__LogicModel::ModelMaterialInstance::ModelMaterialInstance
lea ecx, [esp + 0x48]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
push esi
lea ecx, [esp + 0x48]
push 2
push ecx
mov byte [esp + 0xf8], 0x15
call dword [sym.imp.OgreMain.dll_public:_static_class_Ogre::LogManager____cdecl_Ogre::LogManager::getSingleton_void_]
mov ecx, eax
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::LogManager::logMessage_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___enum_Ogre::LogMessageLevel__bool_]
lea ecx, [esp + 0x44]
mov byte [esp + 0xec], 0x10
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
push str.BaseWhite
lea ecx, [esp + 0x48]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov byte [esp + 0xec], 0x16
call edi
mov edx, dword [eax]
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esp + 0x18]
push ecx
mov ecx, eax
call dword [edx + 0x44]
push eax
lea ecx, [esp + 0x64]
mov byte [esp + 0xf0], 0x17
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::MaterialPtr____thiscall_Ogre::MaterialPtr::operator_class_Ogre::SharedPtr_class_Ogre::Resource__const__]
mov eax, dword [esp + 0x1c]
cmp eax, esi
mov byte [esp + 0xec], 0x16
mov dword [esp + 0x14], 0x100ec508
je 0x10039ea4
dec dword [eax]
mov edx, dword [esp + 0x1c]
cmp dword [edx], esi
jne 0x10039ea4
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x14]
call dword [eax + 4]
lea ecx, [esp + 0x44]
mov byte [esp + 0xec], 0x10
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov ecx, dword [esp + 0x64]
cmp ecx, esi
jne 0x10039eda
push 0xbe
push str..ModelSystemFairyLogicModel.cpp
push str.LogicModel::ModelMaterialInstance::ModelMaterialInstance
push str.cant_find_the_BaseWhite_material_
push 7
call dword [sym.imp.OgreMain.dll_public:_static_void___cdecl_Ogre::Exception::_throw_int__char_const___char_const___char_const___long_int_]
lea eax, [ebx + 0xc]
push eax
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::Material::copyDetailsTo_class_Ogre::MaterialPtr__const]
mov ecx, dword [ebx + 0x10]
push 1
lea edx, [esp + 0x24]
push edx
call dword [sym.imp.OgreMain.dll__applyTextureAliases_Material_Ogre__QBE_NABV__map_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__st]
mov ecx, dword [ebx + 0x10]
push 1
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::Material::setLightingEnabled_bool_]
mov eax, dword [ebp + 8]
mov edi, dword [ebx + 0x10]
push eax
call fcn.10024c10
add esp, 4
push eax
mov ecx, edi
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::Material::setSelfIllumination_class_Ogre::ColourValue_const__]
mov al, byte [esp + 0x11]
test al, al
je 0x10039f65
mov ecx, dword [ebx + 0x10]
push 1
push esi
push 1
push esi
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::Technique____thiscall_Ogre::Material::getTechnique_unsigned_short_int_]
mov ecx, eax
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::Pass____thiscall_Ogre::Technique::getPass_unsigned_short_int_]
mov ecx, eax
call dword [sym.imp.OgreMain.dll_public:_class_Ogre::TextureUnitState____thiscall_Ogre::Pass::getTextureUnitState_unsigned_short_int_]
mov ecx, eax
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::TextureUnitState::setColourOperation_enum_Ogre::LayerBlendOperation_]
mov edx, dword [sym.imp.OgreMain.dll_class_Ogre::ColourValue_const_Ogre::ColourValue::Black]
mov ecx, dword [ebx + 0x10]
push edx
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::Material::setDiffuse_class_Ogre::ColourValue_const__]
mov eax, dword [sym.imp.OgreMain.dll_class_Ogre::ColourValue_const_Ogre::ColourValue::Black]
mov ecx, dword [ebx + 0x10]
push eax
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::Material::setAmbient_class_Ogre::ColourValue_const__]
mov ecx, dword [ebx + 0x10]
push 1
call dword [sym.imp.OgreMain.dll_public:_void___thiscall_Ogre::Material::compile_bool_]
lea ecx, [esp + 0x60]
mov byte [esp + 0xec], 6
call dword [sym.imp.OgreMain.dll_public_virtual:_void___thiscall_Ogre::MaterialPtr::destructor_void_]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
push eax
push ecx
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esp + 0x2c]
mov byte [esp + 0xf8], 2
call fcn.1000ba00
mov edx, dword [esp + 0x24]
push edx
call sub.MSVCR71.dll_void___cdecl_operator_delete_void__
add esp, 4
lea ecx, [esp + 0x70]
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], esi
mov byte [esp + 0xec], 1
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
mov eax, ebx
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 4