Function at 0x100856f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x20]
lea ebx, [ecx + 1]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], 0x1e
movzx eax, byte [edi]
movzx esi, byte [edi + 2]
movzx edx, byte [edi + 1]
mov ecx, esi
movzx ebp, byte [edi + 3]
and ecx, 0xfffffffc
shl eax, 8
and esi, 7
or eax, edx
shl ebp, 9
shl eax, 8
or eax, ecx
movzx ecx, byte [edi + 4]
or eax, 4
or ebp, ecx
add eax, eax
or ebp, 0x100
or eax, esi
xor bh, bh
mov edx, eax
lea esi, [eax + eax]
mov ecx, eax
shr edx, 0x18
shr ecx, 0x15
lea edi, [ebp*2]
xor dl, cl
mov ecx, eax
shr ecx, 0x14
xor dl, cl
mov ecx, eax
shr ecx, 0xc
xor dl, cl
mov ecx, ebp
and dl, 1
shr ecx, 0x10
movzx eax, dl
or esi, eax
mov eax, ebp
shr eax, 2
xor cl, al
and cl, 1
movzx eax, cl
or edi, eax
test cl, cl
mov ecx, edi
sete bl
test dl, dl
mov edx, esi
sete al
shr edx, 0x18
add bl, al
shr ecx, 0x10
add bl, bh
mov al, bl
and al, 1
mov byte [esp + 0x20], al
mov eax, esi
shr eax, 0x15
xor dl, al
mov eax, esi
shr eax, 0x14
xor dl, al
mov eax, esi
shr eax, 0xc
add esi, esi
xor dl, al
and dl, 1
movzx eax, dl
or esi, eax
mov eax, edi
shr eax, 2
add edi, edi
xor cl, al
and cl, 1
movzx eax, cl
or edi, eax
test cl, cl
sete bh
shr bl, 1
and bl, 1
add bh, bl
test dl, dl
mov edx, esi
sete al
shr edx, 0x18
add bh, al
mov al, bh
and al, 1
add al, al
or byte [esp + 0x20], al
mov eax, esi
shr eax, 0x15
xor dl, al
mov eax, esi
shr eax, 0x14
xor dl, al
mov eax, esi
shr eax, 0xc
xor dl, al
and dl, 1
movzx eax, dl
add esi, esi
or esi, eax
mov ecx, edi
shr ecx, 0x10
mov eax, edi
shr eax, 2
add edi, edi
xor cl, al
and cl, 1
movzx eax, cl
or edi, eax
test cl, cl
mov ecx, edi
sete bl
shr bh, 1
and bh, 1
add bl, bh
test dl, dl
mov edx, esi
sete al
shr edx, 0x18
add bl, al
shr ecx, 0x10
mov al, bl
and al, 1
shl al, 2
or byte [esp + 0x20], al
mov eax, esi
shr eax, 0x15
xor dl, al
mov eax, esi
shr eax, 0x14
xor dl, al
mov eax, esi
shr eax, 0xc
add esi, esi
xor dl, al
and dl, 1
movzx eax, dl
or esi, eax
mov eax, edi
shr eax, 2
add edi, edi
xor cl, al
and cl, 1
movzx eax, cl
or edi, eax
test cl, cl
mov ecx, edi
sete bh
shr bl, 1
and bl, 1
add bh, bl
test dl, dl
mov edx, esi
sete al
shr edx, 0x18
add bh, al
shr ecx, 0x10
mov al, bh
and al, 1
shl al, 3
or byte [esp + 0x20], al
mov eax, esi
shr eax, 0x15
xor dl, al
mov eax, esi
shr eax, 0x14
xor dl, al
mov eax, esi
shr eax, 0xc
add esi, esi
xor dl, al
and dl, 1
movzx eax, dl
or esi, eax
mov eax, edi
shr eax, 2
xor cl, al
and cl, 1
movzx eax, cl
add edi, edi
or edi, eax
test cl, cl
mov ecx, edi
sete bl
shr bh, 1
and bh, 1
add bl, bh
test dl, dl
mov edx, esi
sete al
shr edx, 0x18
add bl, al
shr ecx, 0x10
mov al, bl
and al, 1
shl al, 4
or byte [esp + 0x20], al
mov eax, esi
shr eax, 0x15
xor dl, al
mov eax, esi
shr eax, 0x14
xor dl, al
mov eax, esi
shr eax, 0xc
add esi, esi
xor dl, al
and dl, 1
movzx eax, dl
or esi, eax
mov eax, edi
shr eax, 2
add edi, edi
xor cl, al
and cl, 1
movzx eax, cl
or edi, eax
test cl, cl
mov ecx, edi
sete bh
shr bl, 1
and bl, 1
add bh, bl
mov bl, byte [esp + 0x20]
test dl, dl
mov edx, esi
sete al
shr edx, 0x18
add bh, al
shr ecx, 0x10
mov al, bh
and al, 1
shl al, 5
or bl, al
mov eax, esi
shr eax, 0x15
xor dl, al
mov eax, esi
shr eax, 0x14
xor dl, al
mov eax, esi
shr eax, 0xc
add esi, esi
xor dl, al
and dl, 1
movzx eax, dl
or esi, eax
mov eax, edi
shr eax, 2
add edi, edi
xor cl, al
and cl, 1
movzx eax, cl
or edi, eax
test cl, cl
sete cl
shr bh, 1
and bh, 1
add cl, bh
test dl, dl
lea ebp, [edi + edi]
mov edx, edi
sete al
shr edx, 0x10
add cl, al
mov al, cl
mov byte [esp + 0x13], cl
and al, 1
shl al, 6
or bl, al
mov eax, esi
mov byte [esp + 0x20], bl
mov ebx, esi
shr ebx, 0x18
shr eax, 0x15
xor bl, al
mov eax, esi
shr eax, 0x14
xor bl, al
mov eax, esi
shr eax, 0xc
xor bl, al
lea eax, [esi + esi]
and bl, 1
movzx ecx, bl
or eax, ecx
mov ecx, edi
shr ecx, 2
xor dl, cl
and dl, 1
movzx ecx, dl
or ebp, ecx
mov cl, byte [esp + 0x13]
test dl, dl
sete dl
shr cl, 1
and cl, 1
add dl, cl
test bl, bl
sete cl
add dl, cl
mov cl, byte [esp + 0x20]
mov bh, dl
shl dl, 7
or cl, dl
shr bh, 1
mov edx, dword [esp + 0x14]
and bh, 1
dec edx
mov dword [esp + 0x14], edx
mov byte [edx], cl
mov ecx, dword [esp + 0x18]
dec ecx
mov dword [esp + 0x18], ecx
test ecx, ecx
jg 0x10085743
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret