Function at 0x14016a470
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push rbp
push rsi
push rdi
push r14
sub rsp, 0x98
mov eax, dword [rcx + 0xc]
lea r8d, [rdx + rdx*2]
imul eax, dword [rcx + 8]
mov r9d, edx
mov rsi, rcx
mov dword [rsp + 0x24], 0x400
lea r14d, [rax + rax*2]
mov eax, r14d
mov dword [rsp + 0x2c], r14d
cdq
idiv r8d
mov r10d, eax
mov dword [rsp + 0x38], eax
mov eax, 0x51eb851f
imul r10d
mov eax, edx
sar eax, 5
mov ecx, eax
shr ecx, 0x1f
add eax, ecx
mov ecx, 1
cmove eax, ecx
xor ebp, ebp
mov dword [rsp + 0x48], eax
lea ecx, [r9 - 1]
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, 0x1e
add eax, edx
mov dword [rsp + 0x4c], eax
mov eax, dword [rsi + 0x20]
mov dword [rsp + 0x34], eax
sar eax, 6
cmp eax, 1
cmovg ebp, eax
xor r8d, r8d
mov dword [rsp + 0xc0], ebp
test ebp, ebp
jle 0x14016a543
mov r10d, ebp
imul r10d, ebp
xor r9d, r9d
mov ecx, r8d
lea r9, [r9 + 4]
imul ecx, r8d
mov eax, r10d
inc r8d
sub eax, ecx
mov rcx, qword [rsi + 0x440]
shl eax, 8
cdq
idiv r10d
shl eax, 0xa
mov dword [r9 + rcx - 4], eax
cmp r8d, ebp
jl 0x14016a510
mov r10d, dword [rsp + 0x38]
mov eax, 0x20d56b39
imul r14d
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
imul ecx, edx, 0x1f3
cmp r14d, ecx
je 0x14016a56a
mov dword [rsp + 0x20], 0x5d9
jmp 0x14016a5bd
mov eax, 0x42bcbdc9
imul r14d
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
imul ecx, edx, 0x1eb
cmp r14d, ecx
je 0x14016a591
mov dword [rsp + 0x20], 0x5c1
jmp 0x14016a5bd
mov eax, 0x43491159
imul r14d
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x5e5
imul ecx, edx, 0x1e7
cmp r14d, ecx
mov ecx, 0x5b5
cmovne eax, ecx
mov dword [rsp + 0x20], eax
xor edi, edi
mov dword [rsp + 0x30], 0
mov dword [rsp + 0xc8], edi
test r10d, r10d
jle 0x14016aa7a
mov qword [rsp + 0x90], rbx
mov qword [rsp + 0x88], r12
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x78], r15
mov ebx, dword [rsi + 0x10]
mov eax, edi
mov rcx, qword [rsi]
cdq
idiv ebx
mov edx, eax
call fcn.14007d5d0
mov r8, rax
mov dword [rsp + 0xd8], 0x7fffffff
mov eax, edi
mov dword [rsp + 0x3c], 0x7fffffff
cdq
mov dword [rsp + 0xd0], 0
idiv ebx
mov rax, qword [rsi + 0x430]
mov r9, 0xffffffffffffffff
movsxd rcx, edx
xor r10d, r10d
mov qword [rsp + 0x58], rax
mov r15d, r9d
mov rax, qword [rsi + 0x438]
mov r11, r9
mov qword [rsp + 0x60], r10
movzx r13d, byte [r8 + rcx]
movzx ebx, byte [r8 + rcx + 1]
movzx r12d, byte [r8 + rcx + 2]
mov rcx, r9
shl r13d, 4
shl ebx, 4
shl r12d, 4
mov dword [rsp + 0x28], r13d
mov dword [rsp + 0x40], ebx
mov dword [rsp + 0x44], r12d
cmp dword [rsi + 0x14], r10d
jle 0x14016a7b4
mov ebp, dword [rsp + 0x3c]
mov r14, rcx
mov rdi, rax
nop dword [rax + rax]
mov rax, r10
lea rdi, [rdi + 4]
shl rax, 4
mov r9d, r12d
add rax, qword [rsi + 0x28]
mov r10d, dword [rax]
mov edx, dword [rax + 4]
sub r10d, r13d
mov eax, dword [rax + 8]
mov r8d, edx
sub r9d, eax
mov ecx, eax
sub ecx, r12d
mov eax, ebx
cmovns r9d, ecx
sub eax, edx
sub r8d, ebx
cmovns eax, r8d
lea r8d, [rax + r9]
mov r9, qword [rsp + 0x58]
mov eax, r10d
neg eax
test r10d, r10d
cmovns eax, r10d
mov r10, qword [rsp + 0x60]
add r8d, eax
mov rax, r10
cmp r8d, dword [rsp + 0xd8]
mov edx, r8d
cmovge rax, r14
mov r14, rax
mov eax, dword [r9]
sar eax, 0xc
sub edx, eax
mov rax, r10
cmp edx, ebp
cmovge rax, r11
mov r11, rax
mov eax, dword [rsp + 0xd0]
cmovge eax, r15d
inc r10
mov r15d, eax
mov qword [rsp + 0x60], r10
mov eax, dword [rdi - 4]
mov ecx, eax
sar ecx, 0xa
sub eax, ecx
shl ecx, 0xa
mov dword [rdi - 4], eax
add dword [r9], ecx
add r9, 4
mov ecx, dword [rsp + 0xd0]
inc ecx
mov qword [rsp + 0x58], r9
cmp r8d, dword [rsp + 0xd8]
mov dword [rsp + 0xd0], ecx
cmovge r8d, dword [rsp + 0xd8]
cmp edx, ebp
mov dword [rsp + 0xd8], r8d
cmovge edx, ebp
mov ebp, edx
cmp ecx, dword [rsi + 0x14]
jl 0x14016a6a0
mov rax, qword [rsi + 0x438]
mov r9, 0xffffffffffffffff
mov edi, dword [rsp + 0xc8]
mov ebp, dword [rsp + 0xc0]
mov qword [rsp + 0x50], r14
mov rcx, qword [rsp + 0x50]
mov r14d, dword [rsp + 0x2c]
add dword [rax + rcx*4], 0x40
mov rax, qword [rsi + 0x430]
mov r10d, dword [rsp + 0x24]
shl r11, 4
add dword [rax + rcx*4], 0xffff0000
add r11, qword [rsi + 0x28]
mov ecx, dword [r11]
mov eax, ecx
sub eax, r13d
imul eax, r10d
cdq
and edx, 0x3ff
add eax, edx
sar eax, 0xa
sub ecx, eax
mov dword [r11], ecx
mov ecx, dword [r11 + 4]
mov eax, ecx
sub eax, ebx
imul eax, r10d
cdq
and edx, 0x3ff
add eax, edx
sar eax, 0xa
sub ecx, eax
mov dword [r11 + 4], ecx
mov ecx, dword [r11 + 8]
mov eax, ecx
sub eax, r12d
imul eax, r10d
cdq
and edx, 0x3ff
add eax, edx
sar eax, 0xa
sub ecx, eax
mov dword [r11 + 8], ecx
test ebp, ebp
je 0x14016a991
mov ecx, dword [rsi + 0x14]
lea edx, [r15 + rbp]
mov rbx, qword [rsi + 0x440]
lea eax, [r15 + 1]
mov edi, dword [rsp + 0x40]
mov r8d, r15d
sub r8d, ebp
movsxd r10, eax
mov ebp, dword [rsp + 0x44]
lea eax, [r15 - 1]
cmp r8d, 0xffffffff
movsxd r11, eax
mov r13, r11
mov r14, r10
cmovl r8d, r9d
cmp edx, ecx
movsxd r12, r8d
cmovle ecx, edx
shl r13, 4
shl r14, 4
movsxd r15, ecx
cmp r10, r15
jl 0x14016a88e
cmp r11, r12
jle 0x14016a979
mov r9d, dword [rbx + 4]
add rbx, 4
cmp r10, r15
jge 0x14016a903
mov r8, qword [rsi + 0x28]
inc r10
add r8, r14
mov ecx, dword [r8]
mov eax, ecx
sub eax, dword [rsp + 0x28]
imul eax, r9d
cdq
and edx, 0x3ffff
add eax, edx
sar eax, 0x12
sub ecx, eax
mov dword [r8], ecx
mov ecx, dword [r8 + 4]
mov eax, ecx
sub eax, edi
imul eax, r9d
cdq
and edx, 0x3ffff
add eax, edx
sar eax, 0x12
sub ecx, eax
mov dword [r8 + 4], ecx
mov ecx, dword [r8 + 8]
mov eax, ecx
sub eax, ebp
imul eax, r9d
cdq
and edx, 0x3ffff
add eax, edx
sar eax, 0x12
sub ecx, eax
mov dword [r8 + 8], ecx
add r14, 0x10
cmp r11, r12
jle 0x14016a880
mov r8, qword [rsi + 0x28]
dec r11
add r8, r13
mov ecx, dword [r8]
mov eax, ecx
sub eax, dword [rsp + 0x28]
imul eax, r9d
cdq
and edx, 0x3ffff
add eax, edx
sar eax, 0x12
sub ecx, eax
mov dword [r8], ecx
mov ecx, dword [r8 + 4]
mov eax, ecx
sub eax, edi
imul eax, r9d
cdq
and edx, 0x3ffff
add eax, edx
sar eax, 0x12
sub ecx, eax
mov dword [r8 + 4], ecx
mov ecx, dword [r8 + 8]
mov eax, ecx
sub eax, ebp
imul eax, r9d
cdq
and edx, 0x3ffff
add eax, edx
sar eax, 0x12
sub ecx, eax
mov dword [r8 + 8], ecx
sub r13, 0x10
jmp 0x14016a880
mov edi, dword [rsp + 0xc8]
mov ebp, dword [rsp + 0xc0]
mov r14d, dword [rsp + 0x2c]
mov r10d, dword [rsp + 0x24]
add edi, dword [rsp + 0x20]
mov dword [rsp + 0xc8], edi
cmp edi, r14d
jl 0x14016a9b0
sub edi, r14d
cmp edi, r14d
jge 0x14016a9a1
mov dword [rsp + 0xc8], edi
mov r11d, dword [rsp + 0x30]
inc r11d
mov eax, r11d
mov dword [rsp + 0x30], r11d
cdq
idiv dword [rsp + 0x48]
test edx, edx
jne 0x14016aa52
mov ecx, dword [rsp + 0x34]
mov eax, r10d
cdq
xor ebp, ebp
idiv dword [rsp + 0x4c]
sub r10d, eax
mov eax, 0x77777777
imul ecx
mov dword [rsp + 0x24], r10d
sub edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add edx, eax
add ecx, edx
mov eax, ecx
mov dword [rsp + 0x34], ecx
sar eax, 6
cmp eax, 1
cmovg ebp, eax
xor ecx, ecx
mov dword [rsp + 0xc0], ebp
test ebp, ebp
jle 0x14016aa52
mov r9d, ebp
imul r9d, ebp
xor r8d, r8d
nop
mov edx, ecx
lea r8, [r8 + 4]
imul edx, ecx
mov eax, r9d
inc ecx
sub eax, edx
shl eax, 8
cdq
idiv r9d
mov rdx, qword [rsi + 0x440]
imul eax, r10d
mov dword [r8 + rdx - 4], eax
cmp ecx, ebp
jl 0x14016aa20
mov dword [rsp + 0xc0], ebp
cmp r11d, dword [rsp + 0x38]
jl 0x14016a5f4
mov r15, qword [rsp + 0x78]
mov r13, qword [rsp + 0x80]
mov r12, qword [rsp + 0x88]
mov rbx, qword [rsp + 0x90]
add rsp, 0x98
pop r14
pop rdi
pop rsi
pop rbp
ret