Function at 0x52a05d
Capabilities:
Contain obfuscated stackstrings
Get common file path
Move file
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x570213
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xed4
push ebx
push ebp
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov eax, dword [esi + 4]
mov dword [esp + 0x20], esi
cmp eax, ebx
jne 0x52a0a0
push 0x24
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x38], eax
cmp eax, ebx
mov dword [esp + 0xeec], ebx
je 0x52a090
mov ecx, eax
call fcn.00529700
jmp 0x52a092
xor eax, eax
mov dword [esp + 0xeec], 0xffffffff
mov dword [esi + 4], eax
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x3a5]
mov byte [esp + 0x3a4], bl
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x195]
mov byte [esp + 0x194], bl
mov ebp, dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x194]
push eax
push ebx
push ebx
push 0x23
push ebx
call ebp
mov esi, dword [sym.imp.MSVCRT.dll__snprintf]
lea ecx, [esp + 0x194]
push str.storm_skinMatdata
push ecx
push str._s_s_
lea edx, [esp + 0x3b0]
push 0x104
push edx
call esi
lea eax, [esp + 0x3b8]
add esp, 0x14
test eax, eax
je 0x52a126
lea ecx, [esp + 0x3a4]
push ecx
call fcn.0052b8b0
add esp, 4
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x8d]
lea edx, [esp + 0x8c]
mov byte [esp + 0x8c], bl
push edx
rep stosd dword es:[edi], eax
call fcn.0052b710
lea eax, [esp + 0x90]
add esp, 4
test eax, eax
je 0x52a168
lea ecx, [esp + 0x8c]
push ecx
call fcn.0052b8b0
add esp, 4
mov edi, dword [esp + 0x20]
mov ecx, edi
call fcn.0052ac80
test eax, eax
je 0x52a19c
mov ecx, edi
call fcn.0052af30
cmp byte [0x5c7bd0], bl
je 0x52ac5a
mov ecx, edi
call fcn.0052b240
mov byte [0x5c7bd0], bl
jmp 0x52ac5a
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x29d]
lea edx, [esp + 0x8c]
mov byte [esp + 0x29c], bl
push edx
rep stosd dword es:[edi], eax
push ebx
mov ecx, 0x41
lea edi, [esp + 0x95]
push ebx
mov byte [esp + 0x98], bl
push 0x23
rep stosd dword es:[edi], eax
push ebx
call ebp
lea eax, [esp + 0x8c]
push str.storm_skinMatdata
push eax
push str._s_s_
lea ecx, [esp + 0x2a8]
push 0x104
push ecx
call esi
add esp, 0x14
lea edx, [esp + 0x29c]
lea ecx, [esp + 0x88]
push edx
call sub.MFC42.DLL_CString::CString_2
push str.MovieSkin_1
push eax
lea eax, [esp + 0x38]
mov dword [esp + 0xef4], 1
push eax
call sub.MFC42.DLL_operator_2
lea ecx, [esp + 0x88]
mov byte [esp + 0xeec], 3
call sub.MFC42.DLL_CString::CString
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x4ad]
mov byte [esp + 0x4ac], bl
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x3a5]
mov byte [esp + 0x3a4], bl
mov byte [esp + 0x8c], bl
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x8d]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x8c]
push ecx
push ebx
push ebx
push 0x23
push ebx
call ebp
lea edx, [esp + 0x8c]
push str.storm_skinMat
push edx
push 0x5b5428
lea eax, [esp + 0x3b0]
push 0x104
push eax
call esi
add esp, 0x14
lea ecx, [esp + 0x3a4]
lea edx, [esp + 0x4ac]
push str.download_1.xml
push ecx
push 0x5b5428
push 0x104
push edx
call esi
add esp, 0x14
mov dword [esp + 0x28], ebx
lea ecx, [esp + 0x2c]
mov byte [esp + 0xeec], 4
call sub.MFC42.DLL_CString::CString_3
mov edi, vtable.CMovieSkinMgrXml.0
push ebx
mov dword [esp + 0x28], edi
call dword [sym.imp.ole32.dll_CoInitialize]
push ecx
lea eax, [esp + 0x4b0]
mov ecx, esp
mov dword [esp + 0x3c], esp
push eax
mov byte [esp + 0xef4], 5
call sub.MFC42.DLL_CString::CString_2
lea ecx, [esp + 0x28]
call fcn.00529100
lea ecx, [esp + 0x34]
call sub.MFC42.DLL_CString::CString_3
lea ecx, [esp + 0x34]
mov byte [esp + 0xeec], 6
push ecx
push str._config_MD5_zip__md5
lea ecx, [esp + 0x2c]
call fcn.00528c90
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
push edx
push ebx
push ebx
push eax
call fcn.00548f90
test eax, eax
jne 0x52a3c3
mov esi, dword [esp + 0x20]
mov ecx, esi
call fcn.0052b240
mov ecx, esi
call fcn.0052af30
lea ecx, [esp + 0x34]
mov byte [esp + 0xeec], 5
call sub.MFC42.DLL_CString::CString
mov dword [esp + 0x24], edi
mov eax, dword [esp + 0x28]
mov byte [esp + 0xeec], 8
cmp eax, ebx
je 0x52a3a4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push ebx
lea ecx, [esp + 0x2c]
mov dword [esp + 0x2c], ebx
call fcn.0052b930
lea ecx, [esp + 0x2c]
mov byte [esp + 0xeec], 7
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x28]
call fcn.0046ca80
jmp 0x52ac46
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x195]
lea edx, [esp + 0x8c]
mov byte [esp + 0x194], bl
push edx
rep stosd dword es:[edi], eax
push ebx
mov ecx, 0x41
lea edi, [esp + 0x95]
push ebx
mov byte [esp + 0x98], bl
push 0x23
rep stosd dword es:[edi], eax
push ebx
call ebp
lea eax, [esp + 0x8c]
push str.storm_skinMat
push eax
push 0x5b5428
lea ecx, [esp + 0x1a0]
push 0x104
push ecx
call esi
add esp, 0x14
lea edx, [esp + 0xad4]
push sub.MFC42.DLL_CString::CString
push sub.MFC42.DLL_CString::CString_3
push 0x104
push 4
push edx
call fcn.00550176
lea eax, [esp + 0x194]
lea ecx, [esp + 0x1c]
push eax
mov byte [esp + 0xef0], 9
call sub.MFC42.DLL_CString::CString_2
push 0x5b4864
lea ecx, [esp + 0x18]
push eax
push ecx
mov byte [esp + 0xef8], 0xa
call sub.MFC42.DLL_operator_2
push str.main_1.swf
lea edx, [esp + 0x1c]
push eax
push edx
mov byte [esp + 0xef8], 0xb
call sub.MFC42.DLL_operator_2
push eax
lea ecx, [esp + 0xad8]
mov byte [esp + 0xef0], 0xc
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x18]
mov byte [esp + 0xeec], 0xb
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0xeec], 0xa
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x1c]
mov byte [esp + 0xeec], 9
call sub.MFC42.DLL_CString::CString
lea eax, [esp + 0x194]
lea ecx, [esp + 0x1c]
push eax
call sub.MFC42.DLL_CString::CString_2
push 0x5b4864
lea ecx, [esp + 0x18]
push eax
push ecx
mov byte [esp + 0xef8], 0xd
call sub.MFC42.DLL_operator_2
push str.scheme_1.xml
mov byte [esp + 0xef0], 0xe
push eax
lea edx, [esp + 0x20]
push edx
call sub.MFC42.DLL_operator_2
push eax
lea ecx, [esp + 0xadc]
mov byte [esp + 0xef0], 0xf
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x18]
mov byte [esp + 0xeec], 0xe
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0xeec], 0xd
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x1c]
mov byte [esp + 0xeec], 9
call sub.MFC42.DLL_CString::CString
lea eax, [esp + 0x194]
lea ecx, [esp + 0x1c]
push eax
call sub.MFC42.DLL_CString::CString_2
push 0x5b4864
lea ecx, [esp + 0x18]
push eax
push ecx
mov byte [esp + 0xef8], 0x10
call sub.MFC42.DLL_operator_2
push str.materiel_1.xml
lea edx, [esp + 0x1c]
push eax
push edx
mov byte [esp + 0xef8], 0x11
call sub.MFC42.DLL_operator_2
push eax
lea ecx, [esp + 0xae0]
mov byte [esp + 0xef0], 0x12
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x18]
mov byte [esp + 0xeec], 0x11
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0xeec], 0x10
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x1c]
mov byte [esp + 0xeec], 9
call sub.MFC42.DLL_CString::CString
lea eax, [esp + 0x29c]
lea ecx, [esp + 0x14]
push eax
call sub.MFC42.DLL_CString::CString_2
push 0x5814ec
lea ecx, [esp + 0x1c]
push eax
push ecx
mov byte [esp + 0xef8], 0x13
call sub.MFC42.DLL_operator_2
push eax
lea ecx, [esp + 0xae4]
mov byte [esp + 0xef0], 0x14
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x18]
mov byte [esp + 0xeec], 0x13
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0xeec], 9
call sub.MFC42.DLL_CString::CString
mov dl, byte [esp + 0x13]
mov dword [esp + 0x40], ebx
mov byte [esp + 0x3c], dl
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
lea eax, [esp + 0x3c]
mov byte [esp + 0xeec], 0x15
push eax
push 0x5b9d58
push str._config_MD5_PicMD5
lea ecx, [esp + 0x30]
call fcn.005293a0
mov eax, dword [esp + 0x40]
cmp eax, ebx
jne 0x52a683
xor ebp, ebp
jmp 0x52a68c
mov ebp, dword [esp + 0x44]
sub ebp, eax
sar ebp, 2
xor esi, esi
cmp ebp, ebx
jle 0x52a6fe
jmp 0x52a698
mov eax, dword [esp + 0x40]
lea ecx, [esp + 0x29c]
mov edi, eax
push ecx
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::CString_2
lea edx, [edi + esi*4]
mov byte [esp + 0xeec], 0x16
push edx
push eax
lea eax, [esp + 0x20]
push eax
call sub.MFC42.DLL_operator_3
push eax
lea ecx, [esp + esi*4 + 0xae8]
mov byte [esp + 0xef0], 0x17
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x18]
mov byte [esp + 0xeec], 0x16
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0xeec], 0x15
call sub.MFC42.DLL_CString::CString
inc esi
cmp esi, ebp
jl 0x52a694
push sub.MFC42.DLL_CString::CString
push sub.MFC42.DLL_CString::CString_3
push 0x104
lea ecx, [esp + 0x6d0]
push 4
push ecx
call fcn.00550176
lea edx, [esp + 0x6c4]
lea ecx, [esp + 0x24]
push edx
push str._config_MD5_mainSwf__md5
mov byte [esp + 0xef4], 0x18
call fcn.00528c90
lea eax, [esp + 0x6c8]
lea ecx, [esp + 0x24]
push eax
push str._config_MD5_scheme__md5
call fcn.00528c90
lea ecx, [esp + 0x6cc]
push ecx
push str._config_MD5_materiel__md5
lea ecx, [esp + 0x2c]
call fcn.00528c90
lea edx, [esp + 0x6d0]
lea ecx, [esp + 0x24]
push edx
push str._config_MD5_dataXml__md5
call fcn.00528c90
mov al, byte [esp + 0x13]
mov dword [esp + 0x50], ebx
mov byte [esp + 0x4c], al
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
lea ecx, [esp + 0x4c]
mov byte [esp + 0xeec], 0x19
push ecx
push 0x5b7a58
push str._config_MD5_PicMD5
lea ecx, [esp + 0x30]
call fcn.005293a0
mov eax, dword [esp + 0x50]
cmp eax, ebx
jne 0x52a7bc
xor edi, edi
jmp 0x52a7c5
mov edi, dword [esp + 0x54]
sub edi, eax
sar edi, 2
xor esi, esi
cmp edi, ebx
jle 0x52a7e4
mov edx, dword [esp + 0x50]
lea ecx, [esp + esi*4 + 0x6d4]
lea eax, [edx + esi*4]
push eax
call sub.MFC42.DLL_CString::operator_1
inc esi
cmp esi, edi
jl 0x52a7cb
add edi, 4
xor esi, esi
cmp edi, ebx
mov byte [esp + 0x13], bl
jle 0x52ab30
mov eax, dword [esp + esi*4 + 0x6c4]
mov ecx, dword [esp + esi*4 + 0xad4]
push eax
push ebx
push ebx
push ecx
call fcn.00548f90
test eax, eax
jne 0x52a815
mov byte [esp + 0x13], 1
inc esi
cmp esi, edi
jl 0x52a7f5
cmp byte [esp + 0x13], bl
je 0x52ab30
lea ecx, [esp + 0x30]
push 0x5bafa4
lea edx, [esp + 0x24]
push ecx
push edx
call sub.MFC42.DLL_operator_2
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileExA]
push 1
push eax
push ecx
mov byte [esp + 0xef8], 0x1a
call esi
push ebx
lea ecx, [esp + 0x5b8]
call fcn.0053de40
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x29c]
push ebx
push edx
push eax
mov byte [esp + 0xef8], 0x1b
call fcn.0053e0f0
add esp, 0xc
cmp al, bl
je 0x52ab0b
lea ecx, [esp + 0x29c]
push ecx
lea ecx, [esp + 0x78]
call sub.MFC42.DLL_CString::CString_2
push str.scheme_1.xml
lea edx, [esp + 0x1c]
push eax
push edx
mov byte [esp + 0xef8], 0x1c
call sub.MFC42.DLL_operator_2
lea ecx, [esp + 0x74]
mov byte [esp + 0xeec], 0x1e
call sub.MFC42.DLL_CString::CString
lea eax, [esp + 0x194]
lea ecx, [esp + 0x80]
push eax
call sub.MFC42.DLL_CString::CString_2
push 0x5b4864
lea ecx, [esp + 0x74]
push eax
push ecx
mov byte [esp + 0xef8], 0x1f
call sub.MFC42.DLL_operator_2
push str.scheme_1.xml
lea edx, [esp + 0x18]
push eax
push edx
mov byte [esp + 0xef8], 0x20
call sub.MFC42.DLL_operator_2
lea ecx, [esp + 0x70]
mov byte [esp + 0xeec], 0x23
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x80]
mov byte [esp + 0xeec], 0x22
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
push 1
push eax
push ecx
call esi
lea edx, [esp + 0x29c]
lea ecx, [esp + 0x6c]
push edx
call sub.MFC42.DLL_CString::CString_2
push str.materiel_1.xml
push eax
lea eax, [esp + 0x24]
mov byte [esp + 0xef4], 0x24
push eax
call sub.MFC42.DLL_operator_2
lea ecx, [esp + 0x6c]
mov byte [esp + 0xeec], 0x26
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x194]
push ecx
lea ecx, [esp + 0x88]
call sub.MFC42.DLL_CString::CString_2
push 0x5b4864
lea edx, [esp + 0x6c]
push eax
push edx
mov byte [esp + 0xef8], 0x27
call sub.MFC42.DLL_operator_2
push str.materiel_1.xml
push eax
mov byte [esp + 0xef4], 0x28
lea eax, [esp + 0x64]
push eax
call sub.MFC42.DLL_operator_2
lea ecx, [esp + 0x68]
mov byte [esp + 0xeec], 0x2b
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x84]
mov byte [esp + 0xeec], 0x2a
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x1c]
push 1
push ecx
push edx
call esi
lea eax, [esp + 0x29c]
lea ecx, [esp + 0x78]
push eax
call sub.MFC42.DLL_CString::CString_2
push str.main_1.swf
lea ecx, [esp + 0x68]
push eax
push ecx
mov byte [esp + 0xef8], 0x2c
call sub.MFC42.DLL_operator_2
lea ecx, [esp + 0x78]
mov byte [esp + 0xeec], 0x2e
call sub.MFC42.DLL_CString::CString
lea edx, [esp + 0x194]
lea ecx, [esp + 0x38]
push edx
call sub.MFC42.DLL_CString::CString_2
push 0x5b4864
push eax
lea eax, [esp + 0x84]
mov byte [esp + 0xef4], 0x2f
push eax
call sub.MFC42.DLL_operator_2
push str.main_1.swf
lea ecx, [esp + 0x64]
push eax
push ecx
mov byte [esp + 0xef8], 0x30
call sub.MFC42.DLL_operator_2
lea ecx, [esp + 0x7c]
mov byte [esp + 0xeec], 0x33
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x38]
mov byte [esp + 0xeec], 0x32
call sub.MFC42.DLL_CString::CString
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x64]
push 1
push edx
push eax
call esi
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
push 1
push ecx
push edx
call esi
lea ecx, [esp + 0x60]
mov byte [esp + 0xeec], 0x2e
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x64]
mov byte [esp + 0xeec], 0x2a
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x5c]
mov byte [esp + 0xeec], 0x26
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x1c]
mov byte [esp + 0xeec], 0x22
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0xeec], 0x1e
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov byte [esp + 0xeec], 0x1b
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x5b4]
mov byte [esp + 0xeec], 0x1a
call fcn.0053df50
lea ecx, [esp + 0x20]
mov byte [esp + 0xeec], 0x19
call sub.MFC42.DLL_CString::CString
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x50]
cmp esi, edi
mov byte [esp + 0xeec], 0x18
je 0x52ab52
mov ecx, esi
call sub.MFC42.DLL_CString::CString
add esi, 4
cmp esi, edi
jne 0x52ab44
mov eax, dword [esp + 0x50]
push eax
call sub.MFC42.DLL_operatordelete
add esp, 4
lea ecx, [esp + 0x6c4]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
push sub.MFC42.DLL_CString::CString
push 0x104
push 4
push ecx
mov dword [esp + 0x68], ebx
mov byte [esp + 0xefc], 0x15
call fcn.00550046
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
cmp eax, ecx
mov byte [esp + 0xeec], 9
mov edi, ecx
mov esi, eax
je 0x52abb6
mov ecx, esi
call sub.MFC42.DLL_CString::CString
add esi, 4
cmp esi, edi
jne 0x52aba4
mov eax, dword [esp + 0x40]
push eax
call sub.MFC42.DLL_operatordelete
add esp, 4
lea edx, [esp + 0xad4]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
push sub.MFC42.DLL_CString::CString
push 0x104
push 4
push edx
mov dword [esp + 0x58], ebx
mov byte [esp + 0xefc], 6
call fcn.00550046
lea ecx, [esp + 0x34]
mov byte [esp + 0xeec], 5
call sub.MFC42.DLL_CString::CString
mov dword [esp + 0x24], vtable.CMovieSkinMgrXml.0
mov eax, dword [esp + 0x28]
mov byte [esp + 0xeec], 0x35
cmp eax, ebx
je 0x52ac1f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x28], ebx
lea ecx, [esp + 0x2c]
mov byte [esp + 0xeec], 0x34
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x28]
mov byte [esp + 0xeec], 3
cmp eax, ebx
je 0x52ac46
mov edx, dword [eax]
push eax
call dword [edx + 8]
lea ecx, [esp + 0x30]
mov dword [esp + 0xeec], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0xee4]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0xee0
ret