Function at 0x415f38
Capabilities:
Copy file

Disassembly:
mov eax, 0x430113
call fcn.0042e9c0
sub esp, 0x24
push ebx
push esi
push edi
lea eax, [ebp - 0x20]
push 1
push eax
call fcn.004219ef
mov ax, word [0x438c2c]
xor ebx, ebx
mov word [0x438c24], ax
mov dword [ebp - 4], ebx
movsx eax, byte [0x438c18]
push eax
push 0x2defffff
call fcn.0040a96f
add byte [0x438c21], al
add esp, 0x10
cmp dword [ebp - 0x18], 4
mov byte [0x438c20], bl
jbe 0x41631c
mov eax, dword [0x438c4c]
push 0x4adbffff
imul eax, dword [0x438c58]
mov dword [0x438c38], eax
movsx eax, word [0x438c30]
push eax
call fcn.0040a933
mov esi, dword [0x43305c]
add dword [0x438c3c], eax
pop ecx
mov al, byte [esi]
pop ecx
sub al, 3
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042e9e0
mov edi, dword [ebp - 0x18]
mov eax, esp
push esi
push eax
call fcn.0042bd2b
pop ecx
mov esi, eax
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
pop ecx
add edi, 0xfffffffc
lea ecx, [ebp - 0x20]
push dword [eax]
lea eax, [ebp - 0x30]
push edi
push eax
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__::substr_unsigned_int__unsigned_int_]
mov edi, eax
push esi
mov byte [ebp - 4], 1
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
push dword [edi + 8]
mov ecx, edi
push ebx
call dword [sym.imp.MSVCP60.dll_public:_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::compare_unsigned_int__unsigned_int__char_const___unsigned_int_const]
push 1
lea ecx, [ebp - 0x30]
mov esi, eax
mov byte [ebp - 4], bl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
cmp esi, ebx
je 0x416140
movsx eax, byte [0x438c19]
push dword [0x438c5c]
mov word [0x438c30], 1
push eax
call fcn.0040a933
add byte [0x438c20], al
push 0x4911ffff
movsx eax, word [0x438c30]
push eax
call fcn.0040aa18
mov esi, dword [0x43305c]
mov word [0x438c28], ax
add esp, 0x10
mov al, byte [esi]
sub al, 3
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042e9e0
mov eax, esp
push esi
push eax
call fcn.0042bd2b
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x30]
push eax
call sub.MSVCP60.dll_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___char_const__
mov eax, dword [eax + 4]
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]
add esp, 0x14
cmp eax, ebx
jne 0x4160a9
mov eax, ecx
cmp dword [ebp - 0x1c], ebx
je 0x4160b1
mov ecx, dword [ebp - 0x1c]
push ebx
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
push 1
lea ecx, [ebp - 0x30]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
movsx eax, word [0x438c2e]
push dword [0x438c50]
push eax
call fcn.0040aa18
pop ecx
mov esi, dword [0x43305c]
pop ecx
mov word [0x438c2e], ax
movsx eax, byte [0x438c1f]
movsx ecx, word [0x438c2c]
and eax, ecx
mov dword [0x438c54], eax
mov al, byte [esi]
sub al, 3
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042e9e0
mov eax, esp
push esi
push eax
call fcn.0042bd2b
mov esi, eax
push esi
call sub.MSVCRT.dll_strlen
add esp, 0xc
lea ecx, [ebp - 0x20]
push eax
push 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__::append_char_const___unsigned_int_]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub dword [0x438c3c], 0x64440000
mov dword [0x438c38], eax
push dword [0x438c5c]
call dword [sym.imp.USER32.dll_IsMenu]
movsx ecx, byte [0x438c1c]
add ecx, dword [0x438c4c]
mov dword [0x438c44], eax
movsx eax, byte [0x438c1d]
add ecx, eax
mov dword [0x438c4c], ecx
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
mov esi, dword [0x433060]
mov dword [0x438c44], eax
mov al, byte [esi]
sub al, 3
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042e9e0
mov eax, esp
lea ecx, [ebp - 0x10]
push ebx
push ecx
mov edi, 0x20006
push ebx
push edi
push ebx
push ebx
push ebx
push esi
push eax
call fcn.0042bd2b
pop ecx
pop ecx
push eax
push 0x80000001
push 0x10
call fcn.0040ebd2
pop ecx
call eax
test eax, eax
je 0x416201
mov esi, dword [0x433060]
mov al, byte [esi]
sub al, 3
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042e9e0
mov eax, esp
lea ecx, [ebp - 0x10]
push ebx
push ecx
push ebx
push edi
push ebx
push ebx
push ebx
push esi
push eax
call fcn.0042bd2b
pop ecx
pop ecx
push eax
push 0x80000002
push 0x10
call fcn.0040ebd2
pop ecx
call eax
test eax, eax
jne 0x41631c
movsx eax, word [0x438c2c]
push 0xbc0fffff
push eax
mov byte [0x438c19], 1
call fcn.0040aa4f
add word [0x438c32], ax
push ebx
movsx eax, word [0x438c28]
or eax, 0xfdefffff
add dword [0x438c38], eax
lea eax, [ebp - 0x30]
push eax
call fcn.004219ef
movsx eax, word [0x438c2e]
push 0xb7a9ffff
push eax
mov byte [ebp - 4], 2
call fcn.0040a9de
add word [0x438c24], ax
push 0x322fffff
movsx eax, byte [0x438c1e]
push eax
call fcn.0040aac5
mov ecx, dword [ebp - 0x1c]
add byte [0x438c21], al
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]
add esp, 0x20
cmp ecx, ebx
jne 0x416283
mov ecx, eax
cmp dword [ebp - 0x2c], ebx
je 0x41628b
mov eax, dword [ebp - 0x2c]
push dword [ebp - 0x18]
push ecx
push 1
push ebx
push eax
push dword [ebp - 0x10]
push 0x13
call fcn.0040ebd2
pop ecx
call eax
add byte [0x438c1e], 0xfe
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov dword [0x438c50], eax
movsx eax, word [0x438c30]
push eax
movsx eax, word [0x438c2a]
push eax
call fcn.0040a933
pop ecx
add byte [0x438c1e], al
pop ecx
push dword [ebp - 0x10]
push 0xf
call fcn.0040ebd2
pop ecx
call eax
movsx eax, byte [0x438c19]
push eax
push 0xc23dffff
call fcn.0040aa18
mov byte [0x438c18], al
movsx eax, byte [0x438c1d]
push eax
push 0x95fffff
call fcn.0040a9de
add esp, 0x10
lea ecx, [ebp - 0x30]
mov word [0x438c34], ax
mov byte [ebp - 4], bl
push 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
movsx eax, byte [0x438c1c]
movsx ecx, word [0x438c24]
and eax, ecx
push 0x9d5dffff
add dword [0x438c50], eax
push 0x200fffff
call fcn.0040a9a5
add byte [0x438c1b], al
or dword [ebp - 4], 0xffffffff
pop ecx
pop ecx
push 1
lea ecx, [ebp - 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_]
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0x3c]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret