Function at 0x42e21b
Capabilities:
Check if file exists
Copy file

Disassembly:
mov eax, 0x466291
call fcn.00461c40
sub esp, 0x74
mov al, byte [ebp + 0xb]
push ebx
push esi
xor esi, esi
push edi
push esi
lea ecx, [ebp - 0x50]
mov byte [ebp - 0x50], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
cmp dword [ebp + 8], esi
mov ebx, dword [sym.imp.Ht4Dll.dll_public:_static_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____cdecl_CHtPath::GetContentPath_int_]
mov dword [ebp - 4], esi
jne 0x42e2a4
lea eax, [ebp - 0x70]
push 1
push eax
call ebx
pop ecx
pop ecx
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::npos]
mov byte [ebp - 4], 1
push dword [ecx]
lea ecx, [ebp - 0x50]
push esi
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const___unsigned_int__unsigned_int_]
and byte [ebp - 4], 0
push 1
lea ecx, [ebp - 0x70]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
mov esi, dword [sym.imp.MSVCRT.dll_wcslen]
mov edi, str.Products.xml
push edi
call esi
pop ecx
push eax
push edi
lea ecx, [ebp - 0x50]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
lea eax, [ebp - 0x50]
push 0
push eax
call fcn.00452c5e
pop ecx
pop ecx
jmp 0x42e2bd
push dword [ebp + 8]
mov esi, dword [sym.imp.MSVCRT.dll_wcslen]
call esi
pop ecx
push eax
lea ecx, [ebp - 0x50]
push dword [ebp + 8]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_unsigned_short_int_const___unsigned_int_]
mov eax, dword [ebp - 0x4c]
test eax, eax
jne 0x42e2c9
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
mov edi, eax
mov al, byte [ebp + 0xb]
push 0
lea ecx, [ebp - 0x60]
mov byte [ebp - 0x60], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
push edi
call esi
pop ecx
push eax
push edi
lea ecx, [ebp - 0x60]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_unsigned_short_int_const___unsigned_int_]
lea eax, [ebp - 0x40]
push 1
push eax
mov byte [ebp - 4], 2
call ebx
mov edi, 0x47e768
mov byte [ebp - 4], 3
push edi
call esi
add esp, 0xc
lea ecx, [ebp - 0x40]
push eax
push edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::npos]
lea ecx, [ebp - 0x40]
push dword [eax]
lea eax, [ebp - 0x60]
push 0
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const___unsigned_int__unsigned_int_]
lea eax, [ebp - 0x30]
push 0
push eax
call ebx
push edi
mov byte [ebp - 4], 4
call esi
add esp, 0xc
lea ecx, [ebp - 0x30]
push eax
push edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::npos]
lea ecx, [ebp - 0x30]
push dword [eax]
lea eax, [ebp - 0x60]
push 0
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const___unsigned_int__unsigned_int_]
mov eax, dword [ebp - 0x3c]
test eax, eax
jne 0x42e36d
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
mov edi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push eax
call edi
test eax, eax
mov eax, dword [ebp - 0x2c]
jne 0x42e3b2
test eax, eax
jne 0x42e386
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
push eax
call edi
test eax, eax
jne 0x42e394
xor esi, esi
jmp 0x42e5ba
mov ecx, dword [ebp - 0x3c]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
test ecx, ecx
jne 0x42e3a2
mov ecx, eax
cmp dword [ebp - 0x2c], 0
je 0x42e3ab
mov eax, dword [ebp - 0x2c]
push 1
jmp 0x42e599
test eax, eax
jne 0x42e3bb
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
push eax
call edi
test eax, eax
je 0x42e5a1
push 0x18
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
pop ecx
mov dword [ebp + 8], eax
mov ebx, dword [sym.imp.Ht4Dll.dll_public:_void___thiscall_BTL::My_btl_DOM_Doc::constructor_void_]
mov byte [ebp - 4], 5
test eax, eax
je 0x42e3ea
mov ecx, eax
call ebx
mov edi, eax
mov dword [ebp - 0x10], edi
jmp 0x42e3f1
and dword [ebp - 0x10], 0
mov edi, dword [ebp - 0x10]
push 0x18
mov byte [ebp - 4], 4
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
pop ecx
mov dword [ebp + 8], eax
test eax, eax
mov byte [ebp - 4], 6
je 0x42e410
mov ecx, eax
call ebx
mov ebx, eax
jmp 0x42e412
xor ebx, ebx
test edi, edi
mov byte [ebp - 4], 4
je 0x42e38d
test ebx, ebx
je 0x42e38d
mov eax, dword [edi]
lea ecx, [ebp - 0x40]
push ecx
mov ecx, edi
call dword [eax]
lea ecx, [ebp - 0x30]
mov dword [ebp + 8], eax
mov eax, dword [ebx]
push ecx
mov ecx, ebx
call dword [eax]
cmp dword [ebp + 8], 0
jl 0x42e38d
test eax, eax
jl 0x42e38d
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 8]
mov dword [ebp + 8], eax
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 8]
cmp dword [ebp + 8], 0
mov dword [ebp - 0x14], eax
je 0x42e38d
test eax, eax
je 0x42e38d
mov al, byte [ebp + 0xb]
push 0
lea ecx, [ebp - 0x70]
mov byte [ebp - 0x70], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
mov edi, str.version
push edi
call esi
pop ecx
push eax
push edi
lea ecx, [ebp - 0x70]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_unsigned_short_int_const___unsigned_int_]
mov ecx, dword [ebp + 8]
lea edx, [ebp - 0x70]
push edx
lea edx, [ebp - 0x80]
mov eax, dword [ecx]
push edx
mov byte [ebp - 4], 7
call dword [eax + 4]
push eax
mov byte [ebp - 4], 8
call dword [sym.imp.Ht4Dll.dll_public:_static_double___cdecl_CHT4StrTool::Str2Double_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
fstp qword [ebp - 0x20]
pop ecx
mov byte [ebp - 4], 7
push 1
lea ecx, [ebp - 0x80]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
push 1
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 4
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
mov al, byte [ebp + 0xb]
push 0
lea ecx, [ebp - 0x70]
mov byte [ebp - 0x70], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
push edi
call esi
pop ecx
push eax
push edi
lea ecx, [ebp - 0x70]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_unsigned_short_int_const___unsigned_int_]
mov esi, dword [ebp - 0x14]
lea ecx, [ebp - 0x70]
push ecx
lea ecx, [ebp - 0x80]
mov eax, dword [esi]
push ecx
mov ecx, esi
mov byte [ebp - 4], 9
call dword [eax + 4]
push eax
mov byte [ebp - 4], 0xa
call dword [sym.imp.Ht4Dll.dll_public:_static_double___cdecl_CHT4StrTool::Str2Double_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
fstp qword [ebp - 0x18]
pop ecx
mov byte [ebp - 4], 9
push 1
lea ecx, [ebp - 0x80]
pop edi
push edi
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
push edi
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 4
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
mov ecx, dword [ebp + 8]
push edi
mov eax, dword [ecx]
call dword [eax + 0x1c]
mov eax, dword [esi]
push edi
mov ecx, esi
call dword [eax + 0x1c]
mov esi, dword [ebp - 0x10]
push 0
mov ecx, esi
mov eax, dword [esi]
call dword [eax + 0x14]
mov eax, dword [ebx]
push 0
mov ecx, ebx
call dword [eax + 0x14]
mov eax, dword [esi]
push edi
mov ecx, esi
call dword [eax + 0xc]
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0xc]
fld qword [ebp - 0x18]
fcomp qword [ebp - 0x20]
fnstsw ax
sahf
jbe 0x42e5a1
mov ecx, dword [ebp - 0x3c]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
test ecx, ecx
jne 0x42e58e
mov ecx, eax
cmp dword [ebp - 0x2c], 0
je 0x42e597
mov eax, dword [ebp - 0x2c]
push 0
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::npos]
mov ecx, dword [ebp + 0xc]
push dword [eax]
lea eax, [ebp - 0x40]
push 0
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const___unsigned_int__unsigned_int_]
push 1
pop esi
push 1
lea ecx, [ebp - 0x30]
pop edi
mov byte [ebp - 4], 3
push edi
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
push edi
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 2
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
and byte [ebp - 4], 0
push edi
lea ecx, [ebp - 0x60]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
or dword [ebp - 4], 0xffffffff
push edi
lea ecx, [ebp - 0x50]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 8