Function at 0x4386c0
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 8]
mov eax, ecx
cdq
push ebx
and edx, 3
push ebp
add eax, edx
push esi
sar eax, 2
test eax, eax
push edi
mov edi, dword [esp + 0x1c]
jle 0x4386f2
mov esi, dword [esp + 0x14]
mov edx, edi
sub esi, edi
mov ebx, eax
mov ebp, dword [esi + edx]
mov dword [edx], ebp
add edx, 4
sub ebx, 1
jne 0x4386e5
cmp ecx, 0x20
jge 0x438714
and ecx, 0x80000003
jns 0x438704
dec ecx
or ecx, 0xfffffffc
inc ecx
add ecx, ecx
add ecx, ecx
add ecx, ecx
mov edx, 1
shl edx, cl
or dword [edi + eax*4], edx
mov esi, dword [edi + 0x1c]
lea eax, [edi + 0x20]
mov edi, 3
lea ecx, [eax - 0x1c]
mov dword [esp + 0x18], 0x16
lea ebx, [ebx]
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
xor esi, dword [ecx - 4]
mov ebp, dword [ecx]
xor esi, dword [ecx - 0x18]
xor esi, edx
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
xor edx, esi
mov esi, dword [ecx + 4]
xor esi, dword [ecx - 4]
xor edx, 0x9e3779b9
xor esi, dword [ecx - 0x10]
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
xor edx, dword [ecx - 0xc]
mov dword [ecx + 0x10], esi
xor edx, dword [ecx + 8]
xor edx, esi
lea esi, [edi + 2]
xor esi, dword [ecx + 4]
xor edx, 0x9e3779b9
xor esi, ebx
xor esi, dword [ecx + 0xc]
rol edx, 0xb
xor esi, edx
xor esi, 0x9e3779b9
rol esi, 0xb
mov dword [ecx + 0x14], edx
mov dword [ecx + 0x18], esi
add edi, 6
sub dword [esp + 0x18], 1
jne 0x438730
sub eax, 0x50
mov dword [esp + 0x1c], 4
jmp 0x4387f0
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 ebp, dword [eax + 0x80]
mov esi, dword [eax + 0x88]
mov ecx, dword [eax + 0x8c]
mov ebx, dword [eax + 0x84]
mov dword [eax + 0x7c], edx
xor ecx, ebp
mov edi, ecx
and edi, ebx
xor edi, ebp
mov edx, esi
xor edx, ebx
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 dword [eax + 0x88], esi
mov dword [esp + 0x18], ebp
mov ebp, ecx
or ecx, ebx
xor ebp, edi
xor ebp, edx
mov edi, ecx
xor ecx, edx
mov dword [eax + 0x84], ecx
xor edi, ebp
mov dword [eax + 0x80], edi
mov dword [eax + 0x8c], ebx
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 + 0x18], ebp
mov ebp, dword [eax + 0x28]
mov dword [eax + 0x1c], esi
mov esi, dword [eax + 0x20]
mov dword [eax + 0x14], edx
mov edx, ecx
and ecx, esi
not ebp
xor ecx, ebp
mov edi, edx
or edi, ebp
xor esi, edx
xor ebx, ecx
xor edi, esi
or esi, ebx
xor edi, ebx
xor edx, esi
mov ebp, ecx
xor edx, 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 + 0x24], ebx
mov dword [eax + 0x2c], edx
mov edx, dword [eax + 0x30]
xor edx, edi
xor edi, esi
not esi
xor ecx, esi
mov dword [esp + 0x18], edi
mov ebx, edx
and ebx, edi
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
and esi, ebx
xor esi, edx
and edx, edi
mov dword [eax + 0x40], edi
mov dword [eax + 0x20], ebp
mov ebp, edi
xor ecx, edx
or ebp, ebx
mov edi, ecx
and edi, esi
xor ebp, edx
xor edi, ebp
mov dword [eax + 0x44], edi
mov edi, ecx
or edi, edx
xor edi, esi
sub dword [esp + 0x1c], 1
not edi
mov dword [eax + 0x48], edi
mov dword [eax + 0x4c], ecx
jne 0x4387f0
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