Function at 0x5ec7e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov ebx, dword [esp + 0x44]
mov ebp, dword [esp + 0x38]
mov ecx, dword [ebp + 0x3c]
mov edx, dword [ebp + 0x38]
add edx, ebx
adc ecx, 0
mov eax, 0xffffffff
mov esi, 0xffffffe0
cmp esi, edx
mov esi, 0xf
sbb esi, ecx
jb 0x5ecc76
mov eax, dword [ebp + 0x174]
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x178]
mov dword [esp + 0x10], eax
mov dword [ebp + 0x38], edx
mov dword [ebp + 0x3c], ecx
cmp dword [ebp + 0x170], 0
je 0x5ec861
test ebx, ebx
je 0x5ecb2f
movups xmm0, xmmword [ebp + 0x40]
movups xmmword [ebp + 0x17c], xmm0
mov dword [ebp + 0x170], 0
xorps xmm0, xmm0
movups xmmword [ebp + 0x40], xmm0
mov esi, 0x10
jmp 0x5ec867
mov esi, dword [ebp + 0x16c]
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov ebp, dword [ebp + 0xc]
mov eax, esi
and eax, 0xf
je 0x5ec8ee
test ebx, ebx
je 0x5ecc6a
mov dword [esp + 0xc], ebp
lea edi, [ebx - 1]
mov dword [esp], esi
mov ecx, dword [esp + 0x38]
lea edx, [esi + ecx]
add edx, 0x17c
xor esi, esi
nop word [eax + eax]
mov ecx, dword [esp + 0x38]
movzx ebx, byte [ecx + eax + 0x10]
mov ecx, dword [esp + 0x3c]
xor bl, byte [ecx + esi]
mov ecx, dword [esp + 0x40]
mov byte [ecx + esi], bl
mov byte [edx + esi], bl
inc eax
lea ebx, [esi + 1]
and eax, 0xf
je 0x5ec8c9
cmp edi, esi
mov esi, ebx
jne 0x5ec8a0
mov esi, dword [esp]
add esi, ebx
test eax, eax
jne 0x5ecc6a
mov edx, dword [esp + 0x3c]
add edx, ebx
mov eax, dword [esp + 0x40]
add eax, ebx
mov edi, dword [esp + 0x44]
sub edi, ebx
mov ebx, edi
mov edi, eax
jmp 0x5ec904
mov dword [esp + 0xc], ebp
cmp ebx, 0x10
setae al
test esi, esi
setne cl
and cl, al
cmp cl, 1
jne 0x5ec92b
mov dword [esp + 4], edx
mov eax, dword [esp + 0x38]
lea ebp, [eax + 0x40]
lea ecx, [eax + 0x60]
lea edx, [eax + 0x17c]
push esi
push edx
push ecx
push ebp
call dword [eax + 0x164]
mov edx, dword [esp + 0x14]
add esp, 0x10
xor esi, esi
mov ebp, dword [esp + 0xc]
bswap ebp
cmp ebx, 0xc00
mov dword [esp], esi
jb 0x5eca33
mov dword [esp + 0xc], ebp
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x38]
lea ecx, [eax + 0x10]
mov dword [esp + 0x14], ecx
lea ecx, [eax + 0x40]
mov dword [esp + 0x20], ecx
add eax, 0x60
mov dword [esp + 0x1c], eax
nop word cs:[eax + eax]
mov esi, edi
mov dword [esp + 4], edx
xor ebx, ebx
mov edi, dword [esp + 0xc]
nop dword [eax]
push dword [esp + 0x10]
push dword [esp + 0x18]
mov ebp, dword [esp + 0x40]
push ebp
call dword [esp + 0x24]
add esp, 0xc
inc edi
mov eax, edi
bswap eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x10]
mov ecx, dword [esp + 4]
xor eax, dword [ecx + ebx]
mov dword [esi + ebx], eax
mov eax, dword [ebp + 0x14]
xor eax, dword [ecx + ebx + 4]
mov dword [esi + ebx + 4], eax
mov eax, dword [ebp + 0x18]
xor eax, dword [ecx + ebx + 8]
mov dword [esi + ebx + 8], eax
mov eax, dword [ebp + 0x1c]
xor eax, dword [ecx + ebx + 0xc]
mov dword [esi + ebx + 0xc], eax
add ebx, 0x10
cmp ebx, 0xc00
jne 0x5ec980
mov dword [esp + 0xc], edi
lea eax, [esi + ebx]
add eax, 0xfffff400
push 0xc00
push eax
push dword [esp + 0x24]
push dword [esp + 0x2c]
mov eax, dword [esp + 0x48]
call dword [eax + 0x164]
add esp, 0x10
mov eax, dword [esp + 8]
add eax, 0xfffff400
mov ecx, dword [esp + 4]
lea edx, [ecx + ebx]
lea edi, [esi + ebx]
mov dword [esp + 8], eax
cmp eax, 0xbff
ja 0x5ec970
mov edx, dword [esp + 4]
add edx, ebx
add esi, ebx
mov edi, esi
mov esi, dword [esp]
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0xc]
mov eax, ebx
and eax, 0xff0
je 0x5ecae0
mov dword [esp + 0x14], eax
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x38]
add eax, 0x10
mov dword [esp + 4], eax
mov esi, edx
nop word cs:[eax + eax]
push dword [esp + 0x10]
push dword [esp + 8]
mov ebx, dword [esp + 0x40]
push ebx
call dword [esp + 0x24]
add esp, 0xc
inc ebp
mov eax, ebp
bswap eax
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 0x10]
xor eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebx + 0x14]
xor eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [ebx + 0x18]
xor eax, dword [esi + 8]
mov dword [edi + 8], eax
mov eax, dword [ebx + 0x1c]
xor eax, dword [esi + 0xc]
mov dword [edi + 0xc], eax
add edi, 0x10
add esi, 0x10
mov eax, dword [esp + 8]
add eax, 0xfffffff0
mov dword [esp + 8], eax
cmp eax, 0xf
ja 0x5eca60
mov eax, dword [esp + 0x38]
lea ebx, [eax + 0x40]
lea ecx, [eax + 0x60]
mov edx, edi
mov eax, dword [esp + 0x14]
sub edx, eax
push eax
push edx
push ecx
push ebx
mov eax, dword [esp + 0x48]
call dword [eax + 0x164]
add esp, 0x10
mov ebx, dword [esp + 8]
mov edx, esi
mov esi, dword [esp]
test ebx, ebx
je 0x5ecc6a
mov dword [esp + 4], edx
mov esi, dword [esp + 0x38]
lea eax, [esi + 0x10]
push dword [esp + 0x10]
mov dword [esp + 0x14], eax
push eax
push esi
call dword [esp + 0x24]
add esp, 0xc
inc ebp
bswap ebp
mov dword [esi + 0xc], ebp
xor eax, eax
cmp ebx, 0x20
jae 0x5ecb4f
mov ecx, ebx
mov esi, dword [esp]
test cl, 1
jne 0x5ecbef
mov ebp, ecx
cmp ecx, 1
jne 0x5ecc1b
jmp 0x5ecc6a
lea eax, [ebp + 0x40]
lea ecx, [ebp + 0x60]
push ecx
push eax
call dword [ebp + 0x168]
add esp, 8
mov dword [ebp + 0x170], 0
jmp 0x5ecc74
mov ecx, edi
sub ecx, esi
add ecx, 0xfffffff0
cmp ecx, 0x10
jb 0x5ecb11
mov ecx, dword [esp]
lea edx, [ecx + esi]
add edx, 0x17c
mov ecx, edx
sub ecx, edi
cmp ecx, 0x10
jb 0x5ecb11
mov ecx, edi
mov ebp, dword [esp + 4]
sub ecx, ebp
cmp ecx, 0x10
jb 0x5ecb11
mov ecx, edx
sub ecx, ebp
cmp ecx, 0x10
jb 0x5ecb11
mov esi, dword [esp]
lea ecx, [esi + 0x16c]
cmp ecx, 0x10
jb 0x5ecc7e
mov eax, ebx
and eax, 0xfffffff0
mov dword [esp + 8], ebx
mov ecx, ebx
and ecx, 0xf
add esi, eax
mov dword [esp], esi
mov ebx, edi
xor edi, edi
mov ebp, dword [esp + 4]
mov esi, dword [esp + 0x10]
nop word [eax + eax]
movups xmm0, xmmword [ebp + edi]
movups xmm1, xmmword [esi + edi]
xorps xmm1, xmm0
movups xmmword [ebx + edi], xmm1
movups xmmword [edx + edi], xmm1
add edi, 0x10
cmp eax, edi
jne 0x5ecbc0
cmp dword [esp + 8], eax
mov esi, dword [esp]
mov edi, ebx
jne 0x5ecb16
jmp 0x5ecc6a
mov edx, dword [esp + 0x38]
mov ebp, esi
mov esi, edx
movzx edx, byte [edx + eax + 0x10]
mov ebx, dword [esp + 4]
xor dl, byte [ebx + eax]
mov byte [edi + eax], dl
mov byte [esi + ebp + 0x17c], dl
mov esi, ebp
lea ebp, [ecx - 1]
inc esi
or eax, 1
cmp ecx, 1
je 0x5ecc6a
mov ecx, dword [esp + 4]
add ecx, eax
inc ecx
mov edx, dword [esp + 0x38]
mov ebx, esi
lea esi, [eax + edx + 0x11]
add edi, eax
inc edi
mov dword [esp], ebx
add ebx, edx
add ebx, 0x17d
xor eax, eax
nop dword [eax]
movzx edx, byte [esi + eax - 1]
xor dl, byte [ecx + eax - 1]
mov byte [edi + eax - 1], dl
mov byte [ebx + eax - 1], dl
movzx edx, byte [esi + eax]
xor dl, byte [ecx + eax]
mov byte [edi + eax], dl
mov byte [ebx + eax], dl
add eax, 2
cmp ebp, eax
jne 0x5ecc40
mov esi, dword [esp]
add esi, eax
mov eax, dword [esp + 0x38]
mov dword [eax + 0x16c], esi
xor eax, eax
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, ebx
jmp 0x5ecb16