Function at 0x100656f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
push esi
mov esi, dword [esp + 0x20]
test esi, esi
je 0x10065930
mov eax, dword [esp + 0x30]
push ebx
push ebp
push edi
cmp eax, 5
jne 0x100657e6
mov edi, dword [esp + 0x30]
mov ecx, edi
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x2c], ecx
cmp esi, 2
jne 0x10065789
mov eax, dword [esp + 0x34]
test eax, eax
je 0x10065789
mov edx, eax
mov dword [esp + 0x10], eax
cmp ebp, 1
jbe 0x10065775
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 0x10065743
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 0x10065731
mov edi, dword [esp + 0x30]
test ebp, ebp
je 0x1006592d
mov ebx, dword [esp + 0x34]
lea eax, [ebx*4]
mov dword [esp + 0x2c], eax
mov eax, 1
cmp ebx, eax
jbe 0x100657d5
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 0x100657b0
add edi, dword [esp + 0x2c]
sub ebp, 1
jne 0x100657a0
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret
cmp eax, 6
jne 0x1006592d
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 0x100658b2
mov edx, dword [esp + 0x34]
test edx, edx
je 0x100658b0
mov ebx, edx
mov dword [esp + 0x18], edx
cmp ecx, 1
jbe 0x10065896
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 0x10065840
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 0x10065820
mov edx, dword [esp + 0x30]
jmp 0x100658b2
mov edx, eax
test ecx, ecx
je 0x1006592d
mov eax, dword [esp + 0x34]
lea ebx, [eax*8]
mov ebp, 1
cmp eax, ebp
jbe 0x1006591e
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 0x100658d0
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 0x100658c5
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret