Function at 0xd855f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], 0
mov dword [esp], 0xb8bbba85
mov dword [esp + 4], 0
xor ebp, ebp
mov esi, 0x65
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebp]
mov ebx, ebp
xor ebx, 0xca0f841f
lea edx, [esi + ebx]
add edx, 0xffffff9b
and edx, ecx
mov eax, edx
or al, 0xfd
inc al
mov ah, dl
and ah, 0x3d
mul ah
add bl, cl
add bl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub bl, al
movzx eax, bl
add eax, esi
mov byte [esp + ebp], al
inc ebp
add esi, 2
cmp ebp, 8
jne 0xd85620
mov eax, dword [esp]
mov esi, dword [0xfcd99644]
test esi, esi
je 0xd856b4
xor ecx, ecx
mov edx, dword [0xfcd99648]
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x9abdb589
je 0xd85690
inc ecx
cmp esi, ecx
jne 0xd85680
jmp 0xd856b4
mov edx, dword [edx + ecx*8 + 4]
cmp edx, eax
je 0xd856b4
lea ecx, [esp + 0xc]
push ecx
push 0
push 0
push 5
push 4
push edx
push dword [0xfcd9964c]
call fcn.00d88a80
add esp, 0x1c
mov dword [esp + 8], eax
mov dword [esp], 0x23626164
mov eax, 0x98
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x98]
mov esi, eax
and esi, edx
mov ebx, esi
and ebx, 0xffffff99
mov edi, esi
and edi, 2
mov ecx, esi
or ecx, 0xfffffffd
inc ecx
imul ecx, ebx
or esi, 2
imul esi, edi
add ecx, edx
sub ecx, esi
add ecx, eax
add ecx, 0xc6c43107
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax - 0x98], cl
inc eax
cmp eax, 0x9c
jne 0xd856d0
mov esi, dword [esp + 8]
cmp esi, dword [esp]
jne 0xd85875
push dword [esp + 0xc]
call fcn.00d854e0
add esp, 4
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x10], eax
mov dword [esp], 0xb8bbba85
mov dword [esp + 4], 0
xor esi, esi
mov ebp, 0x65
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + esi]
mov edx, esi
xor edx, 0xca0f841f
lea ecx, [edx + ebp]
add ecx, 0xffffff9b
and ecx, ebx
mov eax, ecx
or al, 0xfd
inc al
mov ah, cl
and ah, 0x3d
mul ah
add dl, bl
add dl, al
mov eax, ecx
shr al, 1
and al, 1
or cl, 2
mul cl
add al, al
sub dl, al
movzx eax, dl
add eax, ebp
mov byte [esp + esi], al
inc esi
add ebp, 2
cmp esi, 8
jne 0xd85760
mov esi, dword [esp]
mov eax, dword [0xfcd99644]
test eax, eax
je 0xd857e0
xor ecx, ecx
mov edx, dword [0xfcd99648]
mov edi, dword [esp + 0x2c]
mov ebp, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x9abdb589
je 0xd857ea
inc ecx
cmp eax, ecx
jne 0xd857d0
jmp 0xd8580e
mov edi, dword [esp + 0x2c]
mov ebp, dword [esp + 8]
jmp 0xd8580e
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0xd8580e
push 0
push dword [esp + 0x14]
push ebp
push 5
push 4
push eax
push dword [0xfcd9964c]
call fcn.00d88a80
add esp, 0x1c
mov esi, eax
test esi, esi
js 0xd8586c
mov edx, dword [ebp]
mov eax, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [eax + edx + 0x3c]
add eax, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, word [ecx + edx]
movzx ebx, word [edi + edx]
test si, si
je 0xd85845
add edx, 2
cmp si, bx
je 0xd85830
cmp si, bx
je 0xd85857
mov edx, dword [eax]
test edx, edx
jne 0xd85820
mov esi, 0xc0000225
jmp 0xd8586c
mov ecx, dword [eax + 0x44]
mov edx, dword [esp + 0x14]
mov dword [edx + 8], ecx
mov eax, dword [eax + 0xdc]
mov dword [edx + 0xc], eax
xor esi, esi
push ebp
call fcn.00d85570
add esp, 4
mov eax, esi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret 4