Function at 0x180120fa0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], rbx
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov rdx, qword [rcx + 8]
mov rbx, rcx
mov r11d, dword [rcx]
xor r15d, r15d
movsxd rcx, dword [rcx + 0x10]
mov r13, r9
mov r10d, dword [rsp + 0xd8]
mov r14d, r15d
mov eax, dword [rbx + 0x14]
mov esi, dword [rsp + 0xb0]
mov r12, qword [rbx + 0x20]
mov dword [rsp + 0x38], eax
mov rax, qword [rbx + 0x30]
mov qword [rsp + 0x40], rax
mov rax, qword [rdx + 0x40]
mov qword [rsp + 0x48], rdx
mov dword [rsp + 0x34], r15d
mov dword [rsp + 0xb0], r11d
movsx edx, word [rax + rcx*2]
mov eax, dword [rsp + 0xd0]
mov dword [rsp + 0x30], ecx
lea edi, [rdx + rax*8]
test r10d, r10d
je 0x18012104b
cmp esi, 2
jne 0x18012104b
mov rax, qword [rsp + 0xb8]
lea r8d, [rsi*2 - 1]
mov ecx, edi
sar ecx, 1
sub ecx, 0x10
mov r9d, dword [rax]
jmp 0x18012106f
mov rax, qword [rsp + 0xb8]
lea r8d, [rsi*2 - 1]
mov ecx, edi
sar ecx, 1
sub ecx, 4
mov r9d, dword [rax]
test r10d, r10d
je 0x180121072
cmp esi, 2
jne 0x180121072
dec r8d
mov eax, r8d
mov ebp, 1
imul eax, ecx
add eax, r9d
sub r9d, edi
cdq
idiv r8d
lea edx, [r9 - 0x20]
cmp edx, eax
cmovge edx, eax
mov eax, 0x40
cmp edx, eax
cmovg edx, eax
cmp edx, 4
jge 0x1801210a3
mov edi, ebp
jmp 0x1801210f7
mov eax, edx
mov ecx, 0xe
sar eax, 3
sub cl, al
mov eax, edx
and eax, 7
lea rdx, [0x18021bae8]
movsx edi, word [rdx + rax*2]
sar edi, cl
inc edi
and edi, 0xfffffffe
cmp edi, 0x100
jle 0x1801210f7
mov r8d, 0x29d
lea rdx, str.D:_aMilodyMilodyextopuscelt_bands.c
lea rcx, str.assertion_failed:_qn___256
call fcn.18011ba50
mov r10d, dword [rsp + 0xd8]
mov r11d, dword [rsp + 0xb0]
test r10d, r10d
je 0x180121107
mov eax, dword [rsp + 0x30]
cmp eax, dword [rsp + 0x38]
cmovge edi, ebp
test r11d, r11d
je 0x18012112c
mov eax, dword [rbx + 0x3c]
mov r9d, esi
mov rcx, qword [rsp + 0xa0]
mov r8d, r10d
mov rdx, r13
mov dword [rsp + 0x20], eax
call fcn.180127040
mov r14d, eax
mov rcx, r12
call fcn.18011ea50
mov dword [rsp + 0xd0], eax
mov r11d, 0x4000
cmp edi, ebp
je 0x180121623
mov r8d, dword [rsp + 0xb0]
mov eax, dword [rsp + 0xd8]
test r8d, r8d
je 0x180121372
test eax, eax
je 0x1801211bd
mov r9d, dword [rbx + 0x40]
test r9d, r9d
je 0x1801211bd
mov eax, 0x7fff
cmp r14d, 0x2000
jg 0x180121181
mov eax, 0xffff8001
cdq
lea ebx, [rdi - 1]
idiv edi
mov ecx, edi
imul ecx, r14d
add ecx, eax
mov eax, r15d
sar ecx, 0xe
test ecx, ecx
cmovns eax, ecx
cmp ebx, eax
jl 0x1801211a6
test ecx, ecx
mov ebx, ecx
cmovs ebx, r15d
mov eax, dword [rsp + 0xd8]
test r9d, r9d
js 0x180121385
inc ebx
jmp 0x180121385
mov ebx, edi
imul ebx, r14d
add ebx, 0x2000
sar ebx, 0xe
test eax, eax
jne 0x180121385
mov rax, qword [rsp + 0x90]
cmp dword [rax + 0x48], r15d
je 0x1801212f9
test ebx, ebx
jle 0x1801212f9
cmp ebx, edi
jge 0x1801212f9
xor edx, edx
mov ecx, r11d
mov eax, ebx
mov r14d, 0x2055
shl eax, 0xe
div edi
sub cx, ax
movsx r8d, ax
movsx r10d, cx
mov ecx, r11d
imul r8d, r8d
imul r10d, r10d
add r8d, 0x1000
sar r8d, 0xd
add r10d, 0x1000
movsx edx, r8w
imul eax, edx, 0x272
sar r10d, 0xd
movsx r9d, r10w
sub ecx, eax
sar ecx, 0xf
lea eax, [r14 + rcx]
mov ecx, 0x1de3
cwde
imul eax, edx
add eax, r11d
sar eax, 0xf
sub ax, cx
movsx ecx, ax
imul ecx, edx
imul eax, r9d, 0x272
add ecx, r11d
sar ecx, 0xf
sub cx, r8w
mov r8d, 0xffff8000
add cx, r8w
movsx edx, cx
mov ecx, r11d
sub ecx, eax
sar ecx, 0xf
lea eax, [r14 + rcx]
mov ecx, 0x1de3
cwde
imul eax, r9d
add eax, r11d
sar eax, 0xf
sub ax, cx
movsx ecx, ax
imul ecx, r9d
add ecx, r11d
sar ecx, 0xf
sub cx, r10w
add cx, r8w
movsx ecx, cx
call fcn.180120ef0
mov r8d, dword [rsp + 0xb0]
mov r10d, 0x80
movsx edx, ax
movsx eax, r10w
movsx ecx, si
imul eax, ecx
sub ax, r10w
cwde
imul edx, eax
mov rax, qword [rsp + 0xb8]
mov ecx, dword [rax]
add edx, 0x4000
sar edx, 0xf
cmp edx, ecx
jle 0x180121360
mov ebx, edi
mov eax, dword [rsp + 0xd8]
cmp dword [rsp + 0xc8], ebp
jg 0x180121514
test eax, eax
jne 0x180121514
mov r14d, edi
sar r14d, 1
lea eax, [r14 + 1]
mov r9d, eax
mov dword [rsp + 0x38], eax
imul r9d, eax
mov dword [rsp + 0x90], r9d
test r8d, r8d
je 0x18012147e
cmp ebx, r14d
jg 0x180121457
lea edx, [rbx + 1]
mov rcx, r12
imul edx, ebx
lea r8d, [rbx + 1]
sar edx, 1
add r8d, edx
call fcn.18012a330
jmp 0x180121532
mov eax, dword [rsp + 0xd8]
neg ecx
cmp edx, ecx
jge 0x180121300
mov ebx, r15d
jmp 0x180121300
mov dword [rsp + 0x90], r14d
mov ebx, r14d
test eax, eax
je 0x180121300
cmp esi, 2
jle 0x180121300
mov eax, edi
cdq
sub eax, edx
sar eax, 1
mov dword [rsp + 0x90], eax
lea ecx, [rax + 1]
lea r14d, [rcx + rcx*2]
lea ecx, [r14 + rax]
mov dword [rsp + 0x38], ecx
test r8d, r8d
je 0x1801213e6
sub r14d, eax
cmp ebx, eax
jg 0x1801213ce
lea edx, [rbx + rbx*2]
mov r9d, ecx
lea r8d, [rdx + 3]
mov rcx, r12
call fcn.18012a330
jmp 0x180121532
lea r8d, [r14 + rbx]
mov r9d, ecx
lea edx, [r8 - 1]
mov rcx, r12
call fcn.18012a330
jmp 0x180121532
mov edx, ecx
mov rcx, r12
call fcn.18011c3b0
mov ecx, eax
cmp eax, r14d
jge 0x18012140e
mov eax, 0x55555556
imul ecx
mov eax, dword [rsp + 0x90]
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jmp 0x18012141d
mov eax, dword [rsp + 0x90]
sub ecx, r14d
lea ebx, [rax + 1]
add ebx, ecx
sub r14d, eax
cmp ebx, eax
jg 0x18012143d
mov r9d, dword [rsp + 0x38]
lea edx, [rbx + rbx*2]
lea r8d, [rdx + 3]
mov rcx, r12
call fcn.18011c370
jmp 0x180121532
mov r9d, dword [rsp + 0x38]
lea r8d, [r14 + rbx]
lea edx, [r8 - 1]
mov rcx, r12
call fcn.18011c370
jmp 0x180121532
mov eax, edi
mov edx, r9d
sub eax, ebx
lea ecx, [rax + 2]
lea r8d, [rax + 1]
inc eax
imul ecx, eax
sar ecx, 1
sub edx, ecx
mov rcx, r12
add r8d, edx
call fcn.18012a330
jmp 0x180121532
mov edx, r9d
mov rcx, r12
call fcn.18011c3b0
imul r14d, dword [rsp + 0x38]
sar r14d, 1
cmp eax, r14d
jge 0x1801214cb
lea ecx, [rax*8 + 1]
call fcn.18012a380
mov r14d, dword [rsp + 0x90]
mov r9d, r14d
lea ebx, [rax - 1]
shr ebx, 1
lea ecx, [rbx + 1]
mov edx, ecx
imul edx, ebx
sar edx, 1
lea r8d, [rdx + rcx]
mov rcx, r12
call fcn.18011c370
jmp 0x180121532
mov r14d, dword [rsp + 0x90]
mov ecx, r14d
sub ecx, eax
lea ecx, [rcx*8 - 7]
call fcn.18012a380
mov edx, r14d
lea ebx, [rdi*2 + 2]
sub ebx, eax
mov r9d, r14d
shr ebx, 1
mov eax, edi
sub eax, ebx
lea ecx, [rax + 1]
add eax, 2
imul eax, ecx
sar eax, 1
sub edx, eax
lea r8d, [rdx + rcx]
mov rcx, r12
call fcn.18011c370
jmp 0x180121532
lea edx, [rdi + 1]
mov rcx, r12
test r8d, r8d
je 0x18012152b
mov r8d, edx
mov edx, ebx
call fcn.18012a1b0
jmp 0x180121532
call fcn.18011c1d0
mov ebx, eax
test ebx, ebx
jns 0x18012154f
mov r8d, 0x346
lea rdx, str.D:_aMilodyMilodyextopuscelt_bands.c
lea rcx, str.assertion_failed:_itheta_0
call fcn.18011ba50
shl ebx, 0xe
xor edx, edx
mov eax, ebx
div edi
mov r14d, eax
cmp dword [rsp + 0xb0], r15d
je 0x180121816
cmp dword [rsp + 0xd8], r15d
je 0x180121816
test eax, eax
jne 0x1801215c1
mov eax, dword [rsp + 0x30]
mov r8, r13
mov r9, qword [rsp + 0x40]
mov rdx, qword [rsp + 0xa0]
mov rcx, qword [rsp + 0x48]
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x20], eax
call fcn.1801221c0
mov rcx, r12
call fcn.18011ea50
mov edi, eax
mov rax, qword [rsp + 0xb8]
sub edi, dword [rsp + 0xd0]
sub dword [rax], edi
jmp 0x18012183a
mov rcx, qword [rsp + 0xa0]
mov r8d, esi
mov rdx, r13
call fcn.180125020
mov rcx, r12
call fcn.18011ea50
mov edi, eax
mov rax, qword [rsp + 0xb8]
sub edi, dword [rsp + 0xd0]
sub dword [rax], edi
mov r12d, 0x4000
cmp r14d, r12d
jne 0x180121860
mov ecx, dword [rsp + 0xc0]
mov r13d, r15d
mov rax, qword [rsp + 0xe0]
mov r15d, 0x7fff
shl ebp, cl
dec ebp
shl ebp, cl
and dword [rax], ebp
jmp 0x1801219c3
cmp dword [rsp + 0xd8], r15d
je 0x180121816
mov eax, dword [rsp + 0xb0]
test eax, eax
je 0x1801217b3
cmp r14d, 0x2000
jle 0x180121781
cmp dword [rbx + 0x44], r15d
jne 0x180121781
mov edx, r15d
mov edi, ebp
test esi, esi
jle 0x1801216fd
cmp esi, 2
jb 0x180121705
movdqa xmm2, xmmword [0x18017cfe0]
cmp esi, 0x10
jb 0x1801216d4
mov eax, esi
mov rcx, r15
and eax, 0xfffffff0
movsxd r8, eax
lea rax, [r13 + 0x20]
nop dword [rax]
movups xmm0, xmmword [rax - 0x20]
add edx, 0x10
lea rax, [rax + 0x40]
add rcx, 0x10
xorps xmm0, xmm2
movups xmmword [rax - 0x60], xmm0
movups xmm0, xmmword [rax - 0x50]
xorps xmm0, xmm2
movups xmmword [rax - 0x50], xmm0
movups xmm1, xmmword [rax - 0x40]
xorps xmm1, xmm2
movups xmmword [rax - 0x40], xmm1
movups xmm0, xmmword [rax - 0x30]
xorps xmm0, xmm2
movups xmmword [rax - 0x30], xmm0
cmp rcx, r8
jl 0x180121690
mov eax, esi
and al, 0xf
cmp al, 2
jb 0x1801216fd
mov eax, esi
movsxd rcx, edx
and eax, 0xfffffffe
movsxd r8, eax
nop
movsd xmm0, qword [r13 + rcx*4]
add edx, 2
xorps xmm0, xmm2
movsd qword [r13 + rcx*4], xmm0
add rcx, 2
cmp rcx, r8
jl 0x1801216e0
cmp edx, esi
jge 0x180121784
movaps xmm2, xmmword [0x18017cfe0]
mov eax, esi
sub eax, edx
movsxd r9, edx
cmp eax, 4
jl 0x180121758
mov eax, esi
lea rcx, [r13 + 8]
sub eax, edx
lea rcx, [rcx + r9*4]
sub eax, 4
shr eax, 2
inc eax
mov r8d, eax
lea edx, [rdx + rax*4]
lea r9, [r9 + rax*4]
nop word [rax + rax]
movups xmm0, xmmword [rcx - 8]
lea rcx, [rcx + 0x10]
xorps xmm0, xmm2
movups xmmword [rcx - 0x18], xmm0
sub r8, rbp
jne 0x180121740
cmp edx, esi
jge 0x180121784
lea rcx, [r9*4]
mov eax, esi
add rcx, r13
sub eax, edx
movsxd rdx, eax
movss xmm0, dword [rcx]
lea rcx, [rcx + 4]
xorps xmm0, xmm2
movss dword [rcx - 4], xmm0
sub rdx, rbp
jne 0x18012176a
jmp 0x180121784
mov edi, r15d
mov eax, dword [rsp + 0x30]
mov r8, r13
mov r9, qword [rsp + 0x40]
mov rdx, qword [rsp + 0xa0]
mov rcx, qword [rsp + 0x48]
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x20], eax
call fcn.1801221c0
mov eax, dword [rsp + 0xb0]
jmp 0x1801217b6
mov edi, r15d
mov rsi, qword [rsp + 0xb8]
cmp dword [rsi], 0x10
jle 0x1801217ed
cmp dword [rbx + 0x28], 0x10
jle 0x1801217ed
mov rcx, r12
test eax, eax
je 0x1801217df
mov r8d, 2
mov edx, edi
call fcn.180129fd0
jmp 0x1801217f0
mov edx, 2
call fcn.18011bfb0
mov edi, eax
jmp 0x1801217f0
mov edi, r15d
cmp dword [rbx + 0x44], r15d
mov eax, r15d
mov rcx, r12
mov r14d, r15d
cmove eax, edi
mov dword [rsp + 0x34], eax
call fcn.18011ea50
mov edi, eax
sub edi, dword [rsp + 0xd0]
sub dword [rsi], edi
jmp 0x18012183a
mov rcx, r12
call fcn.18011ea50
mov edi, eax
mov rax, qword [rsp + 0xb8]
sub edi, dword [rsp + 0xd0]
sub dword [rax], edi
test r14d, r14d
jne 0x1801215ef
mov ecx, dword [rsp + 0xc0]
mov r13d, 0x7fff
mov rax, qword [rsp + 0xe0]
mov r12d, 0xffffc000
shl ebp, cl
dec ebp
and dword [rax], ebp
jmp 0x1801219c3
mov ecx, r12d
movsx r8d, r14w
imul r8d, r8d
mov r10d, 0x2055
mov r11d, 0x1de3
mov ebp, 0xffff8000
add r8d, 0x1000
sar r8d, 0xd
movsx edx, r8w
imul eax, edx, 0x272
sub ecx, eax
sar ecx, 0xf
lea eax, [r10 + rcx]
mov ecx, r12d
cwde
imul eax, edx
add eax, r12d
sar eax, 0xf
sub ax, r11w
movsx ebx, ax
mov eax, r12d
sub ax, r14w
imul ebx, edx
movsx r9d, ax
imul r9d, r9d
add ebx, r12d
sar ebx, 0xf
sub bx, r8w
add r9d, 0x1000
sar r9d, 0xd
add bx, bp
movsx edx, r9w
imul eax, edx, 0x272
movsx r13d, bx
sub ecx, eax
sar ecx, 0xf
lea eax, [r10 + rcx]
cwde
imul eax, edx
bsr r10d, r13d
add eax, r12d
sar eax, 0xf
inc r10d
sub ax, r11w
movsx r8d, ax
mov eax, 0xf
imul r8d, edx
mov ecx, eax
sub ecx, r10d
shl bx, cl
add r8d, r12d
sar r8d, 0xf
sub r8w, r9w
movsx r9d, bx
add r8w, bp
mov ebx, 0x1efc
movsx r15d, r8w
bsr r11d, r15d
inc r11d
sub eax, r11d
movzx ecx, al
shl r8w, cl
mov ecx, r12d
movsx edx, r8w
imul eax, edx, 0xa25
sub ecx, eax
imul eax, r9d, 0xa25
sar ecx, 0xf
add cx, bx
movsx r8d, cx
mov ecx, r12d
imul r8d, edx
sub ecx, eax
sar ecx, 0xf
add r8d, r12d
lea eax, [rbx + rcx]
sar r8d, 0xf
cwde
imul eax, r9d
add eax, r12d
sar eax, 0xf
sub r8w, ax
sub r11w, r10w
mov eax, 0x800
movsx ecx, r11w
cwde
imul ecx, eax
add r8w, cx
movsx ecx, si
movsx edx, r8w
mov r8d, 0x80
movsx eax, r8w
imul eax, ecx
sub ax, r8w
cwde
imul edx, eax
add r12d, edx
sar r12d, 0xf
mov rcx, qword [rsp + 0x98]
mov eax, dword [rsp + 0x34]
mov rbx, qword [rsp + 0xa8]
mov dword [rcx], eax
mov dword [rcx + 4], r13d
mov dword [rcx + 8], r15d
mov dword [rcx + 0xc], r12d
mov dword [rcx + 0x10], r14d
mov dword [rcx + 0x14], edi
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret