Function at 0x201647d0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x308
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0x270], xmm6
mov qword [rbp + 0x268], 0xfffffffffffffffe
mov qword [rbp + 0x1e8], rdx
mov r12, rcx
cmp qword [0x205b6560], 0
jne 0x20164843
mov ecx, 0x900
mov edx, 0x1293fbcd
mov r8d, 0xe011029c
call fcn.2008daf0
mov qword [rbp + 0x258], rax
mov rcx, rax
call fcn.20067cf0
mov rax, qword [rbp + 0x258]
mov qword [0x205b6560], rax
mov rax, qword [0x205b6560]
mov qword [rbp + 0x1f8], rax
lea rax, [r12 + 0x2e8]
mov qword [rbp + 0x1d8], rax
lea rax, [r12 + 0x68]
mov qword [rbp + 0x1c0], rax
lea rax, [r12 + 8]
mov qword [rbp + 0x1c8], rax
lea rax, [r12 + 0x28]
mov qword [rbp + 0x1d0], rax
lea rax, [r12 + 0x128]
mov qword [rbp + 0x1b8], rax
lea rax, [r12 + 0x130]
mov qword [rbp + 0x1f0], rax
lea rax, [r12 + 0x308]
mov qword [rbp + 0x240], rax
lea rax, [r12 + 0xa8]
mov qword [rbp + 0x1e0], rax
lea rax, [r12 + 0xe8]
mov qword [rbp + 0x208], rax
lea rax, [r12 + 0xf0]
mov qword [rbp + 0x210], rax
xorps xmm6, xmm6
lea rbx, [rbp + 0x230]
lea r13, [fcn.201647d0]
xor r15d, r15d
mov dword [rbp + 0x264], 0
jmp 0x2016491d
mov rsi, qword [rbp + 0x258]
mov eax, dword [rsi + 4]
mov dword [r12 + 0x2f4], eax
inc dword [rbp + 0x264]
movzx eax, word [rsi + 2]
add r15d, eax
mov rax, qword [rbp + 0x1e8]
mov rsi, qword [rax + 0x10]
cmp r15d, esi
setl al
movzx ecx, byte [0x205b3cd8]
mov edx, ecx
and dl, al
xor cl, al
cmp dl, cl
je 0x201659fd
test rsi, rsi
je 0x20164953
mov rax, qword [rbp + 0x1e8]
mov rsi, qword [rax + 8]
mov edi, r15d
lea rax, [rsi + rdi]
mov qword [rbp + 0x258], rax
movzx eax, word [rsi + rdi]
cmp eax, 0x101
jle 0x201649b0
cmp eax, 0x4003
jg 0x20164aa0
cmp eax, 0x102
je 0x20164d8c
cmp eax, 0x104
je 0x201648fe
cmp eax, 0x108
jne case.0x201649cd.2
mov rsi, qword [rbp + 0x258]
mov eax, dword [rsi + 4]
mov dword [r12 + 0x2f0], eax
jmp 0x20164910
dec eax
cmp eax, 0xb
lea rsi, [rbp - 0x38]
ja case.0x201649cd.2
lea rcx, [0x20166640]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov rcx, qword [rbp + 0x258]
cmp word [rcx + 4], 6
ja 0x201649f3
cmp word [rcx + 6], 0xf
ja 0x201649f3
movzx eax, word [rcx + 8]
cmp eax, 0xca
jbe 0x20165db6
movzx r9d, word [rcx + 8]
movzx r8d, word [rcx + 6]
movzx edx, word [rcx + 4]
mov dword [rsp + 0x38], 0xebd3ffb0
mov dword [rsp + 0x30], 0xc3099e49
mov dword [rsp + 0x28], 0x9dafe146
mov dword [rsp + 0x20], 0
mov rcx, rsi
call fcn.2017aa00
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0xa
mov r8d, 0xa
mov r9d, 0xac8
call fcn.2025fc90
mov rcx, rsi
mov rdx, rbx
call fcn.2025fd60
mov rdi, rbx
mov ebx, eax
mov rcx, rdi
call fcn.2012ad70
mov rcx, rsi
call fcn.2012ad70
movzx eax, byte [0x205b3cdb]
mov ecx, eax
xor cl, bl
and al, bl
add al, al
add al, cl
mov byte [r12 + 0x2cc], al
inc dword [rbp + 0x264]
mov rbx, rdi
mov rsi, qword [rbp + 0x258]
jmp 0x20164916
cmp eax, 0x4004
je 0x20164f0f
cmp eax, 0x4008
je 0x20164c97
cmp eax, 0x4009
jne case.0x201649cd.2
mov r8, qword [r12 + 0x78]
mov rcx, r8
test r8, r8
je 0x20164ad3
mov rcx, qword [r12 + 0x70]
mov rsi, qword [rbp + 0x258]
lea rdx, [rsi + 4]
call fcn.2044f800
mov eax, dword [r12 + 0x10]
mov ecx, eax
not ecx
mov edx, eax
xor edx, 0x30000
xor eax, 0xfffcffff
and eax, ecx
or eax, edx
cmp eax, 0xfffeffff
je 0x20164910
mov r8, qword [r12 + 0x78]
mov rdx, r8
test r8, r8
je 0x20164b1a
mov rdx, qword [r12 + 0x70]
mov rcx, qword [r12 + 8]
mov dword [rsp + 0x38], 0xb3397223
mov dword [rsp + 0x30], 0xae56bb80
mov dword [rsp + 0x28], 0x11803ba9
mov byte [rsp + 0x20], 0
mov r9, qword [rbp + 0x1d8]
call fcn.200f1f20
test al, al
je 0x20165bc0
cmp qword [0x205b39c8], 0
jne 0x20164b8c
mov ecx, 0x700
mov edx, 0x1293fbcd
mov r8d, 0xe011029c
call fcn.2008daf0
mov qword [rbp + 0x250], rax
mov rcx, rax
call fcn.20079790
mov rax, qword [rbp + 0x250]
mov qword [0x205b39c8], rax
mov rsi, qword [0x205b39c8]
mov rdi, qword [r12 + 8]
mov eax, dword [rsi + 8]
mov dword [rdi + 8], eax
movzx eax, word [rsi + 0xc]
mov word [rdi + 0xc], ax
mov eax, dword [rsi + 0x10]
mov dword [rdi + 0x10], eax
mov eax, dword [rsi + 0x14]
mov dword [rdi + 0x14], eax
lea rdx, [rsi + 0x18]
lea rcx, [rdi + 0x18]
mov r8d, 0x5898d3b5
mov r9d, 0xb0745c0e
call fcn.2017a420
lea rdx, [rsi + 0x40]
lea rcx, [rdi + 0x40]
mov r8d, 0x5898d3b5
mov r9d, 0xb0745c0e
call fcn.2017a420
lea rdx, [rsi + 0x68]
lea rcx, [rdi + 0x68]
mov r8d, 0x5898d3b5
mov r9d, 0xb0745c0e
call fcn.2017a420
movzx eax, byte [rsi + 0x90]
add al, byte [0x205b3cda]
mov byte [rdi + 0x90], al
mov eax, dword [rsi + 0x94]
mov dword [rdi + 0x94], eax
jmp 0x201652dd
mov rcx, qword [rbp + 0x258]
mov eax, dword [rcx + 4]
mov dword [rbp - 0x38], eax
mov eax, dword [rcx + 8]
mov dword [rbp - 0x34], eax
mov rax, qword [rcx + 0xc]
mov qword [rbp - 0x30], rax
movabs rax, 0x1101000000020000
mov qword [rbp + 0x230], rax
movabs rax, 0x61516bc000000780
mov qword [rbp + 0x238], rax
mov dword [rsp + 0x20], 0xf1602559
mov r8d, 0x10
mov rcx, rbx
mov rdx, rsi
mov r9d, 0x18556837
call fcn.2008e3f0
test eax, eax
jne 0x20165ba3
inc dword [rbp + 0x264]
mov rsi, qword [rbp + 0x258]
jmp 0x20164916
mov rsi, qword [rbp + 0x258]
mov eax, dword [rsi + 4]
mov dword [r12 + 0x2e8], eax
mov eax, dword [rsi + 8]
mov dword [r12 + 0x2ec], eax
mov eax, dword [rsi + 0x10]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
je 0x20164cda
mov eax, dword [r12 + 0x10]
mov ecx, eax
and ecx, 0x10000
xor eax, 0x10000
or eax, ecx
mov dword [r12 + 0x10], eax
mov edx, dword [rsi + 0xc]
mov rcx, qword [rbp + 0x1c0]
call fcn.20119200
inc dword [rbp + 0x264]
mov eax, dword [r12 + 0x10]
mov ecx, eax
not ecx
mov edx, eax
xor edx, 0x10000
and edx, ecx
xor eax, 0xfffeffff
and ecx, 0x10000
or ecx, eax
not ecx
and eax, 0xfffeffff
or eax, edx
or eax, ecx
cmp eax, 0xffffffff
je 0x201650de
cmp qword [0x205b3c88], 0
jne 0x20164d5f
mov ecx, 0x98
mov edx, 0x1293fbcd
mov r8d, 0xe011029c
call fcn.2008daf0
mov qword [rbp + 0x250], rax
mov rcx, rax
call fcn.2015f8b0
mov rax, qword [rbp + 0x250]
mov qword [0x205b3c88], rax
mov rcx, qword [0x205b3c88]
mov rdx, qword [rbp + 0x1d0]
mov r8, qword [rbp + 0x1c8]
call fcn.20168b40
test al, al
je 0x20164916
or byte [r12 + 0x12], 2
jmp 0x20164916
mov rsi, qword [rbp + 0x258]
mov edx, dword [rsi + 4]
mov qword [rbp + 0x230], 0
mov rax, qword [rbp + 0x1f8]
mov rax, qword [rax + 0x5c8]
mov rcx, qword [r12 + 0x18]
mov r8, rbx
xor r9d, r9d
call qword [case.0x2010e313.0]
mov rax, qword [rbp + 0x230]
mov qword [r12 + 0x2e0], rax
mov eax, dword [rbp + 0x230]
cmp eax, dword [rsi + 4]
jne 0x20164910
mov dword [rbp + 0x218], 0
mov eax, dword [r12 + 0x2f8]
mov ecx, eax
xor ecx, 0xfffffffb
mov r8d, dword [rsi + 8]
cmp r8d, 0x1000
mov edx, 0x1000
cmovb edx, r8d
test ecx, eax
cmove edx, r8d
mov rcx, qword [rbp + 0x1e0]
cmove rcx, rcx
call fcn.20119200
mov r8d, dword [rsi + 8]
mov qword [r12 + 0x2d0], r8
add r8, 0xfff
shr r8, 0xc
cmp qword [r12 + 0x100], r8
jae 0x2016522b
mov rsi, qword [r12 + 0xf8]
test rsi, rsi
je 0x20165235
mov r14, qword [r12 + 0xf0]
mov rax, qword [rbp + 0x210]
movups xmmword [rax], xmm6
mov qword [rax + 0x10], 0
mov byte [r12 + 0x108], 1
mov rcx, qword [rbp + 0x208]
xor edx, edx
call fcn.20173e50
test r14, r14
setne al
sete cl
movzx edx, byte [0x205b3a08]
and cl, dl
mov r8d, edx
and r8b, al
or al, dl
xor al, 1
or al, r8b
mov r8d, ecx
xor r8b, 1
mov edx, eax
xor dl, 1
mov r9d, ecx
and r9b, dl
and dl, r8b
and r8b, al
or r9b, r8b
or dl, r9b
xor dl, 1
xor al, cl
test dl, al
jne 0x20165243
xor dl, al
test dl, 1
jne 0x20165243
mov rax, qword [rbp + 0x210]
mov rcx, qword [rax]
mov r8, rsi
shl r8, 4
add r8, rsi
mov rdx, r14
call fcn.2044f800
mov rcx, r14
mov edx, 0x314c86b9
mov r8d, 0x7eeffe7b
call fcn.2008bfb0
jmp 0x20165243
mov rax, qword [rbp + 0x258]
movzx ebx, word [rax + 2]
add rbx, 0xfffffffffffffffc
mov rax, qword [rbp + 0x1f0]
mov rcx, qword [rax]
test rcx, rcx
je 0x20164f6d
cmp byte [0x205b3cd9], 0
jne 0x20164f41
cmp dword [r12 + 0x14c], 1
jne 0x20164f5d
mov r8, qword [r12 + 0x138]
xor edx, edx
call fcn.2044feb0
mov rcx, qword [r12 + 0x130]
test rcx, rcx
je 0x20164f6d
mov edx, 0x314c86b9
mov r8d, 0x7eeffe7b
call fcn.2008bfb0
mov rax, qword [rbp + 0x258]
lea r14, [rax + 4]
mov rax, qword [rbp + 0x1f0]
movups xmmword [rax], xmm6
mov qword [rax + 0x10], 0
mov byte [r12 + 0x148], 1
test rbx, rbx
je 0x20164fd1
mov rcx, rbx
mov edx, 0xb1f21a2f
mov r8d, 0xb757d268
call fcn.2017a850
mov qword [r12 + 0x130], rax
mov qword [r12 + 0x140], rbx
mov qword [r12 + 0x138], rbx
mov rcx, rax
mov rdx, r14
mov r8, rbx
call fcn.2044f800
mov rbx, qword [r12 + 0x150]
nop dword [rax]
cmp rbx, qword [r12 + 0x158]
je 0x2016500b
add rbx, 8
mov rcx, qword [rbx - 8]
test rcx, rcx
je 0x20164fe0
mov rax, qword [rcx]
mov rax, qword [rax + 8]
mov edx, 1
call qword [case.0x2010e313.0]
jmp 0x20164fe0
mov rax, r14
mov ebx, dword [r14]
test ebx, ebx
mov dword [rbp + 0x250], r15d
je 0x20165113
jle 0x201659e4
dec ebx
add rsi, rdi
add rsi, 0x10
nop
movabs rax, 0x7ffffffffffffff
cmp qword [r12 + 0x170], rax
je 0x20166182
mov r14d, dword [rsi]
mov rdi, qword [r12 + 0x168]
mov r15, qword [rsi - 8]
mov ecx, 0x20
mov edx, 0x1293fbcd
mov r8d, 0xe011029c
call fcn.2008daf0
mov qword [rax + 0x10], r15
mov dword [rax + 0x18], r14d
mov rcx, qword [r12 + 0x170]
mov rdx, rcx
xor rdx, 1
and ecx, 1
add rcx, rcx
neg rdx
neg rcx
mov r8, rdx
xor r8, rcx
and rcx, rdx
lea rcx, [r8 + rcx*2]
neg rcx
mov qword [r12 + 0x170], rcx
mov rcx, qword [rdi + 8]
mov qword [rax], rdi
mov qword [rax + 8], rcx
mov qword [rdi + 8], rax
mov qword [rcx], rax
sub ebx, 1
mov r15d, dword [rbp + 0x250]
jb 0x201659e4
add rsi, 0xc
jmp 0x20165030
mov rsi, qword [rbp + 0x258]
jmp 0x20164916
mov ecx, 0x700
mov edx, 0x1293fbcd
mov r8d, 0xe011029c
call fcn.2008daf0
mov qword [rbp + 0x250], rax
mov rcx, rax
call fcn.20079790
mov rax, qword [rbp + 0x250]
mov qword [r12 + 8], rax
jmp 0x20164916
mov rax, qword [rbp + 0x258]
cmp word [rax + 2], 9
jb 0x201659e4
mov rax, qword [0x205b38a0]
movabs rcx, 0x1e35c5f3688e04a2
add rax, rcx
mov rcx, rax
movabs rdx, 0xd25fe14757f10aa3
xor rcx, rdx
not rax
movabs rdx, 0x2da01eb8a80ef55c
and rax, rdx
or rax, rcx
not rax
lea rcx, [rcx + rax*2]
add rcx, qword [r12 + 0x320]
movabs rax, 0xf6a58c53f80f0bb
add rcx, rax
mov rax, qword [rbp + 0x240]
cmp rcx, 0x10
jb 0x2016518d
mov rax, qword [r12 + 0x308]
mov qword [r12 + 0x318], 0
mov byte [rax], 0
mov qword [rbp - 0x20], 0
mov qword [rbp - 0x18], 0xf
mov byte [rbp - 0x30], 0
mov ecx, 1
xor edx, edx
mov r8d, 0xcf377e6c
call fcn.20179400
mov edx, 0x2e
lea rsi, [rbp - 0x30]
mov rcx, rsi
mov r9, rax
call fcn.2006bec0
lea rax, [0x2046c448]
mov qword [rbp - 0x38], rax
cmp qword [rbp - 0x18], 0x10
mov r9, rsi
jb 0x201651ef
mov r9, qword [rbp - 0x30]
mov r8, qword [rbp - 0x20]
mov rcx, qword [r12 + 0x318]
mov rax, qword [r12 + 0x320]
mov rdx, rax
sub rdx, rcx
cmp rdx, r8
jae 0x201652e9
mov qword [rsp + 0x20], r8
mov rcx, qword [rbp + 0x240]
mov rdx, r8
call fcn.2006cb20
jmp 0x20165319
mov qword [r12 + 0xf8], r8
jmp 0x20165243
mov rcx, qword [rbp + 0x208]
xor edx, edx
call fcn.20173e50
mov rcx, qword [r12 + 0x18]
mov rdx, qword [r12 + 0xb8]
cmp rdx, 0x1000
mov ebx, 0x1000
cmovb rbx, rdx
mov rax, qword [rbp + 0x1f8]
mov rax, qword [rax + 0x5b8]
test rdx, rdx
je 0x2016527b
mov rdx, qword [r12 + 0xb0]
mov qword [rsp + 0x20], 0
mov r8d, ebx
lea r9, [rbp + 0x218]
call qword [case.0x2010e313.0]
test eax, eax
je 0x20165c96
cmp qword [r12 + 0xf8], 0
je 0x201652d6
mov rax, qword [r12 + 0xf0]
mov byte [rax], 1
cmp qword [r12 + 0xb8], 0x10
jb 0x201652d6
mov rax, qword [r12 + 0xb0]
mov rcx, qword [r12 + 0xf0]
movups xmm0, xmmword [rbx + rax - 0x10]
movups xmmword [rcx + 1], xmm0
lea rbx, [rbp + 0x230]
mov rsi, qword [rbp + 0x258]
jmp 0x20164910
lea rsi, [rcx + r8]
mov qword [r12 + 0x318], rsi
mov rdi, qword [rbp + 0x240]
cmp rax, 0x10
jb 0x2016530a
mov rdi, qword [r12 + 0x308]
add rcx, rdi
mov rdx, r9
call fcn.2044f800
mov byte [rdi + rsi], 0
mov rax, qword [rbp - 0x18]
cmp rax, 0x10
lea rdi, [rbp - 0x38]
jb 0x2016538f
mov rcx, qword [rbp - 0x30]
mov edx, eax
not edx
and edx, 1
mov r8, rax
and r8, 0xfffffffffffffffe
or r8, rdx
lea edx, [rax + rax]
and edx, 2
xor r8, rdx
and edx, eax
lea rdx, [r8 + rdx*2]
cmp rdx, 0x1000
jb 0x2016538a
mov r8, qword [rcx - 8]
sub rcx, r8
add rcx, 0xfffffffffffffff8
cmp rcx, 0x20
jae 0x201661a1
neg rax
mov rcx, rax
xor rcx, 0xffffffffffffffd8
movabs rdx, 0x7fffffffffffffd8
and rax, rdx
lea rdx, [rcx + rax*2]
neg rdx
mov rcx, r8
call fcn.20178f70
mov eax, dword [r14 + 4]
mov dword [rbp + 0x24c], eax
add r14, 8
xor eax, eax
mov qword [rbp + 0x228], r12
jmp 0x201653c0
mov rcx, rdi
call fcn.2015fd70
mov eax, dword [rbp + 0x248]
inc eax
cmp eax, dword [rbp + 0x24c]
jge 0x201659bb
mov dword [rbp + 0x248], eax
mov qword [rbp + 0x220], r14
mov rcx, rdi
call fcn.20167b20
lea rax, [rbp + 0x170]
cmp qword [rbp + 0x1b8], rax
je 0x20165500
mov rax, qword [rbp + 0x228]
mov r14, qword [rax + 0x138]
mov rbx, r14
test r14, r14
je 0x20165412
mov rbx, qword [rax + 0x130]
mov rcx, qword [rbp + 0x178]
test rcx, rcx
je 0x20165451
cmp dword [rbp + 0x194], 1
jne 0x20165441
mov r8, qword [rbp + 0x180]
xor edx, edx
call fcn.2044feb0
mov rcx, qword [rbp + 0x178]
test rcx, rcx
je 0x20165451
mov edx, 0x314c86b9
mov r8d, 0x7eeffe7b
call fcn.2008bfb0
lea rax, [rbp - 0x30]
movups xmmword [rax + 0x1a8], xmm6
mov qword [rax + 0x1b8], 0
mov byte [rbp + 0x190], 1
test r14, r14
je 0x201654c0
mov rcx, r14
call fcn.20427894
mov qword [rbp + 0x178], rax
mov qword [rbp + 0x188], r14
mov qword [rbp + 0x180], r14
test rbx, rbx
je 0x201654a5
mov rcx, rax
mov rdx, rbx
mov r8, r14
call fcn.2044f800
jmp 0x201654c0
cmp dword [rbp + 0x194], 1
jne 0x201654c0
mov rcx, rax
xor edx, edx
mov r8, r14
call fcn.2044feb0
nop dword [rax + rax]
mov rsi, qword [rbp + 0x198]
jmp 0x201654d4
add rsi, 8
cmp rsi, qword [rbp + 0x1a0]
je 0x20165500
mov rcx, qword [rsi]
test rcx, rcx
je 0x201654d0
mov rax, qword [rcx]
mov rax, qword [rax + 8]
mov edx, 1
call qword [case.0x2010e313.0]
jmp 0x201654d0
mov eax, dword [0x205b3cd4]
cmp eax, 0x47
jge 0x20165580
nop dword [rax + rax]
movsxd rbx, dword [0x20471bc0]
mov eax, dword [0x205b3cd4]
cmp eax, 0x26
jge 0x20165580
mov r12d, dword [0x20471b94]
mov rcx, rdi
mov rdx, qword [rbp + 0x220]
call fcn.20163c00
lea rcx, [0x20471bc0]
add rbx, rcx
nop word cs:[rax + rax]
mov ecx, dword [0x205b3cd4]
cmp ecx, 0x28
jg 0x2016556c
mov ecx, dword [0x205b3cd0]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
je 0x201655a0
mov ecx, dword [0x205b3cd4]
cmp ecx, 0x59
jge 0x20165550
jmp 0x2016555b
mov eax, dword [0x20471bc0]
mov eax, dword [0x205b3cd0]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x20165580
jmp 0x20165510
mov ecx, dword [0x205b3cd0]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
mov cl, 1
jne 0x201655e0
nop word cs:[rax + rax]
mov r8d, dword [0x205b3c90]
mov ecx, dword [0x205b3cd0]
lea edx, [rcx - 1]
imul edx, ecx
mov cl, 1
test dl, 1
je 0x201655f0
nop word [rax + rax]
test cl, cl
je 0x201655e0
jmp 0x201655c0
xor ecx, ecx
test cl, cl
lea edx, [r8 + 1]
mov dword [0x205b3c90], edx
mov ecx, dword [0x205b3cd4]
cmp ecx, 0x45
jg 0x201655f4
mov esi, 0
mov r15d, 0
mov qword [rbp + 0x1b0], r8
mov dword [rbp + 0x21c], edx
test r8d, edx
jne 0x20165720
mov ecx, dword [0x205b3cd0]
mov edx, ecx
not edx
imul edx, ecx
test dl, 1
mov cl, 1
jne 0x20165660
nop
mov ecx, dword [0x205b3cd0]
lea edx, [rcx - 1]
imul edx, ecx
mov cl, 1
test dl, 1
je 0x20165670
nop word cs:[rax + rax]
test cl, cl
je 0x20165660
jmp 0x20165640
mov esi, 0
mov r15d, 0
test r12d, r12d
jle 0x20165720
xor ecx, ecx
xor esi, esi
xor r15d, r15d
nop dword [rax + rax]
movsxd rcx, ecx
mov r8, qword [rbx + rcx]
mov r9, qword [rbx + rcx + 8]
not r15
not rsi
mov rdi, rsi
and rdi, r8
mov rdx, r15
and rdx, r9
or rsi, r8
or r15, r9
mov r9, r15
not r9
mov r10, rsi
not r10
mov r11, rdx
not r11
mov r14, rdi
not r14
mov r8, r14
and r8, rsi
and rsi, rdi
xor rdi, r10
or r8, rdi
mov rdi, r11
and rdi, r15
and r15, rdx
xor rdx, r9
or rdi, rdx
and r11, r9
and r14, r10
or r15, r11
not rdi
or r15, rdi
or rsi, r14
not r8
or rsi, r8
mov edx, ecx
xor edx, 0x10
and ecx, 0x10
lea ecx, [rdx + rcx*2]
mov edx, dword [0x205b3cd4]
cmp ecx, r12d
jl 0x20165690
nop dword [rax]
test al, al
lea rdi, [rbp - 0x38]
je 0x2016598d
movsxd rbx, dword [rbp - 0x38]
cmp qword [0x205b3c88], 0
jne 0x20165761
mov ecx, 0x98
call fcn.2042789c
mov qword [rbp + 0x200], rax
mov rcx, rax
call fcn.2015f8b0
mov rax, qword [rbp + 0x200]
mov qword [0x205b3c88], rax
mov rcx, qword [0x205b3c88]
mov rdx, rdi
call fcn.20167d40
test al, al
je 0x2016598d
add qword [rbp + 0x220], rbx
xor r9d, r9d
mov eax, dword [rbp + 0x21c]
test dword [rbp + 0x1b0], eax
setne r9b
mov rax, qword [0x20471ba8]
mov rdx, qword [0x20471ba0]
mov r10, r9
add r10, 0xffffffffffffffff
mov r11d, 0
adc r11, 0xffffffffffffffff
sub rdx, rsi
sbb rax, r15
neg r9
mov edi, 0
sbb rdi, rdi
mov rsi, rdx
not rsi
mov rbx, rax
not rbx
and rdi, rbx
and r9, rsi
and r11, rax
and r10, rdx
mov r8, r9
or r8, r10
mov rcx, rdi
or rcx, r11
not rcx
not r8
and rdx, r8
and rax, rcx
or rax, rdi
or rdx, r9
xor rcx, rbx
xor r8, rsi
or r8, r10
or rcx, r11
mov r9, rcx
not r9
mov r10, r8
not r10
xor r8, r10
and r8, rdx
and rdx, r10
xor r8, r10
or r8, rdx
xor rcx, r9
and rcx, rax
and rax, r9
xor rcx, r9
or rcx, rax
not r8
not rcx
or rcx, r8
mov rax, rcx
shr rax, 0x20
mov edx, dword [0x205b3cd0]
mov edx, eax
xor edx, eax
not edx
and edx, ecx
and ecx, eax
xor edx, eax
or edx, ecx
mov ecx, edx
shr ecx, 0x10
mov eax, edx
not eax
mov r8d, ecx
not r8d
mov r9d, eax
xor r9d, r8d
xor r8d, edx
and edx, ecx
and r9d, eax
or r9d, edx
and eax, ecx
or eax, r8d
not eax
or eax, r9d
movzx ecx, ah
or ecx, eax
mov al, 1
test al, al
je 0x201658b0
nop word [rax + rax]
movzx eax, byte [0x205b3cdb]
add al, cl
mov edx, dword [0x205b3cd0]
lea r8d, [rdx + 1]
imul r8d, edx
test r8b, 1
je 0x201658e0
nop dword [rax]
lea eax, [r13 + r13 + 0x13e0]
mov edx, eax
not edx
and eax, edx
lea r8d, [r13 + r13 + 0x13e1]
and edx, 0xfffffffe
xor edx, r8d
or edx, eax
cmp edx, 0xffffffff
jne 0x201658b0
jmp 0x20165890
add al, 0xa4
xor ecx, ecx
test cl, cl
mov r12, qword [rbp + 0x228]
jne 0x20165910
nop
mov ecx, dword [0x205b3cd0]
mov edx, 0x7fd949c1
sub edx, ecx
imul edx, ecx
test dl, 1
je 0x20165940
nop word cs:[rax + rax]
lea ecx, [r13 + r13 + 0x32c0]
mov edx, ecx
not edx
and ecx, edx
lea r8d, [r13 + r13 + 0x32c1]
xor r8d, ecx
or ecx, edx
or ecx, r8d
cmp ecx, 0xffffffff
jne 0x20165910
jmp 0x201658f0
add al, 0x5c
mov ecx, dword [0x205b3cd0]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
lea rdi, [rbp - 0x38]
mov r15d, dword [rbp + 0x250]
mov r14, qword [rbp + 0x220]
jne 0x20165985
nop word cs:[rax + rax]
mov byte [0x205b3cdb], al
mov ecx, dword [0x205b3cd4]
cmp ecx, 0x30
jle 0x201653b0
mov byte [0x205b3cdb], al
jmp 0x20165970
mov r12, qword [rbp + 0x228]
or byte [r12 + 0x10], 0x20
mov rcx, rdi
call fcn.2015fd70
mov eax, dword [rbp + 0x248]
cmp eax, dword [rbp + 0x24c]
mov r15d, dword [rbp + 0x250]
jl 0x20165ba3
cmp qword [r12 + 0x320], 0x10
mov rax, qword [rbp + 0x240]
jb 0x201659d5
mov rax, qword [r12 + 0x308]
mov qword [r12 + 0x318], 0
mov byte [rax], 0
inc dword [rbp + 0x264]
lea rbx, [rbp + 0x230]
mov rsi, qword [rbp + 0x258]
jmp 0x20164916
mov al, 1
cmp dword [rbp + 0x264], 0xb
je 0x20165ba5
mov eax, dword [r12 + 0x10]
mov ecx, eax
and ecx, 0x20
mov edx, eax
not edx
and edx, 0x20
xor eax, 0xffffffdf
or eax, edx
not eax
or edx, ecx
or edx, eax
mov dword [r12 + 0x10], edx
lea rdi, [r12 + 0x308]
cmp qword [r12 + 0x320], 0x10
mov rax, rdi
jb 0x20165a4b
mov rax, qword [r12 + 0x308]
mov qword [r12 + 0x318], 0
mov byte [rax], 0
lea rbx, [rbp - 0x30]
mov qword [rbp - 0x20], 0
mov qword [rbp - 0x18], 0xf
mov byte [rbp - 0x30], 0
mov ecx, 1
xor edx, edx
mov r8d, 0x5b45d3cf
mov r9d, 0x52d4bc19
call fcn.20179f20
mov edx, 0x30
mov rcx, rbx
mov r9, rax
call fcn.2006bec0
lea rax, [0x2046c448]
mov qword [rbp - 0x38], rax
mov r8, qword [rbp - 0x20]
cmp qword [rbp - 0x18], 0x10
jb 0x20165ab4
mov rbx, qword [rbp - 0x30]
mov rcx, qword [r12 + 0x318]
mov rax, qword [r12 + 0x320]
mov rdx, rax
sub rdx, rcx
cmp rdx, r8
jae 0x20165ae4
mov qword [rsp + 0x20], r8
mov rcx, rdi
mov rdx, r8
mov r9, rbx
call fcn.2006cb20
jmp 0x20165b37
mov rdx, rcx
xor rdx, r8
mov r9, rcx
not r9
mov r10, rcx
xor r10, r9
and r10, r8
xor r10, r9
mov r11, r10
not r11
xor r10, rcx
and r11, r9
or r11, r10
not r11
lea rsi, [rdx + r11*2]
mov qword [r12 + 0x318], rsi
cmp rax, 0x10
jb 0x20165b28
mov rdi, qword [r12 + 0x308]
add rcx, rdi
mov rdx, rbx
call fcn.2044f800
mov byte [rdi + rsi], 0
mov rax, qword [rbp - 0x18]
cmp rax, 0x10
jb 0x20165ba3
mov rcx, qword [rbp - 0x30]
movabs rdx, 0x4f4166fb0593e3d0
add rdx, rax
movabs r8, 0x626830da86e5f21f
mov r9, rdx
xor r9, r8
and rdx, r8
lea r8, [r9 + rdx*2]
movabs rdx, 0x4e56682a73862a12
add rdx, r8
cmp rdx, 0x1000
jb 0x20165b9e
mov r8, qword [rcx - 8]
sub rcx, r8
add rcx, 0xfffffffffffffff8
cmp rcx, 0x20
jae 0x2016619c
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.20178f70
xor eax, eax
movaps xmm6, xmmword [rbp + 0x270]
add rsp, 0x308
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
or byte [r12 + 0x10], 0x20
lea rdi, [r12 + 0x308]
cmp qword [r12 + 0x320], 0x10
mov rax, rdi
jb 0x20165be4
mov rax, qword [r12 + 0x308]
mov qword [r12 + 0x318], 0
mov byte [rax], 0
lea rbx, [rbp - 0x30]
mov qword [rbp - 0x20], 0
mov qword [rbp - 0x18], 0xf
mov byte [rbp - 0x30], 0
mov dword [rsp + 0x20], 0x9f410545
xor ecx, ecx
xor edx, edx
mov r8d, 0xf50ee134
mov r9d, 0x76321f0d
call fcn.2017aa20
mov edx, 0x3c
mov rcx, rbx
mov r9, rax
call fcn.2006bec0
lea rax, [0x2046c448]
mov qword [rbp - 0x38], rax
mov r8, qword [rbp - 0x20]
cmp qword [rbp - 0x18], 0x10
jb 0x20165c52
mov rbx, qword [rbp - 0x30]
mov rcx, qword [r12 + 0x318]
mov rax, qword [r12 + 0x320]
mov rdx, rcx
neg rdx
mov r9, rax
xor r9, rdx
and rdx, rax
lea rdx, [r9 + rdx*2]
cmp rdx, r8
jae 0x20165ece
mov qword [rsp + 0x20], r8
mov rcx, rdi
mov rdx, r8
mov r9, rbx
call fcn.2006cb20
jmp 0x20165ef7
or byte [r12 + 0x10], 0x20
lea rdi, [r12 + 0x308]
cmp qword [r12 + 0x320], 0x10
mov rax, rdi
jb 0x20165cba
mov rax, qword [r12 + 0x308]
mov qword [r12 + 0x318], 0
mov byte [rax], 0
lea rbx, [rbp - 0x30]
mov qword [rbp - 0x20], 0
mov qword [rbp - 0x18], 0xf
mov byte [rbp - 0x30], 0
mov ecx, 1
mov edx, 1
mov r8d, 0xc38c1ecd
mov r9d, 0xae851fdb
call fcn.2017a490
mov edx, 0x2f
mov rcx, rbx
mov r9, rax
call fcn.2006bec0
lea rax, [0x2046c448]
mov qword [rbp - 0x38], rax
mov r8, qword [rbp - 0x20]
cmp qword [rbp - 0x18], 0x10
jb 0x20165d26
mov rbx, qword [rbp - 0x30]
mov rcx, qword [r12 + 0x318]
mov rax, qword [r12 + 0x320]
movabs rdx, 0x6ec5056334c259ad
add rdx, rax
movabs r9, 0xe082d56e5ce1f11e
xor r9, rdx
movabs r10, 0x6082d56e5ce1f11e
and r10, rdx
lea rdx, [r9 + r10*2]
sub rdx, rcx
movabs r9, 0xcd46e1278d6da524
add r9, rdx
movabs rdx, 0x1b8fb397143412a7
mov r10, r9
xor r10, rdx
and r9, rdx
lea rdx, [r10 + r9*2]
movabs r9, 0xc7e1906fccb9fd6a
add r9, rdx
cmp r9, r8
jae 0x20165f65
mov qword [rsp + 0x20], r8
mov rcx, rdi
mov rdx, r8
mov r9, rbx
call fcn.2006cb20
jmp 0x20165fa9
mov eax, dword [r12 + 0x10]
mov edx, eax
not edx
mov ecx, edx
and ecx, 0xffffffdf
mov r8d, eax
and r8d, 0x20
or r8d, ecx
xor r8d, 0x20
xor ecx, 0xffffffdf
or ecx, r8d
mov r8d, ecx
not r8d
and edx, 0x20
and eax, 0xffffffdf
or eax, edx
mov edx, eax
not edx
mov r9d, edx
xor r9d, r8d
and r9d, edx
and edx, r8d
xor r8d, eax
or r9d, r8d
not r9d
and eax, ecx
or edx, eax
or edx, r9d
mov dword [r12 + 0x10], edx
lea rdi, [r12 + 0x308]
cmp qword [r12 + 0x320], 0x10
mov rax, rdi
jb 0x20165e29
mov rax, qword [r12 + 0x308]
mov qword [r12 + 0x318], 0
mov byte [rax], 0
lea rbx, [rbp - 0x30]
mov qword [rbp - 0x20], 0
mov qword [rbp - 0x18], 0xf
mov byte [rbp - 0x30], 0
mov dword [rsp + 0x20], 0xe688b64b
xor ecx, ecx
xor edx, edx
mov r8d, 0x8d9ba7cb
mov r9d, 0x31ef9bad
call fcn.2017ae10
mov edx, 0x3c
mov rcx, rbx
mov r9, rax
call fcn.2006bec0
lea rax, [0x2046c448]
mov qword [rbp - 0x38], rax
mov r8, qword [rbp - 0x20]
cmp qword [rbp - 0x18], 0x10
jb 0x20165e97
mov rbx, qword [rbp - 0x30]
mov rcx, qword [r12 + 0x318]
mov rax, qword [r12 + 0x320]
mov rdx, rax
sub rdx, rcx
cmp rdx, r8
jae 0x20166066
mov qword [rsp + 0x20], r8
mov rcx, rdi
mov rdx, r8
mov r9, rbx
call fcn.2006cb20
jmp 0x201660cd
lea rsi, [r8 + rcx]
mov qword [r12 + 0x318], rsi
cmp rax, 0x10
jb 0x20165ee8
mov rdi, qword [r12 + 0x308]
add rcx, rdi
mov rdx, rbx
call fcn.2044f800
mov byte [rdi + rsi], 0
mov rax, qword [rbp - 0x18]
cmp rax, 0x10
jb 0x20165ba3
mov rcx, qword [rbp - 0x30]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x20165b9e
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x201661a6
movabs rcx, 0x5fc03687bb78aec3
add rax, rcx
movabs rcx, 0x776313ac005c9cae
mov rdx, rax
xor rdx, rcx
and rax, rcx
lea rax, [rdx + rax*2]
movabs rdx, 0x28dcb5cc442ab4b7
add rdx, rax
jmp 0x20165b9b
mov rdx, rcx
xor rdx, r8
mov r9, rcx
not r9
mov r10, r8
not r10
and r10, r9
or r10, rdx
not r10
lea rsi, [rdx + r10*2]
mov qword [r12 + 0x318], rsi
cmp rax, 0x10
jb 0x20165f9a
mov rdi, qword [r12 + 0x308]
add rcx, rdi
mov rdx, rbx
call fcn.2044f800
mov byte [rdi + rsi], 0
mov rax, qword [rbp - 0x18]
cmp rax, 0x10
jb 0x20165ba3
mov rcx, qword [rbp - 0x30]
movabs rdx, 0x856281073a844484
sub rdx, rax
movabs r8, 0x7a9d7ef8c57bbb7b
mov r9, rdx
xor r9, r8
and rdx, r8
add rdx, rdx
mov r8, r9
xor r8, rdx
and rdx, r9
lea rdx, [r8 + rdx*2]
neg rdx
cmp rdx, 0x1000
jb 0x20165b9e
mov r8, qword [rcx - 8]
mov rdx, rcx
not rdx
mov r9, rcx
and r9, 0xfffffffffffffff8
mov r10d, edx
and r10d, 7
or r10, r9
mov r11d, ecx
and r11d, 7
xor r11, r10
not r11
xor rcx, 7
and rdx, 0xfffffffffffffff8
or rdx, rcx
not rdx
or rdx, r11
add r9, r9
mov rcx, rdx
xor rcx, r9
and r9, rdx
lea rcx, [rcx + r9*2]
mov rdx, r8
neg rdx
mov r9, rcx
xor r9, rdx
and rdx, rcx
lea rcx, [r9 + rdx*2]
cmp rcx, 0x20
jb 0x20165b94
call fcn.20407a4c
movabs rdx, 0x54cae7cb7f2b086e
sub rdx, r8
movabs r9, 0xc6c7a809cff416ca
xor r9, rdx
movabs r10, 0x46c7a809cff416ca
and r10, rdx
lea rsi, [r9 + r10*2]
sub rsi, rcx
movabs r14, 0x1b928fd54f1f1f38
mov rdx, r14
sub rdx, rsi
mov qword [r12 + 0x318], rdx
cmp rax, 0x10
jb 0x201660ba
mov rdi, qword [r12 + 0x308]
add rcx, rdi
mov rdx, rbx
call fcn.2044f800
sub rdi, rsi
mov byte [rdi + r14], 0
mov rax, qword [rbp - 0x18]
cmp rax, 0x10
jb 0x20165ba3
mov rcx, qword [rbp - 0x30]
movabs rdx, 0x31ba62d57ed00021
mov r8, rax
xor r8, rdx
and rdx, rax
lea r8, [r8 + rdx*2]
movabs rdx, 0xce459d2a812fffe0
add rdx, r8
cmp rdx, 0x1000
jb 0x20165b9e
mov r8, qword [rcx - 8]
movabs rdx, 0x7dd8d3b811aefaf8
add rdx, rcx
movabs rcx, 0xbb666f67bdbd7e0b
xor rcx, rdx
movabs r9, 0x3b666f67bdbd7e0b
and r9, rdx
lea rcx, [rcx + r9*2]
movabs rdx, 0xc6c0bce0309386f5
add rdx, rcx
movabs rcx, 0x5599cddacac47df8
mov r9, rdx
xor r9, rcx
and rdx, rcx
lea rcx, [r9 + rdx*2]
sub rcx, r8
movabs rdx, 0xaa663225353b8208
add rdx, rcx
cmp rdx, 0x20
jb 0x20165b94
call fcn.20407a4c
xor ecx, ecx
mov edx, 1
mov r8d, 0x694b1860
call fcn.20179810
mov rcx, rax
call fcn.20429544
call fcn.20407a4c
call fcn.20407a4c
call fcn.20407a4c
int3