Function at 0x101c2030
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
mov ecx, dword [esp + 0x2c]
push esi
push edi
mov edi, dword [esp + 0x44]
mov eax, dword [ecx]
mov esi, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 0xc], eax
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x2c], eax
mov eax, dword [ecx + 0x24]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x38]
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x10], esi
movsx ecx, word [eax + edx*2]
mov eax, dword [esp + 0x54]
mov dword [esp + 0x18], edx
lea ecx, [ecx + eax*8]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x1c], ecx
test eax, eax
je 0x101c20ad
cmp edi, 2
jne 0x101c20ad
mov edx, dword [esp + 0x48]
lea esi, [edi*2 - 1]
sar ecx, 1
sub ecx, 0x10
mov edx, dword [edx]
mov dword [esp + 0x54], edx
jmp 0x101c20d0
mov edx, dword [esp + 0x48]
lea esi, [edi*2 - 1]
sar ecx, 1
sub ecx, 4
mov edx, dword [edx]
mov dword [esp + 0x54], edx
test eax, eax
je 0x101c20d1
mov dword [esp + 0x54], edx
cmp edi, 2
jne 0x101c20d1
dec esi
mov eax, esi
imul eax, ecx
add eax, edx
cdq
idiv esi
mov edx, dword [esp + 0x54]
sub edx, dword [esp + 0x1c]
add edx, 0xffffffe0
cmp edx, eax
cmovge edx, eax
mov eax, 0x40
cmp edx, eax
cmovg edx, eax
cmp edx, 4
jge 0x101c2105
mov esi, 1
mov dword [esp + 0x54], esi
jmp 0x101c2145
mov eax, edx
mov ecx, 0xe
and edx, 7
sar eax, 3
sub cl, al
movsx esi, word [edx*2 + 0x102c53c8]
sar esi, cl
inc esi
and esi, 0xfffffffe
mov dword [esp + 0x54], esi
cmp esi, 0x100
jle 0x101c2145
push 0x29d
push str.C:_vcpkg_2024.03.25_buildtreesopus_src_v1.4_cac4cc030e.cleancelt_bands.c
push str.assertion_failed:_qn___256
call fcn.101ace10
add esp, 0xc
mov ecx, dword [esp + 0x58]
mov eax, 1
test ecx, ecx
je 0x101c2161
mov edx, dword [esp + 0x18]
cmp edx, dword [esp + 0xc]
cmovge esi, eax
mov dword [esp + 0x54], esi
cmp dword [esp + 0x20], 0
je 0x101c2185
mov eax, dword [esp + 0x34]
push dword [eax + 0x2c]
push edi
push ecx
push dword [esp + 0x4c]
push dword [esp + 0x4c]
call fcn.101c7a60
add esp, 0x14
mov dword [esp + 0x24], eax
push dword [esp + 0x2c]
call fcn.101c7d10
add esp, 4
mov dword [esp + 0x1c], eax
cmp esi, 1
je 0x101c25a2
cmp dword [esp + 0x20], 0
je 0x101c22b7
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x34]
test edx, edx
je 0x101c220f
mov ecx, dword [eax + 0x30]
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x101c220f
mov ecx, dword [esp + 0x24]
mov eax, 0x7fff
cmp ecx, 0x2000
jg 0x101c21d6
mov eax, 0xffff8001
cdq
lea edi, [esi - 1]
idiv esi
mov edx, esi
imul edx, ecx
add edx, eax
xor eax, eax
sar edx, 0xe
test edx, edx
cmovns eax, edx
cmp edi, eax
jl 0x101c21fa
xor eax, eax
mov edi, edx
test edx, edx
cmovs edi, eax
cmp dword [esp + 0x34], 0
mov eax, dword [esp + 0x58]
jl 0x101c22d1
inc edi
jmp 0x101c22d1
mov edi, esi
imul edi, dword [esp + 0x24]
add edi, 0x2000
sar edi, 0xe
test edx, edx
jne 0x101c22cf
cmp dword [eax + 0x38], edx
je 0x101c2396
test edi, edi
jle 0x101c2396
cmp edi, esi
jge 0x101c2396
mov eax, edi
shl eax, 0xe
div esi
movzx esi, ax
push esi
call fcn.101c1e40
add esp, 4
cwde
push eax
mov eax, 0x4000
sub eax, esi
push eax
call fcn.101c1e40
add esp, 4
cwde
push eax
call fcn.101c1ea0
mov esi, dword [esp + 0x5c]
add esp, 8
movsx ecx, ax
mov eax, dword [esp + 0x44]
shl eax, 7
add eax, 0xffffff80
cwde
imul ecx, eax
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
add ecx, 0x4000
sar ecx, 0xf
cmp ecx, eax
jle 0x101c22a2
mov eax, dword [esp + 0x58]
mov edi, esi
jmp 0x101c2398
neg eax
cmp ecx, eax
mov eax, dword [esp + 0x58]
jge 0x101c2398
xor edi, edi
jmp 0x101c2398
mov eax, dword [esp + 0x24]
mov edi, eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x58]
test eax, eax
je 0x101c2398
jmp 0x101c22d1
mov eax, edx
cmp dword [esp + 0x44], 2
jle 0x101c2398
mov eax, esi
cdq
sub eax, edx
sar eax, 1
cmp dword [esp + 0x20], 0
mov dword [esp + 0x34], eax
lea ecx, [eax + 1]
lea ecx, [ecx + ecx*2]
lea edx, [ecx + eax]
mov dword [esp + 0x54], ecx
mov dword [esp + 0xc], edx
je 0x101c2338
sub ecx, eax
cmp edi, eax
jg 0x101c231f
lea eax, [edi + edi*2]
push edx
lea ecx, [eax + 3]
push ecx
push eax
push dword [esp + 0x38]
call fcn.101cbbc0
add esp, 0x10
jmp 0x101c24c2
add ecx, edi
push edx
push ecx
lea eax, [ecx - 1]
push eax
push dword [esp + 0x38]
call fcn.101cbbc0
add esp, 0x10
jmp 0x101c24c2
push edx
push dword [esp + 0x30]
call fcn.101b4920
mov ecx, dword [esp + 0x5c]
mov edx, eax
add esp, 8
cmp edx, ecx
jge 0x101c2361
mov eax, 0x55555556
imul edx
mov eax, dword [esp + 0x34]
mov edi, edx
shr edi, 0x1f
jmp 0x101c236a
mov eax, dword [esp + 0x34]
sub edx, ecx
lea edi, [eax + 1]
add edi, edx
sub ecx, eax
cmp edi, eax
jg 0x101c237a
lea eax, [edi + edi*2]
lea ecx, [eax + 3]
jmp 0x101c237f
add ecx, edi
lea eax, [ecx - 1]
push dword [esp + 0xc]
push ecx
push eax
push dword [esp + 0x38]
call fcn.101b48e0
add esp, 0x10
jmp 0x101c24c2
mov eax, edx
cmp dword [esp + 0x50], 1
jg 0x101c249a
test eax, eax
jne 0x101c249a
mov eax, esi
sar eax, 1
mov dword [esp + 0x54], eax
lea ecx, [eax + 1]
mov edx, ecx
mov dword [esp + 0xc], ecx
imul edx, ecx
cmp dword [esp + 0x20], 0
mov dword [esp + 0x34], edx
je 0x101c240e
cmp edi, eax
jg 0x101c23db
lea edx, [edi + 1]
imul edx, edi
lea eax, [edi + 1]
sar edx, 1
jmp 0x101c23f5
mov eax, esi
sub eax, edi
lea ecx, [eax + 1]
mov dword [esp + 0x54], ecx
lea ecx, [eax + 2]
inc eax
imul ecx, eax
mov eax, dword [esp + 0x54]
sar ecx, 1
sub edx, ecx
push dword [esp + 0x34]
add eax, edx
push eax
push edx
push dword [esp + 0x38]
call fcn.101cbbc0
add esp, 0x10
jmp 0x101c24c2
push edx
push dword [esp + 0x30]
call fcn.101b4920
mov ecx, dword [esp + 0x5c]
mov edx, eax
imul ecx, dword [esp + 0x14]
add esp, 8
sar ecx, 1
cmp edx, ecx
jge 0x101c244d
lea eax, [edx*8 + 1]
push eax
call fcn.101c1430
add esp, 4
lea edi, [eax - 1]
shr edi, 1
lea edx, [edi + 1]
mov ecx, edx
imul ecx, edi
sar ecx, 1
jmp 0x101c2483
mov eax, dword [esp + 0x34]
sub eax, edx
lea eax, [eax*8 - 7]
push eax
call fcn.101c1430
mov ecx, dword [esp + 0x38]
lea edi, [esi*2 + 2]
sub edi, eax
add esp, 4
shr edi, 1
mov eax, esi
sub eax, edi
lea edx, [eax + 1]
add eax, 2
imul eax, edx
sar eax, 1
sub ecx, eax
push dword [esp + 0x34]
lea eax, [ecx + edx]
push eax
push ecx
push dword [esp + 0x38]
call fcn.101b48e0
add esp, 0x10
jmp 0x101c24c2
cmp dword [esp + 0x20], 0
lea eax, [esi + 1]
push eax
je 0x101c24b4
push edi
push dword [esp + 0x34]
call fcn.101cba80
add esp, 0xc
jmp 0x101c24c2
push dword [esp + 0x30]
call fcn.101b4770
add esp, 8
mov edi, eax
test edi, edi
jns 0x101c24dd
push 0x346
push str.C:_vcpkg_2024.03.25_buildtreesopus_src_v1.4_cac4cc030e.cleancelt_bands.c
push str.assertion_failed:_itheta_0
call fcn.101ace10
add esp, 0xc
shl edi, 0xe
xor edx, edx
mov eax, edi
div esi
cmp dword [esp + 0x20], 0
mov esi, eax
mov dword [esp + 0x24], esi
je 0x101c2778
cmp dword [esp + 0x58], 0
je 0x101c2778
mov eax, dword [esp + 0x3c]
push dword [esp + 0x44]
test esi, esi
jne 0x101c2545
push dword [esp + 0x1c]
push dword [esp + 0x1c]
push dword [esp + 0x4c]
push eax
push dword [esp + 0x24]
call fcn.101c2ec0
push dword [esp + 0x44]
call fcn.101c7d10
mov edx, eax
add esp, 0x1c
mov eax, dword [esp + 0x48]
sub edx, dword [esp + 0x1c]
mov dword [esp + 0x34], edx
sub dword [eax], edx
jmp 0x101c279a
push dword [esp + 0x44]
push eax
call fcn.101c5810
push dword [esp + 0x38]
call fcn.101c7d10
mov edx, eax
add esp, 0x10
mov eax, dword [esp + 0x48]
sub edx, dword [esp + 0x1c]
mov dword [esp + 0x34], edx
sub dword [eax], edx
cmp esi, 0x4000
jne 0x101c27c0
mov ecx, dword [esp + 0x4c]
mov edx, 1
mov eax, dword [esp + 0x5c]
mov esi, 0x7fff
shl edx, cl
dec edx
mov dword [esp + 0x58], 0
shl edx, cl
and dword [eax], edx
mov edx, 0x4000
jmp 0x101c2916
cmp dword [esp + 0x58], 0
je 0x101c2774
mov eax, dword [esp + 0x20]
test eax, eax
je 0x101c26ff
cmp dword [esp + 0x24], 0x2000
jle 0x101c26d4
mov eax, dword [esp + 0x34]
cmp dword [eax + 0x34], 0
jne 0x101c26d4
movaps xmm2, xmmword [0x101f36d0]
xor ecx, ecx
mov dword [esp + 0x28], 1
test edi, edi
jle 0x101c2677
mov dword [esp + 0x28], 1
cmp edi, 2
jb 0x101c267b
mov edx, dword [esp + 0x40]
mov dword [esp + 0x28], 1
cmp edi, 0x10
jb 0x101c265e
mov esi, edi
mov dword [esp + 0x28], 1
and esi, 0xfffffff0
lea eax, [edx + 0x20]
movups xmm0, xmmword [eax - 0x20]
add ecx, 0x10
lea eax, [eax + 0x40]
xorps xmm0, xmm2
movups xmmword [eax - 0x60], xmm0
movups xmm0, xmmword [eax - 0x50]
xorps xmm0, xmm2
movups xmmword [eax - 0x50], xmm0
movups xmm0, xmmword [eax - 0x40]
xorps xmm0, xmm2
movups xmmword [eax - 0x40], xmm0
movups xmm0, xmmword [eax - 0x30]
xorps xmm0, xmm2
movups xmmword [eax - 0x30], xmm0
cmp ecx, esi
jl 0x101c2620
mov eax, edi
and al, 0xf
cmp al, 2
jb 0x101c2677
mov eax, edi
and eax, 0xfffffffe
movsd xmm0, qword [edx + ecx*4]
xorps xmm0, xmm2
movsd qword [edx + ecx*4], xmm0
add ecx, 2
cmp ecx, eax
jl 0x101c2663
cmp ecx, edi
jge 0x101c26dc
mov edx, dword [esp + 0x40]
mov eax, edi
sub eax, ecx
cmp eax, 4
jl 0x101c26c0
mov esi, edi
lea eax, [edx + 8]
sub esi, ecx
lea eax, [eax + ecx*4]
sub esi, 4
shr esi, 2
inc esi
lea ecx, [ecx + esi*4]
nop dword [eax]
lea eax, [eax + 0x10]
movups xmm0, xmmword [eax - 0x18]
xorps xmm0, xmm2
movups xmmword [eax - 0x18], xmm0
sub esi, 1
jne 0x101c26a0
cmp ecx, edi
jge 0x101c26e0
nop word [eax + eax]
movss xmm0, dword [edx + ecx*4]
xorps xmm0, xmm2
movss dword [edx + ecx*4], xmm0
inc ecx
cmp ecx, edi
jl 0x101c26c0
jmp 0x101c26e0
mov dword [esp + 0x28], 0
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
push edi
push dword [esp + 0x1c]
push dword [esp + 0x1c]
push edx
push eax
push dword [esp + 0x24]
call fcn.101c2ec0
mov eax, dword [esp + 0x38]
add esp, 0x18
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x34]
cmp dword [edi], 0x10
jle 0x101c273c
cmp dword [esi + 0x20], 0x10
jle 0x101c273c
push 2
test eax, eax
je 0x101c272a
push dword [esp + 0x2c]
push dword [esp + 0x34]
call fcn.101cb540
add esp, 0xc
jmp 0x101c2744
push dword [esp + 0x30]
call fcn.101b4570
add esp, 8
mov dword [esp + 0x28], eax
jmp 0x101c2744
mov dword [esp + 0x28], 0
push dword [esp + 0x2c]
xor eax, eax
mov dword [esp + 0x28], 0
cmp dword [esi + 0x34], eax
cmove eax, dword [esp + 0x2c]
mov dword [esp + 0x2c], eax
call fcn.101c7d10
mov edx, eax
add esp, 4
sub edx, dword [esp + 0x1c]
sub dword [edi], edx
mov dword [esp + 0x34], edx
jmp 0x101c279a
mov esi, dword [esp + 0x24]
push dword [esp + 0x2c]
call fcn.101c7d10
mov ecx, dword [esp + 0x4c]
add esp, 4
sub eax, dword [esp + 0x1c]
mov dword [esp + 0x34], eax
sub dword [ecx], eax
test esi, esi
jne 0x101c256b
mov ecx, dword [esp + 0x4c]
mov edx, 1
mov eax, dword [esp + 0x5c]
xor esi, esi
shl edx, cl
dec edx
mov dword [esp + 0x58], 0x7fff
and dword [eax], edx
mov edx, 0xffffc000
jmp 0x101c2916
movzx edi, si
mov ecx, 0x4000
movsx eax, di
imul eax, eax
add eax, 0x1000
sar eax, 0xd
movzx esi, ax
movsx edx, si
imul eax, edx, 0x272
sub ecx, eax
sar ecx, 0xf
add ecx, 0x2055
movsx eax, cx
mov ecx, 0x4000
imul eax, edx
add eax, 0x4000
sar eax, 0xf
sub eax, 0x1de3
cwde
imul eax, edx
add eax, 0x4000
sar eax, 0xf
sub eax, esi
add eax, 0xffff8000
mov dword [esp + 0x48], eax
cwde
mov dword [esp + 0x58], eax
mov eax, ecx
sub eax, edi
cwde
imul eax, eax
add eax, 0x1000
sar eax, 0xd
movzx esi, ax
movsx edx, si
imul eax, edx, 0x272
sub ecx, eax
sar ecx, 0xf
add ecx, 0x2055
movsx eax, cx
imul eax, edx
add eax, 0x4000
sar eax, 0xf
sub eax, 0x1de3
cwde
imul edx, eax
mov eax, dword [esp + 0x58]
add edx, 0x4000
sar edx, 0xf
sub edx, esi
add edx, 0xffff8000
movsx ecx, dx
bsr edi, ecx
bsr esi, eax
mov dword [esp + 0xc], ecx
mov eax, 0xf
inc esi
mov ecx, eax
sub ecx, esi
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x48]
inc edi
shl si, cl
sub eax, edi
mov ecx, eax
movsx esi, si
shl dx, cl
mov ecx, 0x4000
movsx edx, dx
imul eax, edx, 0xa25
sub ecx, eax
imul eax, esi, 0xa25
sar ecx, 0xf
add ecx, 0x1efc
movsx ecx, cx
imul ecx, edx
mov edx, 0x4000
sub edx, eax
add ecx, 0x4000
sar ecx, 0xf
sar edx, 0xf
sub edi, dword [esp + 0x54]
add edx, 0x1efc
movsx eax, dx
imul eax, esi
mov esi, dword [esp + 0xc]
shl edi, 0xb
add eax, 0x4000
sar eax, 0xf
sub ecx, eax
mov eax, dword [esp + 0x44]
shl eax, 7
add ecx, edi
add eax, 0xffffff80
movsx edx, cx
cwde
imul edx, eax
add edx, 0x4000
sar edx, 0xf
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x28]
pop edi
mov dword [eax], ecx
mov ecx, dword [esp + 0x54]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [eax + 8], esi
mov dword [eax + 0xc], edx
mov dword [eax + 0x14], ecx
pop esi
add esp, 0x28
ret