Function at 0x5668f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], edi
mov eax, dword [eax + 8]
cmp eax, 5
mov dword [ebp - 4], esi
mov ebx, dword [ebp + 0x14]
jl 0x566d53
cmp eax, 0x11
jg 0x566c55
mov eax, dword [ebp + 0x10]
test byte [eax + 0x16d], 0x20
je 0x56699f
mov eax, dword [ebp + 8]
cmp dword [ebp + 0xc], 1
mov ecx, dword [eax]
je 0x566d62
mov eax, dword [ebp + 0xc]
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
mov dword [ebp - 0x14], edx
test edx, edx
jle 0x566c46
mov esi, dword [ebp + 0xc]
xor edx, edx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x24], ecx
lea eax, [esi + ebx]
mov dword [ebp - 0x18], eax
lea edi, [esi + ecx]
xor esi, esi
mov dword [ebp - 0x1c], edi
xor eax, eax
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x10], esi
mov ecx, dword [ebp - 0x20]
movzx esi, byte [edx + edi]
mov edi, dword [ebp - 0x1c]
movzx ebx, byte [eax + edi - 1]
xor esi, ebx
mov byte [edx + ecx], bl
inc edx
movzx ecx, byte [eax + edi - 1]
dec eax
mov ebx, dword [ebp - 0x18]
xor ecx, esi
mov esi, dword [ebp - 0x10]
mov byte [esi + ebx - 1], cl
dec esi
cmp edx, dword [ebp - 0x14]
jl 0x566967
jmp 0x566c46
cmp dword [ebp + 0xc], 1
je 0x566d6c
cmp dword [ebp + 0xc], 2
je 0x566bc2
cmp dword [ebp + 0xc], 4
jne 0x566a48
mov eax, dword [ebp + 8]
mov esi, dword [eax]
mov edx, esi
and edx, 3
jne 0x5669cd
mov eax, dword [esi]
jmp 0x5669f1
and esi, 0xfffffffc
test edx, edx
je 0x5669e4
lea ecx, [edx*8]
neg ecx
mov eax, dword [esi + 4]
shl eax, cl
jmp 0x5669e6
xor eax, eax
shl edx, 3
mov ecx, edx
mov esi, dword [esi]
shr esi, cl
or eax, esi
mov edx, ebx
and edx, 3
jne 0x5669ff
mov dword [ebx], eax
jmp 0x566c46
mov esi, 0xffffffff
lea edi, [edx*8]
mov ecx, edi
and ebx, 0xfffffffc
shl esi, cl
test edx, edx
je 0x566a37
shl edx, 3
neg edx
mov ecx, dword [ebx + 4]
and ecx, esi
mov dword [ebp - 0x20], ecx
mov ecx, edx
mov edx, eax
shr edx, cl
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x20]
or esi, edx
mov dword [ebx + 4], esi
mov esi, dword [ebp - 0x24]
not esi
mov ecx, edi
and esi, dword [ebx]
shl eax, cl
or esi, eax
mov dword [ebx], esi
jmp 0x566c46
cmp dword [ebp + 0xc], 8
jne 0x566bac
mov eax, dword [ebp + 8]
mov eax, dword [eax]
test al, 3
jne 0x566a68
mov edx, dword [eax]
mov dword [ebp - 0x10], edx
mov edx, dword [eax + 4]
jmp 0x566af4
mov edx, eax
and edx, 0xfffffff8
mov dword [ebp - 0x20], edx
and eax, 7
je 0x566aac
mov esi, edx
lea ecx, [eax*8]
neg ecx
add ecx, 0x40
mov edx, dword [esi + 8]
cmp ecx, 0x1f
mov dword [ebp - 0x24], edx
mov edx, dword [esi + 0xc]
ja 0x566a9e
mov esi, dword [ebp - 0x24]
shld edx, esi, cl
shl esi, cl
mov dword [ebp - 0x10], esi
jmp 0x566ab1
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x10], 0
shl edx, cl
jmp 0x566ab1
xor edx, edx
mov dword [ebp - 0x10], edx
mov edi, dword [ebp - 0x20]
shl eax, 3
cmp eax, 0x1f
mov esi, dword [edi]
mov dword [ebp - 0x24], esi
mov esi, dword [edi + 4]
ja 0x566ad8
mov ecx, eax
mov eax, esi
mov edi, dword [ebp - 0x24]
shrd edi, esi, cl
shr eax, cl
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], eax
jmp 0x566ae8
mov ecx, eax
mov eax, esi
shr eax, cl
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x10]
or eax, dword [ebp - 0x24]
or edx, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
test bl, 3
jne 0x566b06
mov eax, dword [ebp - 0x10]
mov dword [ebx], eax
mov dword [ebx + 4], edx
jmp 0x566c46
mov eax, ebx
and ebx, 7
and eax, 0xfffffff8
mov dword [ebp - 0x14], eax
mov eax, 0xffffffff
lea ecx, [ebx*8]
mov dword [ebp - 0x18], ecx
shl eax, cl
test ebx, ebx
je 0x566b79
mov ecx, dword [ebp - 0x14]
shl ebx, 3
neg ebx
add ebx, 0x40
mov esi, dword [ecx + 0xc]
mov edi, dword [ecx + 8]
and edi, eax
mov dword [ebp - 0x1c], esi
cmp ebx, 0x1f
ja 0x566b55
mov ecx, ebx
mov ebx, edx
mov esi, dword [ebp - 0x10]
shrd esi, edx, cl
shr ebx, cl
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x24], ebx
jmp 0x566b65
mov ecx, ebx
mov ebx, edx
shr ebx, cl
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], ebx
mov esi, dword [ebp - 0x14]
mov ecx, edi
mov ebx, dword [ebp - 0x1c]
or ecx, dword [ebp - 0x20]
or ebx, dword [ebp - 0x24]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebx
mov ecx, dword [ebp - 0x14]
not eax
and eax, dword [ecx]
cmp dword [ebp - 0x18], 0x1f
ja 0x566b93
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x10]
shld edx, ebx, cl
shl ebx, cl
jmp 0x566b9d
mov ecx, dword [ebp - 0x18]
xor ebx, ebx
mov edx, dword [ebp - 0x10]
shl edx, cl
mov ecx, dword [ebp - 0x14]
or eax, ebx
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x566c46
mov eax, dword [ebp + 8]
push dword [ebp + 0xc]
push dword [eax]
push ebx
call fcn.0059f8e0
add esp, 0xc
jmp 0x566c46
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov esi, edx
and esi, 0xfffffffe
and edx, 1
je 0x566be5
lea ecx, [edx*8]
neg ecx
add ecx, 0x10
movsx eax, word [esi + 2]
shl eax, cl
jmp 0x566be7
xor eax, eax
shl edx, 3
mov edi, 0xffffffff
mov ecx, edx
movzx esi, word [esi]
shr esi, cl
or eax, esi
mov esi, ebx
and ebx, 1
and esi, 0xfffffffe
lea edx, [ebx*8]
mov ecx, edx
shl edi, cl
test ebx, ebx
je 0x566c36
shl ebx, 3
neg ebx
add ebx, 0x10
movzx ecx, word [esi + 2]
and ecx, edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], ecx
mov ecx, ebx
movzx edi, ax
shr edi, cl
mov ebx, dword [ebp - 0x20]
or ebx, edi
mov edi, dword [ebp - 0x24]
mov word [esi + 2], bx
not edi
mov ecx, edx
movzx ebx, word [esi]
shl eax, cl
and ebx, edi
or ebx, eax
mov word [esi], bx
xor eax, eax
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
cmp eax, 0x19
jl 0x566d53
cmp eax, 0x1f
jle 0x566c84
cmp eax, 0x32
jl 0x566c72
cmp eax, 0x34
jle 0x566c84
jmp 0x566d53
cmp eax, 0x28
jl 0x566d53
cmp eax, 0x30
jg 0x566d53
mov edx, dword [eax*4 + 0x5cb69c]
cmp edx, 0xffffffff
mov eax, dword [ebp + 0x10]
movsx esi, byte [eax + 0x158]
je 0x566d7b
mov edi, esi
lea ecx, [esi*4]
shl edi, 5
sub edi, ecx
mov eax, dword [ebp + 8]
mov edx, dword [edi + edx*4 + 0x5cb860]
test edx, edx
mov eax, dword [eax]
je 0x566cdc
push ebx
push 0
push eax
call edx
add esp, 0xc
cmp eax, 1
je 0x566cfe
mov eax, 0x5f
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0xc], 4
mov edx, dword [eax]
mov dword [ebx], edx
je 0x566cfe
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
cmp dword [ebp + 0xc], 8
je 0x566cfe
mov edx, dword [eax + 8]
mov dword [ebx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp + 0x10]
test byte [eax + 0x16d], 0x20
je 0x566d53
test esi, esi
je 0x566d1e
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
cmp eax, 0x34
je 0x566d1e
cmp eax, 0x32
jne 0x566d53
mov edx, dword [ebp + 0xc]
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
test eax, eax
jle 0x566d53
mov edx, dword [ebp + 0xc]
xor esi, esi
mov dword [ebp - 0x24], eax
xor ecx, ecx
lea edi, [edx + ebx]
movzx eax, byte [ebx]
inc esi
movzx edx, byte [ecx + edi - 1]
xor eax, edx
mov byte [ebx], dl
inc ebx
xor byte [ecx + edi - 1], al
dec ecx
cmp esi, dword [ebp - 0x24]
jl 0x566d3b
xor eax, eax
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
movzx eax, byte [ecx]
mov byte [ebx], al
jmp 0x566c46
mov esi, dword [ebp + 8]
mov edi, dword [esi]
movzx eax, byte [edi]
mov byte [ebx], al
jmp 0x566c46
mov eax, 0x5f
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret