Function at 0x40cda9
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x2dc
push ebx
push ebp
push esi
mov esi, dword [esp + 0x2f0]
xor ebx, ebx
push edi
push 0x10
pop ecx
lea edi, [esp + 0x24]
mov dword [esp + 0x20], ebx
rep movsd dword es:[edi], dword [esi]
mov esi, ebx
mov dword [esp + 0x10], ebx
mov eax, dword [esp + 0x2f0]
xorps xmm0, xmm0
movlpd qword [esp + 0x64], xmm0
mov ebp, dword [esp + 0x64]
mov dword [esp + esi*8 + 0x6c], ebx
lea eax, [eax + esi*8]
mov dword [esp + esi*8 + 0x70], ebx
mov ebx, dword [esp + 0x68]
mov esi, eax
push 0x38
mov dword [esp + 0x18], eax
pop edi
movzx eax, byte [esi]
mov ecx, edi
cdq
call fcn.00428440
or ebp, eax
or ebx, edx
sub edi, 8
inc esi
cmp edi, 0xfffffff8
jg 0x40cdfb
mov esi, dword [esp + 0x10]
push 0
mov dword [esp + esi*8 + 0x74], ebx
mov dword [esp + esi*8 + 0x70], ebp
inc esi
mov dword [esp + 0x14], esi
pop ebx
cmp esi, 0x10
jl 0x40cdcf
lea edx, [esp + 0xdc]
mov dword [esp + 0x18], 0x40
mov dword [esp + 0x10], edx
mov edi, dword [edx + 4]
xor ebp, ebp
mov ebx, dword [edx]
mov ecx, edi
mov eax, ebx
mov edx, ebx
shrd eax, ecx, 0x13
shl edx, 0xd
mov esi, edi
or ebp, eax
shr ecx, 0x13
or edx, ecx
shr esi, 0x1d
mov eax, ebx
mov dword [esp + 0x14], edx
mov ecx, edi
xor edx, edx
shld ecx, eax, 3
shrd ebx, edi, 6
shl eax, 3
or edx, ecx
mov ecx, dword [esp + 0x10]
or esi, eax
mov eax, dword [esp + 0x14]
xor ebp, esi
xor eax, edx
shr edi, 6
xor eax, edi
xor ebp, ebx
mov edx, dword [ecx - 0x68]
xor edi, edi
mov ecx, dword [ecx - 0x64]
mov ebx, edx
mov dword [esp + 0x14], eax
mov esi, edx
mov eax, edx
shl ebx, 0x18
shrd eax, ecx, 8
xor edx, edx
shl esi, 0x1f
shr ecx, 8
or edi, eax
or ebx, ecx
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx - 0x68]
mov ecx, dword [ecx - 0x64]
shrd eax, ecx, 1
or edx, eax
shr ecx, 1
xor edi, edx
or esi, ecx
mov edx, dword [esp + 0x10]
xor ebx, esi
mov eax, dword [edx - 0x64]
mov ecx, dword [edx - 0x68]
shrd ecx, eax, 7
shr eax, 7
xor edi, ecx
xor ebx, eax
mov eax, dword [esp + 0x14]
add ebp, edi
adc eax, ebx
add ebp, dword [edx - 0x70]
adc eax, dword [edx - 0x6c]
add ebp, dword [edx - 0x28]
mov dword [edx + 0x10], ebp
adc eax, dword [edx - 0x24]
mov dword [edx + 0x14], eax
add edx, 8
sub dword [esp + 0x18], 1
mov dword [esp + 0x10], edx
jne 0x40ce3f
mov eax, dword [esp + 0x28]
xor edi, edi
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
mov ebp, ecx
xor ebx, ebx
mov eax, edx
shr ebp, 9
shld ecx, eax, 0x17
mov esi, edx
xor edx, edx
or ebx, ecx
shl eax, 0x17
mov ecx, dword [esp + 0x14]
or ebp, eax
mov eax, dword [esp + 0x10]
shrd eax, ecx, 0x12
shl esi, 0xe
or edx, eax
shr ecx, 0x12
mov eax, dword [esp + 0x10]
or esi, ecx
mov ecx, dword [esp + 0x14]
xor ebx, esi
mov esi, eax
xor ebp, edx
shrd eax, ecx, 0xe
shl esi, 0x12
xor edx, edx
or edx, eax
shr ecx, 0xe
mov eax, dword [esp + 0x50]
or esi, ecx
xor eax, dword [esp + 0x58]
xor ebx, esi
and eax, dword [esp + 0x14]
xor ebp, edx
xor eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x4c]
xor ecx, dword [esp + 0x54]
and ecx, dword [esp + 0x10]
xor ecx, dword [esp + 0x54]
add ebp, ecx
mov ecx, dword [esp + 0x1c]
adc ebx, eax
add ebp, dword [edi + 0x44b8a8]
mov eax, dword [esp + 0x18]
adc ebx, dword [edi + 0x44b8ac]
add ebp, dword [esp + edi + 0x6c]
adc ebx, dword [esp + edi + 0x70]
add ebp, dword [esp + 0x5c]
adc ebx, dword [esp + 0x60]
xor edi, edi
mov dword [esp + 0x64], ebx
xor edx, edx
mov ebx, eax
shrd eax, ecx, 0x1c
shl ebx, 4
shr ecx, 0x1c
or edi, eax
mov eax, dword [esp + 0x18]
or ebx, ecx
mov ecx, dword [esp + 0x1c]
mov esi, ecx
shld ecx, eax, 0x1e
shr esi, 2
shl eax, 0x1e
or edx, ecx
mov ecx, dword [esp + 0x1c]
or esi, eax
mov eax, dword [esp + 0x18]
xor edi, esi
mov esi, ecx
xor ebx, edx
shld ecx, eax, 0x19
shr esi, 7
xor edx, edx
shl eax, 0x19
or edx, ecx
mov ecx, dword [esp + 0x2c]
or esi, eax
xor edi, esi
xor ebx, edx
mov esi, ecx
or esi, dword [esp + 0x18]
and ecx, dword [esp + 0x18]
and esi, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
or esi, ecx
or edx, dword [esp + 0x1c]
and edx, dword [esp + 0x38]
mov eax, dword [esp + 0x30]
and eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x40]
or edx, eax
mov eax, dword [esp + 0x54]
add esi, edi
mov edi, dword [esp + 0x20]
adc ebx, edx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x60], eax
add edx, ebp
mov eax, dword [esp + 0x4c]
adc ecx, dword [esp + 0x64]
add esi, ebp
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
mov ecx, ebx
adc ecx, dword [esp + 0x64]
add edi, 8
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x50], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x18], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], edi
cmp edi, 0x280
jl 0x40cf2b
mov eax, dword [esp + 0x2f4]
lea ecx, [esp + 0x24]
push 4
pop edx
pop edi
pop esi
pop ebp
sub ecx, eax
pop ebx
movups xmm0, xmmword [eax]
movups xmm1, xmmword [ecx + eax]
paddq xmm1, xmm0
movups xmmword [eax], xmm1
lea eax, [eax + 0x10]
sub edx, 1
jne 0x40d108
add esp, 0x2dc
ret