Function at 0x41ff00
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42599b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x2c
push ebx
push esi
lea eax, [ebp - 0x28]
push edi
push eax
call fcn.00413ee0
add esp, 4
mov edi, dword [ebp - 0x20]
xor eax, eax
or ebx, 0xffffffff
cmp edi, 4
mov dword [ebp - 4], eax
mov word [0x42bcec], bx
mov word [0x42bce4], ax
mov dword [0x42bd04], 0x4021ffff
jbe 0x4204af
mov ecx, dword [0x42bcfc]
mov al, byte [0x42bcdd]
test al, al
lea edx, [ecx + ecx]
mov byte [0x42bcda], 0xff
mov word [0x42bce2], dx
mov word [0x42bcec], bx
je 0x41ff8c
mov al, byte [0x42bcd9]
mov byte [0x42bcde], 1
test al, al
jne 0x41ff93
mov byte [0x42bcde], 0
mov al, byte [0x42bb98]
sub al, 0x1b
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.00424380
mov ecx, esp
mov edx, 0x42bb98
call fcn.00422bc0
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]
add edi, 0xfffffffc
lea edx, [ebp - 0x38]
mov ecx, dword [eax]
push ecx
push edi
push edx
lea ecx, [ebp - 0x28]
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 edx, eax
mov edi, esi
mov ecx, ebx
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
mov ebx, ecx
mov ecx, eax
cmp eax, ebx
jb 0x41ffea
mov ecx, ebx
mov edx, dword [edx + 4]
mov edi, esi
mov esi, edx
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x41fffc
sbb edx, edx
sbb edx, 0xffffffff
xor edi, edi
cmp edx, edi
je 0x420006
mov esi, edx
jmp 0x420018
cmp eax, ebx
jae 0x42000f
or esi, 0xffffffff
jmp 0x420018
xor ecx, ecx
cmp eax, ebx
setne cl
mov esi, ecx
push 1
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0
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, edi
je 0x4201ea
mov dx, word [0x42bcf2]
push 0x8623ffff
shl dx, 1
push 0x8843ffff
mov word [0x42bce8], dx
call fcn.0040e620
mov ecx, dword [0x42bd08]
mov word [0x42bcea], ax
mov eax, dword [0x42bd0c]
push eax
push ecx
call fcn.0040e4c0
mov edx, dword [0x42bd04]
mov dword [0x42bd14], eax
push edx
push 0x9211ffff
call fcn.0040e5d0
mov dword [0x42bd18], eax
mov al, byte [0x42bb98]
sub al, 0x1b
add esp, 0x18
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.00424380
mov ecx, esp
mov edx, 0x42bb98
call fcn.00422bc0
push eax
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x38]
push eax
push ecx
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 edx, 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, 0xc
cmp eax, edi
jne 0x4200c7
mov eax, edx
mov ecx, dword [ebp - 0x24]
cmp ecx, edi
jne 0x4200d0
mov ecx, edx
push edi
push eax
push ecx
call dword [sym.imp.KERNEL32.DLL_CopyFileA]
mov eax, dword [ebp - 0x34]
cmp eax, edi
je 0x4200fd
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x4200f4
cmp al, 0xff
je 0x4200f4
dec al
mov byte [ecx], al
jmp 0x4200fd
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
cmp dword [0x42bd0c], edi
je 0x420118
mov al, byte [0x42bcd8]
mov dword [0x42bd14], 1
test al, al
jne 0x42011e
mov dword [0x42bd14], edi
mov al, byte [0x42bb98]
sub al, 0x1b
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.00424380
mov ecx, esp
mov edx, 0x42bb98
call fcn.00422bc0
mov dword [ebp - 0x18], eax
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
repne scasb al, byte es:[edi]
mov eax, dword [edx]
mov edx, dword [ebp - 0x20]
not ecx
dec ecx
sub eax, edx
mov esi, ecx
cmp eax, esi
ja 0x420168
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x4201a8
mov ecx, dword [ebp - 0x20]
push 0
lea ebx, [ecx + esi]
lea ecx, [ebp - 0x28]
push 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 0x4201a8
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
mov ecx, esi
mov esi, dword [ebp - 0x18]
lea edi, [eax + edx]
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 [ebp - 0x24]
mov dword [ebp - 0x20], ebx
mov byte [eax + ebx], 0
movsx cx, byte [0x42bcda]
mov edx, dword [0x42bd14]
dec ecx
push edx
push 0xdd9fffff
mov word [0x42bcec], cx
call fcn.0040e5d0
mov byte [0x42bcdb], al
push 0x2e23ffff
movsx eax, word [0x42bcee]
push eax
call fcn.0040e6b0
add esp, 0x10
mov dword [0x42bd04], eax
xor edi, edi
mov ecx, dword [0x42bd0c]
push 0x8e6bffff
push ecx
call fcn.0040e5d0
movsx ecx, word [0x42bce4]
mov dl, byte [0x42bd04]
mov dword [0x42bd08], eax
movsx eax, byte [0x42bcdc]
inc dl
push eax
push ecx
mov byte [0x42bcd8], dl
call fcn.0040e6b0
push 0x4b03ffff
push 0xfdbffff
mov byte [0x42bcdd], al
call fcn.0040e620
push 0x7055ffff
push 0xd983ffff
mov dword [0x42bd00], eax
call fcn.0040e480
mov dword [0x42bd00], eax
mov al, byte [0x42bb68]
sub al, 0x1b
add esp, 0x20
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.00424380
mov ecx, esp
lea edx, [ebp - 0x14]
push edi
push edx
push edi
push 0x20006
push edi
push edi
push edi
mov edx, 0x42bb68
call fcn.00422bc0
push eax
push SysReAllocString
call dword [0x42c160]
test eax, eax
je 0x4202d7
mov al, byte [0x42bb68]
sub al, 0x1b
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.00424380
mov ecx, esp
lea eax, [ebp - 0x14]
push edi
push eax
push edi
push 0x20006
push edi
push edi
push edi
mov edx, 0x42bb68
call fcn.00422bc0
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [0x42c160]
test eax, eax
jne 0x420496
push 0x7febffff
push 0x4a43ffff
call fcn.0040e4c0
mov bl, byte [0x42bce4]
or cl, 0xff
sub cl, bl
cmp word [0x42bcf0], di
mov dword [0x42bd10], eax
mov eax, dword [0x42bd00]
setne dl
push eax
push 0x6bdbffff
mov byte [0x42bcd8], cl
mov byte [0x42bce0], dl
call fcn.0040e670
mov cl, byte [ebp - 0xd]
mov dword [0x42bcf8], eax
mov byte [ebp - 0x38], cl
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], edi
movsx edx, word [0x42bcec]
movsx eax, word [0x42bcf2]
push edx
push eax
mov byte [ebp - 4], 2
call fcn.0040e500
mov cx, word [0x42bd04]
push 0xbedffff
add cx, word [0x42bce6]
push 0xaff7ffff
mov byte [0x42bcdf], al
mov word [0x42bce8], cx
call fcn.0040e480
lea edx, [ebp - 0x38]
mov byte [0x42bce0], al
push edx
push 7
call fcn.0040e6f0
mov eax, dword [0x42bcf8]
mov byte [0x42bce0], 0xfe
push eax
push 0xfffffffffffffffe
call fcn.0040e500
mov ecx, dword [ebp - 0x24]
mov edx, 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, 0x30
cmp ecx, edi
mov byte [0x42bce0], al
jne 0x4203ad
mov ecx, edx
mov eax, dword [ebp - 0x34]
cmp eax, edi
jne 0x4203b6
mov eax, edx
mov edx, dword [ebp - 0x20]
push edx
push ecx
push 1
push edi
push eax
mov eax, dword [ebp - 0x14]
push eax
call dword [0x42c178]
movsx ecx, word [0x42bce6]
push ecx
push 0x4fb9ffff
call fcn.0040e580
movsx edx, word [0x42bce4]
push 0x4eafffff
push edx
mov dword [0x42bd18], eax
call fcn.0040e580
mov byte [0x42bcdb], al
movsx eax, al
push eax
push 0xf527ffff
call fcn.0040e480
movsx ecx, byte [0x42bce0]
mov edx, dword [0x42bd14]
push ecx
push edx
mov word [0x42bcf0], ax
call fcn.0040e580
add esp, 0x20
mov dword [0x42bd10], eax
mov eax, dword [ebp - 0x14]
push eax
call dword [0x42c15c]
mov cl, byte [0x42bcda]
mov ebx, dword [0x42bd08]
movsx eax, word [0x42bce4]
neg cl
mov byte [0x42bcde], cl
mov edx, 0x4ccfffff
movsx ecx, byte [0x42bcdf]
sub edx, ebx
push eax
push ecx
mov dword [0x42bd10], edx
call fcn.0040e6b0
mov ecx, dword [ebp - 0x34]
add esp, 8
cmp ecx, edi
mov dword [0x42bd10], eax
mov byte [ebp - 4], 0
je 0x420496
mov al, byte [ecx - 1]
test al, al
je 0x42048c
cmp al, 0xff
je 0x42048c
dec al
mov byte [ecx - 1], al
jmp 0x420496
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov edx, dword [0x42bd14]
mov byte [0x42bcdd], 0xff
and edx, 0x5c81ffff
mov dword [0x42bd0c], edx
mov eax, dword [0x42bd10]
push 0x719dffff
push eax
call fcn.0040e540
push 0x4ea5ffff
push 0xdc9fffff
mov dword [0x42bd18], eax
call fcn.0040e500
mov cl, byte [0x42bcd8]
mov dl, byte [0x42bcde]
or cl, dl
add esp, 0x10
mov byte [0x42bcdb], cl
mov ecx, dword [ebp - 0x24]
test ecx, ecx
mov byte [0x42bcd9], al
mov word [0x42bcf0], 1
je 0x42052d
mov al, byte [ecx - 1]
test al, al
je 0x420523
cmp al, 0xff
je 0x420523
dec al
mov byte [ecx - 1], al
lea esp, [ebp - 0x44]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0x44]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret