Function at 0x100901d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x40
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x14], 0x10090870
mov eax, dword [ebp + 0x10]
lea ecx, [ebp - 0x18]
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov edx, dword fs:[0]
mov dword [ebp - 0x18], edx
mov dword fs:[0], ecx
movzx eax, byte [eax]
test eax, eax
je 0x1009035a
cmp eax, 1
jne 0x10090392
test ebx, ebx
je 0x100904c3
setns al
js 0x10090611
movzx esi, al
push esi
push ebx
call fcn.100985b0
add esp, 8
test eax, eax
je 0x10090618
mov edi, eax
mov esi, eax
push ebx
push dword [ebp + 8]
push edi
call fcn.10193640
add esp, 0xc
cmp ebx, 8
mov ecx, edi
jb 0x100904e2
xor eax, eax
cmp ebx, 0x20
jb 0x100902f6
movdqa xmm0, xmmword [0x101b4610]
movdqa xmm1, xmmword [0x101b1050]
movdqa xmm2, xmmword [0x101b1060]
mov eax, ebx
xor ecx, ecx
and eax, 0xffffffe0
nop word [eax + eax]
movdqu xmm4, xmmword [esi + ecx]
movdqu xmm3, xmmword [esi + ecx + 0x10]
movdqa xmm5, xmm4
movdqa xmm6, xmm3
paddb xmm5, xmm0
paddb xmm6, xmm0
movdqa xmm7, xmm5
pminub xmm7, xmm1
pcmpeqb xmm7, xmm5
movdqa xmm5, xmm6
pminub xmm5, xmm1
pand xmm7, xmm2
pcmpeqb xmm5, xmm6
pxor xmm7, xmm4
pand xmm5, xmm2
movdqu xmmword [esi + ecx], xmm7
pxor xmm5, xmm3
movdqu xmmword [esi + ecx + 0x10], xmm5
add ecx, 0x20
cmp eax, ecx
jne 0x10090290
cmp eax, ebx
je 0x1009053a
test bl, 0x18
je 0x100904de
movdqa xmm0, xmmword [0x101b4620]
movdqa xmm1, xmmword [0x101b1080]
movdqa xmm2, xmmword [0x101b1090]
mov edx, ebx
and edx, 0xfffffff8
lea ecx, [edi + edx]
nop word cs:[eax + eax]
movq xmm3, qword [esi + eax]
movdqa xmm4, xmm3
paddb xmm4, xmm0
movdqa xmm5, xmm4
pmaxub xmm5, xmm1
pcmpeqb xmm5, xmm4
pandn xmm5, xmm2
pxor xmm5, xmm3
movq qword [esi + eax], xmm5
add eax, 8
cmp edx, eax
jne 0x10090320
cmp edx, ebx
jne 0x100904e2
jmp 0x1009053a
mov ecx, ebx
test ebx, ebx
je 0x100904ca
setns al
js 0x10090611
movzx eax, al
mov dword [ebp - 0x24], eax
push eax
mov ebx, ecx
push ecx
call fcn.100985b0
add esp, 8
mov esi, eax
test eax, eax
jne 0x100904d1
push ebx
push dword [ebp - 0x24]
jmp 0x1009061a
test ebx, ebx
je 0x100904c3
setns al
js 0x10090611
movzx esi, al
push esi
push ebx
call fcn.100985b0
add esp, 8
test eax, eax
je 0x10090618
mov edi, eax
mov esi, eax
push ebx
push dword [ebp + 8]
push edi
call fcn.10193640
add esp, 0xc
cmp ebx, 8
mov ecx, edi
jb 0x10090510
xor eax, eax
cmp ebx, 0x20
jb 0x10090466
movdqa xmm0, xmmword [0x101b1040]
movdqa xmm1, xmmword [0x101b1050]
movdqa xmm2, xmmword [0x101b1060]
mov eax, ebx
xor ecx, ecx
and eax, 0xffffffe0
nop
movdqu xmm4, xmmword [esi + ecx]
movdqu xmm3, xmmword [esi + ecx + 0x10]
movdqa xmm5, xmm4
movdqa xmm6, xmm3
paddb xmm5, xmm0
paddb xmm6, xmm0
movdqa xmm7, xmm5
pminub xmm7, xmm1
pcmpeqb xmm7, xmm5
movdqa xmm5, xmm6
pminub xmm5, xmm1
pand xmm7, xmm2
pcmpeqb xmm5, xmm6
por xmm7, xmm4
pand xmm5, xmm2
movdqu xmmword [esi + ecx], xmm7
por xmm5, xmm3
movdqu xmmword [esi + ecx + 0x10], xmm5
add ecx, 0x20
cmp eax, ecx
jne 0x10090400
cmp eax, ebx
je 0x1009053a
test bl, 0x18
je 0x1009050c
movdqa xmm0, xmmword [0x101b1070]
movdqa xmm1, xmmword [0x101b1080]
movdqa xmm2, xmmword [0x101b1090]
mov edx, ebx
and edx, 0xfffffff8
lea ecx, [edi + edx]
nop word cs:[eax + eax]
movq xmm3, qword [esi + eax]
movdqa xmm4, xmm3
paddb xmm4, xmm0
movdqa xmm5, xmm4
pmaxub xmm5, xmm1
pcmpeqb xmm5, xmm4
pandn xmm5, xmm2
por xmm5, xmm3
movq qword [esi + eax], xmm5
add eax, 8
cmp edx, eax
jne 0x10090490
cmp edx, ebx
jne 0x10090510
jmp 0x1009053a
mov esi, 1
jmp 0x1009053a
mov esi, 1
mov ebx, ecx
push ebx
push edi
push esi
call fcn.10193640
add esp, 0xc
jmp 0x1009053a
add eax, edi
mov ecx, eax
add edi, ebx
nop word cs:[eax + eax]
nop
movzx eax, byte [ecx]
mov edx, eax
add dl, 0x9f
cmp dl, 0x1a
setb dl
shl dl, 5
xor dl, al
mov byte [ecx], dl
inc ecx
cmp ecx, edi
jne 0x100904f0
jmp 0x1009053a
add eax, edi
mov ecx, eax
add edi, ebx
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [ecx]
mov edx, eax
add dl, 0xbf
cmp dl, 0x1a
setb dl
shl dl, 5
or dl, al
mov byte [ecx], dl
inc ecx
cmp ecx, edi
jne 0x10090520
lea eax, [ebp - 0x40]
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x10], 0xffffffff
push eax
push ecx
call fcn.10178100
add esp, 8
mov edi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x30]
cmp edi, 8
jae 0x100905b2
test edi, edi
je 0x1009057f
xor eax, eax
nop dword [eax + eax]
cmp byte [ecx + eax], 0
je 0x10090603
inc eax
cmp edi, eax
jne 0x10090570
xor eax, eax
test eax, eax
jne 0x100905d9
mov eax, dword [ebp - 0x28]
movq xmm0, qword [ebp - 0x30]
mov byte [ebp - 0x1d], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x4c]
movq qword [ebp - 0x4c], xmm0
push eax
call fcn.101771a0
add esp, 4
mov esi, eax
mov edi, edx
jmp 0x100905ee
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 0
push edi
mov dword [ebp - 0x34], ecx
push ecx
push 0
mov dword [ebp - 0x24], edi
call fcn.101823b0
mov edi, dword [ebp - 0x24]
add esp, 0xc
mov ecx, dword [ebp - 0x34]
test eax, eax
je 0x10090585
mov eax, dword [ebp - 0x2c]
xor esi, esi
test eax, eax
je 0x100905ee
push 1
push eax
push ecx
call fcn.100985c0
add esp, 0xc
mov eax, dword [ebp - 0x18]
mov edx, edi
mov dword fs:[0], eax
mov eax, esi
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 1
test eax, eax
jne 0x100905d9
jmp 0x10090585
call fcn.10176df0
ud2
push ebx
push esi
call fcn.101aefe0
add esp, 8
ud2