Function at 0x401670
Capabilities:
Copy file

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
push edi
push 4
call fcn.00403141
push 4
mov dword [esp + 0x20], eax
call fcn.00403141
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x40dde4
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
movsx ebp, cl
mov byte [esp + 0x2c], cl
lea ecx, [ebp + 1]
push ecx
call fcn.00403141
mov edx, eax
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
mov dword [esp + 0x14], edx
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
xor dl, dl
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov byte [esp + 0x10], dl
and ecx, 3
test ebp, ebp
rep movsb byte es:[edi], byte [esi]
jle 0x40173e
mov eax, dword [esp + 0x10]
xor ecx, ecx
mov esi, ebp
sub esi, ecx
mov ecx, dword [esp + 0x14]
cmp byte [esi + ecx - 1], 0x5c
je 0x40172e
inc dl
mov byte [esp + 0x10], dl
mov eax, dword [esp + 0x10]
mov ecx, eax
and ecx, 0xff
cmp ecx, ebp
jl 0x401707
jmp 0x401742
mov esi, eax
and esi, 0xff
sub ebp, esi
mov byte [ecx + ebp], 0
jmp 0x401742
mov eax, dword [esp + 0x10]
mov cl, byte [esp + 0x24]
and eax, 0xff
sub cl, dl
movsx esi, cl
mov ecx, esi
sub ecx, eax
add ecx, 5
push ecx
call fcn.00403141
mov ebp, eax
lea edi, [esi + ebx]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebp
mov edx, ecx
mov esi, edi
mov edi, ebp
push str.name:_s_n
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dword [esp + 0x30], ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00403110
push 0x40dcc8
push ebx
call fcn.00402e74
mov ebx, dword [esp + 0x2c]
add esp, 0x14
cmp eax, 0xffffffff
mov dword [ebx], eax
je 0x4019f1
mov edi, dword [esp + 0x14]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x40dde4
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x40dcdc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x40dde4
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x40dcc8]
mov ecx, edx
and eax, 0x10
and ecx, 3
cmp al, 0x10
rep movsb byte es:[edi], byte [esi]
je 0x4019d0
mov edi, 0x40dcdc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp byte [ecx + 0x40dcdb], 0x2e
je 0x4019d0
mov edi, dword [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
mov ebp, dword [0x40dcd4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov ebx, dword [0x40dcd8]
mov edx, ecx
mov esi, edi
mov edi, 0x40deec
push 0x40dcc8
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push 0x40deec
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x40dcdc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x40deec
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00402e74
mov esi, dword [esp + 0x24]
push eax
mov dword [esi], eax
call fcn.00403003
mov eax, dword [esp + 0x38]
add esp, 0xc
cmp eax, 2
jne 0x401919
cmp dword [esi], 0xffffffff
je 0x4018d4
cmp ebx, 0x8cfdc0
jge 0x4019d0
test ebx, ebx
jle 0x4019d0
cmp dword [0x40dcd4], ebp
je 0x4019d0
jmp 0x4019be
cmp ebx, 0x25800000
jge 0x401900
cmp ebx, 0x9bdc00
jle 0x40190c
push 0x2800
push 0x40deec
push 0x40dde4
call fcn.00401180
add esp, 0xc
jmp 0x4019d0
cmp ebx, 0x9bdc00
jg 0x4019d0
test ebx, ebx
jle 0x4019d0
jmp 0x4019be
mov eax, dword [0x40dffc]
mov byte [esp + 0x10], 0
test eax, eax
jle 0x4019d0
xor eax, eax
lea ecx, [eax*8]
sub ecx, eax
lea eax, [ecx + ecx*2 + str..xls]
push eax
push 0x40dcdc
call fcn.00403090
add esp, 8
test eax, eax
jne 0x40196e
mov al, byte [esp + 0x10]
mov ecx, dword [0x40dffc]
inc al
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x10]
and eax, 0xff
cmp eax, ecx
jl 0x40192d
jmp 0x4019d0
cmp dword [esi], 0xffffffff
je 0x401989
cmp ebx, 0x8cfdc0
jge 0x4019d0
test ebx, ebx
jle 0x4019d0
cmp dword [0x40dcd4], ebp
je 0x4019d0
jmp 0x4019be
cmp ebx, 0x25800000
jge 0x4019b2
cmp ebx, 0x9bdc00
jle 0x4019ba
push 0x2800
push 0x40deec
push 0x40dde4
call fcn.00401180
add esp, 0xc
jmp 0x4019d0
cmp ebx, 0x9bdc00
jg 0x4019d0
test ebx, ebx
jle 0x4019d0
push 1
push 0x40deec
push 0x40dde4
call dword [sym.imp.KERNEL32.dll_CopyFileA]
mov ebx, dword [esp + 0x18]
push 0x40dcc8
mov ecx, dword [ebx]
push ecx
call fcn.00402f3e
add esp, 8
cmp eax, 0xffffffff
jne 0x4017ab
mov ebp, dword [esp + 0x24]
mov edx, dword [ebx]
push edx
call fcn.00403003
mov edi, dword [esp + 0x18]
or ecx, 0xffffffff
xor eax, eax
push 0x40dcc8
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x40deec
mov eax, ecx
mov esi, edi
mov edi, 0x40deec
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x40b1dc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x40deec
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00402e74
add esp, 0xc
cmp eax, 0xffffffff
mov dword [ebx], eax
je 0x401c03
mov eax, dword [0x40dcc8]
and eax, 0x10
cmp al, 0x10
jne 0x401b26
mov esi, 0x40b1d8
mov eax, 0x40dcdc
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x401aa9
test cl, cl
je 0x401aa5
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x401aa9
add eax, 2
add esi, 2
test cl, cl
jne 0x401a81
xor eax, eax
jmp 0x401aae
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x401b26
mov esi, 0x40b1d4
mov eax, 0x40dcdc
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x401ae4
test cl, cl
je 0x401ae0
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x401ae4
add eax, 2
add esi, 2
test cl, cl
jne 0x401abc
xor eax, eax
jmp 0x401ae9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x401b26
mov edi, 0x40dcdc
or ecx, 0xffffffff
xor eax, eax
mov dl, 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [esp + 0x24], cl
mov eax, dword [esp + 0x24]
and eax, 0xff
cmp byte [eax + 0x40dcdb], 0x2e
jne 0x401b28
mov byte [eax + 0x40dcdc], 0x2e
mov byte [eax + 0x40dcdd], 0
mov dl, 2
jmp 0x401b28
xor dl, dl
mov edi, dword [esp + 0x14]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x40dde4
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x40dcdc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, 0x40dde4
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
test dl, dl
rep movsb byte es:[edi], byte [esi]
je 0x401be6
mov edi, 0x40b1d0
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, 0x40dde4
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, 0x40dde4
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
movsx ecx, dl
mov edx, dword [esp + 0x28]
push ecx
push edx
push 0x40dde4
call fcn.00401670
add esp, 0xc
mov ebx, dword [esp + 0x18]
push 0x40dcc8
mov eax, dword [ebx]
push eax
call fcn.00402f3e
add esp, 8
cmp eax, 0xffffffff
jne 0x401a67
mov ecx, dword [ebx]
push ecx
call fcn.00403003
push ebp
mov byte [0x40dff4], 1
call fcn.00402844
mov edx, dword [esp + 0x1c]
push edx
call fcn.00402844
push ebx
call fcn.00402844
mov eax, dword [esp + 0x2c]
push eax
call fcn.00402844
add esp, 0x14
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret