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

Disassembly:
mov byte [rsp + 0x20], r9b
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x148
mov eax, dword [rdx]
mov r13, rcx
mov ecx, dword [rdx + 0x10]
mov r9d, dword [r8 + 0xc]
mov r8d, 1
mov ebx, dword [rdx + 4]
mov ebp, dword [rdx + 0xc]
mov r15d, dword [rdx + 0x14]
mov r14d, dword [rdx + 0x24]
mov esi, dword [rdx + 0x2c]
movzx edi, byte [r13 + 0x1c]
mov dword [rsp + 0x50], eax
mov eax, dword [rdx + 8]
mov dword [rsp + 0x64], eax
mov eax, dword [rdx + 0x28]
mov dword [rsp + 0x34], eax
mov eax, ecx
sub eax, ebx
mov dword [rsp + 0x40], ecx
mov dword [rsp + 0x48], eax
mov ecx, edi
shl r8d, cl
lea eax, [r9 - 1]
add eax, r8d
movd xmm0, r9d
cdq
idiv r8d
cvtdq2pd xmm0, xmm0
mov r12d, eax
mov dword [rsp + 0x20], eax
call sub.api_ms_win_crt_math_l1_1_0.dll_log2
mov r9, qword [rsp + 0x198]
xor edx, edx
mov r8, qword [rsp + 0x1a0]
movd xmm1, edi
cvtdq2pd xmm1, xmm1
mov eax, dword [r9 + 0x18]
mov r11, qword [r8 + 0x30]
mov qword [rsp + 0xe0], r11
subsd xmm1, xmm0
cvttsd2si ecx, xmm1
test ecx, ecx
cmovs ecx, edx
cdq
idiv r12d
movsxd r10, ecx
mov dword [rsp + 0x9c], eax
dec eax
shl r10, 5
mov qword [rsp + 0xe8], r10
add eax, dword [r10 + r11]
mov ecx, dword [r10 + r11 + 4]
cdq
idiv dword [r10 + r11]
mov dword [rsp + 0xa4], eax
mov eax, dword [r9 + 0x1c]
cdq
idiv r12d
dec eax
add eax, ecx
cdq
idiv ecx
mov dword [rsp + 0xa8], eax
mov eax, dword [rsp + 0x48]
cdq
idiv r12d
cdq
idiv ecx
mov r9d, eax
mov dword [rsp + 0xc0], eax
mov eax, dword [rsp + 0x34]
sub eax, ebx
dec eax
cdq
idiv r12d
cdq
idiv ecx
mov edx, 1
sub eax, r9d
mov dword [rsp + 0xc4], eax
lea ecx, [rax*2 + 2]
shl edx, cl
lea eax, [rbx - 1]
movsxd rbx, dword [r8 + 0x20]
dec edx
mov dword [rsp + 0xc8], edx
mov ecx, edi
mov edx, dword [rsp + 0x64]
dec edx
shl eax, cl
shl edx, cl
neg eax
neg edx
and eax, 0xf
and edx, 0xf
shl edx, 4
or edx, eax
mov eax, dword [rsp + 0x50]
shl edx, 4
dec eax
shl eax, cl
mov rcx, rbx
neg eax
and eax, 0xf
or edx, eax
shl edx, 0xc
mov dword [rsp + 0xa0], edx
call fcn.14005bbb0
mov r8, rbx
mov qword [rsp + 0xd8], rax
xor edx, edx
mov rcx, rax
mov r12, rax
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [rsp + 0x20]
xor r8d, r8d
mov r9d, dword [rsp + 0x64]
mov ebx, r8d
mov r10d, dword [rsp + 0x50]
sub esi, r9d
sub ebp, r10d
mov byte [r12], 0
sub r14d, r10d
mov dword [rsp + 0x24], r8d
sub r15d, r9d
mov dword [rsp + 0x190], ebx
lea eax, [rsi - 1]
cdq
idiv ecx
mov r11d, eax
mov dword [rsp + 0xbc], eax
mov eax, ebp
cdq
idiv ecx
mov esi, eax
mov dword [rsp + 0xb4], eax
lea eax, [r14 - 1]
cdq
idiv ecx
mov edi, eax
mov dword [rsp + 0xb0], eax
mov eax, r15d
cdq
idiv ecx
mov dword [rsp + 0x60], eax
mov edx, eax
cmp eax, r11d
jg 0x14001ecda
mov eax, dword [rsp + 0x40]
lea r14d, [r8 + 0x40]
sub eax, dword [rsp + 0x34]
add eax, 0x40
mov dword [rsp + 0x98], eax
nop dword [rax + rax]
lea eax, [rdx + 1]
mov r11d, edx
imul r11d, ecx
mov dword [rsp + 0xb8], eax
add r11d, r9d
cmovs r11d, r8d
imul eax, ecx
mov dword [rsp + 0x2c], r11d
add eax, r9d
mov r9d, esi
cmp eax, 0x40
cmovg eax, r14d
mov dword [rsp + 0x5c], eax
cmp esi, edi
jg 0x14001ecbd
movsxd rbp, eax
mov qword [rsp + 0x138], rbp
lea eax, [r9 + 1]
mov edi, r9d
imul edi, ecx
mov esi, eax
mov dword [rsp + 0xac], eax
add edi, r10d
cmovs edi, r8d
imul esi, ecx
mov dword [rsp + 0x28], edi
add esi, r10d
cmp esi, 0x40
cmovg esi, r14d
cmp byte [rsp + 0x1a8], 0
movsxd r14, edi
mov qword [rsp + 0x108], r14
mov dword [rsp + 0x70], esi
movsxd r15, esi
je 0x14001e509
mov rcx, qword [rsp + 0xe0]
mov eax, edx
mov rbx, qword [rsp + 0xe8]
cdq
mov r11d, dword [rsp + 0xc4]
idiv dword [rbx + rcx]
mov r8d, eax
mov eax, r9d
imul r8d, dword [rsp + 0xa4]
cdq
idiv dword [rbx + rcx]
mov rbx, qword [rbx + rcx + 8]
add r8d, eax
imul r8d, dword [rsp + 0xa8]
add r8d, dword [rsp + 0xc0]
add r11d, r8d
mov r10d, r8d
sar r8d, 4
and r10d, 0xf
add r10d, r10d
movsxd rax, r8d
mov ecx, r10d
sar r11d, 4
mov edx, dword [rbx + rax*4]
shr edx, cl
cmp r11d, r8d
je 0x14001e440
movsxd rax, r11d
mov ecx, 0x20
sub ecx, r10d
mov eax, dword [rbx + rax*4]
shl eax, cl
or edx, eax
mov ecx, dword [rsp + 0xc8]
mov eax, ecx
and eax, 0x15555
and edx, ecx
cmp edx, eax
je 0x14001ec80
mov eax, ecx
and eax, 0x2aaaa
cmp edx, eax
jne 0x14001e4fb
mov ecx, dword [rsp + 0x98]
mov r8, 0xffffffffffffffff
mov ebx, dword [rsp + 0x40]
movsxd r11, dword [rsp + 0x2c]
shr r8, cl
mov ecx, ebx
shl r8, cl
cmp r11, rbp
jge 0x14001e4d1
lea r9, [r11 + 0x200]
mov r10, rbp
shl r9, 6
add r9, r14
shl r9, 3
sub r10, r11
cmp r14, r15
jge 0x14001e4c4
mov rdx, r15
mov rcx, r9
sub rdx, r14
mov rax, qword [r13 + 0x38]
lea rcx, [rcx + 8]
or qword [rcx + rax - 8], r8
sub rdx, 1
jne 0x14001e4b1
add r9, 0x200
sub r10, 1
jne 0x14001e4a3
mov eax, dword [rsp + 0x5c]
sub esi, edi
sub eax, r11d
imul esi, eax
mov eax, dword [rsp + 0x34]
sub eax, ebx
mov ebx, dword [rsp + 0x190]
imul esi, eax
add ebx, esi
mov dword [rsp + 0x190], ebx
jmp 0x14001ec87
mov ebx, dword [rsp + 0x190]
xor r8d, r8d
mov edx, dword [rsp + 0x60]
mov rax, qword [rsp + 0x1a0]
mov r11d, r8d
mov edi, dword [rsp + 0x40]
mov r10d, 1
mov dword [rsp + 0x44], r8d
mov dword [rsp + 0x3c], edi
mov r8, qword [rax + 0x30]
mov eax, edx
imul eax, dword [rsp + 0x9c]
mov dword [rsp + 0x30], r10d
add eax, r9d
mov r9, qword [rsp + 0xe8]
movsxd rcx, eax
mov rax, qword [r8 + r9 + 0x10]
mov edx, dword [rax + rcx*4]
mov rax, qword [r8 + r9 + 0x18]
movzx ecx, byte [rax + rdx*4]
lea r9, [rax + rdx*4]
xor edx, edx
mov qword [rsp + 0x118], r9
mov esi, edx
lea eax, [rcx*4]
mov dword [rsp + 0x68], eax
lea r8, [r9 + rcx*4]
cmp eax, r10d
jbe 0x14001e5f9
mov ecx, dword [rsp + 0x20]
nop dword [rax]
nop word [rax + rax]
mov eax, r10d
inc r10d
mov dword [rsp + 0x30], r10d
movzx edx, byte [rax + r9]
mov eax, 0x80
cmp dx, ax
jb 0x14001e5ca
movzx ecx, byte [r10 + r9]
mov eax, 0xff80
xor dx, ax
shl dx, 8
or dx, cx
mov ecx, dword [rsp + 0x20]
inc r10d
mov dword [rsp + 0x30], r10d
movzx eax, dx
imul eax, ecx
add esi, eax
mov dword [rsp + 0x4c], esi
cmp esi, dword [rsp + 0x48]
ja 0x14001e5f4
test eax, eax
je 0x14001e5f4
add r8, 4
mov dword [rsp + 0x44], esi
mov r11d, esi
cmp r10d, dword [rsp + 0x68]
jb 0x14001e590
jmp 0x14001e5f9
cmp r11d, esi
jne 0x14001e608
mov rax, qword [rsp + 0x198]
mov esi, dword [rax + 0x1c]
mov dword [rsp + 0x4c], esi
mov r11d, dword [r8]
add r8, 4
mov qword [rsp + 0xf0], r8
cmp edi, dword [rsp + 0x34]
jge 0x14001ec87
movsxd rax, dword [rsp + 0x2c]
mov qword [rsp + 0x110], rax
nop
mov eax, dword [rsp + 0x24]
mov dword [rsp + 0x7c], eax
xor eax, eax
mov ecx, eax
mov r8d, eax
mov rax, qword [rsp + 0x1a0]
mov r9, qword [rax + 0x28]
nop dword [rax + rax]
mov eax, r11d
shr eax, 0x18
add eax, ecx
mov edx, dword [r9 + rax*4]
test edx, edx
jns 0x14001e673
mov ecx, edx
shl r11d, 8
btr ecx, 0x1f
inc r8d
cmp r8d, 4
jl 0x14001e650
lea eax, [r8*8]
mov ebx, edx
mov r8d, 0x1fff
mov ecx, edx
sar ecx, 0x1a
and ebx, r8d
imul ebx, dword [rsp + 0x20]
sub ecx, eax
shl r11d, cl
mov ecx, dword [rsp + 0x44]
mov dword [rsp + 0x74], r11d
add ecx, ebx
mov dword [rsp + 0x44], ecx
cmp ecx, dword [rsp + 0x48]
jbe 0x14001ec72
cmp ecx, esi
jne 0x14001e74c
mov rax, qword [rsp + 0x198]
mov r9d, dword [rax + 0x1c]
cmp esi, r9d
je 0x14001e74c
mov r8, qword [rsp + 0xf0]
mov eax, dword [r8]
add r8, 4
mov dword [rsp + 0x74], eax
mov qword [rsp + 0xf0], r8
cmp r10d, dword [rsp + 0x68]
jae 0x14001e741
mov r11, qword [rsp + 0x118]
mov eax, r10d
inc r10d
movzx r8d, byte [rax + r11]
mov eax, 0x80
cmp r8w, ax
jb 0x14001e729
movzx ecx, byte [r10 + r11]
mov eax, 0xff80
xor r8w, ax
shl r8w, 8
or r8w, cx
mov ecx, dword [rsp + 0x44]
inc r10d
movzx eax, r8w
imul eax, dword [rsp + 0x20]
mov dword [rsp + 0x30], r10d
add esi, eax
mov dword [rsp + 0x4c], esi
test eax, eax
jne 0x14001e746
mov dword [rsp + 0x4c], r9d
mov r8d, 0x1fff
mov eax, ecx
mov ecx, dword [rsp + 0x34]
sub eax, dword [rsp + 0x48]
cmp eax, ebx
cmovb ebx, eax
mov dword [rsp + 0x38], ebx
lea eax, [rbx + rdi]
cmp eax, ecx
jb 0x14001e76e
mov ebx, ecx
sub ebx, edi
mov dword [rsp + 0x38], ebx
shr edx, 0xd
and dx, r8w
je 0x14001ec67
mov r8, qword [rsp + 0x1a0]
movzx r11d, dx
movzx ecx, dx
mov edx, r11d
shr rdx, 5
mov rax, qword [r8 + 0x18]
mov dword [rsp + 0x6c], ecx
and ecx, 0x1f
mov qword [rsp + 0x90], r11
mov r10d, dword [rax + rdx*4]
shr r10d, cl
and r10b, 1
cmp byte [r11 + r12], 0
mov dword [rsp + 0x54], r10d
jne 0x14001e7f7
mov rax, qword [r8 + 0x10]
mov edx, dword [rax + r11*4]
cmp edx, 0x1000000
jae 0x14001e7d2
or edx, dword [rsp + 0xa0]
mov rcx, qword [r13 + 0x38]
movzx r8d, r10b
add rcx, 0x8d0c0
call fcn.14000ee60
mov r11, qword [rsp + 0x90]
mov r10d, dword [rsp + 0x54]
mov byte [r11 + r12], al
mov r9, qword [rsp + 0x110]
mov ecx, 0x40
sub ecx, ebx
mov rsi, 0xffffffffffffffff
shr rsi, cl
mov ecx, edi
shl rsi, cl
cmp r9, rbp
jge 0x14001e9ef
mov eax, dword [rsp + 0x2c]
lea rdx, [r9 + 0x200]
shl eax, 0xc
sub rbp, r9
shl rdx, 6
mov dword [rsp + 0x58], eax
add rdx, r14
mov qword [rsp + 0x100], rbp
lea rax, [r9 + 0x2c0]
mov ebp, dword [rsp + 0x28]
shl rax, 6
shl rdx, 3
mov ecx, ebx
mov qword [rsp + 0x80], rax
shl ebp, 6
mov qword [rsp + 0xd0], rdx
mov qword [rsp + 0x88], rcx
movsxd r12, edi
mov rbx, qword [rsp + 0x108]
mov r14d, ebp
mov qword [rsp + 0x120], r12
mov r8, r12
mov qword [rsp + 0x128], rcx
mov r9, rcx
cmp rbx, r15
jge 0x14001e97d
movsxd rax, dword [rsp + 0x58]
test edi, edi
mov qword [rsp + 0xf8], rax
mov rdi, rdx
jle 0x14001ea65
mov r14d, dword [rsp + 0x38]
nop dword [rax]
mov rcx, qword [rsp + 0xd8]
mov r8, qword [rsp + 0x88]
movzx edx, byte [r11 + rcx]
movsxd rcx, ebp
add rcx, r12
add rcx, rax
add rcx, qword [r13 + 0x38]
call sub.VCRUNTIME140.dll_memset
mov rdx, qword [r13 + 0x38]
mov r10d, dword [rsp + 0x54]
mov rcx, qword [rdi + rdx]
test r10b, r10b
jne 0x14001e902
or rcx, rsi
mov qword [rdi + rdx], rcx
jmp 0x14001e946
mov r8, qword [rsp + 0x80]
mov rax, rsi
not rax
add r8, rbx
and rax, rcx
mov qword [rdi + rdx], rax
mov rcx, qword [r13 + 0x38]
mov rax, qword [rcx + r8*8]
bts rax, r12
mov qword [rcx + r8*8], rax
mov eax, dword [rsp + 0x3c]
add eax, r14d
cmp eax, 0x40
jae 0x14001e946
mov rdx, qword [r13 + 0x38]
mov rcx, qword [rdx + r8*8]
bts rcx, rax
mov qword [rdx + r8*8], rcx
mov rax, qword [rsp + 0xf8]
add ebp, 0x40
mov r11, qword [rsp + 0x90]
inc rbx
add rdi, 8
cmp rbx, r15
jl 0x14001e8c0
mov rax, qword [rsp + 0x80]
mov edi, dword [rsp + 0x3c]
mov rdx, qword [rsp + 0xd0]
mov ebx, dword [rsp + 0x38]
mov ebp, dword [rsp + 0x28]
mov ecx, ebx
mov qword [rsp + 0x88], rbx
shl ebp, 6
movsxd r12, edi
add dword [rsp + 0x58], 0x1000
add rdx, 0x200
mov r11, qword [rsp + 0x90]
add rax, 0x40
sub qword [rsp + 0x100], 1
mov qword [rsp + 0xd0], rdx
mov qword [rsp + 0x80], rax
jne 0x14001e875
mov rbp, qword [rsp + 0x138]
mov r12, qword [rsp + 0xd8]
mov r14, qword [rsp + 0x108]
mov r9, qword [rsp + 0x110]
test r10b, r10b
je 0x14001ec27
mov r10d, dword [rsp + 0x2c]
mov rdx, r14
cmp r14, r15
jge 0x14001eb69
test r10d, r10d
jle 0x14001eb45
lea r8, [r9 + 0x280]
shl r8, 6
add r8, r14
shl r8, 3
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [r13 + 0x38]
or qword [rax + r8], rsi
cmp rbp, 0x40
jge 0x14001ea54
mov rax, qword [r13 + 0x38]
lea rcx, [rbp + 0x280]
shl rcx, 6
add rcx, rdx
or qword [rax + rcx*8], rsi
inc rdx
add r8, 8
cmp rdx, r15
jl 0x14001ea30
jmp 0x14001eb69
mov r12d, dword [rsp + 0x38]
mov dword [rsp + 0x78], ebp
mov rbp, qword [rsp + 0x80]
mov qword [rsp + 0x88], rcx
nop
mov rcx, qword [rsp + 0xd8]
movzx edx, byte [r11 + rcx]
movsxd rcx, r14d
add rcx, rax
add rcx, qword [r13 + 0x38]
add rcx, r8
mov r8, r9
call sub.VCRUNTIME140.dll_memset
mov rdx, qword [r13 + 0x38]
mov r10d, dword [rsp + 0x54]
mov rcx, qword [rdi + rdx]
test r10b, r10b
jne 0x14001eabd
or rcx, rsi
mov qword [rdi + rdx], rcx
jmp 0x14001eaea
mov rax, rsi
not rax
and rax, rcx
mov qword [rdi + rdx], rax
mov eax, dword [rsp + 0x3c]
add eax, r12d
cmp eax, 0x40
jae 0x14001eaea
mov rdx, qword [r13 + 0x38]
lea r8, [rbx + rbp]
mov rcx, qword [rdx + r8*8]
bts rcx, rax
mov qword [rdx + r8*8], rcx
mov r8, qword [rsp + 0x120]
add r14d, 0x40
mov r9, qword [rsp + 0x128]
inc rbx
mov rax, qword [rsp + 0xf8]
add rdi, 8
mov r11, qword [rsp + 0x90]
cmp rbx, r15
jl 0x14001ea80
mov ebp, dword [rsp + 0x78]
mov r12, r8
mov ebx, dword [rsp + 0x38]
mov rcx, r9
mov rax, qword [rsp + 0x80]
mov edi, dword [rsp + 0x3c]
mov rdx, qword [rsp + 0xd0]
jmp 0x14001e995
cmp rbp, 0x40
jge 0x14001eb61
mov rax, qword [r13 + 0x38]
lea rcx, [rbp + 0x280]
shl rcx, 6
add rcx, rdx
or qword [rax + rcx*8], rsi
inc rdx
cmp rdx, r15
jl 0x14001eb45
mov r8d, dword [rsp + 0x28]
mov rdx, r9
cmp r9, rbp
jge 0x14001ebeb
test r8d, r8d
jle 0x14001ebc7
lea r8, [r14 + 0x240]
shl r8, 6
add r8, r9
shl r8, 3
nop dword [rax]
mov rax, qword [r13 + 0x38]
or qword [rax + r8], rsi
cmp r15, 0x40
jge 0x14001ebb4
mov rax, qword [r13 + 0x38]
lea rcx, [r15 + 0x240]
shl rcx, 6
add rcx, rdx
or qword [rax + rcx*8], rsi
inc rdx
add r8, 8
cmp rdx, rbp
jl 0x14001eb90
mov r8d, dword [rsp + 0x28]
jmp 0x14001ebeb
cmp r15, 0x40
jge 0x14001ebe3
mov rax, qword [r13 + 0x38]
lea rcx, [r15 + 0x240]
shl rcx, 6
add rcx, rdx
or qword [rax + rcx*8], rsi
inc rdx
cmp rdx, rbp
jl 0x14001ebc7
cmp dword [rsp + 0x24], 0
jne 0x14001ebfc
mov edx, dword [rsp + 0x6c]
mov dword [rsp + 0x24], edx
jmp 0x14001ec0a
mov eax, dword [rsp + 0x7c]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x6c], eax
jne 0x14001ec62
mov ecx, dword [rsp + 0x70]
mov eax, dword [rsp + 0x5c]
sub ecx, r8d
sub eax, r10d
imul ecx, eax
imul ecx, ebx
add dword [rsp + 0x190], ecx
jmp 0x14001ec62
cmp dword [rsp + 0x24], 0
mov eax, 0x40001
mov edx, dword [rsp + 0x190]
mov ecx, dword [rsp + 0x70]
cmovg edx, eax
sub ecx, dword [rsp + 0x28]
mov eax, dword [rsp + 0x5c]
sub eax, dword [rsp + 0x2c]
imul ecx, eax
mov dword [rsp + 0x24], 0xffffffff
imul ecx, ebx
add edx, ecx
mov dword [rsp + 0x190], edx
mov r10d, dword [rsp + 0x30]
mov r11d, dword [rsp + 0x74]
add edi, ebx
mov dword [rsp + 0x3c], edi
mov esi, dword [rsp + 0x4c]
cmp edi, dword [rsp + 0x34]
jl 0x14001e630
mov ebx, dword [rsp + 0x190]
mov r9d, dword [rsp + 0xac]
mov r8d, 0
mov edi, dword [rsp + 0xb0]
mov ecx, dword [rsp + 0x20]
mov edx, dword [rsp + 0x60]
mov r10d, dword [rsp + 0x50]
lea r14d, [r8 + 0x40]
cmp r9d, edi
jle 0x14001e374
mov esi, dword [rsp + 0xb4]
mov edx, dword [rsp + 0xb8]
mov r9d, dword [rsp + 0x64]
mov dword [rsp + 0x60], edx
cmp edx, dword [rsp + 0xbc]
jle 0x14001e330
mov rcx, r12
call fcn.14005bb7c
cmp ebx, 0x40000
jne 0x14001ecee
xor eax, eax
jmp 0x14001ecfb
mov edx, 0
test ebx, ebx
setle dl
lea eax, [rdx + 1]
add rsp, 0x148
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret