Function at 0x100909ff
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x28], ecx
mov ebx, dword [eax + 0xc]
mov esi, edx
lea eax, [edx + ebx]
test ebx, ebx
jle 0x10090a50
movdqa xmm0, xmmword [0x10354150]
movdqa xmm1, xmmword [0x10354160]
mov ecx, esi
movdqu xmm2, xmmword [ecx]
pxor xmm3, xmm3
pcmpgtb xmm3, xmm2
pand xmm3, xmm0
pxor xmm3, xmm1
movdqu xmmword [ecx], xmm3
add ecx, 0x10
cmp ecx, eax
jb 0x10090a31
mov ecx, esi
movq xmm0, qword [esi]
movq xmm1, qword [esi + 7]
movq qword [eax + 8], xmm1
movq qword [eax + 1], xmm0
mov byte [esi + ebx], 0xff
test ebx, ebx
je 0x10090c12
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [ebp - 0x30], edx
mov eax, dword [eax + 8]
mov dword [ebp - 0x24], eax
mov eax, esi
xor edi, edi
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x10], ecx
cmp byte [eax + edi], 0xfe
jne 0x10090b47
mov dword [ebp - 0x18], edi
mov ecx, dword [ebp - 0x30]
call dword [section..00cfg]
mov dword [ebp - 0x20], esi
push esi
mov esi, dword [ebp + 8]
push esi
call ecx
add esp, 8
mov ecx, eax
mov eax, dword [esi]
mov edx, dword [esi + 0xc]
mov dword [ebp - 0x2c], ecx
shr ecx, 7
mov ebx, eax
shr ebx, 0xc
xor ebx, ecx
and ebx, edx
movdqu xmm0, xmmword [eax + ebx]
pcmpeqd xmm1, xmm1
pcmpgtb xmm1, xmm0
pmovmskb edi, xmm1
mov ecx, ebx
test edi, edi
jne 0x10090b05
mov esi, 0x10
mov ecx, ebx
add ecx, esi
and ecx, edx
movdqu xmm0, xmmword [eax + ecx]
pcmpeqd xmm1, xmm1
pcmpgtb xmm1, xmm0
pmovmskb edi, xmm1
add esi, 0x10
test edi, edi
je 0x10090ae9
bsf edi, edi
add edi, ecx
and edi, edx
mov ecx, edi
sub ecx, ebx
mov esi, dword [ebp - 0x18]
sub esi, ebx
xor esi, ecx
mov ecx, dword [ebp - 0x1c]
and esi, ecx
cmp esi, 0xf
ja 0x10090b57
mov esi, ecx
mov ebx, dword [ebp - 0x2c]
and bl, 0x7f
mov edi, dword [ebp - 0x18]
mov byte [eax + edi], bl
lea ecx, [edi - 0xf]
and ecx, edx
and edx, 0xf
add edx, ecx
mov byte [eax + edx], bl
mov ebx, esi
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x20]
inc edi
add esi, ecx
cmp edi, ebx
jne 0x10090a92
jmp 0x10090c12
lea ecx, [edi - 0xf]
and ecx, edx
and edx, 0xf
add edx, ecx
mov ebx, edi
imul ebx, dword [ebp - 0x10]
add ebx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x2c]
and cl, 0x7f
mov esi, dword [ebp - 0x14]
cmp byte [esi + edi], 0x80
mov byte [eax + edi], cl
mov byte [eax + edx], cl
jne 0x10090bbc
mov ecx, dword [ebp - 0x24]
call dword [section..00cfg]
mov edi, dword [ebp - 0x20]
push edi
push ebx
mov esi, dword [ebp + 8]
push esi
call ecx
add esp, 0xc
mov eax, dword [esi + 0xc]
mov edx, dword [ebp - 0x18]
lea ecx, [edx - 0xf]
and ecx, eax
and eax, 0xf
add eax, ecx
mov ecx, dword [esi]
mov esi, edi
mov edi, edx
mov bl, 0x80
mov byte [ecx + edx], bl
mov byte [ecx + eax], bl
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x10]
jmp 0x10090c0a
mov edi, dword [ebp - 0x24]
mov ecx, edi
call dword [section..00cfg]
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov esi, dword [ebp + 8]
push esi
call edi
add esp, 0xc
mov ecx, edi
call dword [section..00cfg]
mov esi, dword [ebp - 0x20]
push esi
push ebx
push dword [ebp + 8]
call edi
add esp, 0xc
mov ecx, edi
call dword [section..00cfg]
push dword [ebp + 0x10]
push esi
push dword [ebp + 8]
call edi
add esp, 0xc
mov edi, dword [ebp - 0x18]
dec edi
mov ecx, dword [ebp - 0x10]
sub esi, ecx
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
jmp 0x10090b47
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xc]
mov ecx, eax
shr ecx, 3
add ecx, dword [edx + 8]
sub eax, ecx
mov dword [edx + 0x10], eax
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret