Function at 0x439640
Capabilities:
Encode data using xor
Hash data using murmur2

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
mov rsi, qword [rdx + 8]
mov rbx, qword [rdx]
mov rbp, rsi
mov r12, rcx
mov r13d, esi
shr rbp, 0x20
test r8, r8
mov r15d, ebp
je 0x439670
mov byte [r8], 0
test esi, esi
je 0x439770
test rbx, rbx
je 0x439770
lea edx, [rsi*8]
mov edi, esi
xor r9d, r9d
xor edx, 0x9747b28c
imul eax, dword [rbx + r9*8], 0x5bd1e995
add r9, 1
imul edx, edx, 0x5bd1e995
mov ecx, eax
shr ecx, 0x18
xor ecx, eax
imul eax, ecx, 0x5bd1e995
xor edx, eax
cmp r9, rdi
jne 0x439693
mov eax, edx
shr eax, 0xd
xor edx, eax
imul edx, edx, 0x5bd1e995
mov eax, edx
shr eax, 0xf
xor edx, eax
mov eax, edx
mov ecx, edx
mov dword [rsp + 0x48], edx
and eax, 0xfffff
mov qword [rsp + 0x38], rax
lea r14, [r12 + rax*8]
mov rax, qword [r14]
and rax, 0xfffffffffffffffe
mov r10, r15
and ecx, 0xfff00000
shl r10, 0x20
test rax, rax
mov qword [rsp + 0x40], rax
mov r11d, r13d
jne 0x439718
jmp 0x439783
mov rax, qword [rax]
test rax, rax
je 0x439783
mov edx, dword [rax + 0xc]
and edx, 0xfff00000
cmp ecx, edx
jne 0x439710
mov rdx, r11
or rdx, r10
cmp qword [rax + 0x10], rdx
jne 0x439710
mov r9d, dword [rax + 0x10]
test r9, r9
je 0x439772
mov rdx, qword [rax + 0x18]
cmp qword [rbx], rdx
jne 0x439710
xor edx, edx
mov dword [rsp + 0x4c], ecx
nop dword [rax]
add rdx, 1
cmp rdx, r9
je 0x439772
mov rcx, qword [rbx + rdx*8]
cmp qword [rax + rdx*8 + 0x18], rcx
je 0x439750
mov ecx, dword [rsp + 0x4c]
jmp 0x439710
xor eax, eax
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rsp + 0x38]
xor edx, edx
lea r9, [r12 + rax*8]
jmp 0x4397b0
cmp edx, 9
jg 0x439850
pause
pause
pause
pause
pause
pause
pause
pause
pause
pause
add edx, 1
mov rcx, qword [r14]
test cl, 1
jne 0x439790
mov r10, rcx
mov rax, rcx
or r10, 1
lock cmpxchg qword [r9], r10
cmp rcx, rax
jne 0x439790
cmp qword [rsp + 0x40], rax
mov r10, rax
je 0x439879
test rax, rax
je 0x439879
mov ecx, dword [rsp + 0x48]
shl r15, 0x20
and ecx, 0xfff00000
jmp 0x4397fb
mov rax, qword [rax]
test rax, rax
je 0x439879
mov edx, dword [rax + 0xc]
and edx, 0xfff00000
cmp edx, ecx
jne 0x4397f3
mov rdx, r13
or rdx, r15
cmp qword [rax + 0x10], rdx
jne 0x4397f3
mov r9d, dword [rax + 0x10]
test r9, r9
je 0x439844
mov rdx, qword [rax + 0x18]
cmp qword [rbx], rdx
jne 0x4397f3
xor edx, edx
jmp 0x43983b
mov r11, qword [rbx + rdx*8]
cmp qword [rax + rdx*8 + 0x18], r11
jne 0x4397f3
add rdx, 1
cmp r9, rdx
jne 0x439830
mov qword [r14], r10
jmp 0x439772
mov qword [rsp + 0x58], r8
xor ecx, ecx
mov qword [rsp + 0x50], r9
mov dword [rsp + 0x4c], edx
call qword [sym.imp.kernel32.dll_Sleep]
mov r8, qword [rsp + 0x58]
mov r9, qword [rsp + 0x50]
mov edx, dword [rsp + 0x4c]
jmp 0x4397ad
mov r13, qword [rsp + 0x38]
mov r9d, 1
shr r13, 0xc
lea rax, [r13*4 + 0x800000]
lock xadd dword [r12 + rax], r9d
add qword [r12 + 0x800400], 1
add r9d, 1
cmp r9d, 0x7fffff
ja 0x439cfd
lea eax, [rsi - 1]
shl r13d, 0x17
lea r15, [rax*8 + 0x20]
or r13d, r9d
mov dword [rsp + 0x4c], r13d
je 0x439cd9
nop dword [rax]
mov rdx, qword [0x00879ea8]
mov rax, qword [0x00879eb0]
test rdx, rdx
je 0x439c0a
lea rcx, [r15 + rdx]
cmp rax, rcx
jb 0x439c0a
mov rax, rdx
lock cmpxchg qword [0x00879ea8], rcx
cmp rdx, rax
jne 0x4398d0
mov rax, rdx
mov edx, dword [rsp + 0x48]
lea r9, [rax + 0x18]
shl rdi, 3
mov ecx, dword [rsp + 0x4c]
add qword [r12 + 0x800408], r15
mov dword [rax + 0x10], esi
mov dword [rax + 0x14], ebp
and edx, 0xfff00000
mov dword [rax + 0xc], edx
lea rdx, [rbx + 0x10]
cmp rdx, r9
mov dword [rax + 8], ecx
lea rdx, [rax + 0x28]
setbe cl
cmp rbx, rdx
setae dl
or cl, dl
je 0x439cc1
cmp rdi, 0x16
jbe 0x439cc1
mov rcx, rbx
neg rcx
and ecx, 0xf
cmp rcx, rdi
cmova rcx, rdi
xor edx, edx
test rcx, rcx
je 0x439a6c
movzx edx, byte [rbx]
cmp rcx, 1
mov byte [rax + 0x18], dl
je 0x439da0
movzx edx, byte [rbx + 1]
cmp rcx, 2
mov byte [rax + 0x19], dl
je 0x439d96
movzx edx, byte [rbx + 2]
cmp rcx, 3
mov byte [rax + 0x1a], dl
je 0x439d8c
movzx edx, byte [rbx + 3]
cmp rcx, 4
mov byte [rax + 0x1b], dl
je 0x439d82
movzx edx, byte [rbx + 4]
cmp rcx, 5
mov byte [rax + 0x1c], dl
je 0x439d78
movzx edx, byte [rbx + 5]
cmp rcx, 6
mov byte [rax + 0x1d], dl
je 0x439d6e
movzx edx, byte [rbx + 6]
cmp rcx, 7
mov byte [rax + 0x1e], dl
je 0x439d64
movzx edx, byte [rbx + 7]
cmp rcx, 8
mov byte [rax + 0x1f], dl
je 0x439d5a
movzx edx, byte [rbx + 8]
cmp rcx, 9
mov byte [rax + 0x20], dl
je 0x439d50
movzx edx, byte [rbx + 9]
cmp rcx, 0xa
mov byte [rax + 0x21], dl
je 0x439d46
movzx edx, byte [rbx + 0xa]
cmp rcx, 0xb
mov byte [rax + 0x22], dl
je 0x439d3c
movzx edx, byte [rbx + 0xb]
cmp rcx, 0xc
mov byte [rax + 0x23], dl
je 0x439d32
movzx edx, byte [rbx + 0xc]
cmp rcx, 0xd
mov byte [rax + 0x24], dl
je 0x439d28
movzx edx, byte [rbx + 0xd]
cmp rcx, 0xe
mov byte [rax + 0x25], dl
je 0x439d1e
movzx edx, byte [rbx + 0xe]
mov byte [rax + 0x26], dl
mov edx, 0xf
lea rsi, [rdi - 1]
mov rbp, rdi
sub rbp, rcx
sub rsi, rcx
lea r11, [rbp - 0x10]
shr r11, 4
add r11, 1
mov r12, r11
shl r12, 4
cmp rsi, 0xe
jbe 0x439ac4
lea r13, [rbx + rcx]
xor esi, esi
lea r15, [rax + rcx + 0x18]
xor ecx, ecx
movdqa xmm0, xmmword [r13 + rcx]
add rsi, 1
movups xmmword [r15 + rcx], xmm0
add rcx, 0x10
cmp r11, rsi
ja 0x439a9f
add rdx, r12
cmp r12, rbp
je 0x439bf2
movzx ecx, byte [rbx + rdx]
mov byte [r9 + rdx], cl
lea rcx, [rdx + 1]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 1]
mov byte [r9 + rdx + 1], cl
lea rcx, [rdx + 2]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 2]
mov byte [r9 + rdx + 2], cl
lea rcx, [rdx + 3]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 3]
mov byte [r9 + rdx + 3], cl
lea rcx, [rdx + 4]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 4]
mov byte [r9 + rdx + 4], cl
lea rcx, [rdx + 5]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 5]
mov byte [r9 + rdx + 5], cl
lea rcx, [rdx + 6]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 6]
mov byte [r9 + rdx + 6], cl
lea rcx, [rdx + 7]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 7]
mov byte [r9 + rdx + 7], cl
lea rcx, [rdx + 8]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 8]
mov byte [r9 + rdx + 8], cl
lea rcx, [rdx + 9]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 9]
mov byte [r9 + rdx + 9], cl
lea rcx, [rdx + 0xa]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 0xa]
mov byte [r9 + rdx + 0xa], cl
lea rcx, [rdx + 0xb]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 0xb]
mov byte [r9 + rdx + 0xb], cl
lea rcx, [rdx + 0xc]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 0xc]
mov byte [r9 + rdx + 0xc], cl
lea rcx, [rdx + 0xd]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 0xd]
mov byte [r9 + rdx + 0xd], cl
lea rcx, [rdx + 0xe]
cmp rdi, rcx
jbe 0x439bf2
movzx ecx, byte [rdx + rbx + 0xe]
mov byte [r9 + rdx + 0xe], cl
mov qword [rax], r10
mov qword [r14], rax
test r8, r8
je 0x439772
mov byte [r8], 1
jmp 0x439772
lea rcx, [0x00879ea0]
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x38], r8
call fcn.00438dc0
mov r10, qword [rsp + 0x40]
mov r8, qword [rsp + 0x38]
nop word [rax + rax]
mov rdx, qword [0x00879ea8]
mov rax, qword [0x00879eb0]
test rdx, rdx
je 0x439c6c
lea rcx, [r15 + rdx]
cmp rax, rcx
jb 0x439c6c
mov rax, rdx
lock cmpxchg qword [0x00879ea8], rcx
cmp rdx, rax
jne 0x439c30
mov rax, rdx
mov byte [0x00879ea0], 0
jmp 0x439908
cmp r15, 0x10000
mov r13d, 0x10000
mov qword [rsp + 0x40], r8
cmovae r13, r15
mov qword [rsp + 0x38], r10
mov qword [0x00879ea8], 0
lea rdx, str.stack_depot
mov rcx, r13
call fcn.0040d590
add r13, rax
mov qword [0x00879eb0], r13
mov qword [0x00879ea8], rax
mov r10, qword [rsp + 0x38]
mov r8, qword [rsp + 0x40]
jmp 0x439c30
xor edx, edx
movzx ecx, byte [rbx + rdx]
mov byte [r9 + rdx], cl
add rdx, 1
cmp rdi, rdx
jne 0x439cc3
jmp 0x439bf2
lea r8, str.__id_______0__
xor r9d, r9d
mov edx, 0x7d
mov qword [rsp + 0x20], 0
lea rcx, str....._sanitizer_common_sanitizer_stackdepotbase.h
call fcn.00406990
mov qword [rsp + 0x20], 0x800000
lea r8, str.__id_______kMaxId__
mov edx, 0x7b
lea rcx, str....._sanitizer_common_sanitizer_stackdepotbase.h
call fcn.00406990
mov edx, 0xe
jmp 0x439a6c
mov edx, 0xd
jmp 0x439a6c
mov edx, 0xc
jmp 0x439a6c
mov edx, 0xb
jmp 0x439a6c
mov edx, 0xa
jmp 0x439a6c
mov edx, 9
jmp 0x439a6c
mov edx, 8
jmp 0x439a6c
mov edx, 7
jmp 0x439a6c
mov edx, 6
jmp 0x439a6c
mov edx, 5
jmp 0x439a6c
mov edx, 4
jmp 0x439a6c
mov edx, 3
jmp 0x439a6c
mov edx, 2
jmp 0x439a6c
mov edx, 1
jmp 0x439a6c