Function at 0x42160a
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
mov eax, dword [ebp + 8]
push ebx
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0x10]
push esi
push edi
lea esi, [eax - 1]
mov edx, 0x1fe0000
test esi, esi
mov edi, 0x1fe00
mov ecx, 0x1fe
mov eax, 0xff
jle 0x4217b4
dec esi
shr esi, 1
inc esi
mov dword [ebp - 0x1c], esi
mov esi, dword [ebp + 0x14]
mov ebx, esi
sar esi, 9
and esi, 0x7f
mov dword [ebp - 4], esi
mov esi, dword [ebp + 0xc]
sar ebx, 0x10
mov esi, dword [esi + ebx*4]
mov dword [ebp - 0x14], esi
mov esi, dword [ebp + 0xc]
mov ebx, dword [esi + ebx*4 + 4]
mov esi, dword [ebp - 0x14]
shr esi, 7
mov dword [ebp - 8], esi
mov esi, dword [ebp - 4]
xor esi, 0x7f
mov dword [ebp - 0x18], ebx
mov dword [ebp + 8], esi
mov esi, dword [ebp - 8]
shr ebx, 7
mov dword [ebp - 0xc], ebx
and esi, edx
imul esi, dword [ebp + 8]
and ebx, edx
mov edx, dword [ebp - 0xc]
imul ebx, dword [ebp - 4]
add ebx, esi
mov esi, dword [ebp - 8]
and edx, edi
and esi, edi
imul edx, dword [ebp - 4]
imul esi, dword [ebp + 8]
and ebx, 0xff00ffff
add edx, esi
mov esi, dword [ebp - 8]
or ebx, edx
mov edx, dword [ebp - 0xc]
and esi, ecx
imul esi, dword [ebp + 8]
and edx, ecx
xor bh, bh
imul edx, dword [ebp - 4]
add edx, esi
mov esi, dword [ebp - 0x18]
or ebx, edx
mov edx, dword [ebp - 0x14]
and edx, eax
and esi, eax
imul edx, dword [ebp + 8]
imul esi, dword [ebp - 4]
add edx, esi
xor bl, bl
shr edx, 7
or ebx, edx
mov edx, dword [ebp - 0x10]
mov edi, dword [ebp + 0xc]
mov dword [edx], ebx
mov edx, dword [ebp + 0x14]
add edx, dword [ebp + 0x18]
mov esi, edx
mov dword [ebp + 0x14], edx
sar esi, 0x10
sar edx, 9
mov ebx, dword [edi + esi*4]
mov esi, dword [edi + esi*4 + 4]
mov dword [ebp - 0x18], esi
and edx, 0x7f
shr esi, 7
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0xc], esi
shr ebx, 7
mov edi, esi
mov dword [ebp + 8], edx
xor dword [ebp + 8], 0x7f
mov esi, 0x1fe0000
mov dword [ebp - 8], ebx
and edi, esi
and ebx, esi
imul edi, edx
imul ebx, dword [ebp + 8]
mov dword [ebp - 4], edx
add edi, ebx
mov ebx, dword [ebp - 0xc]
mov esi, 0x1fe00
and ebx, esi
and edi, 0xff00ffff
imul ebx, edx
mov edx, dword [ebp - 8]
and edx, esi
mov esi, dword [ebp - 8]
imul edx, dword [ebp + 8]
add ebx, edx
mov edx, dword [ebp - 0xc]
and edx, ecx
and esi, ecx
imul edx, dword [ebp - 4]
imul esi, dword [ebp + 8]
or edi, ebx
add edx, esi
mov esi, dword [ebp - 0x18]
and edi, 0xffff00ff
or edi, edx
mov edx, dword [ebp - 0x14]
and edx, eax
and esi, eax
imul edx, dword [ebp + 8]
imul esi, dword [ebp - 4]
add edx, esi
mov esi, dword [ebp + 0x14]
add esi, dword [ebp + 0x18]
and edi, 0xffffff00
shr edx, 7
or edi, edx
mov edx, dword [ebp - 0x10]
add dword [ebp - 0x10], 8
dec dword [ebp - 0x1c]
mov dword [edx + 4], edi
mov dword [ebp + 0x14], esi
mov edi, 0x1fe00
mov edx, 0x1fe0000
jne 0x421645
jmp 0x4217b7
mov esi, dword [ebp + 0x14]
test byte [ebp + 0x10], 1
je 0x421864
mov ebx, esi
sar esi, 9
and esi, 0x7f
mov dword [ebp + 0x14], esi
mov esi, dword [ebp + 0xc]
sar ebx, 0x10
mov dword [ebp + 0x18], ebx
mov ebx, dword [esi + ebx*4]
mov dword [ebp + 8], ebx
mov ebx, dword [ebp + 0x18]
mov esi, dword [esi + ebx*4 + 4]
mov ebx, dword [ebp + 8]
shr ebx, 7
mov dword [ebp + 0x18], ebx
mov ebx, dword [ebp + 0x14]
mov dword [ebp - 0x1c], esi
xor ebx, 0x7f
shr esi, 7
mov dword [ebp + 0xc], ebx
mov dword [ebp + 0x10], esi
mov ebx, esi
mov esi, dword [ebp + 0x18]
and ebx, edx
and esi, edx
imul ebx, dword [ebp + 0x14]
imul esi, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
add ebx, esi
mov esi, dword [ebp + 0x18]
and edx, edi
imul edx, dword [ebp + 0x14]
and esi, edi
and ebx, 0xff00ffff
imul esi, dword [ebp + 0xc]
add edx, esi
mov esi, dword [ebp + 0x18]
or ebx, edx
mov edx, dword [ebp + 0x10]
and edx, ecx
and esi, ecx
imul edx, dword [ebp + 0x14]
imul esi, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
xor bh, bh
add edx, esi
and ecx, eax
imul ecx, dword [ebp + 0xc]
or ebx, edx
mov edx, dword [ebp - 0x1c]
and edx, eax
mov eax, dword [ebp - 0x10]
imul edx, dword [ebp + 0x14]
add ecx, edx
xor bl, bl
shr ecx, 7
or ebx, ecx
mov dword [eax], ebx
pop edi
pop esi
pop ebx
leave
ret