Function at 0x40ac30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 4
mov ebx, dword [esp + 0x18]
mov ecx, dword [ebx + 0x408]
mov eax, dword [ebx + 0x400]
lea edx, [ecx + 1]
lea ecx, [ebx + 0x200]
mov dword [ebx + 0x408], edx
add edx, dword [ebx + 0x404]
mov dword [esp], ecx
mov ecx, ebx
mov ebp, dword [ecx]
mov esi, eax
shl esi, 0xd
xor eax, esi
add eax, dword [ecx + 0x200]
mov esi, ebp
and esi, 0x3fc
mov edi, dword [ebx + esi]
add edi, eax
mov esi, edi
mov edi, dword [esp + 0x1c]
add esi, edx
mov dword [ecx], esi
shr esi, 8
and esi, 0x3fc
add ebp, dword [ebx + esi]
mov esi, eax
shr esi, 6
xor eax, esi
mov dword [edi], ebp
add eax, dword [ecx + 0x204]
mov esi, eax
mov eax, dword [ecx + 4]
mov edx, eax
and edx, 0x3fc
mov edi, dword [ebx + edx]
add edi, esi
mov edx, edi
add edx, ebp
mov dword [ecx + 4], edx
shr edx, 8
and edx, 0x3fc
add eax, dword [ebx + edx]
lea edx, [esi*4]
xor esi, edx
mov ebp, eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 4], ebp
mov edx, dword [ecx + 0x208]
add edx, esi
mov esi, dword [ecx + 8]
mov eax, esi
and eax, 0x3fc
mov edi, dword [ebx + eax]
add edi, edx
mov eax, edi
add eax, ebp
mov dword [ecx + 8], eax
shr eax, 8
and eax, 0x3fc
add esi, dword [ebx + eax]
mov eax, dword [esp + 0x1c]
mov dword [eax + 8], esi
mov eax, edx
mov ebp, esi
shr eax, 0x10
xor edx, eax
mov eax, dword [ecx + 0x20c]
add eax, edx
mov edx, dword [ecx + 0xc]
mov esi, edx
and esi, 0x3fc
mov edi, dword [ebx + esi]
add edi, eax
mov esi, edi
mov edi, dword [esp + 0x1c]
add esi, ebp
mov dword [ecx + 0xc], esi
shr esi, 8
add dword [esp + 0x1c], 0x10
and esi, 0x3fc
add ecx, 0x10
add edx, dword [ebx + esi]
cmp ecx, dword [esp]
mov dword [edi + 0xc], edx
jb 0x40ac61
lea esi, [ebx + 0x400]
mov dword [esp], esi
nop
mov ebp, dword [ecx]
mov esi, eax
shl esi, 0xd
xor eax, esi
add eax, dword [ecx - 0x200]
mov esi, ebp
and esi, 0x3fc
mov edi, dword [ebx + esi]
add edi, eax
mov esi, edi
mov edi, dword [esp + 0x1c]
add esi, edx
mov dword [ecx], esi
shr esi, 8
and esi, 0x3fc
add ebp, dword [ebx + esi]
mov esi, eax
shr esi, 6
xor eax, esi
mov dword [edi], ebp
add eax, dword [ecx - 0x1fc]
mov esi, eax
mov eax, dword [ecx + 4]
mov edx, eax
and edx, 0x3fc
mov edi, dword [ebx + edx]
add edi, esi
mov edx, edi
add edx, ebp
mov dword [ecx + 4], edx
shr edx, 8
and edx, 0x3fc
add eax, dword [ebx + edx]
lea edx, [esi*4]
xor esi, edx
mov ebp, eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 4], ebp
mov edx, dword [ecx - 0x1f8]
add edx, esi
mov esi, dword [ecx + 8]
mov eax, esi
and eax, 0x3fc
mov edi, dword [ebx + eax]
add edi, edx
mov eax, edi
add eax, ebp
mov dword [ecx + 8], eax
shr eax, 8
and eax, 0x3fc
add esi, dword [ebx + eax]
mov eax, dword [esp + 0x1c]
mov dword [eax + 8], esi
mov eax, edx
mov ebp, esi
shr eax, 0x10
xor edx, eax
mov eax, dword [ecx - 0x1f4]
add eax, edx
mov edx, dword [ecx + 0xc]
mov esi, edx
and esi, 0x3fc
mov edi, dword [ebx + esi]
add edi, eax
mov esi, edi
mov edi, dword [esp + 0x1c]
add esi, ebp
mov dword [ecx + 0xc], esi
shr esi, 8
add dword [esp + 0x1c], 0x10
and esi, 0x3fc
add ecx, 0x10
add edx, dword [ebx + esi]
cmp ecx, dword [esp]
mov dword [edi + 0xc], edx
jb 0x40ad60
mov dword [ebx + 0x400], eax
mov dword [ebx + 0x404], edx
add esp, 4
pop ebx
pop esi
pop edi
pop ebp
ret