Function at 0x42c690
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 8]
mov eax, ecx
cdq
push ebx
and edx, 3
add eax, edx
push ebp
push esi
mov esi, dword [esp + 0x18]
sar eax, 2
test eax, eax
push edi
jle 0x42c6c0
mov edi, dword [esp + 0x14]
mov edx, esi
sub edi, esi
mov ebx, eax
mov ebp, dword [edi + edx]
mov dword [edx], ebp
add edx, 4
dec ebx
jne 0x42c6b5
cmp ecx, 0x20
jge 0x42c6df
and ecx, 0x80000003
jns 0x42c6d2
dec ecx
or ecx, 0xfffffffc
inc ecx
shl ecx, 3
mov edx, 1
shl edx, cl
or dword [esi + eax*4], edx
lea eax, [esi + 0x20]
mov esi, dword [eax - 4]
mov edi, 3
lea ecx, [eax - 0x1c]
mov dword [esp + 0x18], 0x16
mov ebx, dword [ecx + 0x10]
mov ebp, dword [ecx + 8]
lea edx, [edi - 3]
xor edx, dword [ecx - 4]
add ecx, 0x18
xor edx, ebx
xor edx, ebp
xor edx, esi
mov ebp, dword [ecx - 0xc]
xor edx, 0x9e3779b9
rol edx, 0xb
mov dword [ecx + 4], edx
lea esi, [edi - 2]
xor esi, ebp
mov ebp, dword [ecx - 4]
xor esi, ebp
mov ebp, dword [ecx - 0x18]
xor esi, ebp
xor esi, edx
mov ebp, dword [ecx]
xor esi, 0x9e3779b9
rol esi, 0xb
mov dword [ecx + 8], esi
lea edx, [edi - 1]
xor edx, dword [ecx - 0x14]
xor edx, ebx
xor edx, ebp
mov ebp, dword [ecx - 4]
xor edx, esi
mov esi, dword [ecx + 4]
xor esi, ebp
mov ebp, dword [ecx - 0x10]
xor esi, ebp
mov ebp, dword [ecx]
xor edx, 0x9e3779b9
rol edx, 0xb
xor esi, edi
xor esi, edx
mov dword [ecx + 0xc], edx
xor esi, 0x9e3779b9
rol esi, 0xb
lea edx, [edi + 1]
xor edx, ebp
mov ebp, dword [ecx - 0xc]
xor edx, ebp
mov ebp, dword [ecx + 8]
xor edx, ebp
mov ebp, dword [ecx + 4]
xor edx, esi
mov dword [ecx + 0x10], esi
lea esi, [edi + 2]
xor esi, ebp
mov ebp, dword [ecx + 0xc]
xor esi, ebx
xor edx, 0x9e3779b9
rol edx, 0xb
xor esi, ebp
xor esi, edx
xor esi, 0x9e3779b9
mov dword [ecx + 0x14], edx
mov edx, dword [esp + 0x18]
rol esi, 0xb
mov dword [ecx + 0x18], esi
add edi, 6
dec edx
mov dword [esp + 0x18], edx
jne 0x42c6f5
sub eax, 0x50
mov dword [esp + 0x1c], 4
mov edx, dword [eax + 0x50]
mov esi, dword [eax + 0x5c]
mov ebx, dword [eax + 0x54]
mov ebp, dword [eax + 0x58]
mov ecx, edx
or edx, esi
xor esi, ebx
and ebx, ecx
xor ecx, ebp
or ecx, ebx
xor ebp, esi
and esi, edx
xor esi, ecx
xor edx, ebx
and ecx, edx
mov edi, esi
xor edi, ebx
or edi, edx
xor edi, ebp
mov ebx, esi
or ebx, edi
xor ebx, esi
xor ebx, edx
mov edx, dword [eax + 0x60]
xor ecx, ebp
mov ebp, dword [eax + 0x6c]
mov dword [eax + 0x5c], ecx
mov ecx, edx
mov dword [eax + 0x50], ebx
mov ebx, dword [eax + 0x68]
and edx, ebx
xor edx, ebp
mov dword [eax + 0x58], esi
mov esi, edx
mov dword [eax + 0x54], edi
mov edi, dword [eax + 0x64]
xor esi, edi
xor ebx, esi
mov esi, ecx
xor ecx, ebx
or esi, ebp
xor esi, edi
mov edi, ecx
or edi, esi
xor edi, edx
and edx, esi
xor ecx, edx
mov edx, ecx
xor edx, esi
mov esi, dword [eax + 0x74]
xor edx, edi
not ecx
mov dword [eax + 0x6c], ecx
mov ecx, dword [eax + 0x70]
mov dword [eax + 0x68], edx
mov edx, dword [eax + 0x78]
not ecx
not edx
mov dword [eax + 0x60], ebx
mov ebx, ecx
and ecx, esi
xor edx, ecx
mov dword [eax + 0x64], edi
mov edi, dword [eax + 0x7c]
or ecx, edi
xor esi, ecx
xor edi, edx
xor ecx, ebx
or ebx, esi
or edx, ecx
and edx, ebx
xor esi, edi
mov ebp, edx
xor ecx, esi
and ebp, ecx
mov dword [eax + 0x70], edx
xor ebp, ebx
and edx, esi
mov dword [eax + 0x74], ebp
mov dword [eax + 0x78], edi
xor edx, ecx
mov ebx, dword [eax + 0x80]
mov ecx, dword [eax + 0x8c]
mov ebp, dword [eax + 0x84]
mov esi, dword [eax + 0x88]
mov dword [eax + 0x7c], edx
xor ecx, ebx
mov edi, ecx
and edi, ebp
xor edi, ebx
mov edx, esi
xor edx, ebp
mov dword [esp + 0x18], ebx
mov ebp, dword [esp + 0x18]
mov ebx, ecx
or ebx, ebp
xor ebx, edx
xor edx, ecx
xor ecx, esi
or esi, edi
xor esi, edx
not edx
or edx, edi
mov ebp, ecx
or ecx, ebx
xor ebp, edi
xor ebp, edx
mov dword [eax + 0x88], esi
mov edi, ecx
xor ecx, edx
mov dword [eax + 0x84], ecx
mov dword [eax + 0x8c], ebx
xor edi, ebp
mov dword [eax + 0x80], edi
mov edi, dword [eax + 0x94]
mov ebx, dword [eax + 0x98]
mov edx, dword [eax + 0x9c]
mov ebp, dword [eax + 0x90]
add eax, 0x80
mov ecx, edi
and ecx, ebx
xor ecx, edx
and edx, edi
xor ebx, ecx
xor ecx, edi
xor edi, ebp
xor edx, edi
mov esi, ebx
or esi, ebp
xor esi, ecx
xor ecx, edx
and edx, esi
xor edx, ebx
mov ebp, edx
mov edx, ecx
xor edx, ebx
mov ebx, dword [eax + 0x24]
and ecx, esi
not edx
xor ecx, edx
and edx, esi
xor edx, edi
xor edx, ebp
mov dword [eax + 0x10], ecx
mov ecx, dword [eax + 0x2c]
mov dword [eax + 0x1c], esi
mov esi, dword [eax + 0x20]
mov dword [eax + 0x18], ebp
mov ebp, dword [eax + 0x28]
mov dword [eax + 0x14], edx
mov edx, ecx
and ecx, esi
not ebp
mov edi, edx
xor esi, edx
xor ecx, ebp
or edi, ebp
xor ebx, ecx
xor edi, esi
or esi, ebx
xor edi, ebx
xor edx, esi
xor edx, ecx
mov ebp, ecx
or ebp, esi
mov esi, dword [eax + 0x3c]
xor ebp, edi
xor edx, ebp
not ecx
mov dword [eax + 0x28], edx
and edx, edi
mov edi, dword [eax + 0x34]
xor edx, ecx
mov ecx, dword [eax + 0x38]
mov dword [eax + 0x2c], edx
mov edx, dword [eax + 0x30]
xor edx, edi
xor edi, esi
mov dword [eax + 0x24], ebx
not esi
xor ecx, esi
mov dword [esp + 0x18], edi
mov dword [eax + 0x20], ebp
mov ebp, edi
mov ebx, edx
and ebx, ebp
xor ebx, ecx
or ecx, edi
xor edi, esi
xor edi, ecx
xor edi, ebx
and esi, ebx
xor esi, edx
xor ecx, edx
mov dword [eax + 0x30], ebx
mov ebx, esi
and ebx, edx
mov edx, dword [eax + 0x40]
xor ebx, edi
mov dword [eax + 0x34], esi
or esi, edi
not ecx
xor esi, ecx
mov ecx, dword [eax + 0x4c]
mov dword [eax + 0x38], ebx
mov ebx, dword [eax + 0x44]
xor ebx, ecx
mov dword [eax + 0x3c], esi
mov esi, dword [eax + 0x48]
not ecx
xor esi, ecx
xor ecx, edx
mov edi, ecx
and edi, ebx
xor edi, esi
xor ebx, ecx
xor edx, ebx
mov ebp, edi
and esi, ebx
xor esi, edx
and edx, edi
mov dword [eax + 0x40], edi
xor ecx, edx
mov edi, ecx
and edi, esi
or ebp, ebx
xor ebp, edx
xor edi, ebp
mov dword [eax + 0x44], edi
mov edi, ecx
or edi, edx
mov dword [eax + 0x4c], ecx
mov ecx, dword [esp + 0x1c]
xor edi, esi
not edi
dec ecx
mov dword [eax + 0x48], edi
mov dword [esp + 0x1c], ecx
jne 0x42c7c6
mov edx, dword [eax + 0x50]
mov esi, dword [eax + 0x5c]
mov ebx, dword [eax + 0x54]
mov ebp, dword [eax + 0x58]
mov ecx, edx
or edx, esi
xor esi, ebx
and ebx, ecx
xor ecx, ebp
or ecx, ebx
xor ebp, esi
and esi, edx
xor esi, ecx
xor edx, ebx
mov edi, esi
xor edi, ebx
or edi, edx
xor edi, ebp
mov ebx, esi
or ebx, edi
xor ebx, esi
mov dword [eax + 0x54], edi
pop edi
mov dword [eax + 0x58], esi
and ecx, edx
pop esi
xor ebx, edx
xor ecx, ebp
pop ebp
mov dword [eax + 0x50], ebx
mov dword [eax + 0x5c], ecx
pop ebx
ret