Function at 0x10001524c
Capabilities:
Encode data using xor
Encrypt data using salsa20 or chacha

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x2f8
mov rax, qword [0x10011e450]
xor rax, rsp
mov qword [rsp + 0x2e0], rax
lea rbp, [0x100000000]
mov rsi, r8
mov qword [rsp + 0x140], rdx
mov ebx, 0xfffffff
mov qword [rsp + 0x70], rcx
mov r13, rcx
mov rdi, r9
cmp r9, r11
jb 0x100015a2e
movsxd rdx, dword [0x10000003c]
mov ecx, dword [rdx + r11 + 0x50]
add rcx, r11
cmp r9, rcx
jae 0x100015a34
mov r8d, r9d
xor r9d, r9d
mov ecx, dword [0x1000115c4]
sub r8d, r11d
sub ecx, 1
js 0x1000152f9
lea eax, [rcx + r9]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov r10, rdx
mov eax, dword [rbp + rdx*8 + 0xad4c]
and eax, ebx
cmp r8d, eax
jae 0x1000152ea
lea ecx, [rdx - 1]
jmp 0x1000152f4
jbe 0x1000157db
lea r9d, [rdx + 1]
cmp ecx, r9d
jge 0x1000152c8
xor edx, edx
test rdx, rdx
je 0x100015a2e
mov eax, dword [rdx]
xor r8d, r8d
shr rax, 2
mov r12d, dword [rdx + 4]
and r12, rbx
mov qword [rsp + 0x30], r12
and eax, 7
lea rbp, [rax + rdx + 8]
mov r10d, ebp
sub r10d, r11d
mov qword [rsp + 0x60], rbp
mov r11d, dword [0x1000a5f24]
sub r11, r12
inc r11
mov r9, r11
je 0x100015373
mov rax, qword [0x1001241b0]
imul rax, rax, 0x343fd
shl r8, 0x10
shr r9, 0x10
add rax, 0x269ec3
mov rcx, rax
shr rcx, 0x10
movzx edx, cx
or r8, rdx
test r9, r9
jne 0x100015345
mov qword [0x1001241b0], rax
xor edx, edx
mov rax, r8
div r11
mov ecx, r10d
add rsi, rdx
mov rdx, r12
mov qword [rsp + 0x68], rsi
mov r8, rsi
mov eax, 0x4e03d545
mov qword [rsp + 0x48], r12
xor bl, bl
mov byte [rsp + 0x20], bl
test r12, r12
mov qword [rsp + 0x40], rbp
mov qword [rsp + 0x38], rsi
je 0x10001584c
movdqu xmm0, xmmword [r12 + rbp]
mov r13, rsi
and dword [rsp + 0x168], 0
and dword [rsp + 0x16c], 0
and dword [rsp + 0x170], 0
and dword [rsp + 0x174], 0
movdqu xmmword [rsp + 0x210], xmm0
mov r8, qword [rsp + 0x210]
mov rdx, r8
mov rcx, qword [rsp + 0x218]
mov dword [rsp + 0x154], r8d
mov edi, 0x40
mov rax, rcx
shr rax, 0x20
shr rdx, 0x20
mov dword [rsp + 0x15c], ecx
mov dword [rsp + 0x160], eax
mov dword [rsp + 0x188], eax
mov eax, dword [0x10000a5b0]
mov dword [rsp + 0x150], eax
mov eax, dword [0x10000a5b4]
mov dword [rsp + 0x158], edx
mov dword [rsp + 0x164], eax
mov eax, dword [0x10000a5b8]
mov dword [rsp + 0x17c], r8d
mov dword [rsp + 0x178], eax
mov eax, dword [0x10000a5bc]
mov dword [rsp + 0x180], edx
mov dword [rsp + 0x18c], eax
lea rax, [rsp + 0x220]
sub r13, rax
mov dword [rsp + 0x184], ecx
mov rax, rbp
sub rax, rsi
mov qword [rsp + 0x210], rax
mov qword [rsp + 0x50], r13
lea rcx, [rsp + 0x80]
mov r8, rdi
lea rdx, [rsp + 0x150]
not rdx
call fcn.10001511c
mov ecx, dword [rsp + 0xbc]
mov edi, dword [rsp + 0x9c]
mov r8d, dword [rsp + 0xb4]
mov ebp, dword [rsp + 0x98]
mov r12d, dword [rsp + 0xa4]
mov r10d, dword [rsp + 0xac]
mov r13d, dword [rsp + 0x8c]
mov r14d, dword [rsp + 0x90]
mov r9d, dword [rsp + 0xb0]
mov edx, dword [rsp + 0xb8]
mov ebx, dword [rsp + 0x88]
mov eax, dword [rsp + 0x94]
mov r11d, dword [rsp + 0xa8]
mov esi, dword [rsp + 0xa0]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x84]
mov r15d, dword [rsp + 0x2c]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x80]
mov dword [rsp + 0x24], eax
mov qword [rsp + 0x58], 3
add eax, r9d
rol eax, 7
xor r14d, eax
mov eax, dword [rsp + 0x24]
add eax, r14d
rol eax, 9
xor esi, eax
lea eax, [r14 + rsi]
rol eax, 0xd
xor r9d, eax
lea eax, [rsi + r9]
mov dword [rsp + 0x2c], r9d
ror eax, 0xe
xor dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x28]
add eax, r15d
rol eax, 7
xor r12d, eax
lea eax, [r15 + r12]
rol eax, 9
xor r8d, eax
lea eax, [r8 + r12]
mov r9d, dword [rsp + 0x24]
rol eax, 0xd
xor dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x28]
add eax, r8d
ror eax, 0xe
xor r15d, eax
lea eax, [rbp + r11]
rol eax, 7
xor edx, eax
lea eax, [r11 + rdx]
rol eax, 9
xor ebx, eax
lea eax, [rbx + rdx]
rol eax, 0xd
xor ebp, eax
lea eax, [rbx + rbp]
ror eax, 0xe
xor r11d, eax
lea eax, [r10 + rcx]
rol eax, 7
xor r13d, eax
lea eax, [rcx + r13]
rol eax, 9
xor edi, eax
lea eax, [rdi + r13]
rol eax, 0xd
xor r10d, eax
lea eax, [rdi + r10]
ror eax, 0xe
xor ecx, eax
mov eax, dword [rsp + 0x24]
add eax, r13d
rol eax, 7
xor dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x28]
mov dword [rsp + 0x84], eax
add eax, r9d
rol eax, 9
xor ebx, eax
mov eax, dword [rsp + 0x28]
add eax, ebx
rol eax, 0xd
xor r13d, eax
lea eax, [r13 + rbx]
ror eax, 0xe
xor r9d, eax
mov dword [rsp + 0x24], r9d
mov eax, r9d
mov dword [rsp + 0x80], eax
lea eax, [r15 + r14]
mov r9d, dword [rsp + 0x2c]
rol eax, 7
xor ebp, eax
lea eax, [rbp + r15]
rol eax, 9
xor edi, eax
lea eax, [rdi + rbp]
rol eax, 0xd
xor r14d, eax
lea eax, [rdi + r14]
ror eax, 0xe
xor r15d, eax
lea eax, [r11 + r12]
rol eax, 7
xor r10d, eax
lea eax, [r10 + r11]
rol eax, 9
xor esi, eax
lea eax, [r10 + rsi]
rol eax, 0xd
xor r12d, eax
lea eax, [rsi + r12]
ror eax, 0xe
xor r11d, eax
lea eax, [rcx + rdx]
rol eax, 7
xor r9d, eax
lea eax, [rcx + r9]
rol eax, 9
xor r8d, eax
lea eax, [r9 + r8]
rol eax, 0xd
xor edx, eax
mov dword [rsp + 0xb0], r9d
lea eax, [rdx + r8]
ror eax, 0xe
xor ecx, eax
sub qword [rsp + 0x58], 1
mov eax, dword [rsp + 0x24]
jne 0x10001553c
mov dword [rsp + 0xbc], ecx
mov dword [rsp + 0xa4], r12d
mov r12, qword [rsp + 0x38]
mov dword [rsp + 0xa0], esi
xor ecx, ecx
mov rsi, qword [rsp + 0x68]
mov dword [rsp + 0x9c], edi
mov edi, 0x40
mov dword [rsp + 0x98], ebp
mov ebp, dword [rsp + 0x170]
mov dword [rsp + 0x94], r15d
mov r15, qword [rsp + 0x40]
mov dword [rsp + 0x90], r14d
mov r14, qword [rsp + 0x48]
mov dword [rsp + 0x8c], r13d
mov r13, qword [rsp + 0x50]
mov dword [rsp + 0x88], ebx
mov bl, byte [rsp + 0x20]
mov dword [rsp + 0xb8], edx
mov dword [rsp + 0xb4], r8d
mov dword [rsp + 0xac], r10d
mov dword [rsp + 0xa8], r11d
mov eax, dword [rsp + rcx + 0x150]
add rcx, 4
add dword [rsp + rcx + 0x7c], eax
cmp rcx, rdi
jl 0x10001574c
lea rdx, [rsp + 0x80]
lea rcx, [rsp + 0x220]
mov r8, rdi
not rdx
call fcn.10001511c
inc ebp
mov dword [rsp + 0x170], ebp
cmp r14, rdi
jbe 0x1000157f9
mov rdx, rdi
lea rcx, [rsp + 0x220]
mov rax, qword [rsp + 0x210]
lea r8, [r13 + rax]
mov al, byte [r8 + rcx]
xor al, byte [rcx]
mov byte [r13 + rcx], al
inc rcx
xor bl, al
sub rdx, 1
jne 0x1000157a1
sub r14, rdi
mov byte [rsp + 0x20], bl
mov qword [rsp + 0x48], r14
add r12, rdi
add r13, rdi
add r15, rdi
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x38], r12
jmp 0x10001548b
mov eax, dword [rbp + r10*8 + 0xad48]
mov edx, dword [rbp + rdx*8 + 0xad4c]
and edx, ebx
and eax, 0x3f
add edx, eax
add rdx, r11
jmp 0x1000152fb
mov rbp, qword [rsp + 0x60]
xor r8d, r8d
test r14, r14
mov r12, qword [rsp + 0x30]
je 0x100015847
mov rdx, qword [rsp + 0x38]
lea rcx, [rsp + 0x220]
lea rax, [rsp + 0x220]
sub r15, rax
lea rax, [rsp + 0x220]
sub rdx, rax
mov al, byte [rcx + r15]
inc r8d
xor al, byte [rcx]
xor bl, al
mov byte [rcx + rdx], al
inc rcx
mov eax, r8d
cmp rax, r14
jb 0x10001582e
mov r13, qword [rsp + 0x70]
cmp bl, byte [r12 + rbp + 0x10]
je 0x100015915
call fcn.100018aa8
lea r10, [r13 + 0x18]
mov rbx, rax
mov r8d, 0xffff
and r10, 0xfffffffffffffff8
mov rax, 0xfffffffffffff000
lea rsi, [0x1000b5984]
mov qword [r13 + 0x10], rsi
and rbx, rax
lea r11, [r10 + 0xfff]
and r11, rax
mov rax, qword [0x1001241b0]
xor r9d, r9d
imul rax, rax, 0x343fd
shl r9, 0x10
shr r8, 0x10
add rax, 0x269ec3
mov rcx, rax
shr rcx, 0x10
movzx edx, cx
or r9, rdx
test r8, r8
jne 0x100015896
mov qword [0x1001241b0], rax
movabs rax, 0x8000800080008001
mul r9
shr rdx, 0xf
imul rdx, rdx, 0xffff
sub r9, rdx
inc r9
mov rax, qword [rsp + 0x140]
mov qword [rax + 0x98], rbx
mov qword [rax + 0xb0], r9
mov qword [rsp + 0x30], r8
jmp 0x10001590b
mov rax, qword [rsp + 0x30]
mov qword [r10], rax
add r10, 8
cmp r10, r11
jb 0x1000158ff
jmp 0x100015a26
mov rdi, rbp
mov rax, qword [0x10000cac8]
lea r14, [0x100000000]
mov r13, r14
sub rdi, rsi
sub r13, rax
jne 0x10001593a
test rdi, rdi
je 0x100015a1b
mov rcx, qword [0x1000e0550]
lea r9d, [rcx - 1]
xor r8d, r8d
mov rbx, rsi
sub rbx, rbp
lea r15, [0x100000000]
sub ebp, r14d
add r12d, ebp
test r9d, r9d
js 0x100015991
lea eax, [r9 + r8]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov r10d, dword [r15 + rdx*4 + 0xe0554]
and r10d, 0xfffffff
cmp ebp, r10d
jae 0x100015986
lea r9d, [rdx - 1]
jmp 0x10001598c
jbe 0x100015996
lea r8d, [rdx + 1]
cmp r9d, r8d
jge 0x100015960
movsxd r11, r8d
jmp 0x100015a14
mov r11, rdx
jmp 0x100015a14
mov edx, dword [r15 + r11*4 + 0xe0554]
mov eax, edx
and eax, 0xfffffff
cmp eax, r12d
jae 0x100015a1b
mov r8d, edx
mov r9, rdx
sar edx, 0x1e
shl r8d, 2
and r9d, 0xfffffff
and edx, 3
sar r8d, 0x1e
add r9, r14
xor r10d, r10d
and r8d, 3
sub r8d, 1
je 0x1000159f0
sub r8d, 1
je 0x1000159eb
cmp r8d, 1
jne 0x1000159f6
mov r10, r13
jmp 0x1000159f6
mov r10, rdi
jmp 0x1000159f6
mov r10, r13
sub r10, rdi
sub edx, 2
je 0x100015a06
cmp edx, 1
jne 0x100015a11
add qword [r9 + rbx], r10
jmp 0x100015a0a
add dword [r9 + rbx], r10d
mov rcx, qword [0x1000e0550]
inc r11
mov eax, ecx
cmp r11, rax
jb 0x10001599b
mov eax, dword [0x1000a5f24]
mov eax, 0x6da2578d
mov rax, rsi
jmp 0x1000169b7
mov edx, dword [0x10000003c]
cmp rdi, r11
jb 0x10001690b
movsxd rax, edx
mov ecx, dword [rax + r11 + 0x50]
add rcx, r11
cmp rdi, rcx
jae 0x1000161a0
mov ecx, dword [0x10000eec8]
xor r9d, r9d
mov r8d, edi
sub r8d, r11d
sub ecx, 1
js 0x100015a93
lea eax, [rcx + r9]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov eax, dword [rbp + rdx*8 + 0xa748]
and eax, ebx
cmp r8d, eax
jae 0x100015a84
lea ecx, [rdx - 1]
jmp 0x100015a8e
jbe 0x100015f58
lea r9d, [rdx + 1]
cmp ecx, r9d
jge 0x100015a65
xor r13d, r13d
test r13, r13
je 0x10001619a
xor r8d, r8d
mov eax, dword [r13 + 4]
and eax, 7
lea rbp, [rax + r13 + 8]
mov r13d, dword [r13]
mov qword [rsp + 0x30], rbp
mov r10d, ebp
shr r13, 1
sub r10d, r11d
mov r11d, dword [0x1000a5f24]
and r13, rbx
sub r11, r13
mov qword [rsp + 0x60], r13
inc r11
mov r9, r11
je 0x100015b0f
mov rax, qword [0x1001241b0]
imul rax, rax, 0x343fd
shl r8, 0x10
shr r9, 0x10
add rax, 0x269ec3
mov rcx, rax
shr rcx, 0x10
movzx edx, cx
or r8, rdx
test r9, r9
jne 0x100015ae1
mov qword [0x1001241b0], rax
xor edx, edx
mov rax, r8
mov ecx, r10d
div r11
add rsi, rdx
mov r8, rsi
mov qword [rsp + 0x68], rsi
mov rdx, r13
mov eax, 0xea554d62
xor bl, bl
mov qword [rsp + 0x50], r13
mov byte [rsp + 0x20], bl
test r13, r13
mov qword [rsp + 0x58], rbp
mov qword [rsp + 0x48], rsi
je 0x100015fb6
movdqu xmm0, xmmword [r13 + rbp]
and dword [rsp + 0x1e8], 0
and dword [rsp + 0x1ec], 0
xor esi, esi
and dword [rsp + 0x1f4], esi
mov dword [rsp + 0x1f0], esi
movdqu xmmword [rsp + 0x210], xmm0
mov r8, qword [rsp + 0x210]
lea edi, [rsi + 0x40]
mov rdx, r8
mov rcx, qword [rsp + 0x218]
mov dword [rsp + 0x1d4], r8d
mov rax, rcx
mov dword [rsp + 0x1dc], ecx
shr rax, 0x20
mov dword [rsp + 0x1e0], eax
mov dword [rsp + 0x208], eax
mov eax, dword [0x10000a5b0]
shr rdx, 0x20
mov dword [rsp + 0x1d0], eax
mov eax, dword [0x10000a5b4]
mov dword [rsp + 0x1d8], edx
mov dword [rsp + 0x1e4], eax
mov eax, dword [0x10000a5b8]
mov dword [rsp + 0x1fc], r8d
mov dword [rsp + 0x1f8], eax
mov eax, dword [0x10000a5bc]
mov dword [rsp + 0x200], edx
mov dword [rsp + 0x20c], eax
mov dword [rsp + 0x204], ecx
lea rax, [rsp + 0x260]
sub rax, rbp
mov qword [rsp + 0x38], rax
mov r8, rdi
lea rdx, [rsp + 0x1d0]
not rdx
lea rcx, [rsp + 0xc0]
call fcn.10001511c
mov eax, dword [rsp + 0xd4]
mov r15d, dword [rsp + 0xd0]
mov r11d, dword [rsp + 0xe8]
mov r8d, dword [rsp + 0xf4]
mov ebp, dword [rsp + 0xe0]
mov edx, dword [rsp + 0xf8]
mov edi, dword [rsp + 0xdc]
mov ebx, dword [rsp + 0xc8]
mov r13d, dword [rsp + 0xe4]
mov r9d, dword [rsp + 0xf0]
mov ecx, dword [rsp + 0xfc]
mov esi, dword [rsp + 0xcc]
mov r12d, dword [rsp + 0xd8]
mov r10d, dword [rsp + 0xec]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0xc4]
mov qword [rsp + 0x40], 3
mov r14d, dword [rsp + 0x2c]
mov dword [rsp + 0x24], eax
mov eax, dword [rsp + 0xc0]
mov dword [rsp + 0x28], eax
add eax, r9d
rol eax, 7
xor r15d, eax
mov eax, dword [rsp + 0x28]
add eax, r15d
rol eax, 9
xor ebp, eax
lea eax, [rbp + r15]
rol eax, 0xd
xor r9d, eax
mov dword [rsp + 0x2c], r9d
lea eax, [rbp + r9]
ror eax, 0xe
xor dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x24]
add eax, r14d
rol eax, 7
xor r13d, eax
mov r9d, dword [rsp + 0x28]
lea eax, [r14 + r13]
rol eax, 9
xor r8d, eax
lea eax, [r8 + r13]
rol eax, 0xd
xor dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x24]
add eax, r8d
ror eax, 0xe
xor r14d, eax
lea eax, [r11 + r12]
rol eax, 7
xor edx, eax
lea eax, [r11 + rdx]
rol eax, 9
xor ebx, eax
lea eax, [rbx + rdx]
rol eax, 0xd
xor r12d, eax
lea eax, [rbx + r12]
ror eax, 0xe
xor r11d, eax
lea eax, [r10 + rcx]
rol eax, 7
xor esi, eax
lea eax, [rcx + rsi]
rol eax, 9
xor edi, eax
lea eax, [rdi + rsi]
rol eax, 0xd
xor r10d, eax
lea eax, [rdi + r10]
ror eax, 0xe
xor ecx, eax
mov eax, dword [rsp + 0x28]
add eax, esi
rol eax, 7
xor dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x24]
mov dword [rsp + 0xc4], eax
add eax, r9d
rol eax, 9
xor ebx, eax
mov eax, dword [rsp + 0x24]
add eax, ebx
rol eax, 0xd
xor esi, eax
lea eax, [rbx + rsi]
ror eax, 0xe
xor r9d, eax
mov dword [rsp + 0x28], r9d
mov eax, r9d
mov dword [rsp + 0xc0], eax
lea eax, [r15 + r14]
mov r9d, dword [rsp + 0x2c]
rol eax, 7
xor r12d, eax
lea eax, [r14 + r12]
rol eax, 9
xor edi, eax
lea eax, [r12 + rdi]
rol eax, 0xd
xor r15d, eax
lea eax, [rdi + r15]
ror eax, 0xe
xor r14d, eax
lea eax, [r11 + r13]
rol eax, 7
xor r10d, eax
lea eax, [r10 + r11]
rol eax, 9
xor ebp, eax
lea eax, [r10 + rbp]
rol eax, 0xd
xor r13d, eax
lea eax, [r13 + rbp]
ror eax, 0xe
xor r11d, eax
lea eax, [rcx + rdx]
rol eax, 7
xor r9d, eax
lea eax, [rcx + r9]
mov dword [rsp + 0xf0], r9d
rol eax, 9
xor r8d, eax
lea eax, [r9 + r8]
rol eax, 0xd
xor edx, eax
lea eax, [rdx + r8]
ror eax, 0xe
xor ecx, eax
sub qword [rsp + 0x40], 1
mov eax, dword [rsp + 0x28]
jne 0x100015cc6
mov dword [rsp + 0xfc], ecx
mov dword [rsp + 0xdc], edi
xor ecx, ecx
mov edi, 0x40
mov dword [rsp + 0xd8], r12d
mov r12, qword [rsp + 0x58]
mov dword [rsp + 0xd4], r14d
mov r14, qword [rsp + 0x48]
mov dword [rsp + 0xd0], r15d
mov r15, qword [rsp + 0x50]
mov dword [rsp + 0xcc], esi
mov esi, dword [rsp + 0x1f0]
mov dword [rsp + 0xc8], ebx
mov bl, byte [rsp + 0x20]
mov dword [rsp + 0xf8], edx
mov dword [rsp + 0xf4], r8d
mov dword [rsp + 0xec], r10d
mov dword [rsp + 0xe8], r11d
mov dword [rsp + 0xe4], r13d
mov dword [rsp + 0xe0], ebp
mov eax, dword [rsp + rcx + 0x1d0]
add rcx, 4
add dword [rsp + rcx + 0xbc], eax
cmp rcx, rdi
jl 0x100015eca
mov r8, rdi
lea rdx, [rsp + 0xc0]
lea rcx, [rsp + 0x260]
not rdx
call fcn.10001511c
inc esi
mov dword [rsp + 0x1f0], esi
cmp r15, rdi
jbe 0x100015f78
mov r9, rdi
mov rcx, r12
mov r8, r14
sub r8, r12
mov rdx, qword [rsp + 0x38]
mov al, byte [rdx + rcx]
xor al, byte [rcx]
mov byte [r8 + rcx], al
inc rcx
xor bl, al
sub r9, 1
jne 0x100015f1b
mov byte [rsp + 0x20], bl
sub r15, rdi
add r14, rdi
add r12, rdi
sub rdx, rdi
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x38], rdx
jmp 0x100015c1a
mov r13d, dword [rbp + rdx*8 + 0xa74c]
and r13d, 0x3f
mov eax, dword [rbp + rdx*8 + 0xa748]
and eax, ebx
add r13d, eax
add r13, r11
jmp 0x100015a96
mov rbp, qword [rsp + 0x30]
xor ecx, ecx
mov rsi, qword [rsp + 0x68]
mov r13, qword [rsp + 0x60]
test r15, r15
je 0x100015fb6
lea rdx, [rsp + 0x260]
sub rdx, r12
sub r14, r12
inc ecx
mov al, byte [r12 + rdx]
xor al, byte [r12]
mov byte [r12 + r14], al
xor bl, al
inc r12
mov eax, ecx
cmp rax, r15
jb 0x100015f9c
cmp bl, byte [r13 + rbp + 0x10]
je 0x100016084
call fcn.100018aa8
lea rsi, [0x1000b5984]
mov r8d, 0xffff
mov rbx, rax
mov rcx, qword [rsp + 0x70]
mov qword [rcx + 0x10], rsi
lea r10, [rcx + 0x18]
and r10, 0xfffffffffffffff8
lea r11, [r10 + 0xfff]
mov rax, 0xfffffffffffff000
and rbx, rax
and r11, rax
xor r9d, r9d
mov rax, qword [0x1001241b0]
imul rax, rax, 0x343fd
shl r9, 0x10
shr r8, 0x10
add rax, 0x269ec3
mov rcx, rax
shr rcx, 0x10
movzx edx, cx
or r9, rdx
test r8, r8
jne 0x100016005
mov qword [0x1001241b0], rax
movabs rax, 0x8000800080008001
mul r9
mov rax, qword [rsp + 0x140]
mov qword [rax + 0x98], rbx
shr rdx, 0xf
imul rdx, rdx, 0xffff
sub r9, rdx
inc r9
mov qword [rax + 0xb0], r9
mov qword [rsp + 0x30], r8
jmp 0x10001607a
mov rax, qword [rsp + 0x30]
mov qword [r10], rax
add r10, 8
cmp r10, r11
jb 0x10001606e
jmp 0x100015a26
mov rdi, rbp
sub rdi, rsi
lea r14, [0x100000000]
mov rax, qword [0x10000cac8]
mov r12, r14
sub r12, rax
jne 0x1000160a9
test rdi, rdi
je 0x100015a1b
mov rcx, qword [0x1000e0550]
lea r15, [0x100000000]
lea r9d, [rcx - 1]
xor r8d, r8d
mov rbx, rsi
sub rbx, rbp
sub ebp, r14d
add r13d, ebp
test r9d, r9d
js 0x100016100
lea eax, [r9 + r8]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov r10d, dword [r15 + rdx*4 + 0xe0554]
and r10d, 0xfffffff
cmp ebp, r10d
jae 0x1000160f5
lea r9d, [rdx - 1]
jmp 0x1000160fb
jbe 0x100016108
lea r8d, [rdx + 1]
cmp r9d, r8d
jge 0x1000160cf
movsxd r11, r8d
jmp 0x10001618a
mov r11, rdx
jmp 0x10001618a
mov edx, dword [r15 + r11*4 + 0xe0554]
mov eax, edx
and eax, 0xfffffff
cmp eax, r13d
jae 0x100015a1b
mov r8d, edx
mov r9, rdx
sar edx, 0x1e
shl r8d, 2
and r9d, 0xfffffff
and edx, 3
sar r8d, 0x1e
add r9, r14
xor r10d, r10d
and r8d, 3
sub r8d, 1
je 0x100016166
sub r8d, 1
je 0x100016161
cmp r8d, 1
jne 0x10001616c
mov r10, r12
jmp 0x10001616c
mov r10, rdi
jmp 0x10001616c
mov r10, r12
sub r10, rdi
sub edx, 2
je 0x10001617c
cmp edx, 1
jne 0x100016187
add qword [r9 + rbx], r10
jmp 0x100016180
add dword [r9 + rbx], r10d
mov rcx, qword [0x1000e0550]
inc r11
mov eax, ecx
cmp r11, rax
jb 0x10001610d
jmp 0x100015a1b
mov edx, dword [0x10000003c]
cmp rdi, r11
jb 0x10001690b
movsxd rax, edx
mov ecx, dword [rax + r11 + 0x50]
add rcx, r11
cmp rdi, rcx
jae 0x10001690b
xor r9d, r9d
mov ecx, dword [0x100011a18]
mov r8d, edi
sub r8d, r11d
sub ecx, 1
js 0x100016205
lea eax, [rcx + r9]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov eax, dword [rbp + rdx*8 + 0x145c0]
shr eax, 2
and eax, ebx
cmp r8d, eax
mov r10, rdx
jae 0x1000161f6
lea ecx, [rdx - 1]
jmp 0x100016200
jbe 0x1000166c8
lea r9d, [rdx + 1]
cmp ecx, r9d
jge 0x1000161d1
xor edx, edx
test rdx, rdx
je 0x10001690b
xor r8d, r8d
mov r13d, dword [rdx]
mov rax, r13
shr r13, 4
mov qword [rsp + 0x60], r13
shr rax, 1
and eax, 7
lea rbp, [rax + rdx + 8]
mov qword [rsp + 0x30], rbp
mov r10d, ebp
sub r10d, r11d
mov r11d, dword [0x1000a5f24]
sub r11, r13
inc r11
mov r9, r11
je 0x10001627f
mov rax, qword [0x1001241b0]
imul rax, rax, 0x343fd
shl r8, 0x10
shr r9, 0x10
add rax, 0x269ec3
mov rcx, rax
shr rcx, 0x10
movzx edx, cx
or r8, rdx
test r9, r9
jne 0x100016251
mov qword [0x1001241b0], rax
mov ecx, r10d
xor edx, edx
mov rax, r8
div r11
add rsi, rdx
mov rdx, r13
mov qword [rsp + 0x68], rsi
mov r8, rsi
mov eax, 0xbc9f7f72
mov qword [rsp + 0x50], r13
xor bl, bl
mov byte [rsp + 0x20], bl
mov qword [rsp + 0x58], rbp
test r13, r13
mov qword [rsp + 0x48], rsi
je 0x100016727
movdqu xmm0, xmmword [r13 + rbp]
and dword [rsp + 0x1a8], 0
and dword [rsp + 0x1ac], 0
xor esi, esi
and dword [rsp + 0x1b4], esi
mov dword [rsp + 0x1b0], esi
movdqu xmmword [rsp + 0x210], xmm0
lea edi, [rsi + 0x40]
mov rcx, qword [rsp + 0x218]
mov rax, rcx
mov r8, qword [rsp + 0x210]
mov rdx, r8
mov dword [rsp + 0x194], r8d
shr rax, 0x20
shr rdx, 0x20
mov dword [rsp + 0x19c], ecx
mov dword [rsp + 0x1a0], eax
mov dword [rsp + 0x1c8], eax
mov eax, dword [0x10000a5b0]
mov dword [rsp + 0x190], eax
mov eax, dword [0x10000a5b4]
mov dword [rsp + 0x198], edx
mov dword [rsp + 0x1a4], eax
mov eax, dword [0x10000a5b8]
mov dword [rsp + 0x1bc], r8d
mov dword [rsp + 0x1b8], eax
mov eax, dword [0x10000a5bc]
mov dword [rsp + 0x1c0], edx
mov dword [rsp + 0x1cc], eax
mov dword [rsp + 0x1c4], ecx
lea rax, [rsp + 0x2a0]
sub rax, rbp
mov qword [rsp + 0x38], rax
lea rdx, [rsp + 0x190]
not rdx
lea rcx, [rsp + 0x100]
mov r8, rdi
call fcn.10001511c
mov eax, dword [rsp + 0x114]
mov r10d, dword [rsp + 0x12c]
mov ecx, dword [rsp + 0x13c]
mov edx, dword [rsp + 0x138]
mov edi, dword [rsp + 0x11c]
mov r8d, dword [rsp + 0x134]
mov r11d, dword [rsp + 0x128]
mov r9d, dword [rsp + 0x130]
mov r13d, dword [rsp + 0x124]
mov esi, dword [rsp + 0x10c]
mov ebx, dword [rsp + 0x108]
mov r15d, dword [rsp + 0x110]
mov r12d, dword [rsp + 0x118]
mov ebp, dword [rsp + 0x120]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x104]
mov qword [rsp + 0x40], 2
mov r14d, dword [rsp + 0x2c]
mov dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x100]
mov dword [rsp + 0x28], eax
add eax, r9d
rol eax, 7
xor r15d, eax
mov eax, dword [rsp + 0x28]
add eax, r15d
rol eax, 9
xor ebp, eax
lea eax, [rbp + r15]
rol eax, 0xd
xor r9d, eax
mov dword [rsp + 0x2c], r9d
lea eax, [rbp + r9]
ror eax, 0xe
xor dword [rsp + 0x28], eax
mov r9d, dword [rsp + 0x28]
mov eax, dword [rsp + 0x24]
add eax, r14d
rol eax, 7
xor r13d, eax
lea eax, [r14 + r13]
rol eax, 9
xor r8d, eax
lea eax, [r8 + r13]
rol eax, 0xd
xor dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x24]
add eax, r8d
ror eax, 0xe
xor r14d, eax
lea eax, [r11 + r12]
rol eax, 7
xor edx, eax
lea eax, [r11 + rdx]
rol eax, 9
xor ebx, eax
lea eax, [rbx + rdx]
rol eax, 0xd
xor r12d, eax
lea eax, [rbx + r12]
ror eax, 0xe
xor r11d, eax
lea eax, [r10 + rcx]
rol eax, 7
xor esi, eax
lea eax, [rcx + rsi]
rol eax, 9
xor edi, eax
lea eax, [rdi + rsi]
rol eax, 0xd
xor r10d, eax
lea eax, [rdi + r10]
ror eax, 0xe
xor ecx, eax
mov eax, dword [rsp + 0x28]
add eax, esi
rol eax, 7
xor dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x24]
mov dword [rsp + 0x104], eax
add eax, r9d
rol eax, 9
xor ebx, eax
mov eax, dword [rsp + 0x24]
add eax, ebx
rol eax, 0xd
xor esi, eax
lea eax, [rbx + rsi]
ror eax, 0xe
xor r9d, eax
mov dword [rsp + 0x28], r9d
mov eax, r9d
mov dword [rsp + 0x100], eax
lea eax, [r15 + r14]
rol eax, 7
xor r12d, eax
mov r9d, dword [rsp + 0x2c]
lea eax, [r14 + r12]
rol eax, 9
xor edi, eax
lea eax, [r12 + rdi]
rol eax, 0xd
xor r15d, eax
lea eax, [rdi + r15]
ror eax, 0xe
xor r14d, eax
lea eax, [r11 + r13]
rol eax, 7
xor r10d, eax
lea eax, [r10 + r11]
rol eax, 9
xor ebp, eax
lea eax, [r10 + rbp]
rol eax, 0xd
xor r13d, eax
lea eax, [r13 + rbp]
ror eax, 0xe
xor r11d, eax
lea eax, [rcx + rdx]
rol eax, 7
xor r9d, eax
mov dword [rsp + 0x130], r9d
lea eax, [rcx + r9]
rol eax, 9
xor r8d, eax
lea eax, [r9 + r8]
rol eax, 0xd
xor edx, eax
lea eax, [rdx + r8]
ror eax, 0xe
xor ecx, eax
sub qword [rsp + 0x40], 1
mov eax, dword [rsp + 0x28]
jne 0x100016436
mov dword [rsp + 0x13c], ecx
xor ecx, ecx
mov dword [rsp + 0x11c], edi
mov dword [rsp + 0x118], r12d
mov r12, qword [rsp + 0x58]
mov dword [rsp + 0x114], r14d
mov edi, 0x40
mov r14, qword [rsp + 0x48]
mov dword [rsp + 0x110], r15d
mov r15, qword [rsp + 0x50]
mov dword [rsp + 0x10c], esi
mov esi, dword [rsp + 0x1b0]
mov dword [rsp + 0x108], ebx
mov bl, byte [rsp + 0x20]
mov dword [rsp + 0x138], edx
mov dword [rsp + 0x134], r8d
mov dword [rsp + 0x12c], r10d
mov dword [rsp + 0x128], r11d
mov dword [rsp + 0x124], r13d
mov dword [rsp + 0x120], ebp
mov eax, dword [rsp + rcx + 0x190]
add rcx, 4
add dword [rsp + rcx + 0xfc], eax
cmp rcx, rdi
jl 0x10001663a
mov r8, rdi
lea rcx, [rsp + 0x2a0]
lea rdx, [rsp + 0x100]
not rdx
call fcn.10001511c
inc esi
cmp r15, rdi
mov dword [rsp + 0x1b0], esi
jbe 0x1000166e9
mov r8, r14
mov rcx, r12
mov r9, rdi
sub r8, r12
mov rdx, qword [rsp + 0x38]
mov al, byte [rdx + rcx]
xor al, byte [rcx]
mov byte [r8 + rcx], al
inc rcx
xor bl, al
sub r9, 1
jne 0x10001668b
mov byte [rsp + 0x20], bl
sub r15, rdi
mov qword [rsp + 0x50], r15
add r14, rdi
mov qword [rsp + 0x48], r14
add r12, rdi
sub rdx, rdi
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x38], rdx
jmp 0x10001638a
mov eax, dword [rbp + r10*8 + 0x145c0]
shr eax, 2
mov edx, dword [rbp + rdx*8 + 0x145c4]
and edx, 0x3f
and eax, ebx
add edx, eax
add rdx, r11
jmp 0x100016207
xor ecx, ecx
test r15, r15
mov r13, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x68]
je 0x100016727
lea rdx, [rsp + 0x2a0]
sub rdx, r12
sub r14, r12
mov al, byte [r12 + rdx]
inc ecx
xor al, byte [r12]
xor bl, al
mov byte [r12 + r14], al
mov eax, ecx
inc r12
cmp rax, r15
jb 0x10001670d
cmp bl, byte [r13 + rbp + 0x10]
je 0x1000167f5
call fcn.100018aa8
mov r8d, 0xffff
mov rcx, qword [rsp + 0x70]
lea rsi, [0x1000b5984]
lea r10, [rcx + 0x18]
mov rbx, rax
mov rax, 0xfffffffffffff000
mov qword [rcx + 0x10], rsi
and r10, 0xfffffffffffffff8
lea r11, [r10 + 0xfff]
and rbx, rax
and r11, rax
mov rax, qword [0x1001241b0]
xor r9d, r9d
imul rax, rax, 0x343fd
shl r9, 0x10
shr r8, 0x10
add rax, 0x269ec3
mov rcx, rax
shr rcx, 0x10
movzx edx, cx
or r9, rdx
test r8, r8
jne 0x100016776
mov qword [0x1001241b0], rax
movabs rax, 0x8000800080008001
mul r9
shr rdx, 0xf
imul rdx, rdx, 0xffff
sub r9, rdx
inc r9
mov rax, qword [rsp + 0x140]
mov qword [rax + 0x98], rbx
mov qword [rax + 0xb0], r9
mov qword [rsp + 0x30], r8
jmp 0x1000167eb
mov rax, qword [rsp + 0x30]
mov qword [r10], rax
add r10, 8
cmp r10, r11
jb 0x1000167df
jmp 0x100015a26
mov rax, qword [0x10000cac8]
lea r14, [0x100000000]
mov rdi, rbp
mov r12, r14
sub rdi, rsi
sub r12, rax
jne 0x10001681a
test rdi, rdi
je 0x100015a1b
mov rbx, rsi
lea r15, [0x100000000]
mov rcx, qword [0x1000e0550]
xor r8d, r8d
lea r9d, [rcx - 1]
sub rbx, rbp
sub ebp, r14d
add r13d, ebp
test r9d, r9d
js 0x100016871
lea eax, [r9 + r8]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov r10d, dword [r15 + rdx*4 + 0xe0554]
and r10d, 0xfffffff
cmp ebp, r10d
jae 0x100016866
lea r9d, [rdx - 1]
jmp 0x10001686c
jbe 0x100016879
lea r8d, [rdx + 1]
cmp r9d, r8d
jge 0x100016840
movsxd r11, r8d
jmp 0x1000168fb
mov r11, rdx
jmp 0x1000168fb
mov edx, dword [r15 + r11*4 + 0xe0554]
mov eax, edx
and eax, 0xfffffff
cmp eax, r13d
jae 0x100015a1b
mov r9, rdx
mov r8d, edx
sar edx, 0x1e
shl r8d, 2
and r9d, 0xfffffff
and edx, 3
sar r8d, 0x1e
add r9, r14
xor r10d, r10d
and r8d, 3
sub r8d, 1
je 0x1000168d7
sub r8d, 1
je 0x1000168d2
cmp r8d, 1
jne 0x1000168dd
mov r10, r12
jmp 0x1000168dd
mov r10, rdi
jmp 0x1000168dd
mov r10, r12
sub r10, rdi
sub edx, 2
je 0x1000168ed
cmp edx, 1
jne 0x1000168f8
add qword [r9 + rbx], r10
jmp 0x1000168f1
add dword [r9 + rbx], r10d
mov rcx, qword [0x1000e0550]
inc r11
mov eax, ecx
cmp r11, rax
jb 0x10001687e
jmp 0x100015a1b
mov eax, 0x4be2c743
lea r11, [0x100109088]
cmp rsi, r11
jb 0x100016958
mov ecx, dword [0x10000c52c]
mov eax, dword [0x1000a5f24]
imul ecx, eax
mov eax, ecx
add rax, r11
cmp rsi, rax
jae 0x100016958
mov ecx, dword [0x1000a5f24]
mov rax, rsi
sub rax, r11
cqo
idiv rcx
mov rcx, rax
mov eax, dword [0x1000a5f24]
imul rax, rcx
add rax, r11
jmp 0x10001695a
xor eax, eax
test rax, rax
je 0x100016986
sub rsi, r11
mov rax, rsi
mov ecx, dword [0x1000a5f24]
cqo
idiv rcx
mov rcx, rax
mov eax, dword [0x10000c52c]
mov dword [rbp + rcx*4 + 0x127060], 0x23ad
jmp 0x1000169b4
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov rcx, rsi
or rcx, 3
call qword [sym.imp.KERNEL32.dll_RtlDeleteFunctionTable]
mov r8d, 0x8000
xor edx, edx
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rax, rdi
mov rcx, qword [rsp + 0x2e0]
xor rcx, rsp
call fcn.1000d8a8c
add rsp, 0x2f8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret