Function at 0x10085450
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
push esi
mov esi, dword [esp + 0x20]
test esi, esi
je 0x10085690
mov eax, dword [esp + 0x30]
push ebx
push ebp
push edi
cmp eax, 5
jne 0x10085546
mov edi, dword [esp + 0x30]
mov ecx, edi
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x2c], ecx
cmp esi, 2
jne 0x100854e9
mov eax, dword [esp + 0x34]
test eax, eax
je 0x100854e9
mov edx, eax
mov dword [esp + 0x10], eax
cmp ebp, 1
jbe 0x100854d5
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 0x100854a3
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 0x10085491
mov edi, dword [esp + 0x30]
test ebp, ebp
je 0x1008568d
mov ebx, dword [esp + 0x34]
lea eax, [ebx*4]
mov dword [esp + 0x2c], eax
mov eax, 1
cmp ebx, eax
jbe 0x10085535
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 0x10085510
add edi, dword [esp + 0x2c]
sub ebp, 1
jne 0x10085500
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret
cmp eax, 6
jne 0x1008568d
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 0x10085612
mov edx, dword [esp + 0x34]
test edx, edx
je 0x10085610
mov ebx, edx
mov dword [esp + 0x18], edx
cmp ecx, 1
jbe 0x100855f6
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 0x100855a0
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 0x10085580
mov edx, dword [esp + 0x30]
jmp 0x10085612
mov edx, eax
test ecx, ecx
je 0x1008568d
mov eax, dword [esp + 0x34]
lea ebx, [eax*8]
mov ebp, 1
cmp eax, ebp
jbe 0x1008567e
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 0x10085630
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 0x10085625
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret