Function at 0x421cb0
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x38
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0x10], ecx
push esi
push edi
test ecx, ecx
je 0x422041
test edx, edx
je 0x422041
mov edi, dword [ebx + 8]
test edi, edi
je 0x422041
mov esi, dword [ebx + 0xc]
test esi, esi
jle 0x422041
test eax, eax
je 0x422041
cmp dword [ebx + 0x14], 0
je 0x422041
cmp dword [eax], 0
jne 0x422041
mov eax, dword [edx + 0x2c]
test eax, eax
jne 0x421dd6
lea eax, [esi + 0x50]
mov dword [ebp - 0xc], eax
push eax
mov eax, dword [ecx + 8]
call eax
add esp, 4
mov dword [ebp - 8], eax
test eax, eax
je 0x422014
xor ecx, ecx
cmp esi, 0x40
jb 0x421db9
lea edx, [esi + 0x4f]
add edx, eax
add eax, 0x50
mov dword [ebp - 0x10], edx
lea edx, [edi - 1]
add edx, esi
cmp eax, edx
ja 0x421d57
cmp dword [ebp - 0x10], edi
jae 0x421db6
mov eax, esi
and eax, 0x8000003f
jns 0x421d65
dec eax
or eax, 0xffffffc0
inc eax
movups xmm1, xmmword [0x5dd360]
mov edx, esi
sub edx, eax
mov eax, dword [ebp - 8]
movups xmm0, xmmword [edi + ecx]
pandn xmm0, xmm1
movups xmmword [eax + ecx + 0x50], xmm0
movups xmm0, xmmword [edi + ecx + 0x10]
pandn xmm0, xmm1
movups xmmword [eax + ecx + 0x60], xmm0
movups xmm0, xmmword [edi + ecx + 0x20]
pandn xmm0, xmm1
movups xmmword [eax + ecx + 0x70], xmm0
movups xmm0, xmmword [edi + ecx + 0x30]
pandn xmm0, xmm1
movups xmmword [eax + ecx + 0x80], xmm0
add ecx, 0x40
cmp ecx, edx
jl 0x421d73
jmp 0x421db9
mov eax, dword [ebp - 8]
cmp ecx, esi
jge 0x421ff9
lea edx, [eax + 0x50]
mov al, byte [ecx + edi]
not al
mov byte [edx + ecx], al
inc ecx
cmp ecx, esi
jl 0x421dc4
jmp 0x421ff9
cmp eax, 1
jne 0x421eb6
mov al, byte [edx + 0x30]
mov byte [ebp - 1], al
movsx eax, al
movd xmm0, eax
lea eax, [esi + 0x50]
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
mov dword [ebp - 0xc], eax
push eax
mov eax, dword [ecx + 8]
movaps xmmword [ebp - 0x30], xmm0
call eax
add esp, 4
mov dword [ebp - 8], eax
test eax, eax
je 0x422014
xor edx, edx
cmp esi, 0x40
jb 0x421e96
lea ecx, [esi + 0x4f]
add ecx, eax
add eax, 0x50
mov dword [ebp - 0x10], ecx
lea ecx, [edi - 1]
add ecx, esi
cmp eax, ecx
ja 0x421e37
cmp dword [ebp - 0x10], edi
jae 0x421e93
mov eax, esi
and eax, 0x8000003f
jns 0x421e45
dec eax
or eax, 0xffffffc0
inc eax
movaps xmm1, xmmword [ebp - 0x30]
mov ecx, esi
sub ecx, eax
mov eax, dword [ebp - 8]
movups xmm0, xmmword [edi + edx]
pxor xmm0, xmm1
movups xmmword [eax + edx + 0x50], xmm0
movups xmm0, xmmword [edi + edx + 0x10]
pxor xmm0, xmm1
movups xmmword [eax + edx + 0x60], xmm0
movups xmm0, xmmword [edi + edx + 0x20]
pxor xmm0, xmm1
movups xmmword [eax + edx + 0x70], xmm0
movups xmm0, xmmword [edi + edx + 0x30]
pxor xmm0, xmm1
movups xmmword [eax + edx + 0x80], xmm0
add edx, 0x40
cmp edx, ecx
jl 0x421e50
jmp 0x421e96
mov eax, dword [ebp - 8]
cmp edx, esi
jge 0x421ff9
lea ecx, [eax + 0x50]
mov ah, byte [ebp - 1]
mov al, byte [edx + edi]
xor al, ah
mov byte [ecx + edx], al
inc edx
cmp edx, esi
jl 0x421ea4
jmp 0x421ff9
cmp eax, 2
jne 0x421fab
mov al, byte [edx + 0x30]
mov byte [ebp - 1], al
movsx eax, al
movd xmm0, eax
lea eax, [esi + 0x50]
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
mov dword [ebp - 0xc], eax
push eax
mov eax, dword [ecx + 8]
movups xmmword [ebp - 0x30], xmm0
call eax
add esp, 4
mov dword [ebp - 8], eax
test eax, eax
je 0x422014
xor edx, edx
cmp esi, 0x10
jb 0x421f84
lea ecx, [eax + 0x50]
add eax, 0x4f
add eax, esi
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], eax
lea eax, [edi - 1]
add eax, esi
cmp ecx, eax
ja 0x421f1e
cmp dword [ebp - 0x10], edi
jae 0x421f81
mov eax, esi
and eax, 0x8000000f
jns 0x421f2c
dec eax
or eax, 0xfffffff0
inc eax
movups xmm5, xmmword [0x5dd360]
mov ecx, esi
movups xmm6, xmmword [ebp - 0x30]
sub ecx, eax
mov eax, dword [ebp - 0x14]
xorps xmm4, xmm4
movups xmm0, xmmword [edx + edi]
movaps xmm3, xmm4
movaps xmm2, xmm6
pxor xmm2, xmm0
pcmpeqb xmm3, xmm0
movups xmm0, xmmword [eax + edx]
pandn xmm3, xmm5
pand xmm2, xmm3
movaps xmm1, xmm3
pandn xmm1, xmm0
por xmm2, xmm1
pand xmm2, xmm3
pandn xmm3, xmm4
por xmm2, xmm3
movups xmmword [eax + edx], xmm2
add edx, 0x10
cmp edx, ecx
jl 0x421f41
mov eax, dword [ebp - 8]
cmp edx, esi
jge 0x421ff9
mov ch, byte [ebp - 1]
add eax, 0x50
mov dword [ebp - 0x14], eax
mov cl, byte [edx + edi]
mov al, ch
xor al, cl
neg cl
sbb cl, cl
and cl, al
mov eax, dword [ebp - 0x14]
mov byte [eax + edx], cl
inc edx
cmp edx, esi
jl 0x421f91
jmp 0x421ff9
cmp eax, 3
jne 0x422017
mov al, byte [edx + 0x30]
mov byte [ebp - 1], al
lea eax, [esi + 0x50]
mov dword [ebp - 0xc], eax
push eax
mov eax, dword [ecx + 8]
call eax
mov edx, eax
add esp, 4
mov dword [ebp - 8], edx
test edx, edx
je 0x422014
xor ecx, ecx
test esi, esi
jle 0x421ffc
lea eax, [edx + 0x50]
mov dl, byte [ebp - 1]
mov dword [ebp - 0x14], eax
nop dword [eax]
mov al, byte [ecx + edi]
test al, al
je 0x421fed
cmp al, dl
je 0x421fed
xor al, dl
mov esi, dword [ebp - 0x14]
mov byte [esi + ecx], al
inc ecx
cmp ecx, dword [ebx + 0xc]
jl 0x421fe0
mov edx, dword [ebp - 8]
mov esi, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x14]
mov eax, dword [ebp - 0xc]
mov dword [esi], edx
mov dword [ecx], eax
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov ecx, dword [ebp - 0x10]
mov esi, dword [ebx + 0x10]
mov eax, dword [ecx + 0xc]
push dword [esi]
call eax
mov eax, dword [ebx + 0x14]
add esp, 4
mov dword [esi], 0
mov dword [eax], 0
mov eax, 0xfffffffe
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
pop edi
or eax, 0xffffffff
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret