Function at 0x5ec380
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 8
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov dword [esi + 0x170], 0
mov dword [esi + 0x16c], 0
xorps xmm0, xmm0
movups xmmword [esi + 0x30], xmm0
cmp edi, 0xc
jne 0x5ec3d3
mov eax, dword [ebp + 8]
mov dword [esi + 8], eax
movsd xmm0, qword [ebp]
movsd qword [esi], xmm0
mov dword [esi + 0xc], 0x1000000
mov edi, 2
jmp 0x5ec58c
lea eax, [esi + 0x40]
mov dword [esp + 4], eax
movups xmmword [esi + 0x40], xmm0
cmp edi, 0x10
jb 0x5ec495
lea eax, [esi + 0x60]
mov dword [esp], eax
mov ebx, dword [esp + 4]
nop word cs:[eax + eax]
movzx eax, byte [ebp]
xor byte [esi + 0x40], al
movzx eax, byte [ebp + 1]
xor byte [esi + 0x41], al
movzx eax, byte [ebp + 2]
xor byte [esi + 0x42], al
movzx eax, byte [ebp + 3]
xor byte [esi + 0x43], al
movzx eax, byte [ebp + 4]
xor byte [esi + 0x44], al
movzx eax, byte [ebp + 5]
xor byte [esi + 0x45], al
movzx eax, byte [ebp + 6]
xor byte [esi + 0x46], al
movzx eax, byte [ebp + 7]
xor byte [esi + 0x47], al
movzx eax, byte [ebp + 8]
xor byte [esi + 0x48], al
movzx eax, byte [ebp + 9]
xor byte [esi + 0x49], al
movzx eax, byte [ebp + 0xa]
xor byte [esi + 0x4a], al
movzx eax, byte [ebp + 0xb]
xor byte [esi + 0x4b], al
movzx eax, byte [ebp + 0xc]
xor byte [esi + 0x4c], al
movzx eax, byte [ebp + 0xd]
xor byte [esi + 0x4d], al
movzx eax, byte [ebp + 0xe]
xor byte [esi + 0x4e], al
movzx eax, byte [ebp + 0xf]
xor byte [esi + 0x4f], al
push dword [esp]
push ebx
call dword [esi + 0x168]
add esp, 8
add ebp, 0x10
add edi, 0xfffffff0
cmp edi, 0xf
ja 0x5ec400
test edi, edi
jne 0x5ec4a1
jmp 0x5ec559
mov ebx, dword [esp + 4]
test edi, edi
je 0x5ec559
xor eax, eax
cmp edi, 8
jb 0x5ec4ed
lea ecx, [esi + edi]
add ecx, 0x40
lea edx, [edi + ebp]
cmp ebx, edx
setb dl
cmp ebp, ecx
setb cl
test dl, cl
jne 0x5ec4ed
mov eax, edi
and eax, 8
xor ecx, ecx
nop word cs:[eax + eax]
movsd xmm0, qword [ebp + ecx]
movsd xmm1, qword [ebx + ecx]
xorps xmm1, xmm0
movlps qword [ebx + ecx], xmm1
add ecx, 8
cmp eax, ecx
jne 0x5ec4d0
cmp edi, eax
je 0x5ec54b
mov edx, edi
mov dword [esp], eax
mov ecx, eax
and edx, 3
je 0x5ec510
mov ecx, dword [esp]
mov eax, dword [esp + 4]
movzx ebx, byte [ebp + ecx]
xor byte [eax + ecx], bl
mov ebx, dword [esp + 4]
inc ecx
dec edx
jne 0x5ec500
mov eax, dword [esp]
sub eax, edi
cmp eax, 0xfffffffc
ja 0x5ec54b
nop word [eax + eax]
movzx eax, byte [ebp + ecx]
xor byte [esi + ecx + 0x40], al
movzx eax, byte [ebp + ecx + 1]
xor byte [esi + ecx + 0x41], al
movzx eax, byte [ebp + ecx + 2]
xor byte [esi + ecx + 0x42], al
movzx eax, byte [ebp + ecx + 3]
xor byte [esi + ecx + 0x43], al
add ecx, 4
cmp edi, ecx
jne 0x5ec520
lea eax, [esi + 0x60]
push eax
push ebx
call dword [esi + 0x168]
add esp, 8
mov ecx, dword [esp + 0x24]
lea eax, [ecx*8]
shr ecx, 0x1d
bswap eax
bswap ecx
xor dword [esi + 0x48], ecx
xor dword [esi + 0x4c], eax
lea eax, [esi + 0x60]
push eax
push ebx
call dword [esi + 0x168]
add esp, 8
mov edi, dword [esi + 0x4c]
bswap edi
movups xmm0, xmmword [esi + 0x40]
movups xmmword [esi], xmm0
inc edi
xorps xmm0, xmm0
movups xmmword [esi + 0x40], xmm0
lea eax, [esi + 0x20]
push dword [esi + 0x178]
push eax
push esi
call dword [esi + 0x174]
add esp, 0xc
bswap edi
mov dword [esi + 0xc], edi
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret