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

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x100
mov qword [rsp + 0xe0], 0xfffffffffffffffe
mov qword [rsp + 0x140], rbx
mov rax, qword [0x1401043b8]
xor rax, rsp
mov qword [rsp + 0xf8], rax
mov qword [rsp + 0xb8], r9
mov rbp, r8
mov qword [rsp + 0xa8], r8
mov r13, rdx
mov qword [rsp + 0xd0], rdx
mov r12, rcx
mov qword [rsp + 0xc8], rcx
mov eax, dword [r9 + 0x10]
sub eax, dword [r9 + 8]
lea eax, [rax + rax*2 + 3]
movsxd r15, eax
mov qword [rsp + 0xb0], r15
mov edx, 2
lea rcx, [rsp + 0x48]
call fcn.1400523c0
nop
mov rcx, qword [rsp + 0x68]
mov r9, qword [rsp + 0x60]
sub rcx, r9
movabs rdi, 0x2aaaaaaaaaaaaaab
mov rax, rdi
imul rcx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
jne 0x140051b20
call fcn.1400796a8
mov r9, qword [rsp + 0x60]
xor r8d, r8d
mov rdx, r15
mov rcx, r9
call fcn.14002bfc0
mov r11, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x60]
sub r11, rcx
mov rax, rdi
imul r11
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rdx, 1
ja 0x140051b5f
call fcn.1400796a8
mov rcx, qword [rsp + 0x60]
add rcx, 0x30
xor r8d, r8d
mov rdx, r15
call fcn.14002bfc0
mov r11, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x60]
sub r11, rbx
mov rax, rdi
imul r11
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
jne 0x140051b9b
call fcn.1400796a8
mov rbx, qword [rsp + 0x60]
mov rdi, qword [rbx + 0x18]
cmp rdi, qword [rbx + 0x20]
jbe 0x140051baa
call fcn.1400796a8
mov r11, qword [rbx]
xor r14d, r14d
test r11, r11
jne 0x140051bbf
call fcn.1400796a8
mov r11, r14
jmp 0x140051bc2
mov r11, qword [r11]
cmp rdi, qword [r11 + 0x20]
jb 0x140051bcd
call fcn.1400796a8
lea rsi, [r15 + r15]
mov r8, rsi
xor edx, edx
mov rcx, rdi
call fcn.140081300
mov r11, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x60]
sub r11, rbx
movabs rax, 0x2aaaaaaaaaaaaaab
imul r11
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rdx, 1
ja 0x140051c16
call fcn.1400796a8
mov rbx, qword [rsp + 0x60]
mov rdi, qword [rbx + 0x48]
cmp rdi, qword [rbx + 0x50]
jbe 0x140051c25
call fcn.1400796a8
mov r11, qword [rbx + 0x30]
test r11, r11
jne 0x140051c38
call fcn.1400796a8
mov r11, r14
jmp 0x140051c3b
mov r11, qword [r11]
cmp rdi, qword [r11 + 0x20]
jb 0x140051c46
call fcn.1400796a8
mov r8, rsi
xor edx, edx
mov rcx, rdi
call fcn.140081300
mov r11, qword [r13]
lea rdx, [rsp + 0x30]
mov rcx, r13
call qword [r11 + 0x90]
mov r11, qword [r13]
mov rcx, r13
call qword [r11 + 0xb0]
movzx eax, al
mov dword [rsp + 0x80], eax
mov ecx, 3
cmp byte [r12 + 0x350], r14b
cmovne eax, ecx
mov dword [rsp + 0x84], eax
mov ebx, r14d
movzx eax, word [rsp + 0x34]
mov word [rsp + 0xe8], ax
movzx eax, word [rsp + 0x36]
mov word [rsp + 0xea], ax
movzx eax, word [rsp + 0x38]
mov word [rsp + 0xec], ax
movzx eax, word [rsp + 0x3a]
mov word [rsp + 0xf0], ax
movzx eax, word [rsp + 0x3c]
mov word [rsp + 0xf2], ax
movzx eax, word [rsp + 0x3e]
mov word [rsp + 0xf4], ax
mov r13, r14
mov qword [rsp + 0xc0], r14
mov dword [rsp + 0x28], r14d
mov rsi, qword [rsp + 0xb8]
mov eax, dword [rsi + 0x14]
sub eax, dword [rsi + 0xc]
test eax, eax
jle 0x1400520df
mov rdi, r14
mov r8, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x68]
sub rcx, r8
movabs r14, 0x2aaaaaaaaaaaaaab
mov rax, r14
imul rcx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rdi, rdx
jb 0x140051d49
call fcn.1400796a8
mov r8, qword [rsp + 0x60]
lea r12, [rdi + rdi*2]
shl r12, 4
add r12, r8
lea eax, [rbx + 1]
cdq
and eax, 1
xor eax, edx
sub eax, edx
mov dword [rsp + 0x88], eax
movsxd rdi, eax
mov qword [rsp + 0xd8], rdi
mov rcx, qword [rsp + 0x68]
sub rcx, r8
mov rax, r14
imul rcx
sar rdx, 3
mov rcx, rdx
shr rcx, 0x3f
add rdx, rcx
cmp rdi, rdx
jb 0x140051d9c
call fcn.1400796a8
mov r8, qword [rsp + 0x60]
lea r14, [rdi + rdi*2]
shl r14, 4
add r14, r8
mov ebx, 3
mov qword [rsp + 0x90], rbx
cmp rbx, r15
jae 0x1400520b7
lea rax, [rsp + 0x24]
mov qword [rsp + 0x78], rax
lea r15, [r13 + 2]
mov qword [rsp + 0xa0], r15
nop word [rax + rax]
mov rax, qword [rsp + 0xc8]
cmp byte [rax + 0x350], 0
je 0x140051e57
mov rax, qword [rbp + 0x20]
sub rax, qword [rbp + 0x18]
cmp r13, rax
jb 0x140051e03
call fcn.1400796a8
mov rdi, qword [rbp + 0x18]
lea rsi, [r15 - 1]
mov rax, qword [rbp + 0x20]
sub rax, rdi
cmp rsi, rax
jb 0x140051e1c
call fcn.1400796a8
mov rbx, qword [rbp + 0x18]
mov rax, qword [rbp + 0x20]
sub rax, rbx
cmp r15, rax
jb 0x140051e31
call fcn.1400796a8
movzx edx, byte [rdi + r13]
shl edx, 8
movzx eax, byte [rsi + rbx]
or edx, eax
shl edx, 8
mov rax, qword [rbp + 0x18]
movzx ecx, byte [r15 + rax]
or edx, ecx
mov rbx, qword [rsp + 0x90]
jmp 0x140051e92
mov dword [rsp + 0x20], 0
mov rax, qword [rbp + 0x20]
sub rax, qword [rbp + 0x18]
cmp r13, rax
jb 0x140051e71
call fcn.1400796a8
movzx r8d, word [rsp + 0x30]
shr r8, 3
mov rax, qword [rbp + 0x18]
lea rdx, [r13 + rax]
lea rcx, [rsp + 0x20]
call fcn.14007ad70
mov edx, dword [rsp + 0x20]
movzx ecx, byte [rsp + 0x3a]
mov eax, edx
sar eax, cl
and al, byte [rsp + 0x34]
mov byte [rsp + 0x24], al
mov ecx, dword [rsp + 0x3c]
mov eax, edx
sar eax, cl
and al, byte [rsp + 0x36]
mov byte [rsp + 0x25], al
movzx ecx, byte [rsp + 0x3e]
sar edx, cl
and dl, byte [rsp + 0x38]
mov byte [rsp + 0x26], dl
xor eax, eax
mov dword [rsp + 0x20], eax
mov rsi, rbx
lea r15, [rbx + rbx]
mov r13, rax
nop word [rax + rax]
mov rax, qword [r14 + 0x20]
sub rax, qword [r14 + 0x18]
sar rax, 1
cmp rsi, rax
jb 0x140051ef5
call fcn.1400796a8
mov rdi, qword [r14 + 0x18]
lea rbp, [rsi - 3]
mov rax, qword [r12 + 0x20]
sub rax, qword [r12 + 0x18]
sar rax, 1
cmp rbp, rax
jb 0x140051f14
call fcn.1400796a8
mov rbx, qword [r12 + 0x18]
mov rax, qword [r14 + 0x20]
sub rax, qword [r14 + 0x18]
sar rax, 1
cmp rbp, rax
jb 0x140051f2e
call fcn.1400796a8
mov rax, qword [r14 + 0x18]
movzx ecx, word [rax + r15 - 6]
movzx ebx, word [r15 + rbx - 6]
sub ebx, ecx
movzx eax, word [r15 + rdi]
add ebx, eax
jns 0x140051f50
xor eax, eax
mov bx, ax
jmp 0x140051f5f
movzx eax, word [rsp + r13 + 0xe8]
cmp ebx, eax
cmovg bx, ax
mov rax, qword [r12 + 0x20]
sub rax, qword [r12 + 0x18]
sar rax, 1
cmp rsi, rax
jb 0x140051f76
call fcn.1400796a8
movzx edi, word [rsp + r13 + 0xe8]
mov rax, qword [rsp + 0x78]
movzx ecx, byte [rax + rbp]
add cx, bx
and cx, di
mov rax, qword [r12 + 0x18]
mov word [r15 + rax], cx
mov rax, qword [r12 + 0x20]
sub rax, qword [r12 + 0x18]
sar rax, 1
cmp rsi, rax
jb 0x140051faf
call fcn.1400796a8
mov rax, qword [r12 + 0x18]
movzx edx, word [rax + r15]
movzx eax, di
and edx, eax
movzx ecx, byte [rsp + r13 + 0xf0]
shl edx, cl
mov ecx, dword [rsp + 0x20]
or ecx, edx
mov dword [rsp + 0x20], ecx
mov dword [rsp + 0x98], ecx
inc rsi
add r15, 2
add r13, 2
cmp r13, 6
jl 0x140051ee0
mov r10, qword [rsp + 0xd0]
mov r9, qword [r10]
mov rsi, qword [rsp + 0xb8]
mov r8d, dword [rsp + 0x28]
add r8d, dword [rsi + 0xc]
movabs rax, 0xaaaaaaaaaaaaaaab
mov rbx, qword [rsp + 0x90]
mul rbx
shr rdx, 1
mov eax, dword [rsi + 8]
lea edx, [rdx + rax - 1]
mov rcx, r10
call qword [r9 + 0xc8]
movsxd r8, dword [rsp + 0x80]
lea rdx, [rsp + 0x98]
mov rcx, rax
call fcn.14007ad70
add rbx, 3
mov qword [rsp + 0x90], rbx
sub qword [rsp + 0x78], 3
mov r13, qword [rsp + 0xc0]
movsxd rax, dword [rsp + 0x84]
add r13, rax
mov qword [rsp + 0xc0], r13
mov r15, qword [rsp + 0xa0]
add r15, rax
mov qword [rsp + 0xa0], r15
cmp rbx, qword [rsp + 0xb0]
mov rbp, qword [rsp + 0xa8]
jb 0x140051de0
mov r8, qword [rsp + 0x60]
mov rdi, qword [rsp + 0xd8]
mov r15, qword [rsp + 0xb0]
mov r9d, dword [rsp + 0x28]
inc r9d
mov dword [rsp + 0x28], r9d
mov eax, dword [rsi + 0x14]
sub eax, dword [rsi + 0xc]
cmp r9d, eax
mov ebx, dword [rsp + 0x88]
jl 0x140051d14
xor r14d, r14d
jmp 0x1400520e4
mov r8, qword [rsp + 0x60]
test r8, r8
je 0x140052132
mov rdi, qword [rsp + 0x68]
cmp r8, rdi
je 0x14005212a
lea rbx, [r8 + 0x18]
mov rcx, qword [rbx]
test rcx, rcx
je 0x140052104
call fcn.140078e60
mov qword [rbx], r14
mov qword [rbx + 8], r14
mov qword [rbx + 0x10], r14
mov rcx, qword [rbx - 0x18]
call fcn.140078e60
add rbx, 0x30
lea rax, [rbx - 0x18]
cmp rax, rdi
jne 0x1400520f7
mov r8, qword [rsp + 0x60]
mov rcx, r8
call fcn.140078e60
mov qword [rsp + 0x60], r14
mov qword [rsp + 0x68], r14
mov qword [rsp + 0x70], r14
mov rcx, qword [rsp + 0x48]
call fcn.140078e60
mov rcx, qword [rsp + 0xf8]
xor rcx, rsp
call fcn.140078e40
mov rbx, qword [rsp + 0x140]
add rsp, 0x100
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret