Function at 0x412b60
Capabilities:
Get common file path
Get file size
Read file on windows
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x4e7d48
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x558
push ebx
push ebp
push esi
push edi
mov ebx, ecx
push 1
mov dword [esp + 0x24], ebx
call sub.MFC42.DLL_CWnd::UpdateData
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x465]
mov byte [esp + 0x464], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x361]
mov byte [esp + 0x360], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x464]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea ecx, [esp + 0x360]
xor ebp, ebp
push ecx
push ebp
lea edx, [esp + 0x46c]
push 0x52fc24
push edx
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
mov al, byte [esp + 0x1b]
push ebp
lea ecx, [esp + 0x54]
mov byte [esp + 0x54], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea ecx, [esp + 0x1b]
mov dword [esp + 0x570], ebp
push ecx
lea ecx, [esp + 0x64]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea edx, [esp + 0x2b]
lea ecx, [esp + 0x70]
push edx
mov byte [esp + 0x574], 1
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea eax, [esp + 0x2e]
lea ecx, [esp + 0x80]
push eax
mov byte [esp + 0x574], 2
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea ecx, [esp + 0x3a]
mov byte [esp + 0x570], 3
push ecx
lea ecx, [esp + 0x94]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea edx, [esp + 0x35]
lea ecx, [esp + 0xa0]
push edx
mov byte [esp + 0x574], 4
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea eax, [esp + 0x37]
lea ecx, [esp + 0xb0]
push eax
mov byte [esp + 0x574], 5
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea ecx, [esp + 0x2c]
mov byte [esp + 0x570], 6
push ecx
lea ecx, [esp + 0xc4]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea edx, [esp + 0x2d]
lea ecx, [esp + 0xd0]
push edx
mov byte [esp + 0x574], 7
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea eax, [esp + 0x39]
lea ecx, [esp + 0xe0]
push eax
mov byte [esp + 0x574], 8
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea ecx, [esp + 0x3b]
mov byte [esp + 0x570], 9
push ecx
lea ecx, [esp + 0xf4]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea edx, [esp + 0x2f]
lea ecx, [esp + 0x100]
push edx
mov byte [esp + 0x574], 0xa
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea eax, [esp + 0x38]
lea ecx, [esp + 0x110]
push eax
mov byte [esp + 0x574], 0xb
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
lea ecx, [esp + 0x36]
mov byte [esp + 0x570], 0xc
push ecx
lea ecx, [esp + 0x124]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
mov edi, 0x52e740
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x570], 0xd
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x52e740
lea ecx, [esp + 0x78]
call dword [sym.imp.MSVCP60.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__::assign_char_const___unsigned_int_]
mov edi, 0x52e740
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x52e740
lea ecx, [esp + 0xe8]
call dword [sym.imp.MSVCP60.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__::assign_char_const___unsigned_int_]
mov edi, 0x52e740
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x52e740
lea ecx, [esp + 0xd8]
call dword [sym.imp.MSVCP60.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__::assign_char_const___unsigned_int_]
lea edx, [esp + 0x3c]
mov dword [esp + 0x3c], ebp
push edx
mov dword [esp + 0x44], ebp
call fcn.00422ff0
add esp, 4
test eax, eax
je 0x412e61
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x3c]
mov eax, edx
mov ecx, edx
sar eax, 0x10
mov esi, eax
mov eax, edx
sar ecx, 0x1f
sar eax, 0x1f
mov edi, edx
mov ecx, 0x10
mov eax, ebp
and esi, 0xff
and edi, 0xff
call fcn.004e2b50
and ebp, 0xff
and eax, 0xff
push ebp
push eax
push edi
push esi
push str._d._02d._02d._02d
lea ecx, [esp + 0x144]
push 0x28
push ecx
call dword [sym.imp.MSVCRT.dll__snprintf]
lea edi, [esp + 0x14c]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edx, [esp + 0x130]
push ecx
push edx
lea ecx, [esp + 0xa8]
call dword [sym.imp.MSVCP60.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__::assign_char_const___unsigned_int_]
xor ebp, ebp
jmp 0x412e83
mov edi, 0x52e740
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x52e740
lea ecx, [esp + 0xa8]
call dword [sym.imp.MSVCP60.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__::assign_char_const___unsigned_int_]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x25d]
mov byte [esp + 0x25c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x44]
push eax
call dword [sym.imp.MSVCRT.dll_time]
lea ecx, [esp + 0x48]
push ecx
call dword [sym.imp.MSVCRT.dll_localtime]
push eax
push 0x52fc18
lea edx, [esp + 0x26c]
push 0x104
push edx
call dword [sym.imp.MSVCRT.dll_strftime]
lea edi, [esp + 0x274]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x25c]
push ecx
push eax
lea ecx, [esp + 0x88]
call dword [sym.imp.MSVCP60.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__::assign_char_const___unsigned_int_]
mov ecx, dword [ebx + 0x234]
lea esi, [ebx + 0x234]
cmp dword [ecx - 8], ebp
je 0x412f3c
push 0x104
mov ecx, esi
call sub.MFC42.DLL_CString::GetBuffer
mov edx, eax
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [esp + 0xc8]
call dword [sym.imp.MSVCP60.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__::assign_char_const___unsigned_int_]
push 0xffffffffffffffff
mov ecx, esi
call sub.MFC42.DLL_CString::ReleaseBuffer
jmp 0x412f5e
mov edi, 0x53d5d0
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x53d5d0
lea ecx, [esp + 0xc8]
call dword [sym.imp.MSVCP60.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__::assign_char_const___unsigned_int_]
mov dword [esp + 0x24], ebp
mov edx, dword [0x544f00]
mov ecx, 0x544f00
mov byte [esp + 0x570], 0xe
mov dword [esp + 0x30], 0x544f00
call dword [edx + 4]
mov eax, dword [0x53d63c]
mov byte [esp + 0x570], 0xf
cmp eax, ebp
jne 0x412fee
cmp dword [0x53d638], ebp
jne 0x412fee
push 0xf8
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x48], eax
cmp eax, ebp
mov byte [esp + 0x570], 0x10
je 0x412fc0
push ebp
mov ecx, eax
call fcn.00404dd0
jmp 0x412fc2
xor eax, eax
mov dword [0x53d638], eax
mov eax, dword [0x52ed10]
push eax
push 0x404da0
mov ecx, 0x542398
mov byte [esp + 0x578], 0xf
call fcn.004021a0
mov dword [0x53d63c], 1
mov edx, dword [0x544f00]
mov esi, dword [0x53d638]
mov ecx, 0x544f00
mov byte [esp + 0x570], 0xe
call dword [edx + 8]
lea eax, [esp + 0x24]
mov ecx, esi
push eax
call fcn.004515f0
test eax, eax
jl 0x413290
mov eax, dword [esp + 0x24]
cmp eax, ebp
je 0x413290
mov dword [esp + 0x10], ebp
mov ecx, dword [eax]
lea edx, [esp + 0x10]
push edx
push 0x52fc08
push eax
mov byte [esp + 0x57c], 0x11
call dword [ecx + 0xc]
test eax, eax
jl 0x41327a
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x41327e
push 0x10000
call dword [sym.imp.MSVCRT.dll_malloc]
mov ecx, dword [esp + 0xc8]
add esp, 4
mov ebx, eax
test ecx, ecx
mov dword [esp + 0x1c], ebx
jne 0x41307f
mov ecx, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov eax, dword [esp + 0x10]
push ecx
push 0x10000
push ebx
mov edx, dword [eax]
push 0
push eax
call dword [edx + 0x24]
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0xb4]
push ebp
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x4130db
mov edi, dword [esp + 0xb4]
mov ecx, ebp
mov eax, ecx
mov esi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xb4]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
mov edi, 0x52f520
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x64]
push ebp
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x413121
mov edi, dword [esp + 0x64]
mov ecx, ebp
mov edx, ecx
mov esi, 0x52f520
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x64]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x14]
push edx
push 0x52fbf8
mov ecx, dword [eax]
push eax
mov byte [esp + 0x57c], 0x12
call dword [ecx + 0xc]
test eax, eax
jl 0x413248
mov eax, dword [esp + 0x14]
test eax, eax
je 0x413248
mov ebp, dword [esp + 0x94]
test ebp, ebp
jne 0x41316a
mov ebp, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov ebx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0
push 0xffffffffffffffff
push ebp
push 0
push 0
call ebx
mov edi, eax
dec edi
push edi
push 0
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov esi, eax
test esi, esi
je 0x41319a
push edi
push esi
push 0xffffffffffffffff
push ebp
push 0
push 0
call ebx
mov dword [esp + 0x30], esi
mov eax, dword [esp + 0x14]
push esi
push eax
mov byte [esp + 0x578], 0x13
mov ecx, dword [eax]
call dword [ecx + 0x2c]
push esi
mov ebp, eax
mov byte [esp + 0x574], 0x12
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x159]
mov byte [esp + 0x158], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push ebp
push 0x52f478
lea edx, [esp + 0x160]
push 0x104
push edx
stosb byte es:[edi], al
call dword [sym.imp.MSVCRT.dll__snprintf]
lea edi, [esp + 0x168]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 1
mov ebp, ecx
lea ecx, [esp + 0x64]
push ebp
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x413244
mov edi, dword [esp + 0x64]
mov ecx, ebp
mov eax, ecx
lea esi, [esp + 0x158]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x68], ebp
mov byte [ecx + ebp], 0
mov ebx, dword [esp + 0x1c]
push ebx
call dword [sym.imp.MSVCRT.dll_free]
mov eax, dword [esp + 0x18]
add esp, 4
test eax, eax
mov byte [esp + 0x570], 0x11
je 0x413274
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x20]
xor ebp, ebp
jmp 0x41327e
mov ebx, dword [esp + 0x20]
xor ebp, ebp
mov eax, dword [esp + 0x10]
cmp eax, ebp
mov byte [esp + 0x570], 0xe
je 0x413290
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
add ebx, 0x230
push 0x104
mov ecx, ebx
call sub.MFC42.DLL_CString::GetBuffer
mov esi, eax
or ecx, 0xffffffff
mov edi, esi
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 1
mov ebp, ecx
lea ecx, [esp + 0x94]
push ebp
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x4132ef
mov edi, dword [esp + 0x94]
mov ecx, ebp
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x94]
mov dword [esp + 0x98], ebp
mov byte [eax + ebp], 0
push 0xffffffffffffffff
mov ecx, ebx
call sub.MFC42.DLL_CString::ReleaseBuffer
mov eax, dword [esp + 0x94]
xor ebx, ebx
cmp eax, ebx
jne 0x41330a
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov edi, dword [sym.imp.KERNEL32.dll_CreateFileA]
push ebx
push 0x80
push 3
push ebx
push 1
push SysReAllocString
push eax
call edi
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x30], ebp
je 0x4134bb
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], ebx
push ecx
push ebp
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edx, dword [esp + 0x1c]
xor ecx, ecx
xor esi, esi
or ecx, eax
or edx, esi
mov dword [esp + 0x4c], edx
ja 0x413360
cmp ecx, 0x4000
jbe 0x4134b4
push 0x40000
call sub.MFC42.DLL_operatornew
mov esi, eax
add esp, 4
cmp esi, ebx
mov dword [esp + 0x48], esi
je 0x4134b4
lea eax, [esp + 0x10]
push ebx
push eax
push 0x3e800
push esi
push ebp
mov dword [esp + 0x24], ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp dword [esp + 0x10], ebx
je 0x4134ab
push ebx
push 0x100
push 2
push ebx
push 1
lea ecx, [esp + 0x374]
push 0x40000000
push ecx
call edi
mov ebx, eax
cmp ebx, 0xffffffff
je 0x4134ab
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x14]
push 0
push edx
push eax
push esi
push ebx
mov dword [esp + 0x28], 0
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x4134a4
mov eax, dword [esp + 0xb8]
test eax, eax
je 0x4134a4
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x159]
mov byte [esp + 0x158], 0
mov edx, dword [esp + 0x14]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x158]
stosw word es:[edi], ax
push ecx
push edx
push esi
stosb byte es:[edi], al
call fcn.00412260
lea edi, [esp + 0x158]
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x54]
push ebp
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x413471
mov edi, dword [esp + 0x54]
mov ecx, ebp
mov eax, ecx
lea esi, [esp + 0x158]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x48]
mov dword [esp + 0x58], ebp
mov byte [ecx + ebp], 0
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x14], 0
test eax, eax
jne 0x413489
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov ecx, dword [esp + 0xb8]
lea edx, [esp + 0x14]
push 0
push edx
push ecx
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ebp, dword [esp + 0x30]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call sub.MFC42.DLL_operatordelete
add esp, 4
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov edx, dword [esp + 0x20]
mov ecx, dword [eax]
lea esi, [edx + 0x64]
push ecx
lea edx, [esp + 0x54]
push 0
push edx
mov ecx, esi
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0x60]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0x10]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0x70]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0x20]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0x80]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0x30]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0x90]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0x40]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0xa0]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0x50]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0xb0]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0x60]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0xc0]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0x70]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0xd0]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0x80]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0xe0]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0x90]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0xf0]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0xa0]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0x100]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0xb0]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0x110]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esi + 0xc0]
call dword [sym.imp.MSVCP60.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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov ecx, dword [esp + 0x128]
mov ebp, ecx
lea ebx, [esi + 0xd0]
mov eax, dword [eax]
cmp eax, ebp
jae 0x413642
mov ebp, eax
lea edx, [esp + 0x120]
cmp ebx, edx
jne 0x413668
push eax
push ebp
mov ecx, ebx
call dword [sym.imp.MSVCP60.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__::erase_unsigned_int__unsigned_int_]
push 0
push 0
mov ecx, ebx
call dword [sym.imp.MSVCP60.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__::erase_unsigned_int__unsigned_int_]
jmp 0x4136fd
test ebp, ebp
jbe 0x4136c1
cmp ebp, ecx
jne 0x4136c1
mov eax, dword [esp + 0x124]
test eax, eax
jne 0x413680
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
cmp byte [eax - 1], 0xfe
jae 0x4136c1
push 1
mov ecx, ebx
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [esp + 0x124]
test eax, eax
jne 0x4136a0
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov ecx, dword [esp + 0x128]
mov edx, dword [esp + 0x12c]
mov dword [ebx + 4], eax
mov dword [ebx + 8], ecx
mov dword [ebx + 0xc], edx
mov cl, byte [eax - 1]
inc cl
mov byte [eax - 1], cl
jmp 0x4136fd
push 1
push ebp
mov ecx, ebx
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x4136fd
mov esi, dword [esp + 0x124]
test esi, esi
jne 0x4136e1
mov esi, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov edi, dword [ebx + 4]
mov ecx, ebp
mov eax, ecx
push ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebx
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x360]
push ecx
lea ecx, [edx + 0x60]
call sub.MFC42.DLL_CString::operator_2
mov eax, dword [esp + 0x24]
xor esi, esi
cmp eax, esi
mov byte [esp + 0x570], 0xd
je 0x413729
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push 1
lea ecx, [esp + 0x124]
mov dword [esp + 0x574], 0x20
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x114]
mov byte [esp + 0x574], 0x1f
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x104]
mov byte [esp + 0x574], 0x1e
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0xf4]
mov byte [esp + 0x574], 0x1d
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0xe4]
mov byte [esp + 0x574], 0x1c
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0xd4]
mov byte [esp + 0x574], 0x1b
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0xc4]
mov byte [esp + 0x574], 0x1a
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0xb4]
mov byte [esp + 0x574], 0x19
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0xa4]
mov byte [esp + 0x574], 0x18
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x94]
mov byte [esp + 0x574], 0x17
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x84]
mov byte [esp + 0x574], 0x16
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x74]
mov byte [esp + 0x574], 0x15
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [esp + 0x64]
cmp eax, esi
je 0x413862
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x413859
cmp al, 0xff
je 0x413859
dec al
mov byte [ecx], al
jmp 0x413862
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], esi
pop edi
cmp ecx, esi
pop esi
pop ebp
pop ebx
je 0x413896
mov al, byte [ecx - 1]
test al, al
je 0x41388c
cmp al, 0xff
je 0x41388c
dec al
mov byte [ecx - 1], al
jmp 0x413896
dec ecx
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x558]
mov eax, 1
mov dword fs:[0], ecx
add esp, 0x564
ret