Function at 0x519f80
Capabilities:
Access peb ldr_data

Disassembly:
lea r12, [rsp - 0x738]
cmp r12, qword [r14 + 0x10]
jbe 0x51ad26
push rbp
mov rbp, rsp
sub rsp, 0x7b0
mov rsi, qword [rdi]
mov r8, qword [rsi + 8]
mov rdx, qword [rbx + 0x10]
cmp rdx, r8
jb 0x51ad1d
mov rdx, qword [rcx + 0x10]
cmp rdx, r8
jb 0x51ad15
mov qword [rsp + 0x7c0], rax
mov qword [rsp + 0x7d8], rdi
mov rsi, qword [rsi]
mov qword [rsp + 0x7a8], rsi
mov r9, qword [rbx]
mov qword [rsp + 0x7a0], r9
mov r10, qword [rcx]
mov qword [rsp + 0x798], r10
cmp r8, 0x10
jg 0x51a069
cmp r8, 4
je 0x51a03c
nop dword [rax + rax]
cmp r8, 0x10
jne 0x51a07d
mov rcx, rdi
lea rdi, [rsp + 0x448]
nop word [rax + rax]
nop word [rax + rax]
mov qword [rsp - 0x10], rbp
lea rbp, [rsp - 0x10]
call fcn.0046da14
mov rbp, qword [rbp]
xor edx, edx
xor ebx, ebx
jmp 0x51abf0
movups xmmword [rsp + 0x548], xmm15
movups xmmword [rsp + 0x558], xmm15
movups xmmword [rsp + 0x568], xmm15
movups xmmword [rsp + 0x578], xmm15
xor ecx, ecx
xor edx, edx
jmp 0x51a9dd
cmp r8, 0x18
je 0x51a165
cmp r8, 0x20
je 0x51a13e
mov qword [rsp + 0x20], r8
mov rcx, rdi
lea rdi, [rsp + 0x588]
nop word [rax + rax]
nop word [rax + rax]
nop
mov qword [rsp - 0x10], rbp
lea rbp, [rsp - 0x10]
call fcn.0046d9b8
mov rbp, qword [rbp]
mov rbx, r8
shl r8, 1
mov qword [rsp + 0xc0], r8
cmp r8, 0x40
jg 0x51a0d6
mov edx, 0x40
lea rdi, [rsp + 0x588]
jmp 0x51a122
lea rax, [0x0055ebe0]
xor ebx, ebx
mov rcx, r8
call fcn.00466d20
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x7a8]
mov r8, qword [rsp + 0xc0]
mov r9, qword [rsp + 0x7a0]
mov r10, qword [rsp + 0x798]
mov rdx, r8
mov rdi, rax
mov rax, qword [rsp + 0x7c0]
cmp rdx, r8
jb 0x51a8df
mov qword [rsp + 0xa8], rdx
xor r11d, r11d
xor r12d, r12d
jmp 0x51a606
mov rcx, rdi
lea rdi, [rsp + 0xc8]
mov qword [rsp - 0x10], rbp
lea rbp, [rsp - 0x10]
call fcn.0046d9b8
mov rbp, qword [rbp]
xor edx, edx
xor ebx, ebx
jmp 0x51a4b8
mov rcx, rdi
lea rdi, [rsp + 0x2c8]
nop word [rax + rax]
nop dword [rax]
mov qword [rsp - 0x10], rbp
lea rbp, [rsp - 0x10]
call fcn.0046d9e6
mov rbp, qword [rbp]
xor edx, edx
xor ebx, ebx
jmp 0x51a290
mov qword [rsp + 0x30], rdx
mov rax, qword [r10 + rdx*8]
lea rcx, [rsp + rdx*8 + 0x2c8]
mov qword [rsp + 0x790], rcx
mov qword [rsp], rcx
mov qword [rsp + 8], r9
mov qword [rsp + 0x10], rax
call fcn.0051b220
xorps xmm15, xmm15
mov r14, qword [0x007420f0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
mov rax, qword [rsp + 0x18]
mov qword [rsp + 0x68], rax
mov rcx, qword [rsp + 0x30]
mov rdx, qword [rsp + rcx*8 + 0x2c8]
mov rbx, qword [rsp + 0x7d8]
mov rsi, qword [rbx + 0x10]
mov rdi, qword [rsp + 0x790]
mov qword [rsp], rdi
mov rdi, qword [rsp + 0x7a8]
mov qword [rsp + 8], rdi
imul rdx, rsi
mov qword [rsp + 0x10], rdx
nop
call fcn.0051b220
xorps xmm15, xmm15
mov r14, qword [0x007420f0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
mov rax, qword [rsp + 0x18]
mov rdx, qword [rsp + 0x30]
lea rcx, [rdx + 1]
mov rbx, qword [rsp + 0x88]
neg ebx
mov rbx, qword [rsp + 0x68]
adc rax, rbx
mov qword [rsp + rdx*8 + 0x388], rax
sbb rbx, rbx
neg rbx
mov rax, qword [rsp + 0x7c0]
mov rsi, qword [rsp + 0x7a8]
mov r9, qword [rsp + 0x7a0]
mov r10, qword [rsp + 0x798]
mov rdx, rcx
mov rcx, qword [rsp + 0x7d8]
mov qword [rsp + 0x88], rbx
nop dword [rax + rax]
cmp rdx, 0x18
jl 0x51a19c
cmp qword [rax + 0x10], 0x18
jl 0x51a2fc
mov rsi, qword [rax + 8]
test rsi, rsi
je 0x51a2e4
mov rcx, qword [rax]
shl rsi, 3
mov rbx, rsi
mov rax, rcx
call fcn.0046de20
mov rax, qword [rsp + 0x7c0]
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x88]
mov rdx, qword [rax + 0x10]
cmp rdx, 0x18
jb 0x51a3b7
mov qword [rax + 8], 0x18
jmp 0x51a356
lea rax, [0x0055ebe0]
mov ebx, 0x18
mov rcx, rbx
call fcn.00466d20
mov rdx, qword [rsp + 0x7c0]
mov qword [rdx + 8], 0x18
mov qword [rdx + 0x10], 0x18
cmp dword [0x007421a0], 0
je 0x51a340
call fcn.0046d3c0
mov qword [r11], rax
mov rsi, qword [rdx]
mov qword [r11 + 8], rsi
mov qword [rdx], rax
mov rax, rdx
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x88]
mov rdx, qword [rax]
mov rsi, qword [rax + 8]
cmp rsi, 0x18
mov edi, 0x18
cmovg rsi, rdi
lea rdi, [rsp + 0x388]
cmp rdx, rdi
je 0x51a3a1
shl rsi, 3
mov rax, rdx
mov rbx, rdi
mov rcx, rsi
call fcn.0046e120
mov rax, qword [rsp + 0x7c0]
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x88]
call fcn.00519ca0
mov rax, qword [rsp + 0x7c0]
add rsp, 0x7b0
pop rbp
ret
mov ecx, 0x18
nop dword [rax]
call fcn.0046d7e0
mov qword [rsp + 0x28], rdx
mov rax, qword [r10 + rdx*8]
lea rcx, [rsp + rdx*8 + 0xc8]
mov qword [rsp + 0x790], rcx
mov qword [rsp], rcx
mov qword [rsp + 8], r9
mov qword [rsp + 0x10], rax
call fcn.0051b7e0
xorps xmm15, xmm15
mov r14, qword [0x007420f0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
mov rax, qword [rsp + 0x18]
mov qword [rsp + 0x60], rax
mov rcx, qword [rsp + 0x28]
mov rdx, qword [rsp + rcx*8 + 0xc8]
mov rbx, qword [rsp + 0x7d8]
mov rsi, qword [rbx + 0x10]
mov rdi, qword [rsp + 0x790]
mov qword [rsp], rdi
mov rdi, qword [rsp + 0x7a8]
mov qword [rsp + 8], rdi
imul rdx, rsi
mov qword [rsp + 0x10], rdx
call fcn.0051b7e0
xorps xmm15, xmm15
mov r14, qword [0x007420f0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
mov rax, qword [rsp + 0x18]
mov rdx, qword [rsp + 0x28]
lea rcx, [rdx + 1]
mov rbx, qword [rsp + 0x80]
neg ebx
mov rbx, qword [rsp + 0x60]
adc rax, rbx
mov qword [rsp + rdx*8 + 0x1c8], rax
sbb rbx, rbx
neg rbx
mov rax, qword [rsp + 0x7c0]
mov rsi, qword [rsp + 0x7a8]
mov r9, qword [rsp + 0x7a0]
mov r10, qword [rsp + 0x798]
mov rdx, rcx
mov rcx, qword [rsp + 0x7d8]
mov qword [rsp + 0x80], rbx
cmp rdx, 0x20
jl 0x51a3c5
cmp qword [rax + 0x10], 0x20
jl 0x51a51c
mov rsi, qword [rax + 8]
test rsi, rsi
je 0x51a504
mov rcx, qword [rax]
shl rsi, 3
mov rbx, rsi
mov rax, rcx
call fcn.0046de20
mov rax, qword [rsp + 0x7c0]
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x80]
mov rdx, qword [rax + 0x10]
cmp rdx, 0x20
jb 0x51a5cb
mov qword [rax + 8], 0x20
jmp 0x51a576
lea rax, [0x0055ebe0]
mov ebx, 0x20
mov rcx, rbx
call fcn.00466d20
mov rdx, qword [rsp + 0x7c0]
mov qword [rdx + 8], 0x20
mov qword [rdx + 0x10], 0x20
cmp dword [0x007421a0], 0
je 0x51a560
call fcn.0046d3c0
mov qword [r11], rax
mov rsi, qword [rdx]
mov qword [r11 + 8], rsi
mov qword [rdx], rax
mov rax, rdx
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x80]
mov rdx, qword [rax]
mov rsi, qword [rax + 8]
cmp rsi, 0x20
mov edi, 0x20
cmovg rsi, rdi
lea rdi, [rsp + 0x1c8]
cmp rdx, rdi
je 0x51a5c1
shl rsi, 3
mov rax, rdx
mov rbx, rdi
mov rcx, rsi
call fcn.0046e120
mov rax, qword [rsp + 0x7c0]
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x80]
call fcn.00519ca0
jmp 0x51a3a6
mov ecx, 0x20
call fcn.0046d7e0
lea r11, [r10 + 1]
neg r12d
mov r15, qword [rsp + 0x58]
mov rcx, r13
mov r13, qword [rsp + 0x50]
adc r15, r13
mov qword [rdi + rcx*8], r15
sbb r12, r12
neg r12
mov r10, qword [rsp + 0x798]
mov rcx, qword [rsp + 0x7d8]
cmp r11, rbx
jge 0x51a690
lea r13, [r11 + rbx]
cmp r8, r13
jbe 0x51a8d4
mov r15, qword [r10 + r11*8]
cmp r11, r13
ja 0x51a8c9
mov qword [rsp + 0x48], r11
shl r11, 3
mov r10, qword [rsp + 0x48]
sub r10, rdx
sar r10, 0x3f
and r11, r10
lea r10, [rbx - 1]
add r11, rdi
cmp rbx, r10
jbe 0x51a8be
mov qword [rsp + 0xb8], r13
xor r10d, r10d
xor r10d, r10d
mov qword [rsp + 0x58], r10
xor r10d, r10d
jmp 0x51a849
mov r10, qword [rsp + 0x48]
mov r15, qword [rdi + r10*8]
mov rcx, qword [rcx + 0x10]
imul rcx, r15
xor r15d, r15d
xor r15d, r15d
mov qword [rsp + 0x50], r15
xor r15d, r15d
jmp 0x51a8b4
mov qword [rsp + 0x788], rdi
mov qword [rsp + 0xa0], r12
cmp qword [rax + 0x10], rbx
jl 0x51a70f
mov rsi, qword [rax + 8]
test rsi, rsi
je 0x51a6fa
mov rcx, qword [rax]
shl rsi, 3
mov rbx, rsi
mov rax, rcx
nop dword [rax]
call fcn.0046de20
mov rax, qword [rsp + 0x7c0]
mov rcx, qword [rsp + 0x7d8]
mov rdx, qword [rsp + 0xa8]
mov rbx, qword [rsp + 0x20]
mov rdi, qword [rsp + 0x788]
mov r8, qword [rsp + 0xc0]
mov r12, qword [rsp + 0xa0]
mov rsi, qword [rax + 0x10]
nop
cmp rsi, rbx
jb 0x51a7f0
mov qword [rax + 8], rbx
jmp 0x51a780
lea rax, [0x0055ebe0]
mov rcx, rbx
call fcn.00466d20
mov rdx, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x7c0]
mov qword [rsi + 8], rdx
mov qword [rsi + 0x10], rdx
cmp dword [0x007421a0], 0
je 0x51a74f
nop dword [rax]
call fcn.0046d3c0
mov qword [r11], rax
mov rdi, qword [rsi]
mov qword [r11 + 8], rdi
mov qword [rsi], rax
mov rax, rsi
mov rcx, qword [rsp + 0x7d8]
mov rbx, rdx
mov rdi, qword [rsp + 0x788]
mov r8, qword [rsp + 0xc0]
mov r12, qword [rsp + 0xa0]
mov rdx, qword [rsp + 0xa8]
cmp rbx, r8
ja 0x51a7e5
mov rsi, qword [rax]
mov r9, qword [rax + 8]
sub r8, rbx
mov r10, rbx
sub rbx, rdx
shl r10, 3
sar rbx, 0x3f
and rbx, r10
add rbx, rdi
cmp r9, r8
cmovg r9, r8
cmp rsi, rbx
je 0x51a7d6
shl r9, 3
mov rax, rsi
mov rcx, r9
call fcn.0046e120
mov rax, qword [rsp + 0x7c0]
mov rcx, qword [rsp + 0x7d8]
mov r12, qword [rsp + 0xa0]
mov rbx, r12
call fcn.00519ca0
nop
jmp 0x51a3a6
mov rax, rbx
mov rcx, r8
call fcn.0046d820
mov rcx, rbx
mov rdx, rsi
call fcn.0046d7e0
mov rax, qword [r9 + r10*8]
mul r15
mov r8, qword [r11 + r10*8]
lea r13, [r10 + 1]
add r8, rax
adc rdx, 0
mov rax, qword [rsp + 0x58]
add rax, r8
mov qword [r11 + r10*8], rax
adc rdx, 0
mov rax, qword [rsp + 0x7c0]
mov r8, qword [rsp + 0xc0]
mov r10, r13
mov qword [rsp + 0x58], rdx
mov rdx, qword [rsp + 0xa8]
mov r13, qword [rsp + 0xb8]
cmp r10, rbx
jl 0x51a7fb
jmp 0x51a66c
mov rax, qword [rsi + r15*8]
mov qword [rsp + 0xb0], rax
mov rax, rcx
mov r9, qword [rsp + 0xb0]
mul r9
mov r9, qword [r11 + r15*8]
lea r8, [r15 + 1]
add r9, rax
adc rdx, 0
mov rax, qword [rsp + 0x50]
add rax, r9
mov qword [r11 + r15*8], rax
adc rdx, 0
mov rax, qword [rsp + 0x7c0]
mov r9, qword [rsp + 0x7a0]
mov r15, r8
mov qword [rsp + 0x50], rdx
mov rdx, qword [rsp + 0xa8]
mov r8, qword [rsp + 0xc0]
cmp r15, rbx
jl 0x51a853
jmp 0x51a5d5
mov rax, r10
mov rcx, rbx
call fcn.0046d760
mov rax, r11
mov rcx, r13
call fcn.0046d820
mov rax, r13
mov rcx, r8
call fcn.0046d760
mov rcx, r8
call fcn.0046d7e0
mov qword [rsp + 0x40], rcx
mov rax, qword [r10 + rcx*8]
lea rdx, [rsp + rcx*8 + 0x548]
mov qword [rsp + 0x790], rdx
mov qword [rsp], rdx
mov qword [rsp + 8], r9
mov qword [rsp + 0x10], rax
call fcn.0051ad60
xorps xmm15, xmm15
mov r14, qword [0x007420f0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
mov rax, qword [rsp + 0x18]
mov qword [rsp + 0x78], rax
mov rcx, qword [rsp + 0x40]
mov rdx, qword [rsp + rcx*8 + 0x548]
mov rbx, qword [rsp + 0x7d8]
mov rsi, qword [rbx + 0x10]
mov rdi, qword [rsp + 0x790]
mov qword [rsp], rdi
mov rdi, qword [rsp + 0x7a8]
mov qword [rsp + 8], rdi
imul rdx, rsi
mov qword [rsp + 0x10], rdx
call fcn.0051ad60
xorps xmm15, xmm15
mov r14, qword [0x007420f0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
mov rax, qword [rsp + 0x18]
mov rcx, qword [rsp + 0x40]
lea rdx, [rcx + 1]
mov rbx, qword [rsp + 0x98]
neg ebx
mov rbx, qword [rsp + 0x78]
adc rax, rbx
mov qword [rsp + rcx*8 + 0x568], rax
sbb rax, rax
neg rax
mov rsi, qword [rsp + 0x7a8]
mov rdi, qword [rsp + 0x7d8]
mov r9, qword [rsp + 0x7a0]
mov r10, qword [rsp + 0x798]
mov rcx, rdx
mov rdx, rax
mov rax, qword [rsp + 0x7c0]
mov qword [rsp + 0x98], rdx
cmp rcx, 4
jl 0x51a8e7
cmp qword [rax + 0x10], 4
jl 0x51aa3e
mov rbx, qword [rax + 8]
test rbx, rbx
je 0x51aa26
mov rcx, qword [rax]
shl rbx, 3
mov rax, rcx
call fcn.0046de20
mov rax, qword [rsp + 0x7c0]
mov rdx, qword [rsp + 0x98]
mov rdi, qword [rsp + 0x7d8]
mov rsi, qword [rax + 0x10]
cmp rsi, 4
jb 0x51aaee
mov qword [rax + 8], 4
jmp 0x51aa98
lea rax, [0x0055ebe0]
mov ebx, 4
mov rcx, rbx
call fcn.00466d20
mov rdx, qword [rsp + 0x7c0]
mov qword [rdx + 8], 4
mov qword [rdx + 0x10], 4
cmp dword [0x007421a0], 0
je 0x51aa82
call fcn.0046d3c0
mov qword [r11], rax
mov rsi, qword [rdx]
mov qword [r11 + 8], rsi
mov qword [rdx], rax
mov rax, rdx
mov rdx, qword [rsp + 0x98]
mov rdi, qword [rsp + 0x7d8]
mov rsi, qword [rax]
mov rcx, qword [rax + 8]
cmp rcx, 4
mov r8d, 4
cmovg rcx, r8
lea rbx, [rsp + 0x568]
cmp rsi, rbx
je 0x51aade
shl rcx, 3
mov rax, rsi
call fcn.0046e120
mov rax, qword [rsp + 0x7c0]
mov rdx, qword [rsp + 0x98]
mov rdi, qword [rsp + 0x7d8]
mov rbx, rdx
mov rcx, rdi
call fcn.00519ca0
jmp 0x51a3a6
mov ecx, 4
mov rdx, rsi
call fcn.0046d7e0
mov qword [rsp + 0x38], rdx
mov rax, qword [r10 + rdx*8]
lea rcx, [rsp + rdx*8 + 0x448]
mov qword [rsp + 0x790], rcx
mov qword [rsp], rcx
mov qword [rsp + 8], r9
mov qword [rsp + 0x10], rax
call fcn.0051ae80
xorps xmm15, xmm15
mov r14, qword [0x007420f0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
mov rax, qword [rsp + 0x18]
mov qword [rsp + 0x70], rax
mov rcx, qword [rsp + 0x38]
mov rdx, qword [rsp + rcx*8 + 0x448]
mov rbx, qword [rsp + 0x7d8]
mov rsi, qword [rbx + 0x10]
mov rdi, qword [rsp + 0x790]
mov qword [rsp], rdi
mov rdi, qword [rsp + 0x7a8]
mov qword [rsp + 8], rdi
imul rdx, rsi
mov qword [rsp + 0x10], rdx
nop
call fcn.0051ae80
xorps xmm15, xmm15
mov r14, qword [0x007420f0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
mov rax, qword [rsp + 0x18]
mov rdx, qword [rsp + 0x38]
lea rcx, [rdx + 1]
mov rbx, qword [rsp + 0x90]
neg ebx
mov rbx, qword [rsp + 0x70]
adc rax, rbx
mov qword [rsp + rdx*8 + 0x4c8], rax
sbb rbx, rbx
neg rbx
mov rax, qword [rsp + 0x7c0]
mov rsi, qword [rsp + 0x7a8]
mov r9, qword [rsp + 0x7a0]
mov r10, qword [rsp + 0x798]
mov rdx, rcx
mov rcx, qword [rsp + 0x7d8]
mov qword [rsp + 0x90], rbx
nop dword [rax + rax]
cmp rdx, 0x10
jl 0x51aafb
cmp qword [rax + 0x10], 0x10
jl 0x51ac5c
mov rsi, qword [rax + 8]
test rsi, rsi
je 0x51ac44
mov rcx, qword [rax]
shl rsi, 3
mov rbx, rsi
mov rax, rcx
call fcn.0046de20
mov rax, qword [rsp + 0x7c0]
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x90]
mov rdx, qword [rax + 0x10]
cmp rdx, 0x10
jb 0x51ad0b
mov qword [rax + 8], 0x10
jmp 0x51acb6
lea rax, [0x0055ebe0]
mov ebx, 0x10
mov rcx, rbx
call fcn.00466d20
mov rdx, qword [rsp + 0x7c0]
mov qword [rdx + 8], 0x10
mov qword [rdx + 0x10], 0x10
cmp dword [0x007421a0], 0
je 0x51aca0
call fcn.0046d3c0
mov qword [r11], rax
mov rsi, qword [rdx]
mov qword [r11 + 8], rsi
mov qword [rdx], rax
mov rax, rdx
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x90]
mov rdx, qword [rax]
mov rsi, qword [rax + 8]
cmp rsi, 0x10
mov edi, 0x10
cmovg rsi, rdi
lea rdi, [rsp + 0x4c8]
cmp rdx, rdi
je 0x51ad01
shl rsi, 3
mov rax, rdx
mov rbx, rdi
mov rcx, rsi
call fcn.0046e120
mov rax, qword [rsp + 0x7c0]
mov rcx, qword [rsp + 0x7d8]
mov rbx, qword [rsp + 0x90]
call fcn.00519ca0
jmp 0x51a3a6
mov ecx, 0x10
call fcn.0046d7e0
mov rcx, r8
call fcn.0046d7e0
mov rcx, r8
call fcn.0046d7e0
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
call fcn.0046b480
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
jmp fcn.00519f80