Function at 0x40e2c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
mov ebx, ecx
push esi
mov esi, edx
mov dword [ebp - 8], ebx
xor edx, edx
test dword [ebx + 0x10c8], 0xffffffe0
lea eax, [ebx + 0x10a4]
push edi
mov dword [ebp - 4], eax
jbe 0x40e312
mov ecx, eax
nop dword [eax]
mov eax, dword [esi + edx*4]
lea ecx, [ecx + 4]
mov dword [ecx - 4], eax
inc edx
mov eax, dword [ebx + 0x10c8]
shr eax, 5
cmp edx, eax
jb 0x40e2f0
cmp edx, 8
jae 0x40e330
lea eax, [ebx + 0x10a4]
lea edi, [ebx + 0x10a4]
mov dword [ebp - 4], eax
lea esi, [ebx + 0x1094]
mov ecx, 8
lea edi, [edi + edx*4]
sub ecx, edx
lea esi, [esi + edx*4]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx + 0x1084]
lea edi, [ebx + 0x38]
mov dword [ebx], eax
mov eax, dword [ebx + 0x1088]
mov dword [ebx + 4], eax
mov eax, dword [ebx + 0x108c]
mov dword [ebx + 8], eax
mov eax, dword [ebx + 0x1090]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 0x1094]
mov dword [ebx + 0x10], eax
mov eax, dword [ebx + 0x1098]
mov dword [ebx + 0x14], eax
mov eax, dword [ebx + 0x109c]
mov dword [ebx + 0x18], eax
mov eax, dword [ebx + 0x10a0]
mov dword [ebx + 0x1c], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax]
mov dword [ebx + 0x20], eax
mov eax, dword [ebx + 0x10a8]
mov dword [ebx + 0x24], eax
mov eax, dword [ebx + 0x10ac]
mov dword [ebx + 0x28], eax
mov eax, dword [ebx + 0x10b0]
mov dword [ebx + 0x2c], eax
mov eax, dword [ebx + 0x10b4]
mov dword [ebx + 0x30], eax
mov eax, dword [ebx + 0x10b8]
mov dword [ebx + 0x34], eax
mov eax, dword [ebx + 0x10bc]
mov dword [edi], eax
mov eax, dword [ebx + 0x10c0]
mov dword [ebx + 0x3c], eax
mov ebx, 0x10
mov ecx, dword [edi]
lea edi, [edi + 4]
mov edx, dword [edi - 0x38]
mov esi, ecx
mov eax, ecx
ror esi, 0x13
ror eax, 0x11
xor esi, eax
shr ecx, 0xa
xor esi, ecx
mov eax, edx
mov ecx, edx
ror eax, 7
ror ecx, 0x12
xor ecx, eax
shr edx, 3
xor ecx, edx
add esi, ecx
add esi, dword [edi - 0x3c]
add esi, dword [edi - 0x18]
add esi, ebx
inc ebx
mov dword [edi + 4], esi
cmp ebx, 0x110
jb 0x40e3c5
mov ebx, dword [ebp - 8]
movups xmm0, xmmword [ebx + 0x400]
lea edi, [ebx + 0x38]
movups xmmword [ebx], xmm0
movups xmm0, xmmword [ebx + 0x410]
movups xmmword [ebx + 0x10], xmm0
movups xmm0, xmmword [ebx + 0x420]
movups xmmword [ebx + 0x20], xmm0
movups xmm0, xmmword [ebx + 0x430]
movups xmmword [ebx + 0x30], xmm0
mov ebx, 0x10
nop dword [eax + eax]
mov ecx, dword [edi - 0x34]
lea edi, [edi + 4]
mov edx, dword [edi - 4]
mov esi, ecx
mov eax, ecx
ror esi, 0x12
ror eax, 7
xor esi, eax
shr ecx, 3
xor esi, ecx
mov eax, edx
ror eax, 0x11
mov ecx, edx
ror ecx, 0x13
xor eax, ecx
shr edx, 0xa
xor eax, edx
add eax, 0x100
add eax, esi
add eax, dword [edi - 0x3c]
add eax, dword [edi - 0x18]
add eax, ebx
inc ebx
mov dword [edi + 4], eax
cmp ebx, 0x400
jb 0x40e440
mov ebx, dword [ebp - 8]
mov esi, 0x40
mov dword [ebx + 0x1080], 0
mov eax, dword [ebx + 0x7c0]
mov dword [ebx + 0x1000], eax
mov eax, dword [ebx + 0x7c4]
mov dword [ebx + 0x1004], eax
mov eax, dword [ebx + 0x7c8]
mov dword [ebx + 0x1008], eax
mov eax, dword [ebx + 0x7cc]
mov dword [ebx + 0x100c], eax
mov eax, dword [ebx + 0x7d0]
mov dword [ebx + 0x1010], eax
mov eax, dword [ebx + 0x7d4]
mov dword [ebx + 0x1014], eax
mov eax, dword [ebx + 0x7d8]
mov dword [ebx + 0x1018], eax
mov eax, dword [ebx + 0x7dc]
mov dword [ebx + 0x101c], eax
mov eax, dword [ebx + 0x7e0]
mov dword [ebx + 0x1020], eax
mov eax, dword [ebx + 0x7e4]
mov dword [ebx + 0x1024], eax
mov eax, dword [ebx + 0x7e8]
mov dword [ebx + 0x1028], eax
mov eax, dword [ebx + 0x7ec]
mov dword [ebx + 0x102c], eax
mov eax, dword [ebx + 0x7f0]
mov dword [ebx + 0x1030], eax
mov eax, dword [ebx + 0x7f4]
mov dword [ebx + 0x1034], eax
mov eax, dword [ebx + 0x7f8]
mov dword [ebx + 0x1038], eax
mov eax, dword [ebx + 0x7fc]
mov dword [ebx + 0x103c], eax
mov eax, dword [ebx + 0xfc0]
mov dword [ebx + 0x1040], eax
mov eax, dword [ebx + 0xfc4]
mov dword [ebx + 0x1044], eax
mov eax, dword [ebx + 0xfc8]
mov dword [ebx + 0x1048], eax
mov eax, dword [ebx + 0xfcc]
mov dword [ebx + 0x104c], eax
mov eax, dword [ebx + 0xfd0]
mov dword [ebx + 0x1050], eax
mov eax, dword [ebx + 0xfd4]
mov dword [ebx + 0x1054], eax
mov eax, dword [ebx + 0xfd8]
mov dword [ebx + 0x1058], eax
mov eax, dword [ebx + 0xfdc]
mov dword [ebx + 0x105c], eax
mov eax, dword [ebx + 0xfe0]
mov dword [ebx + 0x1060], eax
mov eax, dword [ebx + 0xfe4]
mov dword [ebx + 0x1064], eax
mov eax, dword [ebx + 0xfe8]
mov dword [ebx + 0x1068], eax
mov eax, dword [ebx + 0xfec]
mov dword [ebx + 0x106c], eax
mov eax, dword [ebx + 0xff0]
mov dword [ebx + 0x1070], eax
mov eax, dword [ebx + 0xff4]
mov dword [ebx + 0x1074], eax
mov eax, dword [ebx + 0xff8]
mov dword [ebx + 0x1078], eax
mov eax, dword [ebx + 0xffc]
mov dword [ebx + 0x107c], eax
mov ecx, ebx
call fcn.0040d8b0
sub esi, 1
jne 0x40e618
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret