Function at 0x41fc20
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x425bab
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.00414170
mov edx, dword [0x42b784]
mov cl, byte [0x42b774]
push 0xfc79ffff
push edx
mov dword [ebp - 4], 0
mov byte [0x42b74d], 1
mov byte [0x42b74a], cl
call fcn.0040e340
mov word [0x42b75a], ax
mov eax, dword [ebp - 0x20]
add esp, 0xc
cmp eax, 4
jbe 0x4201c4
movsx eax, byte [0x42b748]
push 0x62a3ffff
push eax
mov word [0x42b75a], 1
call fcn.0040e400
movsx ecx, word [0x42b760]
push ecx
push 0x6f67ffff
mov byte [0x42b74d], al
call fcn.0040e380
movsx edx, word [0x42b75c]
push 0xa969ffff
push edx
mov word [0x42b75a], ax
call fcn.0040e2c0
mov word [0x42b752], ax
mov al, byte [0x42b600]
sub al, 0x28
add esp, 0x18
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.004248b0
mov edi, dword [ebp - 0x20]
mov ecx, esp
mov edx, 0x42b600
call fcn.00422900
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
or ecx, 0xffffffff
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 0x41fd35
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 0x41fd47
sbb edx, edx
sbb edx, 0xffffffff
xor esi, esi
cmp edx, esi
je 0x41fd51
mov edi, edx
jmp 0x41fd63
cmp eax, ebx
jae 0x41fd5a
or edi, 0xffffffff
jmp 0x41fd63
xor ecx, ecx
cmp eax, ebx
setne cl
mov edi, 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 edi, esi
je 0x41ff1d
mov al, byte [0x42b600]
or ebx, 0xffffffff
sub al, 0x28
mov word [0x42b758], bx
and eax, 0xff
mov byte [0x42b74b], 1
add eax, 3
and al, 0xfc
call fcn.004248b0
mov ecx, esp
mov edx, 0x42b600
call fcn.00422900
push eax
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x38]
push edx
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 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, esi
jne 0x41fdcd
mov eax, edx
mov ecx, dword [ebp - 0x24]
cmp ecx, esi
jne 0x41fdd6
mov ecx, edx
push esi
push eax
push ecx
call dword [sym.imp.KERNEL32.DLL_CopyFileA]
mov eax, dword [ebp - 0x34]
cmp eax, esi
je 0x41fe03
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x41fdfa
cmp al, 0xff
je 0x41fdfa
dec al
mov byte [ecx], al
jmp 0x41fe03
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
movsx ecx, byte [0x42b74e]
push 0xf5fbffff
push ecx
call fcn.0040e290
mov edx, dword [0x42b76c]
mov word [0x42b760], ax
mov eax, dword [0x42b780]
push edx
push eax
call fcn.0040e340
push 0x678fffff
push 0xbac5ffff
mov word [0x42b75a], ax
mov word [0x42b758], bx
call fcn.0040e340
mov word [0x42b754], ax
mov al, byte [0x42b600]
sub al, 0x28
add esp, 0x18
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.004248b0
mov ecx, esp
mov edx, 0x42b600
call fcn.00422900
mov dword [ebp - 0x18], eax
mov edi, eax
mov ecx, ebx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, ecx
mov ecx, 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 [ecx]
mov ecx, dword [ebp - 0x20]
sub edx, ecx
cmp edx, esi
ja 0x41fe9b
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x41fedb
mov eax, dword [ebp - 0x20]
push 0
lea ecx, [ebp - 0x28]
lea ebx, [eax + esi]
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 0x41fedb
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
lea edi, [edx + ecx]
mov ecx, esi
mov esi, dword [ebp - 0x18]
mov eax, ecx
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 [ebp - 0x24]
mov dword [ebp - 0x20], ebx
mov byte [ecx + ebx], 0
mov edx, dword [0x42b784]
push 0x3badffff
push edx
call fcn.0040e380
mov cl, byte [0x42b762]
mov byte [0x42b750], al
or al, 0xff
add esp, 8
sub al, cl
mov cl, byte [0x42b756]
neg cl
mov byte [0x42b74b], al
mov byte [0x42b74e], cl
mov dword [0x42b774], 0x4cf9ffff
xor esi, esi
movsx eax, word [0x42b758]
mov edx, dword [0x42b76c]
push edx
push eax
call fcn.0040e3c0
movsx ecx, word [0x42b762]
push 0x18adffff
push ecx
mov word [0x42b75c], ax
call fcn.0040e2f0
push 0x332bffff
push 0x1abbffff
mov dword [0x42b780], eax
call fcn.0040e290
mov cl, byte [0x42b74f]
xor edx, edx
mov dword [0x42b774], eax
mov eax, dword [0x42b780]
test cl, cl
setne dl
push 0x38c5ffff
push eax
mov word [0x42b756], dx
call fcn.0040e380
mov word [0x42b752], ax
mov al, byte [0x42b5d0]
sub al, 0x28
add esp, 0x20
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.004248b0
mov ecx, esp
lea edx, [ebp - 0x14]
push esi
push edx
push esi
push 0x20006
push esi
push esi
push esi
mov edx, 0x42b5d0
call fcn.00422900
push eax
push SysReAllocString
call dword [0x42bca8]
test eax, eax
je 0x420013
mov al, byte [0x42b5d0]
sub al, 0x28
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.004248b0
mov ecx, esp
lea eax, [ebp - 0x14]
push esi
push eax
push esi
push 0x20006
push esi
push esi
push esi
mov edx, 0x42b5d0
call fcn.00422900
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [0x42bca8]
test eax, eax
jne 0x42019a
mov cl, byte [ebp - 0xd]
or eax, 0xffffffff
mov dword [0x42b778], 1
mov word [0x42b762], ax
mov word [0x42b754], ax
mov byte [ebp - 0x38], cl
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x2c], esi
mov edx, dword [0x42b768]
push 0x7791ffff
push edx
mov byte [ebp - 4], 2
call fcn.0040e3c0
mov ecx, dword [0x42b778]
mov word [0x42b760], ax
movsx eax, word [0x42b762]
push eax
push ecx
call fcn.0040e380
lea edx, [ebp - 0x38]
mov dword [0x42b780], eax
push edx
push 7
call fcn.0040e4e0
movsx eax, byte [0x42b74c]
push 0xcb4fffff
push eax
call fcn.0040e400
movsx ecx, word [0x42b754]
movsx edx, byte [0x42b74b]
or ecx, 0x51fbffff
push edx
push 0x8fe5ffff
mov dword [0x42b774], eax
mov dword [0x42b788], ecx
call fcn.0040e400
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, 0x28
cmp ecx, esi
mov dword [0x42b77c], eax
jne 0x4200cd
mov ecx, edx
mov eax, dword [ebp - 0x34]
cmp eax, esi
jne 0x4200d6
mov eax, edx
mov edx, dword [ebp - 0x20]
push edx
push ecx
push 1
push esi
push eax
mov eax, dword [ebp - 0x14]
push eax
call dword [0x42bcc0]
mov cx, word [0x42b752]
push 0x6c19ffff
push 0x4c2bffff
mov word [0x42b758], cx
mov byte [0x42b74a], 0xff
mov dword [0x42b774], 0xfddfffff
call fcn.0040e400
mov edx, dword [ebp - 0x14]
add esp, 8
mov word [0x42b75a], ax
push edx
call dword [0x42bca4]
movsx eax, word [0x42b758]
push eax
push eax
call fcn.0040e290
mov byte [0x42b74a], al
mov eax, dword [0x42b774]
push 0x7bf1ffff
push eax
call fcn.0040e2c0
movsx ecx, byte [0x42b74d]
push 0xfec9ffff
push ecx
mov dword [0x42b774], eax
call fcn.0040e2f0
mov ecx, dword [ebp - 0x34]
add esp, 0x18
cmp ecx, esi
mov byte [0x42b748], al
mov byte [0x42b74c], 0xff
mov byte [ebp - 4], 0
je 0x42019a
mov al, byte [ecx - 1]
test al, al
je 0x420190
cmp al, 0xff
je 0x420190
dec al
mov byte [ecx - 1], al
jmp 0x42019a
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov al, byte [0x42b74c]
push 0xde1ffff
neg al
push 0x2539ffff
mov byte [0x42b750], 0xff
mov byte [0x42b74d], al
call fcn.0040e380
add esp, 8
mov dword [0x42b778], eax
movsx edx, byte [0x42b750]
movsx eax, byte [0x42b74b]
push edx
push eax
call fcn.0040e380
mov cl, byte [0x42b74c]
mov bl, byte [0x42b74b]
or cl, bl
push 0x4d97ffff
movsx dx, cl
push 0x48dbffff
mov word [0x42b75a], ax
mov word [0x42b756], dx
call fcn.0040e4a0
mov ecx, dword [ebp - 0x24]
add esp, 0x10
test ecx, ecx
mov dword [0x42b774], eax
je 0x420244
mov al, byte [ecx - 1]
test al, al
je 0x42023a
cmp al, 0xff
je 0x42023a
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