Function at 0x1001f620
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push esi
push edi
xor edi, edi
push 0x38
mov esi, ecx
push edi
push esi
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0xc], esi
mov dword [ebp - 8], edi
call fcn.100084a0
mov ecx, dword [ebp - 0x1c]
add esp, 0xc
mov edx, dword [ecx + 4]
xor eax, eax
test edx, edx
jle 0x1001f662
mov ecx, dword [ecx + 8]
cmp byte [ecx + eax], 0
jle 0x1001f657
inc edi
inc eax
cmp eax, edx
jl 0x1001f650
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 8], edi
mov dword [esi + 4], edx
mov dword [esi + 8], edi
mov eax, dword [ecx]
mov dword [esi], eax
test edi, edi
jle 0x1001fd08
mov edx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
push edi
call fcn.1001f250
mov dword [ebp - 0x14], eax
lea eax, [edi*4]
add esp, 4
mov dword [ebp - 0x28], eax
call fcn.10009710
mov ecx, dword [ebp - 0x14]
mov edx, esp
mov dword [ebp - 0x18], edx
test ecx, ecx
jne 0x1001f70a
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1001f6b1
push eax
call fcn.10003534
add esp, 4
mov eax, dword [esi + 0x14]
test eax, eax
je 0x1001f6c1
push eax
call fcn.10003534
add esp, 4
mov eax, dword [esi + 0x18]
test eax, eax
je 0x1001f6d1
push eax
call fcn.10003534
add esp, 4
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x1001f6e1
push eax
call fcn.10003534
add esp, 4
mov eax, dword [esi + 0x20]
test eax, eax
je 0x1001f6f1
push eax
call fcn.10003534
add esp, 4
push 0x38
push 0
push esi
call fcn.100084a0
add esp, 0xc
or eax, 0xffffffff
lea esp, [ebp - 0x30]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0xc]
xor eax, eax
test edi, edi
jle 0x1001f92b
cmp edi, 4
jb 0x1001f897
cmp dword [0x100c2840], 2
jl 0x1001f897
movdqa xmm4, xmmword [0x100b1e50]
lea eax, [ecx - 4]
movd xmm0, ecx
lea eax, [eax + edi*4]
pshufd xmm3, xmm0, 0
cmp edx, eax
ja 0x1001f756
lea eax, [edi - 1]
lea eax, [edx + eax*4]
cmp eax, ecx
jae 0x1001f895
mov eax, edi
and eax, 0x80000003
jns 0x1001f764
dec eax
or eax, 0xfffffffc
inc eax
mov esi, edi
sub esi, eax
mov eax, 0x10
movd xmm5, eax
mov eax, 8
movd xmm6, eax
mov eax, 4
movd xmm7, eax
mov eax, edx
sub eax, ecx
mov dword [ebp - 0x10], eax
mov edi, eax
xor eax, eax
mov dword [ebp - 0x20], esi
mov esi, ecx
lea edx, [eax + 2]
jmp 0x1001f7a0
movdqu xmm0, xmmword [esi]
lea esi, [esi + 0x10]
movdqa xmm1, xmm0
psrld xmm0, xmm5
pslld xmm1, xmm5
pand xmm0, xmmword [0x100b1e80]
pand xmm1, xmmword [0x100b1f60]
por xmm1, xmm0
movdqa xmm0, xmm1
pslld xmm0, xmm6
psrld xmm1, xmm6
pand xmm0, xmmword [0x100b1f50]
pand xmm1, xmmword [0x100b1e90]
por xmm0, xmm1
movdqa xmm1, xmm0
psrld xmm0, xmm7
pslld xmm1, xmm7
pand xmm0, xmmword [0x100b1ea0]
pand xmm1, xmmword [0x100b1f40]
por xmm1, xmm0
movd xmm0, edx
movdqa xmm2, xmm1
pslld xmm2, xmm0
psrld xmm1, xmm0
pand xmm2, xmmword [0x100b1f30]
pand xmm1, xmmword [str.3333333333333333]
por xmm2, xmm1
mov edx, 1
movdqa xmm0, xmm2
movd xmm1, edx
pslld xmm0, xmm1
psrld xmm2, xmm1
pand xmm0, xmmword [0x100b1f20]
pand xmm2, xmmword [0x100b1ee0]
por xmm0, xmm2
movdqu xmmword [esi - 0x10], xmm0
movd xmm0, eax
pshufd xmm0, xmm0, 0
paddd xmm0, xmm4
pmulld xmm0, xmmword [0x100b1e60]
paddd xmm0, xmm3
add eax, 4
movdqu xmmword [edi + esi - 0x10], xmm0
mov edx, 2
cmp eax, dword [ebp - 0x20]
jl 0x1001f7a0
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov edx, dword [ebp - 0x18]
jmp 0x1001f897
xor eax, eax
cmp eax, edi
jge 0x1001f92b
sub edx, ecx
mov dword [ebp - 0x20], edi
lea esi, [ecx + eax*4]
mov dword [ebp - 0x10], edx
sub edi, eax
lea esp, [esp]
mov ecx, dword [esi]
rol ecx, 0x10
mov edx, ecx
mov eax, ecx
shr edx, 8
shl eax, 8
xor edx, eax
shl ecx, 8
and edx, 0xff00ff
xor edx, ecx
mov ecx, edx
shr ecx, 4
mov eax, edx
shl eax, 4
xor ecx, eax
and ecx, 0xf0f0f0f
shl edx, 4
xor ecx, edx
mov edx, ecx
lea eax, [ecx*4]
shr edx, 2
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
xor edx, eax
mov ecx, edx
shr ecx, 1
lea eax, [edx + edx]
xor ecx, eax
and ecx, 0x55555555
lea eax, [edx + edx]
xor ecx, eax
mov eax, dword [ebp - 0x10]
mov dword [esi], ecx
mov dword [esi + eax], esi
add esi, 4
dec edi
jne 0x1001f8b0
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov edx, dword [ebp - 0x18]
push 0x1001eed0
push 4
push edi
push edx
call fcn.100036f0
add esp, 0x10
lea eax, [edi*4]
call fcn.10009710
lea eax, [edi*4]
mov dword [ebp - 0x10], esp
push eax
call fcn.100035aa
mov edx, dword [ebp - 0x10]
add esp, 4
xor ecx, ecx
mov dword [esi + 0x14], eax
test edi, edi
jle 0x1001f9b1
mov esi, dword [ebp - 0x18]
lea ebx, [ebx]
mov eax, dword [esi + ecx*4]
sub eax, dword [ebp - 0x14]
sar eax, 2
mov dword [edx + eax*4], ecx
inc ecx
cmp ecx, edi
jl 0x1001f970
mov esi, dword [ebp - 0xc]
test edi, edi
jle 0x1001f9b1
mov eax, dword [ebp - 0x14]
sub eax, edx
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x24], eax
mov edi, edx
dec dword [ebp - 0x18]
mov edx, dword [edi]
mov eax, dword [eax + edi]
mov ecx, dword [esi + 0x14]
lea edi, [edi + 4]
mov dword [ecx + edx*4], eax
mov eax, dword [ebp - 0x24]
jne 0x1001f998
mov edi, dword [ebp - 8]
push dword [ebp - 0x14]
call fcn.10003534
add esp, 4
mov edx, edi
mov edi, dword [ebp - 0x1c]
push dword [ebp - 0x10]
mov ecx, edi
call fcn.1001ef70
add esp, 4
mov dword [esi + 0x10], eax
push dword [ebp - 0x28]
call fcn.100035aa
xor ecx, ecx
add esp, 4
mov dword [esi + 0x18], eax
xor edx, edx
mov dword [ebp - 0x1c], ecx
cmp dword [edi + 4], ecx
jle 0x1001fa12
jmp 0x1001f9f0
mov eax, dword [edi + 8]
cmp byte [edx + eax], 0
jle 0x1001fa0c
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + ecx*4]
mov eax, dword [esi + 0x18]
mov dword [eax + ecx*4], edx
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
inc edx
cmp edx, dword [edi + 4]
jl 0x1001f9f0
push ecx
call fcn.100035aa
xor ecx, ecx
xor edx, edx
add esp, 4
mov dword [esi + 0x1c], eax
mov dword [esi + 0x28], 0
mov dword [ebp - 8], edx
mov dword [ebp - 0x1c], ecx
cmp dword [edi + 4], ecx
jle 0x1001faa9
mov eax, dword [edi + 8]
mov al, byte [ecx + eax]
mov byte [ebp - 1], al
test al, al
jle 0x1001fa69
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + edx*4]
mov eax, dword [esi + 0x1c]
mov dl, byte [ebp - 1]
mov byte [ecx + eax], dl
mov eax, dword [edi + 8]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
movsx eax, byte [ecx + eax]
inc edx
mov dword [ebp - 8], edx
cmp eax, dword [esi + 0x28]
jle 0x1001fa69
mov dword [esi + 0x28], eax
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, dword [edi + 4]
jl 0x1001fa34
cmp edx, 1
jne 0x1001faa9
cmp dword [esi + 0x28], edx
jne 0x1001faa9
push 4
push 2
mov dword [esi + 0x24], edx
call fcn.1000356c
mov dword [esi + 0x20], eax
mov dword [eax + 4], 1
mov eax, dword [esi + 0x20]
add esp, 8
mov dword [eax], 1
xor eax, eax
lea esp, [ebp - 0x30]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 8]
xor ecx, ecx
test eax, eax
je 0x1001fab7
inc ecx
shr eax, 1
jne 0x1001fab2
add ecx, 0xfffffffc
mov edx, 5
cmp ecx, edx
mov eax, ecx
cmovl eax, edx
mov dword [esi + 0x24], eax
cmp eax, 8
mov ecx, 8
cmovg eax, ecx
mov dword [esi + 0x24], eax
mov ecx, dword [esi + 0x24]
mov eax, 1
shl eax, cl
push 4
push eax
mov dword [ebp - 0x14], eax
call fcn.1000356c
xor edi, edi
add esp, 8
mov dword [esi + 0x20], eax
mov dword [ebp - 0x1c], edi
cmp dword [ebp - 8], edi
jle 0x1001fbd7
mov eax, dword [esi + 0x1c]
movsx ecx, byte [eax + edi]
mov dword [ebp - 0x24], ecx
cmp ecx, dword [esi + 0x24]
jg 0x1001fbca
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + edi*4]
rol ecx, 0x10
mov edx, ecx
mov eax, ecx
shr edx, 8
shl eax, 8
xor edx, eax
shl ecx, 8
and edx, 0xff00ff
xor edx, ecx
mov ecx, edx
shr ecx, 4
mov eax, edx
shl eax, 4
xor ecx, eax
and ecx, 0xf0f0f0f
shl edx, 4
xor ecx, edx
mov edx, ecx
lea eax, [ecx*4]
shr edx, 2
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
xor edx, eax
mov ecx, edx
shr ecx, 1
lea eax, [edx + edx]
xor ecx, eax
and ecx, 0x55555555
lea eax, [edx + edx]
xor ecx, eax
mov dword [ebp - 0x20], ecx
mov ecx, dword [esi + 0x24]
sub ecx, dword [ebp - 0x24]
mov eax, 1
shl eax, cl
xor edx, edx
mov dword [ebp - 0x18], edx
test eax, eax
jle 0x1001fbca
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebp - 0x1c]
inc edi
mov cl, byte [ecx + eax]
mov eax, dword [esi + 0x20]
shl edx, cl
or edx, dword [ebp - 0x20]
mov dword [eax + edx*4], edi
mov eax, dword [esi + 0x1c]
mov edi, dword [ebp - 0x1c]
mov ecx, dword [esi + 0x24]
movsx eax, byte [eax + edi]
mov edx, dword [ebp - 0x18]
sub ecx, eax
mov eax, 1
shl eax, cl
inc edx
mov dword [ebp - 0x18], edx
cmp edx, eax
jl 0x1001fb94
inc edi
mov dword [ebp - 0x1c], edi
cmp edi, dword [ebp - 8]
jl 0x1001fb00
mov ecx, 0x1f
sub ecx, dword [esi + 0x24]
mov eax, 0xfffffffe
shl eax, cl
xor edi, edi
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x28], eax
xor eax, eax
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x14], eax
jle 0x1001fd08
mov ecx, 0x20
sub ecx, dword [esi + 0x24]
shl eax, cl
mov ecx, eax
rol ecx, 0x10
mov edx, ecx
mov dword [ebp - 0x1c], eax
mov eax, ecx
shr edx, 8
shl eax, 8
xor edx, eax
shl ecx, 8
and edx, 0xff00ff
xor edx, ecx
mov ecx, edx
shr ecx, 4
mov eax, edx
shl eax, 4
xor ecx, eax
and ecx, 0xf0f0f0f
shl edx, 4
xor ecx, edx
mov edx, ecx
lea eax, [ecx*4]
shr edx, 2
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
xor edx, eax
mov ecx, edx
shr ecx, 1
lea eax, [edx + edx]
xor ecx, eax
and ecx, 0x55555555
lea eax, [edx + edx]
xor ecx, eax
mov eax, dword [esi + 0x20]
cmp dword [eax + ecx*4], 0
lea eax, [eax + ecx*4]
mov dword [ebp - 0x24], eax
jne 0x1001fcf8
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
inc edx
cmp edx, ecx
jge 0x1001fcb2
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x1c]
lea eax, [eax + ecx*4]
mov ecx, dword [ebp - 8]
add eax, 4
lea ecx, [ecx]
cmp dword [eax], esi
ja 0x1001fcaf
inc dword [ebp - 0x10]
inc edx
add eax, 4
cmp edx, ecx
jl 0x1001fca0
mov esi, dword [ebp - 0xc]
cmp edi, ecx
jge 0x1001fcd2
mov eax, dword [esi + 0x14]
lea edx, [eax + edi*4]
lea esp, [esp]
mov eax, dword [edx]
and eax, dword [ebp - 0x28]
cmp dword [ebp - 0x1c], eax
jb 0x1001fcd2
inc edi
add edx, 4
cmp edi, ecx
jl 0x1001fcc0
mov eax, dword [ebp - 0x10]
sub ecx, edi
cmp eax, 0x7fff
mov edx, 0x7fff
cmova eax, edx
cmp ecx, edx
cmova ecx, edx
or eax, 0xffff0000
shl eax, 0xf
or eax, ecx
mov ecx, dword [ebp - 0x24]
mov dword [ecx], eax
mov eax, dword [ebp - 0x18]
inc eax
mov dword [ebp - 0x18], eax
cmp eax, dword [ebp - 0x14]
jl 0x1001fc00
xor eax, eax
lea esp, [ebp - 0x30]
pop edi
pop esi
mov esp, ebp
pop ebp
ret