Function at 0x69f8a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x2c]
test edi, edi
sete al
cmp dword [esp + 0x30], 0
sete cl
or cl, al
test edx, edx
sete al
or al, cl
jne 0x69fe0e
mov esi, dword [edx + 0x110]
cmp esi, 0x10
ja 0x69fe0e
mov eax, 0x15000
bt eax, esi
jae 0x69fe0e
mov ecx, dword [edi]
mov eax, dword [edi + 4]
bswap ecx
bswap eax
xor ecx, dword [edx]
xor eax, dword [edx + 4]
mov dword [esp + 0xc], esi
mov esi, ecx
movzx edi, ch
movzx ebx, cl
shr ecx, 0x18
shr esi, 0xe
and esi, 0x3fc
mov esi, dword [esi + 0x9ad500]
xor esi, dword [ecx*4 + 0x9ad100]
xor esi, dword [edi*4 + 0x9ad900]
xor esi, dword [ebx*4 + 0x9add00]
mov ecx, eax
movzx edi, ah
movzx ebp, al
mov ebx, eax
shr ebx, 0x18
shr ecx, 0xe
and ecx, 0x3fc
mov eax, dword [ecx + 0x9ad500]
xor eax, dword [ebx*4 + 0x9ad100]
mov ecx, dword [esp + 0x2c]
mov ebx, dword [ecx + 8]
bswap ebx
xor ebx, dword [edx + 8]
xor eax, dword [edi*4 + 0x9ad900]
xor eax, dword [ebp*4 + 0x9add00]
mov ebp, edx
mov ecx, ebx
mov edx, ebx
shr edx, 0x18
shr ecx, 0xe
and ecx, 0x3fc
mov ecx, dword [ecx + 0x9ad500]
xor ecx, dword [edx*4 + 0x9ad100]
movzx edi, bh
movzx ebx, bl
mov edx, dword [esp + 0x2c]
mov edx, dword [edx + 0xc]
bswap edx
xor edx, dword [ebp + 0xc]
xor ecx, dword [edi*4 + 0x9ad900]
xor ecx, dword [ebx*4 + 0x9add00]
mov edi, edx
mov ebx, edx
shr ebx, 0x18
mov dword [esp], ebx
shr edi, 0xe
and edi, 0x3fc
mov ebx, dword [edi + 0x9ad500]
mov edi, dword [esp]
xor ebx, dword [edi*4 + 0x9ad100]
movzx edi, dh
xor ebx, dword [edi*4 + 0x9ad900]
movzx edx, dl
xor ebx, dword [edx*4 + 0x9add00]
xor eax, ecx
xor ecx, ebx
xor ebx, eax
xor eax, esi
mov edx, ecx
xor edx, eax
xor ecx, esi
bswap ecx
ror ecx, 0x10
rol edx, 0x10
bswap ebx
xor ecx, edx
xor edx, ebx
xor ebx, dword [ebp + 0x1c]
xor ebx, ecx
mov dword [esp + 4], ebx
mov ebx, edx
mov esi, ecx
xor esi, eax
xor eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
xor eax, edx
xor ebx, dword [ebp + 0x18]
xor ecx, esi
xor ebx, esi
mov edx, dword [esp + 0xc]
add ebp, 0x20
add edx, 2
mov dword [esp + 0xc], edx
mov dword [esp], ebp
mov esi, ecx
movzx edi, ch
movzx ebp, cl
shr ecx, 0x18
shr esi, 0xe
and esi, 0x3fc
mov esi, dword [esi + 0x9add00]
xor esi, dword [ecx*4 + 0x9ad900]
xor esi, dword [edi*4 + 0x9ad100]
xor esi, dword [ebp*4 + 0x9ad500]
mov ecx, eax
movzx edi, ah
movzx ebp, al
shr eax, 0x18
shr ecx, 0xe
and ecx, 0x3fc
mov ecx, dword [ecx + 0x9add00]
xor ecx, dword [eax*4 + 0x9ad900]
xor ecx, dword [edi*4 + 0x9ad100]
xor ecx, dword [ebp*4 + 0x9ad500]
mov eax, ebx
movzx edi, bh
movzx ebp, bl
shr ebx, 0x18
shr eax, 0xe
and eax, 0x3fc
mov edx, dword [eax + 0x9add00]
xor edx, dword [ebx*4 + 0x9ad900]
xor edx, dword [edi*4 + 0x9ad100]
xor edx, dword [ebp*4 + 0x9ad500]
mov ebx, dword [esp + 4]
mov eax, ebx
movzx edi, bh
mov dword [esp + 8], edi
movzx ebp, bl
mov edi, ebx
shr edi, 0x18
shr eax, 0xe
and eax, 0x3fc
mov ebx, dword [eax + 0x9add00]
xor ebx, dword [edi*4 + 0x9ad900]
mov eax, dword [esp + 8]
xor ebx, dword [eax*4 + 0x9ad100]
xor ebx, dword [ebp*4 + 0x9ad500]
xor ecx, edx
xor edx, ebx
xor ebx, ecx
xor ecx, esi
mov edi, edx
xor edi, ecx
xor edx, esi
rol ecx, 0x10
bswap edx
xor edx, edi
mov eax, edx
xor eax, ecx
mov esi, eax
mov dword [esp + 8], eax
mov eax, dword [esp]
mov eax, dword [eax]
xor eax, esi
mov dword [esp + 4], eax
shr dword [esp + 4], 0x18
mov esi, eax
shr esi, 0xe
and esi, 0x3fc
mov esi, dword [esi + 0x9ad500]
mov ebp, dword [esp + 4]
xor esi, dword [ebp*4 + 0x9ad100]
mov dword [esp + 4], esi
movzx esi, ah
mov dword [esp + 0x14], esi
movzx eax, al
mov dword [esp + 0x10], eax
bswap ebx
ror ebx, 0x10
mov eax, dword [esp]
xor ecx, dword [eax + 4]
xor edi, ebx
xor ecx, edi
mov eax, ecx
shr eax, 0x18
mov esi, eax
mov eax, ecx
shr eax, 0xe
and eax, 0x3fc
mov eax, dword [eax + 0x9ad500]
xor eax, dword [esi*4 + 0x9ad100]
mov ebp, dword [esp]
mov esi, dword [esp + 8]
xor esi, dword [ebp + 8]
mov ebp, esi
xor ebp, edi
mov edi, dword [esp]
xor edx, dword [edi + 0xc]
xor edx, ebx
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x14]
xor esi, dword [edi*4 + 0x9ad900]
mov edi, dword [esp + 0x10]
xor esi, dword [edi*4 + 0x9add00]
movzx edi, ch
movzx ecx, cl
xor eax, dword [edi*4 + 0x9ad900]
xor eax, dword [ecx*4 + 0x9add00]
mov ecx, ebp
mov ebx, ebp
shr ebx, 0x18
shr ecx, 0xe
and ecx, 0x3fc
mov ecx, dword [ecx + 0x9ad500]
xor ecx, dword [ebx*4 + 0x9ad100]
mov ebx, ebp
movzx edi, bh
movzx ebx, bl
xor ecx, dword [edi*4 + 0x9ad900]
xor ecx, dword [ebx*4 + 0x9add00]
mov edi, edx
mov ebx, edx
shr ebx, 0x18
shr edi, 0xe
and edi, 0x3fc
mov ebp, dword [edi + 0x9ad500]
xor ebp, dword [ebx*4 + 0x9ad100]
movzx edi, dh
xor ebp, dword [edi*4 + 0x9ad900]
movzx edx, dl
xor ebp, dword [edx*4 + 0x9add00]
xor eax, ecx
xor ecx, ebp
xor ebp, eax
xor eax, esi
mov ebx, ecx
xor ebx, eax
xor ecx, esi
bswap ecx
ror ecx, 0x10
rol ebx, 0x10
bswap ebp
xor ecx, ebx
xor ebx, ebp
mov edx, dword [esp]
xor ebp, dword [edx + 0x1c]
xor ebp, ecx
mov dword [esp + 4], ebp
mov ebp, edx
mov esi, ecx
xor esi, eax
mov ecx, dword [edx + 0x10]
xor eax, dword [edx + 0x14]
xor ecx, esi
xor eax, ebx
xor ebx, dword [edx + 0x18]
xor ebx, esi
mov edx, dword [esp + 0xc]
add ebp, 0x20
add edx, 0xfffffffe
cmp edx, 4
ja 0x69fa20
mov edx, ebx
mov ebx, ecx
shr ebx, 0x18
mov edi, dword [ebx*4 + 0x9ad900]
shl edi, 0x18
mov esi, ecx
shr esi, 0xe
and esi, 0x3fc
mov esi, dword [esi + 0x9add00]
shl esi, 8
and esi, 0xff0000
or esi, edi
movzx edi, ch
mov edi, dword [edi*4 + 0x9ad100]
shl edi, 8
movzx edi, di
or edi, esi
movzx ecx, cl
mov ebx, eax
shr ebx, 0x18
mov esi, dword [ebx*4 + 0x9ad900]
movzx ecx, byte [ecx*4 + 0x9ad500]
or ecx, edi
mov dword [esp], ecx
shl esi, 0x18
mov edi, eax
shr edi, 0xe
and edi, 0x3fc
mov edi, dword [edi + 0x9add00]
shl edi, 8
and edi, 0xff0000
or edi, esi
movzx esi, ah
mov esi, dword [esi*4 + 0x9ad100]
shl esi, 8
movzx ebx, si
or ebx, edi
movzx eax, al
mov ecx, edx
shr edx, 0x18
mov esi, dword [edx*4 + 0x9ad900]
movzx eax, byte [eax*4 + 0x9ad500]
or eax, ebx
shl esi, 0x18
mov edx, ecx
shr edx, 0xe
and edx, 0x3fc
mov edi, dword [edx + 0x9add00]
shl edi, 8
and edi, 0xff0000
or edi, esi
movzx edx, ch
mov edx, dword [edx*4 + 0x9ad100]
shl edx, 8
movzx ebx, dx
or ebx, edi
movzx edi, cl
mov ecx, dword [esp + 4]
mov edx, ecx
shr edx, 0x18
mov esi, dword [edx*4 + 0x9ad900]
movzx edx, byte [edi*4 + 0x9ad500]
or edx, ebx
shl esi, 0x18
mov edi, ecx
shr edi, 0xe
and edi, 0x3fc
mov edi, dword [edi + 0x9add00]
shl edi, 8
and edi, 0xff0000
or edi, esi
movzx esi, ch
mov esi, dword [esi*4 + 0x9ad100]
shl esi, 8
movzx esi, si
or esi, edi
movzx edi, cl
movzx ebx, byte [edi*4 + 0x9ad500]
or ebx, esi
mov edi, dword [esp]
xor edi, dword [ebp]
xor eax, dword [ebp + 4]
xor edx, dword [ebp + 8]
xor ebx, dword [ebp + 0xc]
mov ecx, edi
shr ecx, 0x18
mov esi, dword [esp + 0x30]
mov byte [esi], cl
mov ecx, edi
shr ecx, 0x10
mov byte [esi + 1], cl
mov ecx, edi
mov byte [esi + 2], ch
mov byte [esi + 3], cl
mov ecx, eax
shr ecx, 0x18
mov byte [esi + 4], cl
mov ecx, eax
shr ecx, 0x10
mov byte [esi + 5], cl
mov byte [esi + 6], ah
mov byte [esi + 7], al
mov eax, edx
shr eax, 0x18
mov byte [esi + 8], al
mov eax, edx
shr eax, 0x10
mov byte [esi + 9], al
mov byte [esi + 0xa], dh
mov byte [esi + 0xb], dl
mov eax, ebx
shr eax, 0x18
mov byte [esi + 0xc], al
mov eax, ebx
shr eax, 0x10
mov byte [esi + 0xd], al
mov byte [esi + 0xe], bh
mov byte [esi + 0xf], bl
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret