Function at 0x18003cb50
Capabilities:
Encode data using xor
Hash data using fnv
Hash data using murmur3

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x2d0]
sub rsp, 0x3d0
mov qword [rsp + 0x78], 0xfffffffffffffffe
mov qword [rsp + 0x428], rbx
mov rax, qword [0x1800c4058]
xor rax, rsp
mov qword [rbp + 0x2c0], rax
mov qword [rsp + 0x68], r8
mov qword [rsp + 0x60], rdx
mov rbx, rcx
mov edx, 3
lea r8d, [rdx - 2]
lea rcx, [rbp - 0x80]
call fcn.1800171a0
nop
mov rcx, rbx
shr rcx, 0x20
mov eax, ebx
xor eax, 0x811c9dc5
imul r13d, eax, 0x1000193
mov eax, r13d
xor eax, ecx
imul r14d, eax, 0x1000193
mov eax, r14d
xor eax, ebx
imul r15d, eax, 0x1000193
mov eax, r15d
xor eax, ecx
imul r12d, eax, 0x1000193
xor esi, esi
mov dword [rsp + 0x30], esi
mov dword [rsp + 0x44], esi
movdqa xmm2, xmmword [0x180092f10]
mov edx, 8
xor ecx, ecx
nop
lea eax, [rdx - 8]
movd xmm0, eax
pshufd xmm0, xmm0, 0
paddd xmm0, xmm2
movdqu xmmword [rbp + rcx + 0x1c0], xmm0
movdqu xmmword [rbp + rcx + 0x240], xmm0
lea eax, [rdx - 4]
movd xmm1, eax
pshufd xmm1, xmm1, 0
paddd xmm1, xmm2
movdqu xmmword [rbp + rcx + 0x1d0], xmm1
movdqu xmmword [rbp + rcx + 0x250], xmm1
movd xmm0, edx
pshufd xmm0, xmm0, 0
paddd xmm0, xmm2
movdqu xmmword [rbp + rcx + 0x1e0], xmm0
movdqu xmmword [rbp + rcx + 0x260], xmm0
lea eax, [rdx + 4]
movd xmm1, eax
pshufd xmm1, xmm1, 0
paddd xmm1, xmm2
movdqu xmmword [rbp + rcx + 0x1f0], xmm1
movdqu xmmword [rbp + rcx + 0x270], xmm1
add edx, 0x10
lea rcx, [rcx + 0x40]
lea eax, [rdx - 8]
cmp eax, 0x20
jl 0x18003cc00
mov edi, 0x20
xor ebx, ebx
nop
movzx edx, r13w
imul r8d, edx, 0x9069
mov eax, r13d
shr eax, 0x10
add r8d, eax
movzx eax, r14w
imul r11d, eax, 0x4650
shr r14d, 0x10
add r11d, r14d
and r13d, 0xffff0000
imul eax, edx, 0x6f970000
sub r13d, eax
add r13d, r11d
mov eax, r15d
shl eax, 0x11
xor eax, r15d
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
mov r9d, ecx
shl r9d, 5
xor r9d, ecx
imul r10d, r12d, 0x10dcd
add r10d, 0x12d687
mov eax, r10d
xor eax, r13d
add eax, r9d
xor edx, edx
div edi
movsxd rax, edx
lea rdx, [rbp + 0x1c0]
lea rdx, [rdx + rax*4]
mov ecx, dword [rbp + rbx + 0x23c]
mov eax, dword [rdx]
mov dword [rbp + rbx + 0x23c], eax
mov dword [rdx], ecx
movzx eax, r8w
imul r13d, eax, 0x9069
shr r8d, 0x10
add r13d, r8d
movzx eax, r11w
imul r14d, eax, 0x4650
shr r11d, 0x10
add r14d, r11d
mov r8d, r13d
shl r8d, 0x10
add r8d, r14d
mov eax, r9d
shl eax, 0x11
xor eax, r9d
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
mov r15d, ecx
shl r15d, 5
xor r15d, ecx
imul r12d, r10d, 0x10dcd
add r12d, 0x12d687
xor r8d, r12d
lea eax, [r15 + r8]
xor edx, edx
div edi
mov r8d, dword [rbp + rbx + 0x2bc]
movsxd rax, edx
lea rcx, [rbp + 0x240]
lea rcx, [rcx + rax*4]
mov eax, dword [rcx]
mov dword [rbp + rbx + 0x2bc], eax
mov dword [rcx], r8d
dec edi
sub rbx, 4
cmp rbx, 0xffffffffffffff84
jg 0x18003cca0
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x3c], r15d
mov dword [rsp + 0x38], r14d
mov dword [rsp + 0x48], r13d
xor ebx, ebx
mov edi, ebx
mov dword [rsp + 0x34], edi
cmp edi, 0x11
jg 0x18003e202
cmp edi, 0xb
jge 0x18003d60f
mov eax, dword [rsp + 0x44]
and eax, 0x8000001f
jge 0x18003ce01
dec eax
or eax, 0xffffffe0
inc eax
cdqe
mov r8d, dword [rbp + rax*4 + 0x240]
lea r9, [rbp + 0x115]
test r8d, r8d
jns 0x18003ce60
neg r8d
nop word [rax + rax]
dec r9
mov eax, 0xcccccccd
mul r8d
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8d, edx
test edx, edx
jne 0x18003ce20
dec r9
mov byte [r9], 0x2d
jmp 0x18003ce8a
dec r9
mov eax, 0xcccccccd
mul r8d
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8d, edx
test edx, edx
jne 0x18003ce60
mov qword [rbp + 0x130], rbx
mov qword [rbp + 0x138], 0xf
mov byte [rbp + 0x120], 0
lea rax, [rbp + 0x115]
cmp r9, rax
je 0x18003cec9
lea r8, [rbp + 0x115]
sub r8, r9
mov rdx, r9
lea rcx, [rbp + 0x120]
call fcn.180013db0
nop
mov r9d, 4
lea r8, str.mix_
xor edx, edx
lea rcx, [rbp + 0x120]
call fcn.1800204d0
mov qword [rbp + 0xb0], rbx
mov qword [rbp + 0xb8], rbx
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0xa0], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0xb0], xmm1
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rcx, qword [rbp + 0xb0]
mov rdx, qword [rbp + 0xb8]
mov rax, rdx
sub rax, rcx
cmp rax, 1
jb 0x18003cf75
lea rax, [rcx + 1]
mov qword [rbp + 0xb0], rax
lea rbx, [rbp + 0xa0]
cmp rdx, 0x10
cmovae rbx, qword [rbp + 0xa0]
add rbx, rcx
mov r8d, 1
lea rdx, [0x180090698]
mov rcx, rbx
call fcn.180044620
mov byte [rbx + 1], 0
lea rax, [rbp + 0xa0]
xor ebx, ebx
jmp 0x18003cf98
mov qword [rsp + 0x20], 1
lea r9, [0x180090698]
xor r8d, r8d
lea edx, [r8 + 1]
lea rcx, [rbp + 0xa0]
call fcn.180013230
mov qword [rbp + 0xf0], rbx
mov qword [rbp + 0xf8], rbx
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0xe0], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0xf0], xmm1
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
inc dword [rsp + 0x44]
mov rdx, qword [rbp + 0xb8]
cmp rdx, 0x10
jb 0x18003d00f
inc rdx
mov rcx, qword [rbp + 0xa0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003d00a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e785
call fcn.180040bb0
mov qword [rbp + 0xb0], rbx
mov qword [rbp + 0xb8], 0xf
mov byte [rbp + 0xa0], 0
mov rdx, qword [rbp + 0x138]
cmp rdx, 0x10
jb 0x18003d069
inc rdx
mov rcx, qword [rbp + 0x120]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003d064
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e78b
call fcn.180040bb0
mov qword [rbp + 0x130], rbx
mov qword [rbp + 0x138], 0xf
mov byte [rbp + 0x120], 0
mov eax, esi
and eax, 0x8000001f
jge 0x18003d092
dec eax
or eax, 0xffffffe0
inc eax
cdqe
mov ecx, dword [rbp + rax*4 + 0x1c0]
lea r9, [rbp + 0x115]
test ecx, ecx
jns 0x18003d0f0
neg ecx
nop dword [rax + rax]
dec r9
mov eax, 0xcccccccd
mul ecx
shr edx, 3
movzx eax, dl
shl al, 2
lea r8d, [rax + rdx]
add r8b, r8b
sub cl, r8b
add cl, 0x30
mov byte [r9], cl
mov ecx, edx
test edx, edx
jne 0x18003d0b0
dec r9
mov byte [r9], 0x2d
jmp 0x18003d119
dec r9
mov eax, 0xcccccccd
mul ecx
shr edx, 3
movzx eax, dl
shl al, 2
lea r8d, [rax + rdx]
add r8b, r8b
sub cl, r8b
add cl, 0x30
mov byte [r9], cl
mov ecx, edx
test edx, edx
jne 0x18003d0f0
mov qword [rbp + 0xd0], rbx
mov qword [rbp + 0xd8], 0xf
mov byte [rbp + 0xc0], 0
lea rax, [rbp + 0x115]
cmp r9, rax
je 0x18003d158
lea r8, [rbp + 0x115]
sub r8, r9
mov rdx, r9
lea rcx, [rbp + 0xc0]
call fcn.180013db0
nop
mov r9d, 4
lea r8, str.mix_
xor edx, edx
lea rcx, [rbp + 0xc0]
call fcn.1800204d0
mov qword [rbp + 0x90], rbx
mov qword [rbp + 0x98], rbx
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x80], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x90], xmm1
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rcx, qword [rbp + 0x90]
mov rdx, qword [rbp + 0x98]
mov rax, rdx
sub rax, rcx
cmp rax, 1
jb 0x18003d204
lea rax, [rcx + 1]
mov qword [rbp + 0x90], rax
lea rbx, [rbp + 0x80]
cmp rdx, 0x10
cmovae rbx, qword [rbp + 0x80]
add rbx, rcx
mov r8d, 1
lea rdx, [0x180090698]
mov rcx, rbx
call fcn.180044620
mov byte [rbx + 1], 0
lea rax, [rbp + 0x80]
xor ebx, ebx
jmp 0x18003d227
mov qword [rsp + 0x20], 1
lea r9, [0x180090698]
xor r8d, r8d
lea edx, [r8 + 1]
lea rcx, [rbp + 0x80]
call fcn.180013230
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x140], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x150], xmm1
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
inc esi
mov dword [rsp + 0x30], esi
mov rdx, qword [rbp + 0x98]
cmp rdx, 0x10
jb 0x18003d292
inc rdx
mov rcx, qword [rbp + 0x80]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003d28d
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e791
call fcn.180040bb0
mov qword [rbp + 0x90], rbx
mov qword [rbp + 0x98], 0xf
mov byte [rbp + 0x80], 0
mov rdx, qword [rbp + 0xd8]
cmp rdx, 0x10
jb 0x18003d2ec
inc rdx
mov rcx, qword [rbp + 0xc0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003d2e7
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e797
call fcn.180040bb0
mov qword [rbp + 0xd0], rbx
mov qword [rbp + 0xd8], 0xf
mov byte [rbp + 0xc0], 0
movzx eax, r13w
imul ecx, eax, 0x9069
shr r13d, 0x10
add r13d, ecx
mov dword [rsp + 0x48], r13d
movzx eax, r14w
imul ecx, eax, 0x4650
shr r14d, 0x10
add ecx, r14d
mov dword [rsp + 0x38], ecx
mov edx, r13d
shl edx, 0x10
add edx, ecx
mov eax, r15d
shl eax, 0x11
xor eax, r15d
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
mov r8d, ecx
shl r8d, 5
xor r8d, ecx
mov dword [rsp + 0x3c], r8d
imul eax, r12d, 0x10dcd
add eax, 0x12d687
mov dword [rsp + 0x40], eax
mov r12d, eax
xor r12d, edx
add r12d, r8d
lea rdx, str.___cache_load
lea rcx, [rbp - 0x70]
call fcn.180015570
mov rcx, rax
mov edx, edi
call fcn.18003ae10
mov rcx, rax
lea rdx, [0x1800906a4]
call fcn.180015570
lea rdx, str.offset_
lea rcx, [rbp - 0x70]
call fcn.180015570
lea rdx, [rbp + 0xe0]
cmp qword [rbp + 0xf8], 0x10
cmovae rdx, qword [rbp + 0xe0]
mov r8, qword [rbp + 0xf0]
mov rcx, rax
call fcn.18003a5d0
mov rcx, rax
lea rdx, str.___PROGPOW_CACHE_WORDS__n
call fcn.180015570
lea rdx, str.data__c_dag_offset___n
lea rcx, [rbp - 0x70]
call fcn.180015570
lea rax, [rbp + 0xa0]
mov qword [rsp + 0x70], rax
mov qword [rbp + 0xb0], rbx
mov qword [rbp + 0xb8], 0xf
mov byte [rbp + 0xa0], 0
mov r8d, 4
lea rdx, str.data
lea rcx, [rbp + 0xa0]
call fcn.180013db0
nop
mov qword [rbp + 0x130], rbx
mov qword [rbp + 0x138], rbx
lea r14, [rbp + 0x140]
mov rdi, qword [rbp + 0x140]
mov r15, qword [rbp + 0x158]
cmp r15, 0x10
cmovae r14, rdi
mov rsi, qword [rbp + 0x150]
cmp rsi, 0x10
jae 0x18003d480
movups xmm0, xmmword [r14]
movups xmmword [rbp + 0x120], xmm0
mov qword [rbp + 0x138], 0xf
jmp 0x18003d501
mov rbx, rsi
or rbx, 0xf
movabs rax, 0x7fffffffffffffff
cmp rbx, rax
cmova rbx, rax
lea rax, [rbx + 1]
cmp rax, 0x1000
jb 0x18003d4d5
lea rcx, [rax + 0x27]
cmp rcx, rax
mov rax, 0xffffffffffffffff
cmovbe rcx, rax
call fcn.180040b74
mov rcx, rax
test rax, rax
je 0x18003e79d
add rax, 0x27
and rax, 0xffffffffffffffe0
mov qword [rax - 8], rcx
jmp 0x18003d4e2
test rax, rax
je 0x18003d4e2
mov rcx, rax
call fcn.180040b74
mov qword [rbp + 0x120], rax
lea r8, [rsi + 1]
mov rdx, r14
mov rcx, rax
call fcn.180044620
mov qword [rbp + 0x138], rbx
xor ebx, ebx
mov qword [rbp + 0x130], rsi
mov r9d, r12d
lea r8, [rbp + 0xa0]
lea rdx, [rbp + 0x120]
lea rcx, [rbp + 0x100]
call fcn.18003f880
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x18003d534
mov rax, qword [rax]
mov rdx, rax
lea rcx, [rbp - 0x70]
call fcn.18003a5d0
nop
mov rdx, qword [rbp + 0x118]
cmp rdx, 0x10
jb 0x18003d583
inc rdx
mov rcx, qword [rbp + 0x100]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003d57d
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7a3
call fcn.180040bb0
nop
cmp r15, 0x10
jb 0x18003d5bb
lea rdx, [r15 + 1]
mov rax, rdi
cmp rdx, 0x1000
jb 0x18003d5b2
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7a9
mov rcx, rdi
call fcn.180040bb0
nop
mov rdx, qword [rbp + 0xf8]
cmp rdx, 0x10
jb 0x18003d5fc
inc rdx
mov rcx, qword [rbp + 0xe0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003d5f7
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7af
call fcn.180040bb0
mov edi, dword [rsp + 0x34]
mov r12d, dword [rsp + 0x40]
mov r15d, dword [rsp + 0x3c]
mov r14d, dword [rsp + 0x38]
cmp edi, 0x12
jge 0x18003e1eb
movzx eax, r13w
imul esi, eax, 0x9069
shr r13d, 0x10
add esi, r13d
movzx eax, r14w
imul ecx, eax, 0x4650
shr r14d, 0x10
add r14d, ecx
mov r8d, esi
shl r8d, 0x10
add r8d, r14d
mov eax, r15d
shl eax, 0x11
xor eax, r15d
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
mov r15d, ecx
shl r15d, 5
xor r15d, ecx
imul r12d, r12d, 0x10dcd
add r12d, 0x12d687
xor r8d, r12d
add r8d, r15d
mov eax, 0x8421085
mul r8d
mov ecx, r8d
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 9
imul ecx, ecx, 0x3e0
sub r8d, ecx
mov eax, r8d
cdq
and edx, 0x1f
add eax, edx
mov ecx, eax
and eax, 0x1f
sub eax, edx
sar ecx, 5
mov r8d, eax
lea edi, [rcx + 1]
cmp ecx, eax
cmovl edi, ecx
lea r9, [rbp + 0x115]
test eax, eax
jns 0x18003d700
neg r8d
nop dword [rax + rax]
dec r9
mov eax, 0xcccccccd
mul r8d
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8d, edx
test edx, edx
jne 0x18003d6c0
dec r9
mov byte [r9], 0x2d
jmp 0x18003d72a
dec r9
mov eax, 0xcccccccd
mul r8d
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8d, edx
test edx, edx
jne 0x18003d700
mov qword [rbp + 0xf0], rbx
mov qword [rbp + 0xf8], 0xf
mov byte [rbp + 0xe0], 0
lea rax, [rbp + 0x115]
cmp r9, rax
je 0x18003d769
lea r8, [rbp + 0x115]
sub r8, r9
mov rdx, r9
lea rcx, [rbp + 0xe0]
call fcn.180013db0
nop
mov r9d, 4
lea r8, str.mix_
xor edx, edx
lea rcx, [rbp + 0xe0]
call fcn.1800204d0
mov qword [rbp + 0x90], rbx
mov qword [rbp + 0x98], rbx
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x80], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x90], xmm1
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rcx, qword [rbp + 0x90]
mov rdx, qword [rbp + 0x98]
mov rax, rdx
sub rax, rcx
cmp rax, 1
jb 0x18003d815
lea rax, [rcx + 1]
mov qword [rbp + 0x90], rax
lea rbx, [rbp + 0x80]
cmp rdx, 0x10
cmovae rbx, qword [rbp + 0x80]
add rbx, rcx
mov r8d, 1
lea rdx, [0x180090698]
mov rcx, rbx
call fcn.180044620
mov byte [rbx + 1], 0
lea rax, [rbp + 0x80]
xor ebx, ebx
jmp 0x18003d838
mov qword [rsp + 0x20], 1
lea r9, [0x180090698]
xor r8d, r8d
lea edx, [r8 + 1]
lea rcx, [rbp + 0x80]
call fcn.180013230
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x160], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x170], xmm1
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rdx, qword [rbp + 0x98]
cmp rdx, 0x10
jb 0x18003d89d
inc rdx
mov rcx, qword [rbp + 0x80]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003d898
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7b5
call fcn.180040bb0
mov qword [rbp + 0x90], rbx
mov qword [rbp + 0x98], 0xf
mov byte [rbp + 0x80], 0
mov rdx, qword [rbp + 0xf8]
cmp rdx, 0x10
jb 0x18003d8f7
inc rdx
mov rcx, qword [rbp + 0xe0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003d8f2
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7bb
call fcn.180040bb0
mov qword [rbp + 0xf0], rbx
mov qword [rbp + 0xf8], 0xf
mov byte [rbp + 0xe0], 0
lea r9, [rbp + 0x115]
test edi, edi
jns 0x18003d960
neg edi
nop dword [rax]
dec r9
mov eax, 0xcccccccd
mul edi
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub dil, cl
add dil, 0x30
mov byte [r9], dil
mov edi, edx
test edx, edx
jne 0x18003d920
dec r9
mov byte [r9], 0x2d
jmp 0x18003d988
dec r9
mov eax, 0xcccccccd
mul edi
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub dil, cl
add dil, 0x30
mov byte [r9], dil
mov edi, edx
test edx, edx
jne 0x18003d960
mov qword [rbp + 0xd0], rbx
mov qword [rbp + 0xd8], 0xf
mov byte [rbp + 0xc0], 0
lea rax, [rbp + 0x115]
cmp r9, rax
je 0x18003d9c7
lea r8, [rbp + 0x115]
sub r8, r9
mov rdx, r9
lea rcx, [rbp + 0xc0]
call fcn.180013db0
nop
mov r9d, 4
lea r8, str.mix_
xor edx, edx
lea rcx, [rbp + 0xc0]
call fcn.1800204d0
mov qword [rbp + 0xb0], rbx
mov qword [rbp + 0xb8], rbx
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0xa0], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0xb0], xmm1
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rcx, qword [rbp + 0xb0]
mov rdx, qword [rbp + 0xb8]
mov rax, rdx
sub rax, rcx
cmp rax, 1
jb 0x18003da73
lea rax, [rcx + 1]
mov qword [rbp + 0xb0], rax
lea rbx, [rbp + 0xa0]
cmp rdx, 0x10
cmovae rbx, qword [rbp + 0xa0]
add rbx, rcx
mov r8d, 1
lea rdx, [0x180090698]
mov rcx, rbx
call fcn.180044620
mov byte [rbx + 1], 0
lea rax, [rbp + 0xa0]
xor ebx, ebx
jmp 0x18003da96
mov qword [rsp + 0x20], 1
lea r9, [0x180090698]
xor r8d, r8d
lea edx, [r8 + 1]
lea rcx, [rbp + 0xa0]
call fcn.180013230
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x180], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x190], xmm1
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rdx, qword [rbp + 0xb8]
cmp rdx, 0x10
jb 0x18003dafb
inc rdx
mov rcx, qword [rbp + 0xa0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003daf6
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7c1
call fcn.180040bb0
mov qword [rbp + 0xb0], rbx
mov qword [rbp + 0xb8], 0xf
mov byte [rbp + 0xa0], 0
mov rdx, qword [rbp + 0xd8]
cmp rdx, 0x10
jb 0x18003db55
inc rdx
mov rcx, qword [rbp + 0xc0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003db50
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7c7
call fcn.180040bb0
mov qword [rbp + 0xd0], rbx
mov qword [rbp + 0xd8], 0xf
mov byte [rbp + 0xc0], 0
movzx eax, si
imul edi, eax, 0x9069
shr esi, 0x10
add edi, esi
movzx eax, r14w
imul esi, eax, 0x4650
shr r14d, 0x10
add esi, r14d
mov edx, edi
shl edx, 0x10
add edx, esi
mov eax, r15d
shl eax, 0x11
xor eax, r15d
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
mov ebx, ecx
shl ebx, 5
xor ebx, ecx
imul r12d, r12d, 0x10dcd
add r12d, 0x12d687
mov r15d, r12d
xor r15d, edx
add r15d, ebx
mov r14d, dword [rsp + 0x30]
mov eax, r14d
and eax, 0x8000001f
jge 0x18003dbd8
dec eax
or eax, 0xffffffe0
inc eax
cdqe
mov r8d, dword [rbp + rax*4 + 0x1c0]
lea r9, [rbp + 0x115]
test r8d, r8d
jns 0x18003dc30
neg r8d
dec r9
mov eax, 0xcccccccd
mul r8d
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8d, edx
test edx, edx
jne 0x18003dbf1
dec r9
mov byte [r9], 0x2d
jmp 0x18003dc5a
dec r9
mov eax, 0xcccccccd
mul r8d
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8d, edx
test edx, edx
jne 0x18003dc30
xor r13d, r13d
mov qword [rbp + 0x130], r13
mov qword [rbp + 0x138], 0xf
mov byte [rbp + 0x120], r13b
lea rax, [rbp + 0x115]
cmp r9, rax
je 0x18003dc9c
lea r8, [rbp + 0x115]
sub r8, r9
mov rdx, r9
lea rcx, [rbp + 0x120]
call fcn.180013db0
nop
mov r9d, 4
lea r8, str.mix_
xor edx, edx
lea rcx, [rbp + 0x120]
call fcn.1800204d0
mov qword [rbp + 0xf0], r13
mov qword [rbp + 0xf8], r13
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0xe0], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0xf0], xmm1
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov r8d, 1
lea rdx, [0x180090698]
lea rcx, [rbp + 0xe0]
call fcn.180013d20
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x1a0], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x1b0], xmm1
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
inc r14d
mov dword [rsp + 0x30], r14d
mov rdx, qword [rbp + 0xf8]
cmp rdx, 0x10
jb 0x18003dd6f
inc rdx
mov rcx, qword [rbp + 0xe0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003dd6a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7cd
call fcn.180040bb0
mov qword [rbp + 0xf0], r13
mov qword [rbp + 0xf8], 0xf
mov byte [rbp + 0xe0], 0
mov rdx, qword [rbp + 0x138]
cmp rdx, 0x10
jb 0x18003ddc9
inc rdx
mov rcx, qword [rbp + 0x120]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003ddc4
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7d3
call fcn.180040bb0
mov qword [rbp + 0x130], r13
mov qword [rbp + 0x138], 0xf
mov byte [rbp + 0x120], 0
movzx eax, di
imul r13d, eax, 0x9069
shr edi, 0x10
add r13d, edi
mov dword [rsp + 0x48], r13d
movzx eax, si
imul ecx, eax, 0x4650
shr esi, 0x10
add ecx, esi
mov dword [rsp + 0x38], ecx
mov r14d, r13d
shl r14d, 0x10
add r14d, ecx
mov eax, ebx
shl eax, 0x11
xor eax, ebx
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
mov r8d, ecx
shl r8d, 5
xor r8d, ecx
mov dword [rsp + 0x3c], r8d
imul r12d, r12d, 0x10dcd
add r12d, 0x12d687
mov dword [rsp + 0x40], r12d
xor r14d, r12d
add r14d, r8d
lea rdx, str.___random_math
lea rcx, [rbp - 0x70]
call fcn.180015570
mov rcx, rax
mov edx, dword [rsp + 0x34]
call fcn.18003ae10
mov rcx, rax
lea rdx, [0x1800906a4]
call fcn.180015570
lea rax, [rbp + 0x80]
mov qword [rsp + 0x50], rax
lea rax, [rbp + 0xa0]
mov qword [rsp + 0x70], rax
xor ebx, ebx
mov qword [rbp + 0x90], rbx
mov qword [rbp + 0x98], rbx
lea rsi, [rbp + 0x180]
cmp qword [rbp + 0x198], 0x10
cmovae rsi, qword [rbp + 0x180]
mov rdi, qword [rbp + 0x190]
cmp rdi, 0x10
jae 0x18003ded7
movups xmm0, xmmword [rsi]
movups xmmword [rbp + 0x80], xmm0
mov qword [rbp + 0x98], 0xf
jmp 0x18003df1e
mov rbx, rdi
or rbx, 0xf
movabs rax, 0x7fffffffffffffff
cmp rbx, rax
cmova rbx, rax
lea rdx, [rbx + 1]
lea rcx, [rbp + 0x80]
call fcn.18001ad30
mov qword [rbp + 0x80], rax
lea r8, [rdi + 1]
mov rdx, rsi
mov rcx, rax
call fcn.180044620
mov qword [rbp + 0x98], rbx
xor ebx, ebx
mov qword [rbp + 0x90], rdi
mov qword [rbp + 0xb0], rbx
mov qword [rbp + 0xb8], rbx
lea rsi, [rbp + 0x160]
cmp qword [rbp + 0x178], 0x10
cmovae rsi, qword [rbp + 0x160]
mov rdi, qword [rbp + 0x170]
cmp rdi, 0x10
jae 0x18003df6e
movups xmm0, xmmword [rsi]
movups xmmword [rbp + 0xa0], xmm0
mov qword [rbp + 0xb8], 0xf
jmp 0x18003dfb5
mov rbx, rdi
or rbx, 0xf
movabs rax, 0x7fffffffffffffff
cmp rbx, rax
cmova rbx, rax
lea rdx, [rbx + 1]
lea rcx, [rbp + 0xa0]
call fcn.18001ad30
mov qword [rbp + 0xa0], rax
lea r8, [rdi + 1]
mov rdx, rsi
mov rcx, rax
call fcn.180044620
mov qword [rbp + 0xb8], rbx
xor ebx, ebx
mov qword [rbp + 0xb0], rdi
mov qword [rbp + 0xd0], rbx
mov qword [rbp + 0xd8], 0xf
mov byte [rbp + 0xc0], 0
mov r8d, 4
lea rdx, str.data
lea rcx, [rbp + 0xc0]
call fcn.180013db0
nop
mov dword [rsp + 0x20], r15d
lea r9, [rbp + 0x80]
lea r8, [rbp + 0xa0]
lea rdx, [rbp + 0xc0]
lea rcx, [rbp + 0x100]
call fcn.18003e7e0
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x18003e024
mov rax, qword [rax]
mov rdx, rax
lea rcx, [rbp - 0x70]
call fcn.18003a5d0
nop
mov rdx, qword [rbp + 0x118]
cmp rdx, 0x10
jb 0x18003e072
inc rdx
mov rcx, qword [rbp + 0x100]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003e06d
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e7d9
call fcn.180040bb0
lea rax, [rbp + 0xc0]
mov qword [rsp + 0x58], rax
mov qword [rbp + 0xd0], rbx
mov qword [rbp + 0xd8], 0xf
mov byte [rbp + 0xc0], 0
mov r8d, 4
lea rdx, str.data
lea rcx, [rbp + 0xc0]
call fcn.180013db0
nop
mov qword [rbp + 0x90], rbx
mov qword [rbp + 0x98], rbx
lea rsi, [rbp + 0x1a0]
cmp qword [rbp + 0x1b8], 0x10
cmovae rsi, qword [rbp + 0x1a0]
mov rdi, qword [rbp + 0x1b0]
cmp rdi, 0x10
jae 0x18003e0fa
movups xmm0, xmmword [rsi]
movups xmmword [rbp + 0x80], xmm0
mov qword [rbp + 0x98], 0xf
jmp 0x18003e13f
mov rbx, rdi
or rbx, 0xf
movabs rax, 0x7fffffffffffffff
cmp rbx, rax
cmova rbx, rax
lea rdx, [rbx + 1]
lea rcx, [rbp + 0x80]
call fcn.18001ad30
mov qword [rbp + 0x80], rax
lea r8, [rdi + 1]
mov rdx, rsi
mov rcx, rax
call fcn.180044620
mov qword [rbp + 0x98], rbx
mov qword [rbp + 0x90], rdi
mov r9d, r14d
lea r8, [rbp + 0xc0]
lea rdx, [rbp + 0x80]
lea rcx, [rbp + 0xa0]
call fcn.18003f880
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x18003e172
mov rax, qword [rax]
mov rdx, rax
lea rcx, [rbp - 0x70]
call fcn.18003a5d0
nop
mov rdx, qword [rbp + 0xb8]
cmp rdx, 0x10
jb 0x18003e1c1
inc rdx
mov rcx, qword [rbp + 0xa0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003e1bb
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003e77f
call fcn.180040bb0
nop
lea rcx, [rbp + 0x1a0]
call fcn.1800136c0
nop
lea rcx, [rbp + 0x180]
call fcn.1800136c0
nop
lea rcx, [rbp + 0x160]
call fcn.1800136c0
mov edi, dword [rsp + 0x34]
inc edi
mov r14d, dword [rsp + 0x38]
mov r15d, dword [rsp + 0x3c]
mov esi, dword [rsp + 0x30]
xor ebx, ebx
jmp 0x18003cdd9
lea rdx, [rbp + 0x140]
lea rcx, [rbp - 0x80]
call fcn.180040900
mov rdx, rax
mov rcx, qword [rsp + 0x60]
call fcn.18003adc0
lea rcx, [rbp + 0x140]
call fcn.1800136c0
movdqa xmm0, xmmword [0x18008bc90]
movdqu xmmword [rbp + 0x150], xmm0
mov byte [rbp + 0x140], 0
lea rdx, [rbp + 0x140]
lea rcx, [rbp - 0x80]
call fcn.1800407d0
nop
lea rcx, [rbp + 0x140]
call fcn.1800136c0
lea rax, [rbp + 0x140]
mov qword [rsp + 0x58], rax
mov qword [rbp + 0x150], rbx
mov qword [rbp + 0x158], 0xf
mov byte [rbp + 0x140], 0
mov r8d, 0xd
lea rdx, str.data_dag.s_0_
lea rcx, [rbp + 0x140]
call fcn.180013db0
nop
mov qword [rbp + 0x170], rbx
mov qword [rbp + 0x178], 0xf
mov byte [rbp + 0x160], 0
mov r8d, 6
lea rdx, str.mix_0_
lea rcx, [rbp + 0x160]
call fcn.180013db0
movzx eax, r13w
imul r13d, eax, 0x9069
mov eax, dword [rsp + 0x48]
shr eax, 0x10
add r13d, eax
movzx eax, r14w
imul ebx, eax, 0x4650
shr r14d, 0x10
add ebx, r14d
mov edx, r13d
shl edx, 0x10
add edx, ebx
mov eax, r15d
shl eax, 0x11
xor eax, r15d
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
mov r12d, ecx
shl r12d, 5
xor r12d, ecx
imul edi, dword [rsp + 0x40], 0x10dcd
add edi, 0x12d687
mov r9d, edi
xor r9d, edx
add r9d, r12d
lea r8, [rbp + 0x140]
lea rdx, [rbp + 0x160]
lea rcx, [rbp + 0x180]
call fcn.18003f880
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x18003e358
mov rax, qword [rax]
mov rdx, rax
lea rcx, [rbp - 0x70]
call fcn.18003a5d0
nop
lea rcx, [rbp + 0x180]
call fcn.1800136c0
mov esi, 1
nop word [rax + rax]
mov r14d, dword [rsp + 0x30]
mov eax, r14d
and eax, 0x8000001f
jge 0x18003e396
dec eax
or eax, 0xffffffe0
inc eax
cdqe
mov edx, dword [rbp + rax*4 + 0x1c0]
lea rcx, [rbp + 0x115]
test edx, edx
jns 0x18003e3b9
neg edx
call fcn.18001cec0
dec rax
mov byte [rax], 0x2d
jmp 0x18003e3be
call fcn.18001cec0
xor r15d, r15d
mov qword [rbp + 0x190], r15
mov qword [rbp + 0x198], 0xf
mov byte [rbp + 0x180], r15b
lea rcx, [rbp + 0x115]
cmp rax, rcx
je 0x18003e400
lea r8, [rbp + 0x115]
sub r8, rax
mov rdx, rax
lea rcx, [rbp + 0x180]
call fcn.180013db0
nop
mov r9d, 4
lea r8, str.mix_
xor edx, edx
lea rcx, [rbp + 0x180]
call fcn.1800204d0
mov qword [rbp + 0x150], r15
mov qword [rbp + 0x158], r15
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x140], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x150], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov r8d, 1
lea rdx, [0x180090698]
lea rcx, [rbp + 0x140]
call fcn.180013d20
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x160], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x170], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
inc r14d
mov dword [rsp + 0x30], r14d
lea rcx, [rbp + 0x140]
call fcn.1800136c0
nop
lea rcx, [rbp + 0x180]
call fcn.1800136c0
movzx eax, r13w
imul ecx, eax, 0x9069
shr r13d, 0x10
add r13d, ecx
movzx eax, bx
imul ecx, eax, 0x4650
shr ebx, 0x10
add ecx, ebx
mov ebx, ecx
mov dword [rsp + 0x48], ecx
mov r14d, r13d
shl r14d, 0x10
add r14d, ecx
mov eax, r12d
shl eax, 0x11
xor eax, r12d
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
mov r12d, ecx
shl r12d, 5
xor r12d, ecx
imul eax, edi, 0x10dcd
add eax, 0x12d687
mov dword [rsp + 0x44], eax
xor r14d, eax
add r14d, r12d
lea rax, [rbp + 0x1a0]
mov qword [rsp + 0x58], rax
mov edx, esi
lea rcx, [rbp + 0x115]
test esi, esi
jns 0x18003e531
neg edx
call fcn.18001cec0
dec rax
mov byte [rax], 0x2d
jmp 0x18003e536
call fcn.18001cec0
mov qword [rbp + 0xd0], r15
mov qword [rbp + 0xd8], 0xf
mov byte [rbp + 0xc0], 0
lea rcx, [rbp + 0x115]
cmp rax, rcx
je 0x18003e575
lea r8, [rbp + 0x115]
sub r8, rax
mov rdx, rax
lea rcx, [rbp + 0xc0]
call fcn.180013db0
nop
mov r9d, 0xb
lea r8, str.data_dag.s_
xor edx, edx
lea rcx, [rbp + 0xc0]
call fcn.1800204d0
mov qword [rbp + 0xf0], r15
mov qword [rbp + 0xf8], r15
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0xe0], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0xf0], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov r8d, 1
lea rdx, [0x180090698]
lea rcx, [rbp + 0xe0]
call fcn.180013d20
mov qword [rbp + 0x1b0], r15
mov qword [rbp + 0x1b8], r15
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x1a0], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x1b0], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov qword [rbp + 0x90], r15
mov qword [rbp + 0x98], r15
lea r15, [rbp + 0x160]
cmp qword [rbp + 0x178], 0x10
cmovae r15, qword [rbp + 0x160]
mov rdi, qword [rbp + 0x170]
cmp rdi, 0x10
jae 0x18003e657
movups xmm0, xmmword [r15]
movups xmmword [rbp + 0x80], xmm0
mov qword [rbp + 0x98], 0xf
jmp 0x18003e6a0
mov rbx, rdi
or rbx, 0xf
movabs rax, 0x7fffffffffffffff
cmp rbx, rax
cmova rbx, rax
lea rdx, [rbx + 1]
lea rcx, [rbp + 0x80]
call fcn.18001ad30
mov qword [rbp + 0x80], rax
lea r8, [rdi + 1]
mov rdx, r15
mov rcx, rax
call fcn.180044620
mov qword [rbp + 0x98], rbx
mov ebx, dword [rsp + 0x48]
mov qword [rbp + 0x90], rdi
mov r9d, r14d
lea r8, [rbp + 0x1a0]
lea rdx, [rbp + 0x80]
lea rcx, [rbp + 0x120]
call fcn.18003f880
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x18003e6d3
mov rax, qword [rax]
mov rdx, rax
lea rcx, [rbp - 0x70]
call fcn.18003a5d0
nop
lea rcx, [rbp + 0x120]
call fcn.1800136c0
nop
lea rcx, [rbp + 0xe0]
call fcn.1800136c0
nop
lea rcx, [rbp + 0xc0]
call fcn.1800136c0
nop
lea rcx, [rbp + 0x160]
call fcn.1800136c0
inc esi
cmp esi, 4
mov edi, dword [rsp + 0x44]
jl 0x18003e380
lea rdx, [rbp + 0x140]
lea rcx, [rbp - 0x80]
call fcn.180040900
mov rdx, rax
mov rcx, qword [rsp + 0x68]
call fcn.18003adc0
lea rcx, [rbp + 0x140]
call fcn.1800136c0
nop
lea rcx, [rbp - 0x80]
call fcn.1800182f0
mov rcx, qword [rbp + 0x2c0]
xor rcx, rsp
call fcn.180040b50
mov rbx, qword [rsp + 0x428]
add rsp, 0x3d0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
nop
call fcn.180047d4c
int3
call fcn.180047d4c
int3