Function at 0x5c69f0
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0xc
push 0
push 0
dec ecx
jne 0x5c69f9
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov ebx, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x14]
call fcn.00405154
mov eax, dword [ebp + 0x10]
call fcn.00405154
mov eax, dword [ebp + 0xc]
call fcn.00405154
mov eax, dword [ebp + 8]
call fcn.00405154
mov esi, 0x658a50
mov edi, 0x658ad0
xor eax, eax
push ebp
push 0x5c70ee
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x20]
call fcn.00404ca4
mov dl, 1
mov eax, dword [0x41c718]
call fcn.00403de4
mov dword [0x658a58], eax
mov edx, ebx
mov eax, dword [0x658a58]
mov ecx, dword [eax]
call dword [ecx + 4]
mov eax, ebx
xor edx, edx
push edx
push eax
mov edx, dword [ebp - 4]
mov eax, dword [0x658a58]
call fcn.00421998
mov eax, dword [ebp - 8]
call fcn.005c3098
mov eax, dword [0x658a68]
mov dword [ebp - 0x28], eax
mov eax, 0x658a58
call fcn.0040f86c
xor ecx, ecx
mov dl, 1
mov eax, dword [0x486980]
call fcn.00488d90
mov dword [esi], eax
mov ecx, 0xa
mov edx, dword [ebp + 0xc]
mov eax, dword [esi]
call fcn.00486ab0
push 0
mov edx, edi
mov ecx, 0x80
mov eax, dword [esi]
call fcn.00488e18
mov eax, dword [edi + 0x54]
cmp eax, 0x31545844
je 0x5c6adf
cmp eax, 0x33545844
je 0x5c6adf
cmp eax, 0x35545844
jne 0x5c6b22
mov eax, dword [edi + 0xc]
and eax, 3
test eax, eax
jne 0x5c6af3
mov eax, dword [edi + 0x10]
and eax, 3
test eax, eax
je 0x5c6b22
mov eax, dword [0x6084ec]
mov eax, dword [eax]
push dword [eax + 0x170]
push 0x5c7108
push dword [ebp + 0xc]
lea eax, [ebp - 0x3c]
mov edx, 3
call fcn.00405024
mov eax, dword [ebp - 0x3c]
call fcn.005d0b10
jmp 0x5c70b1
cmp dword [edi + 0x50], 4
jne 0x5c6b44
cmp dword [edi + 0x54], 0x30315844
jne 0x5c6b44
push 0
mov edx, 0x658b50
mov ecx, 0x14
mov eax, dword [esi]
call fcn.00488e18
mov eax, dword [esi]
call fcn.004216fc
mov ebx, eax
mov eax, dword [edi + 0x1c]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x5c6b60
mov dword [ebp - 0xc], 1
cmp byte [0x658b64], 0
jne 0x5c6b76
cmp byte [0x658b65], 0
jne 0x5c6b76
xor edx, edx
jmp 0x5c6b78
mov dl, 1
mov eax, dword [edi + 0x1c]
call fcn.005c2ea8
mov edx, dword [0x658a74]
mov byte [edx], al
lea edx, [ebp - 0x18]
mov eax, edi
call fcn.005c54bc
mov dword [0x658a70], eax
mov eax, dword [esi]
mov edx, dword [eax]
call dword [edx]
sub eax, ebx
mov dword [0x658a5c], eax
mov eax, dword [edi + 0x10]
mov dword [0x658a60], eax
mov eax, dword [edi + 0xc]
mov dword [0x658a64], eax
mov eax, dword [0x658a5c]
mov dword [0x658a68], eax
mov eax, dword [0x658a5c]
imul dword [0x658a80]
mov edx, dword [0x658ab8]
mov dword [edx], eax
mov dl, 1
mov eax, dword [0x41c718]
call fcn.00403de4
mov dword [0x658a58], eax
cmp dword [ebp - 8], 1
jne 0x5c6bed
call fcn.005c2dd8
mov edx, dword [ebp - 8]
mov eax, dword [0x658a58]
call fcn.005c4250
cmp dword [ebp - 8], 1
jne 0x5c6c05
call fcn.005c2dd8
mov eax, esi
call fcn.0040f86c
mov eax, dword [0x658a80]
test eax, eax
jle 0x5c703d
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x1c], 1
cmp dword [ebp - 0x1c], 1
jle 0x5c6c44
lea edx, [ebp - 0x40]
mov eax, dword [ebp - 0x1c]
call fcn.004098e4
mov ecx, dword [ebp - 0x40]
lea eax, [ebp - 0x20]
mov edx, 0x5c7114
call fcn.00404fb0
mov eax, dword [0x60855c]
cmp byte [eax + 0xb9], 0
je 0x5c6cfc
mov eax, dword [0x6084f4]
cmp dword [eax + 0xc], 0x26
jne 0x5c6cfc
mov eax, dword [0x658ab4]
call fcn.004061c8
test eax, eax
je 0x5c6cfc
mov eax, dword [0x60855c]
cmp byte [eax + 0xba], 0
jne 0x5c6cfc
lea eax, [ebp - 0x2c]
call fcn.0059d040
test al, al
je 0x5c6cfc
push 0
push dword [ebp + 0xc]
push dword [ebp - 0x20]
push 0x5c7120
lea eax, [ebp - 0x44]
mov edx, 3
call fcn.00405024
mov eax, dword [ebp - 0x44]
call fcn.00405164
push eax
lea eax, [ebp - 0x48]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp + 0xc]
call fcn.00404fb0
mov eax, dword [ebp - 0x48]
call fcn.00405164
push eax
call sub.kernel32.dll_CopyFileA
push 0x5c7130
push dword [ebp + 0xc]
push dword [ebp - 0x20]
push 0x5c7130
lea eax, [ebp - 0x30]
mov edx, 4
call fcn.00405024
push 0
mov cl, 1
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x2c]
call fcn.0048c7a8
xor ecx, ecx
mov dl, 1
mov eax, dword [0x486980]
call fcn.00488d90
mov dword [esi], eax
lea eax, [ebp - 0x4c]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp + 0xc]
call fcn.00404fb0
mov edx, dword [ebp - 0x4c]
mov ecx, 0xa
mov eax, dword [esi]
call fcn.00486ab0
mov eax, ebx
xor edx, edx
push edx
push eax
xor edx, edx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x18]
mov eax, dword [0x60855c]
cmp byte [eax + 0xb9], 0
je 0x5c6de6
mov eax, dword [0x6084f4]
cmp dword [eax + 0xc], 0x26
jne 0x5c6de6
mov eax, dword [0x658ab4]
call fcn.004061c8
test eax, eax
je 0x5c6de6
mov eax, dword [0x60855c]
cmp byte [eax + 0xba], 0
jne 0x5c6de6
push 0
lea eax, [ebp - 0x50]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp + 0xc]
call fcn.00404fb0
mov eax, dword [ebp - 0x50]
call fcn.00405164
push eax
push dword [ebp + 0xc]
push dword [ebp - 0x20]
push 0x5c7120
lea eax, [ebp - 0x54]
mov edx, 3
call fcn.00405024
mov eax, dword [ebp - 0x54]
call fcn.00405164
push eax
call sub.kernel32.dll_CopyFileA
push dword [ebp + 0xc]
push dword [ebp - 0x20]
push 0x5c7120
lea eax, [ebp - 0x5c]
mov edx, 3
call fcn.00405024
mov eax, dword [ebp - 0x5c]
call fcn.00405164
mov edx, eax
lea eax, [ebp - 0x58]
call fcn.00404e9c
mov eax, dword [ebp - 0x58]
call fcn.0040a02c
mov eax, dword [0x658a70]
cmp eax, 0xd
jg 0x5c6dff
je 0x5c6e3b
sub eax, 3
je 0x5c6e0b
dec eax
sub eax, 2
jb 0x5c6e23
jmp 0x5c6e51
sub eax, 0xe
je 0x5c6e23
sub eax, 0x17
je 0x5c6e23
jmp 0x5c6e51
mov eax, dword [esi]
mov edx, dword [eax]
call dword [edx]
mov edx, eax
sub edx, ebx
mov eax, dword [esi]
mov eax, dword [eax + 4]
add eax, ebx
call fcn.005c2f38
jmp 0x5c6e51
mov eax, dword [esi]
mov edx, dword [eax]
call dword [edx]
mov edx, eax
sub edx, ebx
mov eax, dword [esi]
mov eax, dword [eax + 4]
add eax, ebx
call fcn.005c2f84
jmp 0x5c6e51
mov eax, dword [esi]
mov edx, dword [eax]
call dword [edx]
mov edx, eax
sub edx, ebx
mov eax, dword [esi]
mov eax, dword [eax + 4]
add eax, ebx
call fcn.005c2fe0
mov eax, ebx
xor edx, edx
push edx
push eax
xor edx, edx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x18]
mov dl, 1
mov eax, dword [0x41c718]
call fcn.00403de4
mov dword [ebp - 0x24], eax
cmp dword [0x658a5c], 0
jle 0x5c6f6c
mov eax, dword [ebp - 0x24]
mov edx, dword [eax]
call dword [edx]
push edx
push eax
mov eax, dword [ebp - 0x24]
call fcn.004216fc
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
push edx
push eax
mov eax, dword [0x658a5c]
cdq
cmp edx, dword [esp + 4]
jne 0x5c6ead
cmp eax, dword [esp]
pop edx
pop eax
jbe 0x5c6ec9
jmp 0x5c6eb1
pop edx
pop eax
jle 0x5c6ec9
mov eax, dword [ebp - 0x24]
call fcn.004216fc
mov edx, eax
add edx, dword [0x658a5c]
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 4]
mov eax, dword [0x658a70]
cmp eax, 0xff
ja 0x5c6edc
bt dword [0x6083ac], eax
jb 0x5c6f5a
mov eax, dword [0x60855c]
cmp byte [eax + 8], 0
jne 0x5c6f5a
mov eax, dword [0x6084f4]
cmp dword [eax + 0xc], 0x26
jne 0x5c6f10
mov eax, dword [0x658ab4]
call fcn.004061c8
test eax, eax
je 0x5c6f10
mov eax, dword [0x60855c]
cmp byte [eax + 0xba], 0
je 0x5c6f5a
mov eax, dword [0x658a5c]
cdq
push edx
push eax
mov eax, dword [0x658a64]
push eax
mov eax, dword [0x658a70]
push eax
mov eax, dword [ebp - 0xc]
push eax
push dword [ebp - 0x14]
push dword [ebp - 0x18]
mov eax, dword [esi]
call fcn.004216fc
push edx
push eax
mov eax, dword [esi]
mov eax, dword [eax + 4]
xor edx, edx
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov edx, eax
mov ecx, dword [0x658a60]
mov eax, dword [ebp - 0x24]
call fcn.005c4c30
jmp 0x5c6f6c
mov eax, dword [0x658a5c]
cdq
push edx
push eax
mov edx, dword [esi]
mov eax, dword [ebp - 0x24]
call fcn.00421998
mov eax, esi
call fcn.0040f86c
push 0
push 0
xor edx, edx
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x18]
cmp dword [0x658a70], 7
jne 0x5c7008
cmp dword [ebp - 8], 1
jne 0x5c7008
push 0
push 0
xor edx, edx
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x18]
jmp 0x5c6fd6
lea edx, [ebp - 0x34]
mov ecx, 4
mov eax, dword [ebp - 0x24]
mov edi, dword [eax]
call dword [edi + 0xc]
lea eax, [ebp - 0x34]
call fcn.0048c260
push 0xffffffffffffffff
push 0xfffffffffffffffc
mov dl, 1
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x18]
lea edx, [ebp - 0x34]
mov ecx, 4
mov eax, dword [ebp - 0x24]
mov edi, dword [eax]
call dword [edi + 0x10]
mov eax, dword [ebp - 0x24]
mov edx, dword [eax]
call dword [edx]
push edx
push eax
mov eax, dword [ebp - 0x24]
call fcn.004216fc
cmp edx, dword [esp + 4]
jne 0x5c6ff6
cmp eax, dword [esp]
pop edx
pop eax
jb 0x5c6fa0
jmp 0x5c6ffa
pop edx
pop eax
jl 0x5c6fa0
push 0
push 0
xor edx, edx
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x18]
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x28]
push eax
mov eax, dword [ebp - 0x1c]
dec eax
push eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax]
call dword [edx]
mov edx, eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x24]
call fcn.005c45a4
lea eax, [ebp - 0x24]
call fcn.0040f86c
inc dword [ebp - 0x1c]
dec dword [ebp - 0x38]
jne 0x5c6c23
lea eax, [ebp - 0x60]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
call fcn.00404fb0
mov eax, dword [ebp - 0x60]
call fcn.005c48ec
mov eax, 0x658a58
call fcn.0040f86c
xor eax, eax
push ebp
push 0x5c70a7
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x60855c]
cmp byte [eax + 3], 0
je 0x5c709d
lea eax, [ebp - 0x64]
mov ecx, 0x5c713c
mov edx, dword [ebp + 0xc]
call fcn.00404fb0
mov edx, dword [ebp - 0x64]
mov eax, dword [0x608624]
call fcn.00405380
call fcn.0040353c
call fcn.004029a4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5c70b1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5c70f5
lea eax, [ebp - 0x64]
mov edx, 0xb
call fcn.00404cc8
lea eax, [ebp - 0x30]
mov edx, 2
call fcn.00404cc8
lea eax, [ebp - 0x20]
call fcn.00404ca4
lea eax, [ebp + 8]
mov edx, 4
call fcn.00404cc8
ret