Function at 0x697a60
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6ce36d
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x48
mov eax, dword [0x772a40]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebx + 8]
lea ecx, [ebp - 0x48]
mov eax, dword [ebx + 0x10]
mov esi, dword [ebx + 0x14]
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x20], 8
mov byte [ebp - 0x27], 1
mov dword [ebp - 0x1c], ecx
push esi
push eax
push 8
mov eax, ecx
mov dword [ebp - 4], 0
push eax
push 0
call fcn.00694d80
add esp, 0x14
cmp esi, 0x20
jae 0x697af0
mov eax, dword [ebp - 0x1c]
mov ecx, esi
shr ecx, 2
and esi, 3
shl esi, 3
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
bts eax, esi
mov dword [ecx], eax
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax + 0x14]
xor ecx, dword [eax + 0xc]
xor ecx, dword [eax + 0x1c]
xor ecx, dword [eax]
xor ecx, 0x9e3779b9
rol ecx, 0xb
mov dword [eax], ecx
mov eax, dword [ebp - 0x1c]
mov dword [edi], ecx
mov edx, dword [eax + 0x18]
xor edx, dword [eax + 0x10]
xor edx, dword [eax + 4]
xor edx, ecx
xor edx, 0x9e3779b8
rol edx, 0xb
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x1c]
mov dword [edi + 4], edx
mov ecx, dword [eax + 0x1c]
xor ecx, dword [eax + 0x14]
xor ecx, edx
xor ecx, dword [eax + 8]
xor ecx, 0x9e3779bb
rol ecx, 0xb
mov dword [eax + 8], ecx
mov eax, dword [ebp - 0x1c]
mov dword [edi + 8], ecx
mov esi, dword [eax + 0x18]
xor esi, ecx
xor esi, dword [eax]
xor esi, dword [eax + 0xc]
xor esi, 0x9e3779ba
rol esi, 0xb
mov dword [eax + 0xc], esi
lea eax, [edi + 0xc]
mov ecx, dword [ebp - 0x1c]
mov dword [eax], esi
mov edx, dword [ecx + 0x1c]
xor edx, dword [ecx + 4]
xor edx, esi
xor edx, dword [ecx + 0x10]
xor edx, 0x9e3779bd
rol edx, 0xb
mov dword [ecx + 0x10], edx
mov ecx, dword [ebp - 0x1c]
mov dword [edi + 0x10], edx
mov esi, dword [ecx + 8]
xor esi, edx
xor esi, dword [ecx + 0x14]
xor esi, dword [ecx]
xor esi, 0x9e3779bc
rol esi, 0xb
mov dword [ecx + 0x14], esi
mov ecx, dword [ebp - 0x1c]
mov dword [edi + 0x14], esi
mov edx, dword [ecx + 0xc]
xor edx, dword [ecx + 4]
xor edx, esi
xor edx, dword [ecx + 0x18]
xor edx, 0x9e3779bf
rol edx, 0xb
mov dword [ecx + 0x18], edx
mov ecx, dword [ebp - 0x1c]
mov dword [edi + 0x18], edx
mov esi, dword [ecx + 0x10]
xor esi, dword [ecx + 8]
xor esi, edx
mov edx, 8
xor esi, dword [ecx + 0x1c]
xor esi, 0x9e3779be
rol esi, 0xb
mov dword [ecx + 0x1c], esi
mov ecx, dword [ebx + 0xc]
mov dword [edi + 0x1c], esi
lea ecx, [ecx*4 + 4]
cmp ecx, edx
jbe 0x697c14
mov edi, ecx
nop dword [eax + eax]
mov ecx, dword [eax - 0xc]
lea eax, [eax + 4]
xor ecx, dword [eax + 4]
xor ecx, edx
inc edx
xor esi, ecx
xor esi, dword [eax - 4]
xor esi, 0x9e3779b9
rol esi, 0xb
mov dword [eax + 0x10], esi
cmp edx, edi
jb 0x697bf0
mov edi, dword [ebp - 0x4c]
mov eax, dword [ebx + 0xc]
sub edi, 0x50
shr eax, 3
mov dword [ebp - 0x4c], edi
mov dword [ebx + 0xc], eax
test eax, eax
je 0x697ee8
nop dword [eax + eax]
mov ecx, dword [edi + 0x50]
mov esi, ecx
mov eax, dword [edi + 0x54]
mov edi, dword [edi + 0x58]
mov edx, dword [ebp - 0x4c]
mov edx, dword [edx + 0x5c]
or ecx, edx
xor edx, eax
and eax, esi
xor esi, edi
xor edi, edx
or esi, eax
mov dword [ebp - 0x50], edi
and edx, ecx
xor ecx, eax
xor edx, esi
mov dword [ebp - 0x54], ecx
and esi, dword [ebp - 0x54]
mov ecx, edx
xor ecx, eax
xor esi, dword [ebp - 0x50]
or ecx, dword [ebp - 0x54]
mov eax, edx
xor ecx, edi
mov edi, dword [ebp - 0x4c]
or eax, ecx
xor eax, edx
xor eax, dword [ebp - 0x54]
mov dword [edi + 0x50], eax
mov eax, edi
mov dword [eax + 0x54], ecx
mov ecx, edi
mov eax, dword [ecx + 0x60]
mov edi, eax
mov dword [ecx + 0x58], edx
mov edx, dword [ecx + 0x64]
mov dword [ecx + 0x5c], esi
mov esi, dword [ecx + 0x68]
and edi, esi
mov ecx, dword [ecx + 0x6c]
xor edi, ecx
mov dword [ebp - 0x50], eax
mov eax, edi
xor eax, edx
xor esi, eax
mov dword [ebp - 0x54], esi
mov esi, dword [ebp - 0x50]
mov eax, dword [ebp - 0x54]
or esi, ecx
xor esi, edx
mov edx, dword [ebp - 0x50]
xor edx, eax
mov ecx, edx
or ecx, esi
xor ecx, edi
and edi, esi
xor edx, edi
mov edi, dword [ebp - 0x4c]
mov dword [edi + 0x60], eax
mov eax, edx
xor eax, esi
mov dword [edi + 0x64], ecx
mov esi, dword [edi + 0x7c]
not edx
mov dword [edi + 0x6c], edx
xor eax, ecx
mov edx, dword [ebp - 0x4c]
mov dword [edi + 0x68], eax
mov eax, dword [edi + 0x74]
mov edi, dword [edi + 0x70]
mov edx, dword [edx + 0x78]
not edi
mov ecx, edi
not edx
and edi, eax
xor edx, edi
or edi, esi
xor eax, edi
xor esi, edx
xor edi, ecx
or ecx, eax
xor eax, esi
or edx, edi
xor edi, eax
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x4c]
and edx, ecx
mov dword [eax + 0x70], edx
mov eax, edx
and edx, dword [ebp - 0x50]
and eax, edi
xor eax, ecx
xor edx, edi
mov ecx, dword [ebp - 0x4c]
mov dword [ecx + 0x78], esi
mov esi, ecx
mov dword [ecx + 0x74], eax
mov ecx, dword [esi + 0x80]
mov edi, dword [esi + 0x88]
lea eax, [esi + 0x80]
mov dword [esi + 0x7c], edx
mov edx, dword [esi + 0x8c]
xor edx, ecx
mov dword [ebp - 0x58], eax
mov eax, dword [esi + 0x84]
mov dword [ebp - 0x50], edi
xor edi, eax
mov dword [ebp - 0x54], edx
and edx, eax
mov eax, dword [ebp - 0x54]
xor edx, ecx
mov esi, eax
or esi, ecx
mov ecx, dword [ebp - 0x50]
xor esi, edi
xor edi, eax
xor eax, ecx
or ecx, edx
xor ecx, edi
not edi
or edi, edx
mov dword [ebp - 0x50], ecx
mov ecx, eax
or eax, esi
xor ecx, edx
mov dword [ebp - 0x54], eax
mov edx, dword [ebp - 0x54]
xor ecx, edi
xor eax, ecx
xor edx, edi
mov ecx, dword [ebp - 0x58]
mov edi, dword [ebp - 0x50]
mov dword [ecx], eax
mov eax, dword [ebp - 0x4c]
mov dword [eax + 0x8c], esi
mov esi, ecx
mov dword [eax + 0x84], edx
mov dword [eax + 0x88], edi
mov dword [ebp - 0x4c], esi
mov eax, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
mov edi, dword [esi + 0x1c]
mov esi, edx
and esi, ecx
xor esi, edi
and edi, edx
xor ecx, esi
xor esi, edx
xor edx, eax
mov dword [ebp - 0x50], edx
mov edx, ecx
xor edi, dword [ebp - 0x50]
or edx, eax
xor edx, esi
xor esi, edi
mov eax, esi
and edi, edx
xor eax, ecx
xor edi, ecx
not eax
and esi, edx
mov ecx, dword [ebp - 0x4c]
xor esi, eax
and eax, edx
xor eax, dword [ebp - 0x50]
xor eax, edi
mov dword [ecx + 0x14], eax
mov eax, dword [ecx + 0x28]
mov dword [ecx + 0x18], edi
not eax
mov dword [ecx + 0x1c], edx
mov edx, dword [ecx + 0x2c]
mov edi, edx
mov dword [ecx + 0x10], esi
mov esi, dword [ecx + 0x20]
and edx, esi
mov ecx, dword [ecx + 0x24]
xor edx, eax
xor esi, edi
mov dword [ebp - 0x50], edx
xor ecx, edx
mov edx, edi
or edx, eax
mov dword [ebp - 0x58], ecx
mov eax, dword [ebp - 0x50]
xor edx, esi
or esi, ecx
xor edx, ecx
mov ecx, dword [ebp - 0x4c]
xor edi, esi
or eax, esi
mov esi, dword [ebp - 0x50]
xor edi, esi
xor eax, edx
xor edi, eax
not esi
mov dword [ecx + 0x20], eax
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x58]
mov dword [eax + 0x28], edi
and edi, edx
mov edx, dword [eax + 0x30]
xor edi, esi
mov esi, dword [eax + 0x34]
xor edx, esi
mov dword [eax + 0x2c], edi
mov edi, dword [eax + 0x3c]
xor esi, edi
mov dword [eax + 0x24], ecx
not edi
mov ecx, dword [eax + 0x38]
mov eax, edx
xor ecx, edi
and eax, esi
xor eax, ecx
or ecx, esi
xor esi, edi
and edi, eax
xor esi, ecx
xor edi, edx
xor esi, eax
xor ecx, edx
mov dword [ebp - 0x58], esi
not ecx
mov esi, dword [ebp - 0x4c]
mov dword [esi + 0x30], eax
mov eax, esi
mov dword [eax + 0x34], edi
mov eax, edi
or edi, dword [ebp - 0x58]
and eax, edx
xor eax, dword [ebp - 0x58]
mov edx, esi
xor edi, ecx
mov dword [edx + 0x38], eax
mov eax, esi
mov ecx, dword [eax + 0x4c]
mov edx, dword [eax + 0x44]
mov dword [eax + 0x3c], edi
xor edx, ecx
mov edi, dword [eax + 0x40]
not ecx
mov esi, dword [eax + 0x48]
xor esi, ecx
xor ecx, edi
mov eax, ecx
and eax, edx
xor edx, ecx
xor eax, esi
xor edi, edx
and esi, edx
xor esi, edi
and edi, eax
xor ecx, edi
mov dword [ebp - 0x58], ecx
mov ecx, eax
or ecx, edx
mov edx, dword [ebp - 0x4c]
xor ecx, edi
mov dword [edx + 0x40], eax
mov edx, dword [ebp - 0x58]
mov eax, edx
and eax, esi
xor eax, ecx
mov ecx, dword [ebp - 0x4c]
mov dword [ecx + 0x44], eax
mov eax, edx
or eax, edi
mov edi, ecx
xor eax, esi
sub dword [ebx + 0xc], 1
not eax
mov dword [edi + 0x48], eax
mov dword [edi + 0x4c], edx
jne 0x697c30
mov ecx, dword [edi + 0x50]
mov esi, ecx
mov edx, dword [ebp - 0x4c]
mov eax, dword [edi + 0x54]
mov edi, dword [edi + 0x58]
mov edx, dword [edx + 0x5c]
or ecx, edx
xor edx, eax
and eax, esi
xor esi, edi
xor edi, edx
or esi, eax
and edx, ecx
xor ecx, eax
mov dword [ebp - 0x58], esi
xor edx, esi
mov dword [ebp - 0x50], ecx
mov esi, dword [ebp - 0x4c]
mov ecx, edx
xor ecx, eax
mov eax, edx
or ecx, dword [ebp - 0x50]
xor ecx, edi
or eax, ecx
xor eax, edx
xor eax, dword [ebp - 0x50]
mov dword [esi + 0x50], eax
mov eax, esi
mov esi, dword [ebp - 0x58]
and esi, dword [ebp - 0x50]
xor esi, edi
mov edi, dword [ebp - 0x1c]
mov dword [eax + 0x54], ecx
mov dword [eax + 0x58], edx
mov dword [eax + 0x5c], esi
lea eax, [ebp - 0x48]
cmp edi, eax
jne 0x697f4d
mov ecx, dword [ebp - 0x20]
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00616d7d
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret