Function at 0x10019410
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x28
mov esi, esp
lea edi, [ebp + 8]
mov eax, dword [0x1007b800]
xor eax, ebp
mov dword [esi + 0x20], eax
cmp dword [0x1007ccc8], 0xa
mov ecx, dword [0x1007ccd4]
mov eax, dword [0x1007ccd0]
jl 0x100194dd
mov edx, dword [0x1007cccc]
lea ebx, [edx + 1]
imul ebx, edx
and ebx, 1
je 0x100194dd
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
push eax
sub esp, 0xb4
mov ebx, esp
and ebx, 0xfffffff8
mov esp, ebx
cmp eax, 0xa
jl 0x1001949e
test edx, edx
je 0x1001949e
nop dword [eax + eax]
jmp 0x10019480
mov ecx, ebx
push 1
push 0x40
push 0x20
push eax
call fcn.100288f0
cmp dword [edi + 0x14], 0x10
mov eax, edi
jb 0x100194a8
mov eax, dword [edi]
mov ecx, ebx
push 1
push 0x40
push 0x20
push eax
call fcn.100288f0
mov ecx, dword [0x1007ccd4]
mov eax, dword [0x1007ccd0]
cmp eax, 0xa
jl 0x100194dd
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
je 0x100194dd
cmp dword [edi + 0x14], 0x10
mov eax, edi
jb 0x10019490
mov eax, dword [edi]
jmp 0x10019490
push eax
sub esp, 0xb4
mov ebx, esp
and ebx, 0xfffffff8
mov esp, ebx
push eax
sub esp, 0x3fc
mov dword [esi + 0x10], esp
push eax
sub esp, 0xffc
mov edx, esp
cmp eax, 0xa
jl 0x1001950e
lea eax, [ecx + 1]
imul eax, ecx
and eax, 1
jne 0x10019520
mov dword [esi + 4], edx
jmp 0x1001953e
jmp 0x10019520
mov ecx, ebx
push 1
push 0x40
push 0x20
push eax
call fcn.100288f0
cmp dword [edi + 0x14], 0x10
mov eax, edi
jb 0x10019548
mov eax, dword [edi]
mov ecx, ebx
push 1
push 0x40
push 0x20
push eax
call fcn.100288f0
mov ecx, dword [0x1007ccd4]
mov eax, dword [0x1007ccd0]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
cmp eax, 0xa
jl 0x1001957f
test edx, edx
je 0x1001957f
cmp dword [edi + 0x14], 0x10
mov eax, edi
jb 0x10019530
mov eax, dword [edi]
jmp 0x10019530
mov dword [esi + 0xc], ebx
mov ecx, dword [0x1007cccc]
mov ebx, dword [0x1007ccc8]
mov dword [esi + 0x14], ebx
lea ebx, [ecx + 1]
imul ebx, ecx
and ebx, 1
cmp dword [esi + 0x14], 0xa
jl 0x100195a8
test ebx, ebx
jne 0x10019461
mov eax, ebx
mov ebx, dword [esi + 0xc]
cmp dword [ebx + 0x5c], 0
je 0x10019812
movdqa xmm0, xmmword [0x1006db90]
xor eax, eax
movdqa xmm1, xmmword [0x1006dba0]
movdqa xmm2, xmmword [0x1006dbb0]
mov ecx, dword [esi + 0x10]
nop word cs:[eax + eax]
movdqa xmm3, xmm0
movdqa xmm4, xmm0
pslld xmm4, 0x1f
psrad xmm4, 0x1f
psrld xmm3, 1
movdqa xmm5, xmm4
pandn xmm5, xmm3
pxor xmm3, xmm1
pand xmm3, xmm4
por xmm3, xmm5
movdqa xmm4, xmm3
pslld xmm3, 0x1f
psrld xmm4, 1
psrad xmm3, 0x1f
movdqa xmm5, xmm3
pandn xmm5, xmm4
pxor xmm4, xmm1
pand xmm4, xmm3
por xmm4, xmm5
movdqa xmm3, xmm4
psrld xmm3, 1
pslld xmm4, 0x1f
psrad xmm4, 0x1f
movdqa xmm5, xmm4
pandn xmm5, xmm3
pxor xmm3, xmm1
pand xmm3, xmm4
por xmm3, xmm5
movdqa xmm4, xmm3
psrld xmm4, 1
pslld xmm3, 0x1f
psrad xmm3, 0x1f
movdqa xmm5, xmm3
pandn xmm5, xmm4
pxor xmm4, xmm1
pand xmm4, xmm3
por xmm4, xmm5
movdqa xmm3, xmm4
pslld xmm4, 0x1f
psrad xmm4, 0x1f
psrld xmm3, 1
movdqa xmm5, xmm4
pandn xmm5, xmm3
pxor xmm3, xmm1
pand xmm3, xmm4
por xmm3, xmm5
movdqa xmm4, xmm3
pslld xmm3, 0x1f
psrld xmm4, 1
psrad xmm3, 0x1f
movdqa xmm5, xmm3
pandn xmm5, xmm4
pxor xmm4, xmm1
pand xmm4, xmm3
por xmm4, xmm5
movdqa xmm3, xmm4
psrld xmm3, 1
pslld xmm4, 0x1f
psrad xmm4, 0x1f
movdqa xmm5, xmm4
pandn xmm5, xmm3
pxor xmm3, xmm1
pand xmm3, xmm4
por xmm3, xmm5
movdqa xmm4, xmm3
psrld xmm4, 1
pslld xmm3, 0x1f
psrad xmm3, 0x1f
movdqa xmm5, xmm3
pandn xmm5, xmm4
pxor xmm4, xmm1
pand xmm4, xmm3
por xmm4, xmm5
movdqu xmmword [ecx + eax*4], xmm4
add eax, 4
paddd xmm0, xmm2
cmp eax, 0x100
jne 0x100195e0
mov ebx, 0xffffffff
xor ecx, ecx
nop word [eax + eax]
mov dword [esi + 8], ecx
mov ecx, dword [esi + 0xc]
nop word cs:[eax + eax]
push 0
push 0x1000
push dword [esi + 4]
call fcn.10019940
mov edi, dword [0x1007cccc]
mov edx, dword [0x1007ccc8]
cmp edx, 0xa
jl 0x100197a0
lea ecx, [edi + 1]
imul ecx, edi
and ecx, 1
je 0x100197a0
mov edi, dword [esi + 0xc]
mov ecx, edi
push 0
push 0x1000
push dword [esi + 4]
call fcn.10019940
mov ecx, edi
jmp 0x10019750
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
test byte [eax + ecx + 0xc], 6
mov dword [esi + 0x14], edx
mov dword [esi + 0x18], edi
jne 0x10019819
xor eax, eax
mov edi, dword [esi + 0x10]
mov edx, dword [esi + 4]
nop word [eax + eax]
movzx ecx, byte [edx + eax]
xor cl, bl
movzx ecx, cl
shr ebx, 8
xor ebx, dword [edi + ecx*4]
movzx ecx, byte [edx + eax + 1]
xor cl, bl
movzx ecx, cl
shr ebx, 8
xor ebx, dword [edi + ecx*4]
add eax, 2
cmp eax, 0x1000
jne 0x100197c0
mov ecx, ebx
not ecx
cmp dword [esi + 0x14], 0xa
jl 0x10019740
mov edx, dword [esi + 0x18]
lea eax, [edx + 1]
imul eax, edx
and eax, 1
je 0x10019740
nop dword [eax]
jmp 0x10019810
xor edx, edx
jmp 0x100198ae
mov ebx, dword [esi + 0xc]
mov eax, dword [ebx + 8]
test eax, eax
jle 0x10019837
mov edx, dword [esi + 8]
not edx
cmp eax, 1
lea edi, [ebp + 8]
mov dword [esi + 0x1c], eax
jne 0x1001983f
xor ebx, ebx
jmp 0x10019880
lea edi, [ebp + 8]
mov edx, dword [esi + 8]
jmp 0x100198a0
and eax, 0xfffffffe
mov dword [esi + 8], eax
xor ebx, ebx
nop word [eax + eax]
mov eax, dword [esi + 4]
movzx ecx, byte [eax + ebx]
xor cl, dl
movzx ecx, cl
shr edx, 8
mov eax, dword [esi + 0x10]
xor edx, dword [eax + ecx*4]
mov ecx, dword [esi + 4]
movzx ecx, byte [ecx + ebx + 1]
xor cl, dl
movzx ecx, cl
shr edx, 8
xor edx, dword [eax + ecx*4]
add ebx, 2
cmp dword [esi + 8], ebx
jne 0x10019850
test byte [esi + 0x1c], 1
je 0x1001989b
mov eax, dword [esi + 4]
movzx eax, byte [eax + ebx]
xor al, dl
movzx eax, al
shr edx, 8
mov ecx, dword [esi + 0x10]
xor edx, dword [ecx + eax*4]
not edx
mov ebx, dword [esi + 0xc]
mov eax, dword [esi + 0x18]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
mov eax, ecx
mov dword [esi + 8], edx
cmp dword [esi + 0x14], 0xa
jl 0x100198bb
test eax, eax
jne 0x100198f0
mov ecx, ebx
call fcn.10019c90
mov ecx, edi
call fcn.100016f0
cmp dword [0x1007ccc8], 0xa
jl 0x10019927
mov eax, dword [0x1007cccc]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x10019927
nop word cs:[eax + eax]
mov ecx, ebx
call fcn.10019c90
mov ecx, edi
call fcn.100016f0
mov ecx, ebx
call fcn.10019c90
mov ecx, edi
call fcn.100016f0
cmp dword [0x1007ccc8], 0xa
jl 0x100198bb
mov eax, dword [0x1007cccc]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x100198f0
jmp 0x100198bb
mov ecx, dword [esi + 0x20]
xor ecx, ebp
call fcn.10031007
mov eax, dword [esi + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret