Function at 0x5ae9b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov ebx, dword [esp + 0x44]
mov edi, dword [ecx + 0x10]
mov esi, dword [ecx + 0x14]
mov dword [esp], edx
mov edx, 0x4c957f2d
mov dword [esp + 4], ecx
add edi, ebx
mov eax, edi
adc esi, 0
imul edi, edi, 0x5851f42d
mul edx
imul ecx, esi, 0x4c957f2d
add edi, edx
mov dword [esp + 0x10], eax
add ecx, edi
cmp ebx, 8
mov dword [esp + 0xc], ecx
jbe 0x5aeb65
cmp ebx, 0x10
jbe 0x5aeb87
mov edx, dword [esp + 4]
mov esi, dword [esp]
mov ecx, dword [edx + 4]
mov ebp, dword [ebx + esi - 0xc]
mov eax, dword [edx]
mov edi, dword [ebx + esi - 0x10]
mov dword [esp + 0x28], ecx
xor ebp, ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x2c], eax
xor edi, eax
mov eax, dword [edx + 0xc]
mov ebx, dword [ecx + esi - 4]
mov dword [esp + 0x24], eax
xor ebx, eax
mov eax, ebx
not ebx
bswap eax
mov ecx, eax
mul edi
imul ecx, ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 4]
bswap ebp
add edx, ecx
mov ecx, dword [esp + 0x44]
imul ebx, ebp
mov eax, dword [eax + 8]
mov dword [esp + 0x14], ecx
mov ecx, dword [ecx + esi - 8]
mov dword [esp + 0x20], eax
xor ecx, eax
mov eax, ebp
mov ebp, dword [esp + 4]
mov esi, ecx
not ecx
bswap esi
imul esi, edi
bswap edi
add esi, edx
mul ecx
imul ecx, edi
mov edi, dword [esp + 0x10]
add edx, ebx
bswap eax
mov ebx, dword [esp]
add ecx, edx
mov edx, dword [ebp + 0x18]
mov ebp, dword [ebp + 0x1c]
bswap ecx
mov dword [esp + 0x1c], edx
add edi, edx
mov edx, dword [esp + 0xc]
mov dword [esp + 0x18], ebp
adc edx, ebp
xor edi, dword [esp + 8]
xor edx, eax
xor edx, esi
mov esi, edx
xor edi, ecx
shld esi, edi, 0x17
shld edi, edx, 0x17
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [ebx]
mov dword [esp + 8], edi
mov edi, dword [ebx + 0xc]
mov ebp, dword [ebx + 4]
mov dword [esp], ebx
mov ebx, dword [ebx + 8]
xor eax, dword [esp + 0x2c]
xor edi, dword [esp + 0x24]
xor ebp, dword [esp + 0x28]
xor ebx, dword [esp + 0x20]
mov dword [esp + 0xc], eax
mov eax, edi
not edi
bswap eax
mov ecx, eax
mul dword [esp + 0xc]
imul ecx, ebp
bswap ebp
imul edi, ebp
add edx, ecx
mov ecx, ebx
mov dword [esp + 0x10], eax
mov eax, ebp
mov ebp, dword [esp + 0xc]
not ebx
bswap ecx
imul ecx, dword [esp + 0xc]
bswap ebp
add ecx, edx
mul ebx
imul ebx, ebp
add edx, edi
mov edi, dword [esp + 8]
bswap eax
add ebx, edx
mov edx, dword [esp + 0x14]
bswap ebx
add edx, 0xfffffff0
add edi, dword [esp + 0x1c]
mov dword [esp + 0x14], edx
adc esi, dword [esp + 0x18]
xor edi, dword [esp + 0x10]
xor esi, eax
mov eax, dword [esp]
xor edi, ebx
xor esi, ecx
mov ebp, esi
shld ebp, edi, 0x17
shld edi, esi, 0x17
cmp edx, 0x10
lea eax, [eax + 0x10]
mov esi, ebp
mov ebx, eax
ja 0x5aeac0
jmp 0x5aec9a
cmp ebx, 1
jbe 0x5aebf9
cmp ebx, 3
jbe 0x5aec0c
mov eax, dword [esp]
xor edi, edi
mov esi, dword [eax]
mov eax, dword [ebx + eax - 4]
jmp 0x5aec19
mov edx, dword [esp + 4]
mov eax, dword [esp]
mov ecx, dword [edx + 0xc]
mov ebp, dword [edx]
mov edi, dword [edx + 4]
mov esi, dword [edx + 8]
xor ecx, dword [ebx + eax - 4]
xor ebp, dword [eax]
xor edi, dword [eax + 4]
xor esi, dword [ebx + eax - 8]
mov eax, ecx
not ecx
bswap eax
mov ebx, eax
mul ebp
imul ebx, edi
bswap edi
mov dword [esp], eax
add edx, ebx
mov ebx, esi
not esi
mov eax, edi
imul ecx, edi
bswap ebx
imul ebx, ebp
bswap ebp
add ebx, edx
mul esi
imul esi, ebp
mov ebp, dword [esp + 4]
add edx, ecx
mov ecx, dword [esp + 0xc]
bswap eax
add esi, edx
bswap esi
mov edi, dword [ebp + 0x18]
add edi, dword [esp + 0x10]
adc ecx, dword [ebp + 0x1c]
xor edi, esi
xor eax, ebx
xor edi, dword [esp]
xor eax, ecx
jmp 0x5aec90
xor edi, edi
cmp ebx, 1
jne 0x5aec1f
mov eax, dword [esp]
movzx esi, byte [eax]
mov dword [esp + 8], esi
jmp 0x5aec29
mov eax, dword [esp]
xor edi, edi
movzx esi, word [eax]
movzx eax, byte [ebx + eax - 1]
mov dword [esp + 8], eax
jmp 0x5aec29
mov dword [esp + 8], 0
xor esi, esi
mov eax, dword [esp + 4]
mov ebp, edi
xor edi, dword [eax + 0xc]
xor esi, dword [eax]
xor ebp, dword [eax + 4]
mov ebx, eax
mov eax, edi
not edi
bswap eax
mov ecx, eax
mul esi
imul ecx, ebp
bswap ebp
mov dword [esp], eax
add edx, ecx
mov ecx, dword [esp + 8]
mov eax, ebp
imul edi, ebp
xor ecx, dword [ebx + 8]
mov ebx, ecx
not ecx
bswap ebx
imul ebx, esi
bswap esi
add ebx, edx
mul ecx
imul ecx, esi
mov esi, dword [esp + 0xc]
add edx, edi
mov edi, dword [esp + 4]
bswap eax
add ecx, edx
mov edx, dword [edi + 0x18]
add edx, dword [esp + 0x10]
adc esi, dword [edi + 0x1c]
mov edi, ecx
xor eax, ebx
bswap edi
xor edi, dword [esp]
xor eax, esi
xor edi, edx
mov ebp, eax
shld ebp, edi, 0x17
shld edi, eax, 0x17
xor edi, 0xff
mov ecx, 0x2df45158
mov eax, edi
mul ecx
imul ecx, ebp, 0x2df45158
bswap ebp
mov ebx, eax
imul eax, edi, 0x2d7f954c
bswap edi
imul esi, ebp, 0xa7ae0bd2
add eax, edx
mov edx, 0xb36a80d2
add ecx, eax
mov eax, ebp
mul edx
add esi, edx
imul edx, edi, 0xb36a80d2
bswap eax
add edx, esi
mov esi, dword [esp + 4]
xor eax, ecx
bswap edx
xor edx, ebx
mov dword [esi + 0x14], eax
mov dword [esi + 0x10], edx
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret