Function at 0x4fe430
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
push esi
mov esi, dword [esp + 0x20]
test esi, esi
je 0x4fe670
mov eax, dword [esp + 0x30]
push ebx
push ebp
push edi
cmp eax, 5
jne 0x4fe526
mov edi, dword [esp + 0x30]
mov ecx, edi
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x2c], ecx
cmp esi, 2
jne 0x4fe4c9
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4fe4c9
mov edx, eax
mov dword [esp + 0x10], eax
cmp ebp, 1
jbe 0x4fe4b5
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 0x4fe483
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 0x4fe471
mov edi, dword [esp + 0x30]
test ebp, ebp
je 0x4fe66d
mov ebx, dword [esp + 0x34]
lea eax, [ebx*4]
mov dword [esp + 0x2c], eax
mov eax, 1
cmp ebx, eax
jbe 0x4fe515
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 0x4fe4f0
add edi, dword [esp + 0x2c]
sub ebp, 1
jne 0x4fe4e0
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret
cmp eax, 6
jne 0x4fe66d
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 0x4fe5f2
mov edx, dword [esp + 0x34]
test edx, edx
je 0x4fe5f0
mov ebx, edx
mov dword [esp + 0x18], edx
cmp ecx, 1
jbe 0x4fe5d6
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 0x4fe580
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 0x4fe560
mov edx, dword [esp + 0x30]
jmp 0x4fe5f2
mov edx, eax
test ecx, ecx
je 0x4fe66d
mov eax, dword [esp + 0x34]
lea ebx, [eax*8]
mov ebp, 1
cmp eax, ebp
jbe 0x4fe65e
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 0x4fe610
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 0x4fe605
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret