Function at 0x5bdfa0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
push esi
mov esi, dword [esp + 0x20]
test esi, esi
je 0x5be1e0
mov eax, dword [esp + 0x30]
push ebx
push ebp
push edi
cmp eax, 5
jne 0x5be096
mov edi, dword [esp + 0x30]
mov ecx, edi
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x2c], ecx
cmp esi, 2
jne 0x5be039
mov eax, dword [esp + 0x34]
test eax, eax
je 0x5be039
mov edx, eax
mov dword [esp + 0x10], eax
cmp ebp, 1
jbe 0x5be025
lea ebx, [eax*4]
mov edi, ecx
lea esi, [ebx + ecx]
dec ebp
mov eax, dword [edi]
mov ecx, dword [esi]
and eax, 0xff800000
add eax, ecx
add ecx, dword [edi]
xor ecx, eax
add edi, ebx
and ecx, 0x7fffff
xor ecx, eax
mov dword [esi], ecx
add esi, ebx
sub ebp, 1
jne 0x5bdff3
mov eax, dword [esp + 0x34]
mov ebp, dword [esp + 0x38]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
add ecx, 4
sub edx, 1
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], edx
jne 0x5bdfe1
mov edi, dword [esp + 0x30]
test ebp, ebp
je 0x5be1dd
mov ebx, dword [esp + 0x34]
lea eax, [ebx*4]
mov dword [esp + 0x2c], eax
mov eax, 1
cmp ebx, eax
jbe 0x5be085
nop dword [eax]
mov ecx, dword [edi + eax*4 - 4]
mov edx, dword [edi + eax*4]
and ecx, 0xff800000
add ecx, edx
add edx, dword [edi + eax*4 - 4]
xor edx, ecx
and edx, 0x7fffff
xor edx, ecx
mov dword [edi + eax*4], edx
inc eax
cmp eax, ebx
jb 0x5be060
add edi, dword [esp + 0x2c]
sub ebp, 1
jne 0x5be050
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret
cmp eax, 6
jne 0x5be1dd
mov edx, dword [esp + 0x30]
mov eax, edx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], ecx
cmp esi, 2
jne 0x5be162
mov edx, dword [esp + 0x34]
test edx, edx
je 0x5be160
mov ebx, edx
mov dword [esp + 0x18], edx
cmp ecx, 1
jbe 0x5be146
lea esi, [edx*8]
mov dword [esp + 0x2c], eax
dec ecx
mov dword [esp + 0x24], esi
lea ebp, [eax + edx*8]
mov dword [esp + 0x10], ecx
nop dword [eax]
mov edi, dword [eax]
mov ebx, dword [eax + 4]
mov edx, ebx
add edi, dword [ebp]
adc edx, dword [ebp + 4]
xor eax, eax
and ebx, 0xfff00000
add eax, dword [ebp]
adc ebx, dword [ebp + 4]
xor eax, eax
xor ebx, edx
xor eax, edi
and ebx, 0xfff00000
mov dword [ebp], eax
mov eax, dword [esp + 0x2c]
xor ebx, edx
add eax, dword [esp + 0x24]
mov dword [ebp + 4], ebx
add ebp, dword [esp + 0x24]
sub dword [esp + 0x10], 1
mov dword [esp + 0x2c], eax
jne 0x5be0f0
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x18]
add eax, 8
sub ebx, 1
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ebx
jne 0x5be0d0
mov edx, dword [esp + 0x30]
jmp 0x5be162
mov edx, eax
test ecx, ecx
je 0x5be1dd
mov eax, dword [esp + 0x34]
lea ebx, [eax*8]
mov ebp, 1
cmp eax, ebp
jbe 0x5be1ce
nop
mov ecx, dword [edx + ebp*8]
mov edi, ecx
add edi, dword [edx + ebp*8 - 8]
mov ebx, dword [edx + ebp*8 - 4]
mov esi, dword [edx + ebp*8 + 4]
mov edx, esi
adc edx, ebx
xor eax, eax
and ebx, 0xfff00000
add eax, ecx
adc ebx, esi
xor eax, eax
xor ebx, edx
xor eax, edi
and ebx, 0xfff00000
xor ebx, edx
mov edx, dword [esp + 0x1c]
mov dword [edx + ebp*8], eax
mov eax, dword [esp + 0x34]
mov dword [edx + ebp*8 + 4], ebx
inc ebp
cmp ebp, eax
jb 0x5be180
mov ecx, dword [esp + 0x20]
lea ebx, [eax*8]
add edx, ebx
sub ecx, 1
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], ecx
jne 0x5be175
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret