Function at 0x14004e6e0
Capabilities:
Hash data using fnv

Disassembly:
mov qword [rsp + 0x10], rbx
mov dword [rsp + 0x20], r9d
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x80
mov r15, r8
mov r13, rdx
mov rsi, rcx
xor eax, eax
mov r12, qword [rbp + 0x60]
mov r14, qword [rbp + 0x80]
test r14, r14
je 0x14004e859
mov rax, qword [r14]
mov rcx, r14
call qword [rax + reloc.WS2_32.dll_htonl]
mov rsi, rax
mov qword [rbp - 0x20], rax
test rax, rax
je 0x14004e77c
mov rcx, qword [rbp + 0x90]
test rcx, rcx
je 0x14004e77c
mov rax, qword [rbp + 0x98]
test rax, rax
je 0x14004e77c
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
movzx r9d, word [rbp + 0x68]
mov r8, r12
mov rdx, rsi
call fcn.140044f40
test eax, eax
jne 0x14004f21d
mov rsi, qword [rbp + 0x40]
mov rax, qword [r13 + 8]
movsxd rcx, dword [rax + 4]
add rcx, 8
add rcx, r13
mov rax, qword [rcx]
call qword [rax + 0x30]
mov r8, rax
mov rcx, rax
shr rcx, 0x38
mov r9, rax
shr r9, 0x30
mov r10, rax
shr r10, 0x28
mov r11, rax
shr r11, 0x20
mov rbx, rax
shr rbx, 0x18
mov rdi, rax
shr rdi, 0x10
shr rax, 8
test r8, r8
je 0x14004e8a9
movzx edx, r8b
movabs r14, 0xcbf29ce484222325
xor rdx, r14
movabs r14, 0x100000001b3
imul rdx, r14
movzx eax, al
xor rdx, rax
imul rdx, r14
movzx eax, dil
xor rdx, rax
imul rdx, r14
movzx eax, bl
xor rdx, rax
imul rdx, r14
movzx eax, r11b
xor rdx, rax
imul rdx, r14
movzx eax, r10b
xor rdx, rax
imul rdx, r14
movzx eax, r9b
xor rdx, rax
imul rdx, r14
xor rdx, rcx
imul rdx, r14
mov rcx, qword [rsi + 0x40]
and rcx, rdx
shl rcx, 4
add rcx, qword [rsi + 0x28]
mov rax, qword [rcx + 8]
mov rdx, qword [rsi + 0x18]
cmp rax, rdx
jne 0x14004e862
xor r9d, r9d
mov eax, r9d
jmp 0x14004e882
mov qword [rbp - 0x20], rax
jmp 0x14004e780
mov rcx, qword [rcx]
cmp r8, qword [rax + 0x10]
je 0x14004e87f
nop dword [rax + rax]
cmp rax, rcx
je 0x14004e851
mov rax, qword [rax + 8]
cmp r8, qword [rax + 0x10]
jne 0x14004e870
xor r9d, r9d
test rax, rax
mov r14, qword [rbp + 0x80]
je 0x14004e8a9
cmp rax, rdx
je 0x14004e8a9
mov rax, qword [rax + 0x18]
lea rcx, [rax + 0x40]
test rax, rax
cmove rcx, r9
cmp rcx, r13
cmove r13, r8
xor ecx, ecx
mov qword [rbp - 0x40], rcx
mov ebx, ecx
mov rax, qword [r15]
mov r10, qword [rax + 0x18]
mov rax, qword [r12 + 8]
movsxd r8, dword [rax + 4]
add r8, 8
add r8, r12
lea rax, [rbp + 0x78]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x40]
lea rdx, [rbp + 0x58]
mov rcx, r15
call r10
cmp rax, r15
je 0x14004e921
mov r15, rax
inc ebx
cmp ebx, 0x10
jge 0x14004e921
mov rcx, qword [rax]
mov r10, qword [rcx + 0x18]
mov rcx, qword [r12 + 8]
movsxd r8, dword [rcx + 4]
add r8, 8
add r8, r12
lea rcx, [rbp + 0x78]
mov qword [rsp + 0x20], rcx
lea r9, [rbp - 0x40]
lea rdx, [rbp + 0x58]
mov rcx, rax
call r10
cmp rax, r15
jne 0x14004e8e4
cmp r12, qword [rbp - 0x40]
je 0x14004f21b
mov rax, qword [r15]
mov r10, qword [rax]
mov rax, qword [r12 + 8]
movsxd r8, dword [rax + 4]
add r8, 8
add r8, r12
mov qword [rsp + 0x28], r14
mov eax, dword [rbp + 0x78]
mov dword [rsp + 0x20], eax
mov r9d, dword [rbp + 0x68]
mov edx, dword [rbp + 0x58]
mov rcx, r15
call r10
mov ebx, eax
cmp eax, 0xc
jne 0x14004ec40
mov r9, qword [r13]
mov rsi, qword [r9]
mov rdx, qword [rbp - 0x40]
movzx edi, byte [rdx + 0x2c]
mov rax, qword [rdx + 8]
movsxd rbx, dword [rax + 4]
add rbx, rdx
mov rax, qword [r12 + 8]
movsxd rdx, dword [rax + 4]
add rdx, 8
add rdx, r12
mov rcx, r13
call qword [r9 + 0x58]
xor ecx, ecx
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], ecx
mov r9d, edi
lea r8, [rbx + 8]
mov edx, eax
mov rcx, r13
call rsi
mov ebx, eax
test eax, eax
jne 0x14004ec44
mov rsi, qword [rbp - 0x20]
mov rdi, qword [rbp + 0x98]
test rsi, rsi
je 0x14004ea07
mov rax, qword [rbp + 0x90]
test rax, rax
je 0x14004ea07
test rdi, rdi
je 0x14004ea07
mov r8, qword [rbp - 0x40]
movzx r9d, byte [r8 + 0x2c]
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r15
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdi
mov rdx, rsi
call fcn.140044f40
test eax, eax
jne 0x14004f21d
xor ebx, ebx
mov dword [rbp + 0x80], ebx
mov rax, qword [r13]
mov r10, qword [rax + 8]
mov rdx, qword [rbp - 0x40]
movzx r9d, byte [rdx + 0x2c]
mov rax, qword [rdx + 8]
movsxd rcx, dword [rax + 4]
lea r8, [rdx + 8]
add r8, rcx
mov dword [rsp + 0x28], ebx
lea rax, [rbp + 0x80]
mov qword [rsp + 0x20], rax
mov edx, 0xffffffff
mov rcx, r13
call r10
test eax, eax
je 0x14004ea5a
cmp dword [rbp + 0x80], ebx
je 0x14004f21d
mov rax, qword [r15]
mov r10, qword [rax + 0x10]
mov rdx, qword [rbp - 0x40]
movzx r8d, byte [rdx + 0x2c]
mov rax, qword [rdx + 8]
movsxd rcx, dword [rax + 4]
add rdx, 8
add rdx, rcx
mov qword [rsp + 0x20], r14
mov r9d, dword [rbp + 0x78]
mov rcx, r15
call r10
test eax, eax
jne 0x14004ec4d
mov rax, qword [r15]
mov r8, qword [rax + 0x58]
mov rdx, qword [rbp - 0x40]
test rdx, rdx
jne 0x14004eaa5
mov rdx, rbx
jmp 0x14004eab4
mov rax, qword [rdx + 8]
movsxd rcx, dword [rax + 4]
add rdx, 8
add rdx, rcx
mov rcx, r15
call r8
mov ebx, eax
mov rcx, qword [r15]
mov r10, qword [rcx + 0x40]
mov r9, qword [rbp - 0x40]
movzx r8d, byte [r9 + 0x2c]
mov rcx, qword [r9 + 8]
movsxd rdx, dword [rcx + 4]
add r9, 8
add rdx, r9
mov rcx, r15
call r10
mov rcx, qword [r13]
mov r8, qword [rcx + 0x28]
mov rdx, qword [rbp - 0x40]
test rdx, rdx
je 0x14004eb01
mov rax, qword [rdx + 8]
movsxd rcx, dword [rax + 4]
add rdx, 8
add rdx, rcx
mov rcx, r13
call r8
cmp ebx, 0xffffffff
je 0x14004eb3f
mov rax, qword [r15]
mov r10, qword [rax + 0x50]
mov rdx, qword [rbp - 0x40]
test rdx, rdx
je 0x14004eb2b
mov rax, qword [rdx + 8]
movsxd rcx, dword [rax + 4]
add rdx, 8
add rdx, rcx
mov dword [rsp + 0x20], 0
mov r9d, ebx
mov r8, r13
mov rcx, r15
call r10
mov rax, qword [r13]
mov r8, qword [rax + 0x58]
mov rdx, qword [rbp - 0x40]
test rdx, rdx
jne 0x14004eb56
xor ebx, ebx
mov edx, ebx
jmp 0x14004eb67
mov rax, qword [rdx + 8]
movsxd rcx, dword [rax + 4]
add rdx, 8
add rdx, rcx
xor ebx, ebx
mov rcx, r13
call r8
mov r9d, eax
cmp eax, 0xffffffff
je 0x14004eba7
mov rcx, qword [r13]
mov r10, qword [rcx + 0x48]
mov rdx, qword [rbp - 0x40]
test rdx, rdx
jne 0x14004eb8b
mov rdx, rbx
jmp 0x14004eb9a
mov rax, qword [rdx + 8]
movsxd rcx, dword [rax + 4]
add rdx, 8
add rdx, rcx
mov dword [rsp + 0x20], ebx
mov r8, r15
mov rcx, r13
call r10
mov rax, qword [r15]
mov r10, qword [rax]
mov rax, qword [r12 + 8]
movsxd r8, dword [rax + 4]
add r8, 8
add r8, r12
mov qword [rsp + 0x28], rbx
mov eax, dword [rbp + 0x78]
mov dword [rsp + 0x20], eax
mov r9d, dword [rbp + 0x68]
mov edx, dword [rbp + 0x58]
mov rcx, r15
call r10
mov ebx, eax
test rsi, rsi
je 0x14004ec38
cmp qword [rbp + 0x90], 0
je 0x14004ec38
test rdi, rdi
je 0x14004ec38
mov rdx, qword [rbp - 0x40]
mov rax, qword [rdx + 8]
movsxd rcx, dword [rax + 4]
add rdx, 8
add rcx, rdx
mov rax, qword [rcx]
call qword [rax + 0x80]
test al, al
jne 0x14004ec38
mov r8, qword [rbp - 0x40]
movzx r9d, byte [r8 + 0x2c]
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r15
mov rax, qword [rbp + 0x90]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdi
mov rdx, rsi
call fcn.140045220
mov qword [rbp - 0x40], 0
test ebx, ebx
je 0x14004ec4b
mov eax, ebx
jmp 0x14004f21d
xor ebx, ebx
mov dword [rbp - 0x38], ebx
mov rax, qword [r15]
mov r10, qword [rax + 8]
mov rax, qword [r12 + 8]
movsxd r8, dword [rax + 4]
add r8, 8
add r8, r12
mov eax, dword [rbp + 0x78]
mov dword [rsp + 0x28], eax
lea rax, [rbp - 0x38]
mov qword [rsp + 0x20], rax
mov ebx, dword [rbp + 0x68]
mov r9d, ebx
mov edx, dword [rbp + 0x58]
mov rcx, r15
call r10
mov dword [rbp - 0x24], eax
mov r9d, dword [rbp - 0x38]
test eax, eax
je 0x14004ec9a
test r9d, r9d
je 0x14004f21d
mov rcx, r12
call fcn.140033370
test al, al
je 0x14004ecb9
mov r8d, ebx
cmp r9d, ebx
cmovb r8d, r9d
mov dword [rbp + 0x80], r8d
jmp 0x14004ecc3
mov r8d, r9d
mov dword [rbp + 0x80], r9d
mov rdi, r12
mov rax, qword [r13]
mov r10, qword [rax + 0x10]
mov rax, qword [r12 + 8]
movsxd rdx, dword [rax + 4]
add rdx, 8
add rdx, r12
mov qword [rsp + 0x20], r14
mov r9d, dword [rbp + 0x78]
mov rcx, r13
call r10
test eax, eax
jne 0x14004f21d
mov rsi, qword [rbp + 0x88]
test rsi, rsi
je 0x14004ed7b
mov rax, qword [r15 + 8]
movsxd rcx, dword [rax + 4]
add rcx, 8
add rcx, r15
mov rax, qword [rcx]
call qword [rax + 0x68]
cmp rax, rsi
je 0x14004ee22
mov rax, qword [r15 + 8]
movsxd rcx, dword [rax + 4]
add rcx, 8
add rcx, r15
mov rax, qword [rcx]
call qword [rax + 0x10]
mov rbx, rax
test rax, rax
je 0x14004ed7b
nop dword [rax]
mov rcx, qword [rbx + 8]
movsxd rcx, dword [rcx + 4]
add rcx, 8
add rcx, rbx
mov rdx, qword [rcx]
call qword [rdx + 0x68]
cmp rax, rsi
je 0x14004ee22
mov rax, qword [rbx + 8]
movsxd rcx, dword [rax + 4]
add rbx, 8
add rcx, rbx
mov rax, qword [rcx]
call qword [rax + 0x10]
mov rbx, rax
test rax, rax
jne 0x14004ed40
mov rax, qword [r13]
mov r8, qword [rax + 0x58]
mov rax, qword [r12 + 8]
movsxd rdx, dword [rax + 4]
add rdx, 8
add rdx, r12
mov rcx, r13
call r8
mov dword [rbp - 0x28], eax
xor r14d, r14d
mov qword [rbp - 0x30], r14
mov rcx, qword [r13]
mov r9, qword [rcx + 0x40]
mov rcx, qword [r12 + 8]
movsxd rdx, dword [rcx + 4]
add rdx, 8
add rdx, r12
mov esi, dword [rbp + 0x80]
mov r8d, esi
mov rcx, r13
call r9
mov rcx, r12
call fcn.140033370
test al, al
je 0x14004efc9
mov r8, qword [rbp - 0x40]
test r8, r8
je 0x14004ef81
movzx eax, word [r8 + 0x18]
cmp word [r12 + 0x18], ax
jne 0x14004ef81
mov rax, qword [r12 + 0x20]
mov rdx, qword [r8 + 0x20]
mov qword [rbp - 0x18], rdx
test rax, rax
jne 0x14004ee2c
test rdx, rdx
je 0x14004ef39
cmp dword [rdx + 0x18], r14d
jne 0x14004ef81
jmp 0x14004ef39
mov eax, 2
jmp 0x14004f21d
mov ecx, dword [rax + 0x18]
test rdx, rdx
jne 0x14004ee41
test ecx, ecx
jne 0x14004ef81
jmp 0x14004ef39
cmp ecx, dword [rdx + 0x18]
jne 0x14004ef81
mov r14, qword [rax]
mov rax, qword [rax + 8]
mov qword [rbp - 0x10], rax
cmp r14, rax
je 0x14004ef39
nop
mov edi, dword [r14 + 8]
mov rbx, qword [rdx]
mov rsi, qword [rdx + 8]
mov eax, edi
and eax, 0x77fffe13
cmp eax, edi
jne 0x14004ee9f
cmp rbx, rsi
je 0x14004ef21
nop
cmp edi, dword [rbx + 8]
jne 0x14004ee91
mov rax, qword [rbx]
cmp qword [r14], rax
jne 0x14004ef77
add rbx, 0x10
cmp rbx, rsi
jne 0x14004ee80
jmp 0x14004ef21
mov eax, edi
and eax, 0x80001ec
cmp eax, edi
jne 0x14004eef8
cmp rbx, rsi
je 0x14004ef21
nop
cmp edi, dword [rbx + 8]
jne 0x14004eeed
mov rdx, qword [rbx]
mov rcx, qword [r14]
mov rax, qword [rdx + 0x10]
cmp qword [rdx + 0x18], 0xf
jbe 0x14004eec9
mov rdx, qword [rdx]
mov r8, qword [rcx + 0x10]
cmp qword [rcx + 0x18], 0xf
jbe 0x14004eed7
mov rcx, qword [rcx]
cmp r8, rax
jne 0x14004ef77
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x14004ef77
add rbx, 0x10
cmp rbx, rsi
jne 0x14004eeb0
jmp 0x14004ef1d
cmp rbx, rsi
je 0x14004ef21
nop dword [rax]
cmp edi, dword [rbx + 8]
jne 0x14004ef14
mov rdx, qword [rbx]
mov rcx, qword [r14]
call fcn.140091c00
test al, al
je 0x14004ef77
add rbx, 0x10
cmp rbx, rsi
jne 0x14004ef00
mov rdx, qword [rbp - 0x18]
add r14, 0x10
cmp r14, qword [rbp - 0x10]
jne 0x14004ee60
mov esi, dword [rbp + 0x80]
mov r8, qword [rbp - 0x40]
movzx ecx, byte [r8 + 0x2c]
mov ebx, 0x64
sub ebx, ecx
cmp esi, ebx
cmovb ebx, esi
mov rax, qword [r15]
mov r10, qword [rax + 0x30]
lea r9d, [rbx + rcx]
mov rax, qword [r8 + 8]
movsxd rdx, dword [rax + 4]
add rdx, 8
add rdx, r8
movzx r8d, word [r8 + 0x18]
mov rcx, r15
call r10
mov r14, qword [rbp - 0x40]
xor eax, eax
jmp 0x14004ef85
mov r14, qword [rbp - 0x30]
mov esi, dword [rbp + 0x80]
xor eax, eax
mov ebx, eax
sub esi, ebx
test esi, esi
jle 0x14004ef98
mov rax, qword [r12]
mov rcx, r12
call qword [rax]
mov byte [rax + 0x2c], sil
mov rdi, rax
mov rax, qword [r12 + 8]
movsxd rcx, dword [rax + 4]
add rcx, 8
add rcx, r12
mov rax, qword [rcx]
call qword [rax + 0x80]
mov rsi, qword [rbp + 0x40]
test al, al
je 0x14004efcd
mov rdx, r12
mov rcx, rsi
call fcn.14005f7e0
jmp 0x14004efcd
mov rsi, qword [rbp + 0x40]
test rdi, rdi
je 0x14004eff1
mov rax, qword [r15]
mov r9, qword [rax + 0x20]
mov rax, qword [rdi + 8]
movsxd r8, dword [rax + 4]
add r8, 8
add r8, rdi
mov edx, dword [rbp + 0x58]
mov rcx, r15
call r9
mov r9d, dword [rbp - 0x28]
cmp r9d, 0xffffffff
je 0x14004f024
mov rax, qword [r13]
mov r10, qword [rax + 0x50]
mov rax, qword [r12 + 8]
movsxd rdx, dword [rax + 4]
add rdx, 8
add rdx, r12
mov dword [rsp + 0x20], 0
mov r8, r15
mov rcx, r13
call r10
test rdi, rdi
je 0x14004f074
mov rax, qword [r15]
mov r8, qword [rax + 0x58]
mov rax, qword [rdi + 8]
movsxd rdx, dword [rax + 4]
add rdx, 8
add rdx, rdi
mov rcx, r15
call r8
cmp eax, 0xffffffff
je 0x14004f074
mov rcx, qword [r15]
mov r10, qword [rcx + 0x48]
mov rcx, qword [rdi + 8]
movsxd rdx, dword [rcx + 4]
add rdx, 8
add rdx, rdi
mov dword [rsp + 0x20], 0
mov r9d, eax
mov r8, r13
mov rcx, r15
call r10
test r14, r14
je 0x14004f0c4
mov rax, qword [r15]
mov r8, qword [rax + 0x58]
mov rax, qword [r14 + 8]
movsxd rdx, dword [rax + 4]
add rdx, 8
add rdx, r14
mov rcx, r15
call r8
cmp eax, 0xffffffff
je 0x14004f0c4
mov rcx, qword [r15]
mov r10, qword [rcx + 0x48]
mov rcx, qword [r14 + 8]
movsxd rdx, dword [rcx + 4]
add rdx, 8
add rdx, r14
mov dword [rsp + 0x20], 0
mov r9d, eax
mov r8, r13
mov rcx, r15
call r10
mov rcx, qword [rbp + 0x70]
test rcx, rcx
je 0x14004f0da
mov rax, r12
test rdi, rdi
cmovne rax, rdi
mov qword [rcx], rax
mov rcx, r12
call fcn.140033370
test al, al
je 0x14004f0f6
mov eax, dword [rbp + 0x68]
cmp dword [rbp - 0x38], eax
jae 0x14004f0f6
mov eax, dword [rbp - 0x24]
jmp 0x14004f21d
test rdi, rdi
je 0x14004f15c
mov rcx, rdi
call fcn.140048c00
test eax, eax
je 0x14004f15c
mov rcx, rdi
call fcn.140048c40
cmp al, 1
je 0x14004f15c
inc dword [rdi + 0x28]
mov rcx, rdi
call fcn.1400122a0
mov edx, 0x40000
mov rcx, qword [rax]
call fcn.140091260
mov qword [rax], 1
lea rbx, [rsi + 0x240]
mov qword [rbp - 0x10], rbx
mov qword [rbp - 8], 0
mov ecx, 0x10
call fcn.1401d19cc
mov qword [rax + 8], rdi
mov rcx, qword [rbx]
mov qword [rax], rcx
mov qword [rbx], rax
mov rbx, qword [rbp - 0x20]
test rbx, rbx
je 0x14004f21b
cmp qword [rbp + 0x90], 0
je 0x14004f21b
mov rsi, qword [rbp + 0x98]
test rsi, rsi
je 0x14004f21b
test r14, r14
je 0x14004f1ad
mov rax, qword [r14 + 8]
movsxd rcx, dword [rax + 4]
add rcx, 8
add rcx, r14
mov rax, qword [rcx]
call qword [rax + 0x80]
test al, al
jne 0x14004f1ad
mov r8, r14
jmp 0x14004f1f3
test rdi, rdi
je 0x14004f1d3
mov rax, qword [rdi + 8]
movsxd rcx, dword [rax + 4]
add rcx, 8
add rcx, rdi
mov rax, qword [rcx]
call qword [rax + 0x80]
test al, al
jne 0x14004f1d3
mov r8, rdi
jmp 0x14004f1f3
mov rax, qword [r12 + 8]
movsxd rcx, dword [rax + 4]
add rcx, 8
add rcx, r12
mov rax, qword [rcx]
call qword [rax + 0x80]
test al, al
jne 0x14004f21b
mov r8, r12
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], rsi
mov rax, qword [rbp + 0x90]
mov qword [rsp + 0x20], rax
movzx r9d, word [rbp + 0x68]
mov rdx, rbx
call fcn.140045220
xor eax, eax
mov rbx, qword [rsp + 0xc8]
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret