Function at 0x401af0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x4305c0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, edx
mov dword [ebp - 0x28], eax
xor eax, eax
push edi
test esi, esi
je 0x401b21
push esi
push ecx
lea eax, [ebp - 0x24]
push eax
call fcn.00412980
add esp, 0xc
mov eax, esi
cmp eax, 0x10
jae 0x401b4d
lea edi, [ebp - 0x24]
add edi, eax
mov ecx, 0x10
sub ecx, eax
movzx eax, byte [0x439238]
imul eax, eax, 0x1010101
mov esi, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [0x439230]
movq xmm0, qword [ebp - 0x24]
mov eax, dword [edi]
mov ebx, dword [0x439244]
movq qword [ebp - 0x14], xmm0
xor dword [ebp - 0x14], eax
mov eax, dword [edi + 4]
xor dword [ebp - 0x10], eax
movq xmm0, qword [ebp - 0x1c]
mov eax, dword [edi + 8]
movq qword [ebp - 0xc], xmm0
xor dword [ebp - 0xc], eax
mov eax, dword [edi + 0xc]
xor dword [ebp - 8], eax
cmp ebx, 1
jbe 0x401c4e
lea esi, [edi + 0x18]
lea edi, [ebx - 1]
lea ecx, [ebp - 0x14]
call fcn.00401d20
movq xmm0, qword [ebp - 0x14]
movq qword [ebp - 0x24], xmm0
movq xmm0, qword [ebp - 0xc]
movzx eax, byte [ebp - 0x24]
mov byte [ebp - 0x14], al
movzx eax, byte [ebp - 0x1f]
mov byte [ebp - 0x13], al
movq qword [ebp - 0x1c], xmm0
movzx eax, byte [ebp - 0x1a]
mov byte [ebp - 0x12], al
movzx eax, byte [ebp - 0x15]
mov byte [ebp - 0x11], al
movzx eax, byte [ebp - 0x20]
mov byte [ebp - 0x10], al
movzx eax, byte [ebp - 0x1b]
mov byte [ebp - 0xf], al
movzx eax, byte [ebp - 0x16]
mov byte [ebp - 0xe], al
movzx eax, byte [ebp - 0x21]
mov byte [ebp - 0xd], al
movzx eax, byte [ebp - 0x1c]
mov byte [ebp - 0xc], al
movzx eax, byte [ebp - 0x17]
mov byte [ebp - 0xb], al
movzx eax, byte [ebp - 0x22]
mov byte [ebp - 0xa], al
movzx eax, byte [ebp - 0x1d]
mov byte [ebp - 9], al
movzx eax, byte [ebp - 0x18]
mov byte [ebp - 8], al
movzx eax, byte [ebp - 0x23]
mov byte [ebp - 7], al
movzx eax, byte [ebp - 0x1e]
mov byte [ebp - 6], al
movzx eax, byte [ebp - 0x19]
lea ecx, [ebp - 0x14]
mov byte [ebp - 5], al
call fcn.00401dc0
mov eax, dword [esi - 8]
xor dword [ebp - 0x14], eax
mov eax, dword [esi - 4]
xor dword [ebp - 0x10], eax
mov eax, dword [esi]
xor dword [ebp - 0xc], eax
mov eax, dword [esi + 4]
xor dword [ebp - 8], eax
lea esi, [esi + 0x10]
dec edi
jne 0x401b93
mov edi, dword [0x439230]
lea ecx, [ebp - 0x14]
call fcn.00401d20
movq xmm0, qword [ebp - 0x14]
movq qword [ebp - 0x24], xmm0
movq xmm0, qword [ebp - 0xc]
movzx eax, byte [ebp - 0x24]
mov byte [ebp - 0x14], al
movzx eax, byte [ebp - 0x1f]
mov byte [ebp - 0x13], al
movq qword [ebp - 0x1c], xmm0
movzx eax, byte [ebp - 0x1a]
mov byte [ebp - 0x12], al
movzx eax, byte [ebp - 0x15]
mov byte [ebp - 0x11], al
movzx eax, byte [ebp - 0x20]
mov byte [ebp - 0x10], al
movzx eax, byte [ebp - 0x1b]
mov byte [ebp - 0xf], al
movzx eax, byte [ebp - 0x16]
mov byte [ebp - 0xe], al
movzx eax, byte [ebp - 0x21]
mov byte [ebp - 0xd], al
movzx eax, byte [ebp - 0x1c]
mov byte [ebp - 0xc], al
movzx eax, byte [ebp - 0x17]
mov byte [ebp - 0xb], al
movzx eax, byte [ebp - 0x22]
mov byte [ebp - 0xa], al
movzx eax, byte [ebp - 0x1d]
mov byte [ebp - 9], al
movzx eax, byte [ebp - 0x18]
mov byte [ebp - 8], al
movzx eax, byte [ebp - 0x23]
mov byte [ebp - 7], al
movzx eax, byte [ebp - 0x1e]
mov ecx, dword [ebp - 4]
mov byte [ebp - 6], al
movzx eax, byte [ebp - 0x19]
mov byte [ebp - 5], al
add ebx, ebx
xor ecx, ebp
mov eax, dword [edi + ebx*8]
xor dword [ebp - 0x14], eax
mov eax, dword [edi + ebx*8 + 4]
xor dword [ebp - 0x10], eax
mov eax, dword [edi + ebx*8 + 8]
xor dword [ebp - 0xc], eax
mov eax, dword [edi + ebx*8 + 0xc]
xor dword [ebp - 8], eax
mov eax, dword [ebp - 0x28]
movq xmm0, qword [ebp - 0x14]
movq qword [eax], xmm0
movq xmm0, qword [ebp - 0xc]
pop edi
pop esi
movq qword [eax + 8], xmm0
xor eax, eax
pop ebx
call fcn.00410fdd
mov esp, ebp
pop ebp
ret