Function at 0x420a50
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x100
push esi
mov esi, dword [esp + 0x108]
xorps xmm0, xmm0
push edi
mov edi, dword [esp + 0x110]
mov ecx, esi
movups xmmword [esp + 0x4c], xmm0
mov dword [esp + 0x84], 0
mov edx, edi
movups xmmword [esp + 0x5c], xmm0
mov dword [esp + 0x88], 0
movups xmmword [esp + 0x6c], xmm0
movq qword [esp + 0x7c], xmm0
nop dword [eax + eax]
mov eax, dword [ecx]
lea ecx, [ecx + 4]
inc dword [esp + eax*4 + 0x4c]
sub edx, 1
jne 0x420aa0
cmp dword [esp + 0x4c], edi
jne 0x420ad1
mov eax, dword [esp + 0x120]
pop edi
pop esi
mov dword [eax], edx
mov eax, dword [esp + 0x11c]
mov dword [eax], edx
xor eax, eax
add esp, 0x100
ret
mov eax, dword [esp + 0x124]
mov ecx, 1
push ebx
mov ebx, dword [eax]
cmp dword [esp + ecx*4 + 0x50], 0
jne 0x420aed
inc ecx
cmp ecx, 0xf
jbe 0x420ae0
cmp ebx, ecx
mov dword [esp + 0x10], ecx
mov edx, 0xf
cmovb ebx, ecx
nop dword [eax + eax]
cmp dword [esp + edx*4 + 0x50], 0
jne 0x420b0c
sub edx, 1
jne 0x420b00
cmp ebx, edx
mov dword [esp + 0x2c], edx
push ebp
cmova ebx, edx
mov ebp, 1
shl ebp, cl
mov dword [esp + 0x20], ebx
mov dword [eax], ebx
cmp ecx, edx
jae 0x420b41
nop word [eax + eax]
sub ebp, dword [esp + ecx*4 + 0x54]
js 0x420ecc
inc ecx
add ebp, ebp
cmp ecx, edx
jb 0x420b30
lea ebx, [edx*4]
mov eax, dword [esp + ebx + 0x54]
sub ebp, eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0x50], ebp
js 0x420ecc
add eax, ebp
xor ecx, ecx
mov dword [esp + ebx + 0x54], eax
mov dword [esp + 0x98], ecx
sub edx, 1
je 0x420b85
xor eax, eax
add ecx, dword [esp + eax + 0x58]
lea eax, [eax + 4]
mov dword [esp + eax + 0x98], ecx
sub edx, 1
jne 0x420b72
mov ebx, dword [esp + 0x138]
xor ecx, ecx
nop
mov edx, dword [esi]
lea esi, [esi + 4]
test edx, edx
je 0x420bab
mov eax, dword [esp + edx*4 + 0x94]
mov dword [ebx + eax*4], ecx
inc eax
mov dword [esp + edx*4 + 0x94], eax
inc ecx
cmp ecx, edi
jb 0x420b90
mov ebx, dword [esp + 0x34]
xor edi, edi
mov edx, dword [esp + 0x20]
or ecx, 0xffffffff
xor ebp, ebp
mov dword [esp + 0x24], edi
xor esi, esi
mov dword [esp + 0x10], ecx
mov eax, dword [esp + ebx + 0x94]
mov ebx, edx
mov dword [esp + 0x4c], eax
neg ebx
mov eax, dword [esp + 0x138]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x94], edi
mov dword [esp + 0x40], ebx
mov dword [esp + 0xd4], edi
mov dword [esp + 0x34], ebp
cmp eax, dword [esp + 0x30]
jg 0x420eae
lea eax, [esp + eax*4 + 0x54]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
nop dword [eax + eax]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx]
test ecx, ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x10]
je 0x420e9a
mov eax, dword [esp + 0x28]
nop word [eax + eax]
mov dword [esp + 0x48], eax
dec eax
mov dword [esp + 0x28], eax
lea eax, [ebx + edx]
cmp dword [esp + 0x14], eax
jle 0x420d6c
sub ebx, edx
mov ebp, ebx
jmp 0x420c64
mov ebp, dword [esp + 0x44]
mov edi, dword [esp + 0x30]
mov ebx, eax
add ebp, edx
mov dword [esp + 0x40], ebx
inc ecx
mov dword [esp + 0x44], ebp
sub edi, ebx
mov dword [esp + 0x10], ecx
cmp edi, edx
mov eax, 1
cmova edi, edx
mov edx, dword [esp + 0x14]
sub edx, ebx
mov ecx, edx
shl eax, cl
cmp eax, dword [esp + 0x48]
jbe 0x420cc3
mov esi, dword [esp + 0x2c]
or ecx, 0xffffffff
sub ecx, dword [esp + 0x28]
add eax, ecx
cmp edx, edi
jae 0x420cc3
inc edx
cmp edx, edi
jae 0x420cc3
nop dword [eax + eax]
mov ecx, dword [esi + 4]
lea esi, [esi + 4]
add eax, eax
cmp eax, ecx
jbe 0x420cc3
inc edx
sub eax, ecx
cmp edx, edi
jb 0x420cb0
mov edi, dword [esp + 0x134]
mov ecx, edx
mov esi, 1
shl esi, cl
mov eax, dword [edi]
lea ecx, [eax + esi]
cmp ecx, 0x5a0
ja 0x420ecc
mov ebp, dword [esp + 0x130]
mov dword [edi], ecx
mov edi, dword [esp + 0x24]
lea ebp, [ebp + eax*8]
mov eax, dword [esp + 0x10]
mov ecx, eax
mov dword [esp + 0x34], ebp
mov dword [esp + eax*4 + 0xd4], ebp
test ecx, ecx
je 0x420d52
mov eax, dword [esp + 0x20]
mov byte [esp + 0x39], al
mov eax, dword [esp + 0x10]
mov byte [esp + 0x38], dl
mov edx, edi
mov dword [esp + ecx*4 + 0x94], edi
mov ecx, dword [esp + 0x44]
shr edx, cl
mov ecx, dword [esp + eax*4 + 0xd0]
mov eax, ebp
sub eax, ecx
sar eax, 3
sub eax, edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
mov dword [ecx + edx*8], eax
mov eax, dword [esp + 0x1c]
mov dword [ecx + edx*8 + 4], eax
mov ecx, dword [esp + 0x10]
jmp 0x420d5b
mov eax, dword [esp + 0x128]
mov dword [eax], ebp
mov edx, dword [esp + 0x20]
lea eax, [ebx + edx]
cmp dword [esp + 0x14], eax
jg 0x420c60
mov edx, dword [esp + 0x14]
mov al, dl
mov ecx, dword [esp + 0x4c]
sub al, bl
mov byte [esp + 0x39], al
mov eax, dword [esp + 0x138]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x18]
cmp ecx, eax
jb 0x420d95
mov byte [esp + 0x38], 0xc0
jmp 0x420ddd
mov ecx, dword [ecx]
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x1c], ecx
cmp ecx, eax
jae 0x420db8
cmp ecx, 0x100
sbb al, al
and al, 0xa0
add al, 0x60
mov byte [esp + 0x38], al
jmp 0x420dd8
sub ecx, eax
mov eax, dword [esp + 0x124]
mov al, byte [eax + ecx*4]
add al, 0x50
mov byte [esp + 0x38], al
mov eax, dword [esp + 0x120]
mov ecx, dword [eax + ecx*4]
mov dword [esp + 0x1c], ecx
add dword [esp + 0x18], 4
mov ecx, edx
mov eax, edi
sub ecx, ebx
mov edx, 1
shl edx, cl
mov ecx, ebx
shr eax, cl
cmp eax, esi
jae 0x420e25
mov ebx, dword [esp + 0x1c]
lea ecx, [eax*8]
add ecx, ebp
lea edi, [edx*8]
mov ebp, dword [esp + 0x38]
nop word [eax + eax]
mov dword [ecx], ebp
add eax, edx
mov dword [ecx + 4], ebx
add ecx, edi
cmp eax, esi
jb 0x420e10
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
mov eax, 1
lea ecx, [ecx - 1]
shl eax, cl
test edi, eax
je 0x420e3f
xor edi, eax
shr eax, 1
test edi, eax
jne 0x420e37
mov edx, dword [esp + 0x20]
xor edi, eax
mov ecx, ebx
mov dword [esp + 0x24], edi
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x10]
dec eax
and eax, edi
cmp eax, dword [esp + ecx*4 + 0x94]
je 0x420e86
dec ecx
sub ebx, edx
mov dword [esp + 0x10], ecx
mov eax, 1
mov ecx, ebx
shl eax, cl
mov ecx, dword [esp + 0x10]
dec eax
and eax, edi
cmp eax, dword [esp + ecx*4 + 0x94]
jne 0x420e62
mov dword [esp + 0x40], ebx
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x34]
test eax, eax
jne 0x420c40
mov eax, dword [esp + 0x14]
add dword [esp + 0x2c], 4
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x30]
jle 0x420c20
cmp dword [esp + 0x50], 0
je 0x420edc
cmp dword [esp + 0x30], 1
je 0x420edc
pop ebp
pop ebx
pop edi
mov eax, 0xfffffffb
pop esi
add esp, 0x100
ret
pop ebp
pop ebx
pop edi
mov eax, 0xfffffffd
pop esi
add esp, 0x100
ret
pop ebp
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x100
ret