Function at 0x100f9f9c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x2c
mov dword [ebp - 0x28], edx
mov esi, ecx
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x38], eax
mov eax, dword [eax + 0x38]
movsx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x20]
lea ecx, [eax + ecx*8]
mov edx, ecx
sar edx, 1
cmp dword [ebp + 0x24], 0
setne al
cmp dword [ebp + 0x10], 2
sete bl
and bl, al
mov eax, 0xfffffffc
mov edi, 0xfffffff0
cmovne eax, edi
add eax, edx
movzx edx, bl
not edx
mov edi, dword [ebp + 0x10]
lea ebx, [edx + edi*2]
imul eax, ebx
mov edx, dword [ebp + 0x14]
mov edi, dword [edx]
add eax, edi
sub edi, ecx
cdq
mov ecx, dword [esi]
mov dword [ebp - 0x24], ecx
mov ecx, dword [esi + 0x10]
mov dword [ebp - 0x10], ecx
mov ecx, dword [esi + 0x1c]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], esi
mov ecx, dword [esi + 0x24]
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0x34], ecx
idiv ebx
mov edx, dword [ebp + 0x24]
add edi, 0xffffffe0
cmp edi, eax
cmovge edi, eax
cmp edi, 0x40
mov eax, 0x40
cmovl eax, edi
mov edi, dword [ebp - 0x24]
xor ecx, ecx
inc ecx
mov ebx, ecx
cmp eax, 4
jl 0x100fa07f
mov ecx, eax
and ecx, 7
movsx ebx, word [ecx + ecx + 0x1017476c]
shr eax, 3
mov cl, 0xe
sub cl, al
sar ebx, cl
inc ebx
and ebx, 0xfffffffe
cmp ebx, 0x101
jl 0x100fa079
push 0x29d
push 0x1017463c
push 0x1017477c
call fcn.100d0cbc
add esp, 0xc
xor ecx, ecx
inc ecx
mov edx, dword [ebp + 0x24]
test edx, edx
cmove ecx, ebx
cmp esi, dword [ebp - 0x10]
mov dword [ebp - 0x2c], ebx
cmovl ecx, ebx
test edi, edi
mov ebx, ecx
je 0x100fa12a
mov esi, edx
mov eax, dword [ebp - 0x1c]
push dword [eax + 0x2c]
mov edi, dword [ebp + 0x10]
push edi
push edx
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.100fae6f
add esp, 0x14
mov dword [ebp - 0x10], eax
push dword [ebp - 0x14]
call fcn.100f6e14
add esp, 4
cmp ebx, 1
mov dword [ebp - 0x30], eax
jne 0x100fa15b
test esi, esi
je 0x100fa637
xor ebx, ebx
cmp dword [ebp - 0x10], 0x2001
jl 0x100fa339
mov eax, dword [ebp - 0x1c]
cmp dword [eax + 0x34], 0
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x24]
mov edx, dword [ebp + 8]
jne 0x100fa342
xor ebx, ebx
inc ebx
test edi, edi
jle 0x100fa342
xor eax, eax
movaps xmm0, xmmword [0x101349b0]
mov edx, dword [ebp + 0xc]
movss xmm1, dword [edx + eax*4]
xorps xmm1, xmm0
movss dword [edx + eax*4], xmm1
inc eax
cmp edi, eax
jne 0x100fa110
mov eax, dword [ebp - 0x20]
jmp 0x100fa33f
push dword [ebp - 0x14]
call fcn.100f6e14
add esp, 4
mov ecx, eax
cmp ebx, 1
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x30], ecx
jne 0x100fa1bb
xor ebx, ebx
mov ecx, 0
cmp dword [ebp + 0x24], 0
mov esi, dword [ebp - 0x24]
jne 0x100fa355
jmp 0x100fa572
mov ecx, ebx
test esi, esi
je 0x100fa219
mov eax, dword [ebp - 0x1c]
mov ebx, dword [eax + 0x30]
test ebx, ebx
je 0x100fa3f3
mov esi, dword [ebp - 0x10]
cmp esi, 0x2000
mov edx, 0x7fff
mov eax, 0xffff8001
cmovg eax, edx
cdq
mov dword [ebp - 0x2c], ebx
mov ebx, ecx
idiv ecx
imul esi, ecx
add esi, eax
mov eax, esi
sar eax, 0xe
xor ecx, ecx
test esi, esi
mov esi, ebx
mov ebx, dword [ebp - 0x2c]
cmovns ecx, eax
lea eax, [esi - 1]
cmp esi, ecx
cmovle ecx, eax
not ebx
shr ebx, 0x1f
add ebx, ecx
jmp 0x100fa404
mov esi, ebx
cmp eax, 3
mov eax, dword [ebp + 0x24]
jl 0x100fa397
test eax, eax
je 0x100fa397
mov edi, esi
shr edi, 0x1f
mov dword [ebp - 0x18], esi
add edi, esi
sar edi, 1
lea eax, [edi + 1]
mov dword [ebp - 0x1c], eax
lea esi, [eax + eax*2]
lea eax, [esi + edi]
mov dword [ebp - 0x10], eax
push eax
push dword [ebp - 0x14]
call fcn.100f54de
add esp, 8
mov ebx, eax
mov ecx, esi
cmp eax, esi
jge 0x100fa45a
mov edx, 0x55555556
mov eax, ebx
imul edx
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jmp 0x100fa461
mov edx, dword [ebp - 0x10]
imul edx, ecx
lea eax, [edx + 0x2000]
mov ebx, eax
sar ebx, 0xe
cmp ebx, ecx
mov dword [ebp - 0x18], ecx
jge 0x100fa4a5
cmp edx, 0x2000
mov edx, dword [ebp + 0x1c]
jl 0x100fa4a8
mov esi, ecx
mov ecx, dword [ebp - 0x1c]
cmp dword [ecx + 0x38], 0
je 0x100fa4a8
mov dword [ebp - 0x10], ebx
and eax, 0xffffc000
xor edx, edx
div esi
mov edx, eax
movsx eax, dx
imul eax, eax
shl eax, 3
mov ebx, 0x8000
add eax, ebx
sar eax, 0x10
imul ecx, eax, 0xfffffd8e
mov esi, 0x4000
add ecx, esi
sar ecx, 0xf
mov edi, 0x2055
add ecx, edi
imul ecx, eax
add ecx, ecx
mov edi, 0xe21d8000
add ecx, edi
sar ecx, 0x10
imul ecx, eax
add ecx, esi
shr ecx, 0xf
sub ecx, eax
shl edx, 0x10
mov eax, 0x40000000
sub eax, edx
mov edx, eax
sar edx, 0x10
sar eax, 0xd
imul eax, edx
add eax, ebx
sar eax, 0x10
imul edx, eax, 0xfffffd8e
add edx, esi
sar edx, 0xf
mov ebx, 0x2055
add edx, ebx
imul edx, eax
add edx, edx
add edx, edi
sar edx, 0x10
imul edx, eax
add edx, esi
shr edx, 0xf
sub edx, eax
mov eax, 0xffff8000
add ecx, eax
movsx ecx, cx
add edx, eax
movsx eax, dx
mov edx, dword [ebp + 0x10]
shl edx, 7
add edx, 0xffffff80
movsx edi, dx
push ecx
push eax
call fcn.100f7a39
add esp, 8
cwde
imul eax, edi
mov edx, dword [ebp + 0x1c]
add eax, esi
sar eax, 0xf
mov ecx, dword [ebp + 0x14]
mov ecx, dword [ecx]
cmp eax, ecx
mov ebx, dword [ebp - 0x2c]
jg 0x100fa4a8
neg ecx
cmp eax, ecx
mov ebx, dword [ebp - 0x10]
mov eax, 0
cmovl ebx, eax
jmp 0x100fa4a8
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x24]
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x38]
push edi
push eax
push dword [ebp - 0x34]
push dword [ebp + 0xc]
call fcn.100fa7a6
add esp, 0x10
xor ecx, ecx
mov eax, dword [ebp + 0x14]
cmp dword [eax], 0x11
mov eax, 0
jl 0x100fa4fd
mov eax, dword [ebp - 0x1c]
cmp dword [eax + 0x20], 0x11
mov eax, 0
jl 0x100fa4fd
test esi, esi
je 0x100fa4ee
push 2
push ebx
push dword [ebp - 0x14]
call fcn.100ffc4d
add esp, 0xc
mov eax, ebx
jmp 0x100fa4fb
cmp dword [ebp + 0x1c], 1
jg 0x100fa492
test eax, eax
jne 0x100fa492
mov dword [ebp - 0x18], esi
sar esi, 1
lea ebx, [esi + 1]
mov edi, ebx
imul edi, ebx
push edi
push dword [ebp - 0x14]
call fcn.100f54de
add esp, 8
imul ebx, esi
sar ebx, 1
cmp eax, ebx
jge 0x100fa5e0
lea eax, [eax*8 + 1]
push eax
call fcn.100fff94
add esp, 4
mov esi, eax
dec esi
shr esi, 1
lea ebx, [esi + 1]
mov eax, ebx
imul eax, esi
shr eax, 1
jmp 0x100fa617
mov ebx, dword [ebp - 0x10]
mov esi, ecx
imul ebx, ecx
add ebx, 0x2000
sar ebx, 0xe
cmp edi, 2
jle 0x100fa4b0
mov eax, esi
shr eax, 0x1f
add eax, esi
sar eax, 1
lea ecx, [eax + eax*2]
lea edx, [eax + eax*2]
add edx, 3
sub edx, eax
add edx, ebx
mov dword [ebp - 0x18], esi
mov esi, eax
not esi
add esi, ecx
add esi, 3
add esi, ebx
cmp ebx, eax
lea edi, [ebx + ebx*2 + 3]
cmovg edi, edx
lea eax, [eax + ecx + 3]
lea ecx, [ebx + ebx*2]
cmovg ecx, esi
mov esi, dword [ebp - 0x18]
push eax
push edi
push ecx
push dword [ebp - 0x14]
call fcn.100ffbd4
add esp, 0x10
jmp 0x100fa521
mov eax, dword [ebp - 0x1c]
add eax, eax
sub ebx, eax
mov edx, ecx
mov eax, ecx
sub eax, edi
add eax, ebx
mov ecx, edi
not ecx
add ecx, edx
add ecx, ebx
cmp ebx, edi
lea edx, [ebx + ebx*2]
lea esi, [ebx + ebx*2 + 3]
cmovg esi, eax
cmovg edx, ecx
push dword [ebp - 0x10]
push esi
push edx
push dword [ebp - 0x14]
call fcn.100f554a
jmp 0x100fa51b
lea eax, [esi + 1]
push eax
push dword [ebp - 0x14]
call fcn.100f560b
add esp, 8
mov ebx, eax
jmp 0x100fa521
mov edx, dword [ebp + 0x1c]
cmp edx, 2
jl 0x100fa4c2
mov esi, dword [ebp - 0x18]
lea eax, [esi + 1]
push eax
push ebx
push dword [ebp - 0x14]
call fcn.100ffcaa
add esp, 0xc
jmp 0x100fa521
mov edi, dword [ebp - 0x18]
mov ecx, edi
sar ecx, 1
lea eax, [ecx + 1]
imul eax, eax
lea edx, [ebx + 1]
sub edi, ebx
lea esi, [edi + 1]
cmp ebx, ecx
mov ecx, edx
cmovg ecx, esi
jle 0x100fa509
add edi, 2
imul esi, edi
sar esi, 1
mov edx, eax
sub edx, esi
jmp 0x100fa50e
push 2
push dword [ebp - 0x14]
call fcn.100f5581
add esp, 8
xor ecx, ecx
mov edx, dword [ebp - 0x1c]
cmp dword [edx + 0x34], 0
cmove ecx, eax
jmp 0x100fa572
imul edx, ebx
sar edx, 1
add ecx, edx
push eax
push ecx
push edx
push dword [ebp - 0x14]
call fcn.100ffbd4
add esp, 0x10
mov esi, dword [ebp - 0x18]
test ebx, ebx
jns 0x100fa53c
push 0x346
push 0x1017463c
push str.assertion_failed:_itheta_0
call fcn.100d0cbc
add esp, 0xc
shl ebx, 0xe
mov eax, ebx
xor edx, edx
div esi
cmp dword [ebp + 0x24], 0
mov edi, dword [ebp + 0x10]
je 0x100fa58f
cmp dword [ebp - 0x24], 0
je 0x100fa58f
cmp esi, ebx
jbe 0x100fa597
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp + 8]
push edi
push dword [ebp - 0x20]
push dword [ebp - 0x34]
push dword [ebp + 0xc]
call fcn.100fa7a6
add esp, 0x10
xor ecx, ecx
mov dword [ebp - 0x10], ecx
push dword [ebp - 0x14]
call fcn.100f6e14
add esp, 4
mov esi, eax
sub esi, dword [ebp - 0x30]
mov eax, dword [ebp + 0x14]
sub dword [eax], esi
jmp 0x100fa65b
mov dword [ebp - 0x10], eax
jmp 0x100fa637
mov dword [ebp - 0x10], eax
test edi, edi
jle 0x100fa637
xor eax, eax
movss xmm0, dword [0x10134b3c]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
movss xmm1, dword [edx + eax*4]
mulss xmm1, xmm0
movss xmm2, dword [ecx + eax*4]
mulss xmm2, xmm0
movaps xmm3, xmm1
addss xmm3, xmm2
movss dword [edx + eax*4], xmm3
subss xmm2, xmm1
movss dword [ecx + eax*4], xmm2
inc eax
cmp edi, eax
jne 0x100fa5b2
jmp 0x100fa637
mov ecx, dword [ebp - 0x18]
lea ebx, [ecx + 1]
lea esi, [ecx + ecx]
add esi, 2
not eax
add eax, edi
lea eax, [eax*8 + 1]
push eax
call fcn.100fff94
add esp, 4
sub esi, eax
shr esi, 1
sub ebx, esi
mov ecx, dword [ebp - 0x18]
sub ecx, esi
add ecx, 2
imul ecx, ebx
sar ecx, 1
mov eax, edi
sub eax, ecx
add ebx, eax
push edi
push ebx
push eax
push dword [ebp - 0x14]
call fcn.100f554a
add esp, 0x10
shl esi, 0xe
mov eax, esi
xor edx, edx
div dword [ebp - 0x18]
mov dword [ebp - 0x10], eax
mov edi, dword [ebp + 0x10]
push dword [ebp - 0x14]
call fcn.100f6e14
add esp, 4
mov esi, eax
sub esi, dword [ebp - 0x30]
mov eax, dword [ebp + 0x14]
sub dword [eax], esi
mov edx, dword [ebp - 0x10]
cmp edx, 0x4000
je 0x100fa688
test edx, edx
jne 0x100fa6b3
mov edx, dword [ebp - 0x28]
xor eax, eax
dec eax
mov ecx, dword [ebp + 0x18]
shl eax, cl
not eax
mov ecx, dword [ebp + 0x28]
and dword [ecx], eax
mov eax, 0xffffc000
mov edi, 0x7fff
xor ebx, ebx
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x10], 0
jmp 0x100fa78a
xor eax, eax
dec eax
mov ecx, dword [ebp + 0x18]
shl eax, cl
not eax
shl eax, cl
mov ecx, dword [ebp + 0x28]
and dword [ecx], eax
mov ebx, 0x7fff
mov dword [ebp - 0x10], 0x4000
xor ecx, ecx
xor edi, edi
mov eax, 0x4000
jmp 0x100fa787
mov eax, edx
shl eax, 0x10
movsx ecx, dx
mov dword [ebp - 0x10], edx
mov edx, 0x40000000
sub edx, eax
sar eax, 0xd
imul eax, ecx
mov ecx, 0x8000
add eax, ecx
sar eax, 0x10
mov ecx, edi
imul edi, eax, 0xfffffd8e
mov ebx, 0x4000
add edi, ebx
sar edi, 0xf
mov ebx, 0x2055
add edi, ebx
imul edi, eax
add edi, edi
mov ebx, 0xe21d8000
add edi, ebx
sar edi, 0x10
imul edi, eax
mov ebx, 0x4000
add edi, ebx
shr edi, 0xf
sub edi, eax
mov eax, edx
sar eax, 0x10
sar edx, 0xd
imul edx, eax
mov eax, 0x8000
add edx, eax
sar edx, 0x10
imul eax, edx, 0xfffffd8e
add eax, ebx
sar eax, 0xf
mov ebx, 0x2055
add eax, ebx
imul eax, edx
add eax, eax
mov ebx, 0xe21d8000
add eax, ebx
sar eax, 0x10
imul eax, edx
mov ebx, 0x4000
add eax, ebx
shr eax, 0xf
sub eax, edx
mov edx, 0xffff8000
add edi, edx
add eax, edx
movsx edi, di
movsx ebx, ax
shl ecx, 7
add ecx, 0xffffff80
movsx eax, cx
mov dword [ebp - 0x14], eax
push edi
push ebx
call fcn.100f7a39
add esp, 8
cwde
imul eax, dword [ebp - 0x14]
mov ecx, 0x4000
add eax, ecx
sar eax, 0xf
xor ecx, ecx
mov edx, dword [ebp - 0x28]
mov dword [edx], ecx
mov dword [edx + 4], edi
mov dword [edx + 8], ebx
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 0x10]
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], esi
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret