Function at 0x422b28
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov ebx, dword [edx]
mov edi, dword [edx + 4]
mov eax, dword [edx + 8]
mov dword [esp], edx
mov esi, dword [edx + 0xc]
mov edx, 0xfffffff0
mov ebp, dword [ecx + edx*4 + 0x40]
mov dword [esp + edx*4 + 0x44], ebp
inc edx
jne 0x422b42
mov ecx, 0xfffffffc
mov edx, esi
xor edx, eax
and edx, edi
xor edx, esi
add edx, ebx
add edx, dword [esp + ecx*4 + 0x14]
add edx, dword [ecx*4 + 0x42ddc0]
rol edx, 7
mov ebx, edx
add ebx, edi
mov edx, eax
xor edx, edi
and edx, ebx
add esi, dword [esp + ecx*4 + 0x18]
add esi, dword [ecx*4 + 0x42ddc4]
xor edx, eax
add esi, edx
rol esi, 0xc
add esi, ebx
mov edx, ebx
xor edx, edi
and edx, esi
add eax, dword [esp + ecx*4 + 0x1c]
add eax, dword [ecx*4 + 0x42ddc8]
xor edx, edi
add eax, edx
rol eax, 0x11
add eax, esi
mov edx, esi
xor edx, ebx
and edx, eax
add edi, dword [esp + ecx*4 + 0x20]
add edi, dword [ecx*4 + 0x42ddcc]
xor edx, ebx
add edi, edx
rol edi, 0x16
add edi, eax
add ecx, 4
cmp ecx, 0xc
jb 0x422b52
mov ecx, 0xc
mov edx, eax
xor edx, edi
and edx, esi
xor edx, eax
add edx, ebx
movzx ebx, byte [ecx + 0x42dea4]
add edx, dword [esp + ebx*4 + 4]
add edx, dword [ecx*4 + 0x42ddc0]
rol edx, 5
mov ebx, edx
add ebx, edi
mov edx, ebx
xor edx, edi
and edx, eax
movzx ebp, byte [ecx + 0x42dea5]
add esi, dword [esp + ebp*4 + 4]
xor edx, edi
add esi, dword [ecx*4 + 0x42ddc4]
add esi, edx
rol esi, 9
add esi, ebx
mov edx, esi
xor edx, ebx
and edx, edi
xor edx, ebx
movzx ebp, byte [ecx + 0x42dea6]
add eax, dword [esp + ebp*4 + 4]
add eax, dword [ecx*4 + 0x42ddc8]
add eax, edx
rol eax, 0xe
add eax, esi
mov edx, eax
xor edx, esi
and edx, ebx
movzx ebp, byte [ecx + 0x42dea7]
add edi, dword [esp + ebp*4 + 4]
add edi, dword [ecx*4 + 0x42ddcc]
xor edx, esi
add edi, edx
rol edi, 0x14
add edi, eax
add ecx, 4
cmp ecx, 0x1c
jb 0x422bc9
xor ecx, ecx
mov edx, eax
xor edx, edi
mov ebp, edx
xor ebp, esi
add ebp, ebx
movzx ebx, byte [ecx + 0x42dec0]
add ebp, dword [esp + ebx*4 + 4]
add ebp, dword [ecx*4 + 0x42de30]
rol ebp, 4
mov ebx, ebp
add ebx, edi
xor edx, ebx
movzx ebp, byte [ecx + 0x42dec1]
add esi, dword [esp + ebp*4 + 4]
add esi, dword [ecx*4 + 0x42de34]
add esi, edx
rol esi, 0xb
add esi, ebx
mov edx, ebx
xor edx, edi
xor edx, esi
movzx ebp, byte [ecx + 0x42dec2]
add eax, dword [esp + ebp*4 + 4]
add eax, dword [ecx*4 + 0x42de38]
add eax, edx
rol eax, 0x10
add eax, esi
mov edx, esi
xor edx, ebx
xor edx, eax
movzx ebp, byte [ecx + 0x42dec3]
add edi, dword [esp + ebp*4 + 4]
add edi, dword [ecx*4 + 0x42de3c]
add edi, edx
rol edi, 0x17
add edi, eax
lea edx, [ecx + 4]
add ecx, 0x20
cmp ecx, 0x2c
mov ecx, edx
jb 0x422c5d
xor edx, edx
mov ebp, esi
not ebp
or ebp, edi
xor ebp, eax
add ebp, ebx
movzx ecx, byte [edx + 0x42ded0]
add ebp, dword [esp + ecx*4 + 4]
movzx ecx, byte [edx + 0x42ded1]
add esi, dword [esp + ecx*4 + 4]
mov ecx, eax
movzx ebx, byte [edx + 0x42ded2]
add eax, dword [esp + ebx*4 + 4]
add ebp, dword [edx*4 + 0x42de70]
rol ebp, 6
not ecx
add esi, dword [edx*4 + 0x42de74]
mov ebx, ebp
add ebx, edi
or ecx, ebx
xor ecx, edi
add ecx, esi
movzx esi, byte [edx + 0x42ded3]
mov ebp, dword [esp + esi*4 + 4]
add ebp, edi
add eax, dword [edx*4 + 0x42de78]
add ebp, dword [edx*4 + 0x42de7c]
not edi
rol ecx, 0xa
mov esi, ecx
add esi, ebx
or edi, esi
xor edi, ebx
add edi, eax
rol edi, 0xf
mov eax, edi
add eax, esi
mov edi, ebx
not edi
or edi, eax
xor edi, esi
add edi, ebp
rol edi, 0x15
add edi, eax
lea ecx, [edx + 4]
add edx, 0x30
cmp edx, 0x3c
mov edx, ecx
jb 0x422cec
mov ecx, dword [esp]
movdqu xmm0, xmmword [ecx]
movd xmm1, esi
movd xmm2, eax
punpckldq xmm2, xmm1
movd xmm1, edi
movd xmm3, ebx
punpckldq xmm3, xmm1
punpcklqdq xmm3, xmm2
paddd xmm3, xmm0
movdqu xmmword [ecx], xmm3
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret