Function at 0x100f8440
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd4
call fcn.10156030
mov eax, dword [0x102096e4]
xor eax, esp
mov dword [esp + 0xd0], eax
mov ecx, dword [esp + 0xf0]
mov eax, dword [esp + 0xd8]
push ebx
mov ebx, dword [esp + 0x100]
push esi
mov esi, dword [esp + 0xe8]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0xfc]
shr esi, 3
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x100]
mov dword [esp + 0x28], eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x38], 2
push edi
mov edi, dword [esp + 0xf4]
cmp esi, 0x14
je 0x100f84ef
cmp esi, 0x1c
je 0x100f84ef
cmp esi, 0x20
je 0x100f84ef
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.10155c5f
add esp, 0xd4
ret
test eax, eax
jne 0x100f84fc
call fcn.1006ebf0
mov dword [esp + 0x2c], eax
mov eax, 0x200
cmp dword [esp + 0xe8], eax
cmovae eax, dword [esp + 0xe8]
add eax, 0x3f
and eax, 0xffffffc0
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xf8]
test eax, eax
je 0x100f852c
xor ecx, ecx
cmp eax, esi
cmovb edi, ecx
cmp eax, esi
cmova eax, esi
mov dword [esp + 0xf8], eax
test edi, edi
je 0x100f854e
push eax
lea eax, [esp + 0xc0]
push edi
push eax
call fcn.101576e0
add esp, 0xc
call fcn.1008f800
mov dword [esp + 0x14], eax
test eax, eax
je 0x100f8bbc
push ebp
call fcn.100d3e10
mov dword [esp + 0x28], eax
test eax, eax
je 0x100f8b97
mov edi, dword [esp + 0x18]
push edi
call fcn.1008f880
push edi
call fcn.1008f680
push edi
mov ebp, eax
call fcn.1008f680
push edi
mov dword [esp + 0x34], eax
call fcn.1008f680
push edi
mov dword [esp + 0x4c], eax
call fcn.1008f680
push edi
mov dword [esp + 0x38], eax
call fcn.1008f680
push edi
mov dword [esp + 0x68], eax
call fcn.1008f680
push edi
mov dword [esp + 0x68], eax
call fcn.1008f680
push edi
mov dword [esp + 0x38], eax
call fcn.1008f680
mov edi, eax
add esp, 0x24
mov eax, dword [esp + 0x34]
dec eax
mov dword [esp + 0x10], edi
push eax
call fcn.1006a1e0
push eax
push edi
call fcn.100c1980
add esp, 0xc
test eax, eax
je 0x100f8b97
nop dword [eax + eax]
push dword [esp + 0x2c]
mov edi, dword [esp + 0x100]
push 0
push ebx
call fcn.101138b0
inc dword [esp + 0x38]
add esp, 0xc
test eax, eax
je 0x100f8b97
test edi, edi
jne 0x100f8629
lea eax, [esp + 0xc0]
push esi
push eax
call fcn.10074280
add esp, 8
jmp 0x100f8634
mov dword [esp + 0xfc], 0
push esi
lea eax, [esp + 0xc4]
xor ebx, ebx
push eax
lea eax, [esp + 0xa8]
test edi, edi
push eax
sete bl
call fcn.101576e0
push esi
lea eax, [esp + 0xd0]
push eax
lea eax, [esp + 0x94]
push eax
call fcn.101576e0
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x100f8680
add byte [esp + eax + 0xa0], 1
jne 0x100f8680
sub eax, 1
jns 0x100f8671
mov edi, dword [esp + 0x30]
lea eax, [esp + 0x60]
push 0
push edi
push 0
push eax
lea eax, [esp + 0xd0]
push esi
push eax
call fcn.1006e3b0
add esp, 0x18
test eax, eax
je 0x100f8b97
push 0
push edi
push 0
lea eax, [esp + 0x8c]
push eax
lea eax, [esp + 0xb0]
push esi
push eax
call fcn.1006e3b0
add esp, 0x18
test eax, eax
je 0x100f8b97
xor ecx, ecx
test esi, esi
je 0x100f875b
cmp esi, 0x40
jb 0x100f875b
mov eax, esi
and eax, 0x8000003f
jns 0x100f86ea
dec eax
or eax, 0xffffffc0
inc eax
mov edx, esi
sub edx, eax
nop
movups xmm0, xmmword [esp + ecx + 0x60]
movups xmm1, xmmword [esp + ecx + 0x80]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x60], xmm1
movups xmm0, xmmword [esp + ecx + 0x70]
movups xmm1, xmmword [esp + ecx + 0x90]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x70], xmm1
movups xmm0, xmmword [esp + ecx + 0x80]
movups xmm1, xmmword [esp + ecx + 0xa0]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x80], xmm1
movups xmm0, xmmword [esp + ecx + 0x90]
movups xmm1, xmmword [esp + ecx + 0xb0]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x90], xmm1
add ecx, 0x40
cmp ecx, edx
jl 0x100f86f0
cmp ecx, esi
jge 0x100f8770
nop
mov al, byte [esp + ecx + 0x80]
xor byte [esp + ecx + 0x60], al
inc ecx
cmp ecx, esi
jl 0x100f8760
push dword [esp + 0x20]
or byte [esp + 0x64], 0x80
lea eax, [esp + 0x64]
or byte [esp + esi + 0x63], 1
push esi
push eax
call fcn.10069530
add esp, 0xc
test eax, eax
je 0x100f8b97
mov edi, dword [esp + 0x1c]
push edi
push ebx
push dword [esp + 0x20]
push 0x32
push dword [esp + 0x30]
call fcn.10113d70
add esp, 0x14
test eax, eax
jg 0x100f87bd
jne 0x100f8b97
mov ebx, edi
jmp 0x100f85f0
push 0
push 2
push edi
call fcn.101138b0
add esp, 0xc
test eax, eax
je 0x100f8b97
push 0
push 3
push edi
call fcn.101138b0
add esp, 0xc
test eax, eax
je 0x100f8b97
mov ecx, dword [esp + 0x34]
mov eax, 0xcccccccd
xor edi, edi
mov dword [esp + 0x3c], edi
lea ecx, [ecx - 1]
mul ecx
mov ebx, edx
shr ebx, 7
test edi, edi
je 0x100f881b
push edi
push 0
push dword [esp + 0x24]
call fcn.101138b0
add esp, 0xc
test eax, eax
je 0x100f8b97
push 0
push dword [esp + 0x3c]
call fcn.1006a0b0
add esp, 8
xor edi, edi
test ebx, ebx
js 0x100f88c9
lea eax, [esi - 1]
test eax, eax
js 0x100f884f
nop word [eax + eax]
add byte [esp + eax + 0xa0], 1
jne 0x100f884f
sub eax, 1
jns 0x100f8840
push 0
push dword [esp + 0x34]
lea eax, [esp + 0x68]
push 0
push eax
lea eax, [esp + 0xb0]
push esi
push eax
call fcn.1006e3b0
add esp, 0x18
test eax, eax
je 0x100f8b97
push ebp
lea eax, [esp + 0x64]
push esi
push eax
call fcn.10069530
add esp, 0xc
test eax, eax
je 0x100f8b97
lea eax, [esi*8]
imul eax, edi
push eax
push ebp
push ebp
call fcn.100c1980
add esp, 0xc
test eax, eax
je 0x100f8b97
mov eax, dword [esp + 0x38]
push ebp
push eax
push eax
call fcn.1008fc10
add esp, 0xc
test eax, eax
je 0x100f8b97
inc edi
cmp edi, ebx
jle 0x100f8833
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
dec eax
push eax
push edi
call fcn.10069dd0
add esp, 8
test eax, eax
je 0x100f8b97
push edi
mov edi, dword [esp + 0x50]
push edi
call fcn.10069ae0
add esp, 8
test eax, eax
je 0x100f8b97
push dword [esp + 0x10]
push edi
push edi
call fcn.1008fc10
add esp, 0xc
test eax, eax
je 0x100f8b97
push dword [esp + 0x20]
push ebp
call fcn.100c1ac0
add esp, 8
test eax, eax
je 0x100f8b97
push dword [esp + 0x18]
push ebp
push edi
push dword [esp + 0x54]
push 0
call fcn.100d3800
add esp, 0x14
test eax, eax
je 0x100f8b97
call fcn.1006a1e0
push eax
push dword [esp + 0x4c]
push ebp
call fcn.1008fca0
add esp, 0xc
test eax, eax
je 0x100f8b97
push ebp
push edi
mov edi, dword [esp + 0x1c]
push edi
call fcn.1008fca0
add esp, 0xc
test eax, eax
je 0x100f8b97
push dword [esp + 0x10]
push edi
call fcn.100697d0
add esp, 8
test eax, eax
js 0x100f89a7
mov edi, dword [esp + 0x1c]
push edi
push 1
push dword [esp + 0x20]
push 0x32
push dword [esp + 0x24]
call fcn.10113d70
add esp, 0x14
test eax, eax
jg 0x100f89c5
jne 0x100f8b97
mov edi, dword [esp + 0x3c]
inc edi
mov dword [esp + 0x3c], edi
cmp edi, 0x1000
jl 0x100f8800
mov ebx, dword [esp + 0x1c]
jmp 0x100f85f0
push 1
push 2
push edi
call fcn.101138b0
add esp, 0xc
test eax, eax
je 0x100f8b97
call fcn.1006a1e0
push eax
push dword [esp + 0x18]
push dword [esp + 0x18]
call fcn.1008fca0
add esp, 0xc
test eax, eax
je 0x100f8b97
mov ebx, dword [esp + 0x18]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x18]
push 0
push ebp
call fcn.100d3800
add esp, 0x14
test eax, eax
je 0x100f8b97
push 2
push dword [esp + 0x14]
call fcn.1006a0b0
add esp, 8
test eax, eax
je 0x100f8b97
push ebx
push dword [esp + 0x18]
push dword [esp + 0x30]
call fcn.100d3e70
add esp, 0xc
test eax, eax
je 0x100f8b97
push dword [esp + 0x28]
push ebx
push dword [esp + 0x1c]
push ebp
push dword [esp + 0x20]
push dword [esp + 0x38]
call fcn.100d2130
add esp, 0x18
test eax, eax
je 0x100f8b97
nop dword [eax]
mov ecx, dword [esp + 0x24]
cmp dword [ecx + 4], 1
jne 0x100f8aca
mov eax, dword [ecx]
cmp dword [eax], 1
jne 0x100f8aca
cmp dword [ecx + 0xc], 0
jne 0x100f8aca
call fcn.1006a1e0
push eax
mov eax, dword [esp + 0x14]
push eax
push eax
call fcn.1008fc10
add esp, 0xc
test eax, eax
je 0x100f8b97
push dword [esp + 0x28]
inc dword [esp + 0x44]
push ebx
push dword [esp + 0x1c]
push ebp
push dword [esp + 0x20]
push dword [esp + 0x38]
call fcn.100d2130
add esp, 0x18
test eax, eax
jne 0x100f8a70
jmp 0x100f8b97
push 1
push 3
push edi
call fcn.101138b0
add esp, 0xc
test eax, eax
je 0x100f8b97
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x44], 1
nop dword [eax + eax]
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x100f8b00
push eax
call fcn.10069cd0
add esp, 4
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x100f8b10
push eax
call fcn.10069cd0
add esp, 4
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x100f8b20
push eax
call fcn.10069cd0
add esp, 4
push dword [esp + 0x14]
call fcn.10069bc0
push dword [esp + 0x24]
mov dword [ebx + 0xc], eax
call fcn.10069bc0
push dword [esp + 0x2c]
mov dword [ebx + 0x10], eax
call fcn.10069bc0
add esp, 0xc
mov dword [ebx + 0x14], eax
cmp dword [ebx + 0xc], 0
je 0x100f8b8f
cmp dword [ebx + 0x10], 0
je 0x100f8b8f
test eax, eax
je 0x100f8b8f
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x100f8b65
mov eax, dword [esp + 0x3c]
mov dword [ecx], eax
mov eax, dword [esp + 0x58]
test eax, eax
je 0x100f8b73
mov ecx, dword [esp + 0x40]
mov dword [eax], ecx
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x100f8b97
push esi
lea ecx, [esp + 0xc4]
push ecx
push eax
call fcn.101576e0
add esp, 0xc
jmp 0x100f8b97
mov dword [esp + 0x44], 0
mov ebp, dword [esp + 0x18]
push ebp
call fcn.1008f5a0
push ebp
call fcn.1008f610
mov eax, dword [esp + 0x30]
add esp, 8
pop ebp
test eax, eax
je 0x100f8bbc
push eax
call fcn.100d3d90
add esp, 4
mov ecx, dword [esp + 0xdc]
mov eax, dword [esp + 0x40]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.10155c5f
add esp, 0xd4
ret