Function at 0x55fb20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov edx, dword [ebp + 0xc]
push ebx
mov ebx, ecx
mov byte [ebp - 1], 0
push esi
mov esi, dword [ebp + 0x10]
push edi
mov eax, dword [ebx + 0x8cd4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0x18], ebx
mov byte [ebp - 2], 0
mov dword [ebp - 0xc], 0
mov ecx, dword [eax]
mov dword [ebp - 0x20], ecx
lea ecx, [ecx*8 + 8]
sub ecx, dword [eax + 4]
mov al, byte [eax + 8]
mov dword [ebp - 8], ecx
mov byte [ebp - 3], al
cmp esi, 1
jbe 0x55fc0c
cmp edx, 0x400
jb 0x55fc0c
mov edi, edx
shr edi, 1
mov eax, dword [ebp + 8]
lea ecx, [edi + eax]
mov al, byte [eax + edi - 1]
cmp byte [ecx], al
je 0x55fb97
mov ecx, dword [ebp + 8]
cmp al, byte [ecx + edi - 2]
jne 0x55fb9e
cmp edi, edx
jae 0x55fc0c
inc edi
jmp 0x55fb80
cmp edi, edx
jae 0x55fc0c
dec esi
push esi
push edi
push ecx
mov ecx, ebx
call fcn.0055fb20
mov eax, dword [ebp + 0xc]
mov ecx, ebx
sub eax, edi
push esi
push eax
mov eax, dword [ebp + 8]
add eax, edi
push eax
call fcn.0055fb20
mov ecx, dword [ebx + 0x10]
mov eax, dword [ecx]
mov dl, byte [ecx + 8]
mov byte [ebp - 2], dl
lea eax, [eax*8 + 8]
sub eax, dword [ecx + 4]
mov edx, eax
mov dword [ebp - 0xc], eax
and edx, 7
jbe 0x55fbef
mov eax, 8
sub eax, edx
push eax
push 0
call fcn.0055e040
mov edx, dword [ebx + 0x10]
mov eax, 8
mov ecx, dword [ebp - 8]
and ecx, 7
mov byte [ebp - 1], 1
sub eax, ecx
mov dword [edx + 4], eax
mov al, byte [ebp - 3]
mov byte [edx + 8], al
mov eax, dword [ebx + 0x10]
push 0x31
mov ecx, dword [eax]
mov dword [ebp - 0x10], ecx
shl ecx, 3
sub ecx, dword [eax + 4]
mov dword [ebp - 0x1c], ecx
mov ecx, ebx
call fcn.0055ee60
push 0x41
mov ecx, ebx
call fcn.0055ee60
push 0x59
mov ecx, ebx
call fcn.0055ee60
push 0x26
mov ecx, ebx
call fcn.0055ee60
push 0x53
mov ecx, ebx
call fcn.0055ee60
push 0x59
mov ecx, ebx
call fcn.0055ee60
mov ebx, dword [ebp + 8]
or esi, 0xffffffff
xor edi, edi
xor eax, eax
mov dword [ebp + 0x10], eax
mov dh, byte [ebx]
mov dl, byte [ebx + eax]
cmp edi, 4
jne 0x55fc8e
test dl, dl
je 0x55fc8a
movzx ecx, dh
mov eax, esi
shl esi, 8
shr eax, 0x18
xor eax, ecx
xor esi, dword [eax*4 + 0x602940]
add dl, 0xff
jne 0x55fc71
mov eax, dword [ebp + 0x10]
xor edi, edi
jmp 0x55fcbb
mov ecx, esi
movzx eax, dl
shr ecx, 0x18
inc edi
xor ecx, eax
shl esi, 8
mov eax, 1
xor esi, dword [ecx*4 + 0x602940]
cmp dh, dl
movzx ecx, dh
cmovne edi, eax
movzx eax, dl
cmovne ecx, eax
mov eax, dword [ebp + 0x10]
mov dh, cl
inc eax
mov dword [ebp + 0x10], eax
cmp eax, dword [ebp + 0xc]
jb 0x55fc62
mov ebx, dword [ebp - 0x18]
not esi
mov dword [ebp + 0x10], esi
xor edi, edi
nop
mov ecx, 0x18
mov eax, esi
sub ecx, edi
shr eax, cl
mov ecx, ebx
push eax
call fcn.0055ee60
add edi, 8
cmp edi, 0x20
jb 0x55fcd0
push dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
push ecx
mov ecx, ebx
call fcn.0055f020
mov edi, dword [ebx + 0x10]
mov edx, dword [edi]
lea ecx, [edx*8]
sub ecx, dword [edi + 4]
cmp byte [ebp - 1], 0
je 0x55fd5f
mov eax, dword [ebp - 0xc]
sub ecx, dword [ebp - 0x1c]
sub eax, dword [ebp - 8]
mov dword [ebp + 8], ecx
cmp ecx, eax
jae 0x55fd7e
mov eax, dword [edi + 0xc]
sub edx, dword [ebp - 0x10]
je 0x55fd45
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x10]
sub esi, edi
lea ecx, [eax + edi]
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
sub edx, 1
jne 0x55fd31
mov esi, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 8]
mov edx, dword [ebx + 0x10]
mov eax, ecx
shr eax, 3
and ecx, 7
mov dword [edx], eax
mov eax, 8
sub eax, ecx
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x14]
mov dword [ebx + 0x8cd4], eax
mov dword [ebx + eax*4 + 0x7cd4], esi
inc dword [ebx + 0x8cd4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [ebp - 0xc]
mov ecx, 8
mov eax, edx
and edx, 7
shr eax, 3
sub ecx, edx
mov dword [edi + 4], ecx
mov dword [edi], eax
mov eax, dword [ebx + 0x10]
pop edi
pop esi
pop ebx
mov dword [eax + 4], ecx
mov cl, byte [ebp - 2]
mov byte [eax + 8], cl
mov esp, ebp
pop ebp
ret 0xc