Function at 0x1401ae97d
Capabilities:
Load assembly via iassembly

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x4f8
mov rsi, r8
mov rbx, rdx
mov r15, rcx
mov rax, qword [rdx]
add rax, 0xfffffffffffffffa
cmp rax, 2
ja 0x1401aea37
cmp rax, 1
je 0x1401aea37
test rax, rax
jne 0x1401aec59
mov rax, qword [rbx + 8]
mov qword [rbx], 8
cmp rax, 1
ja 0x1401aec60
lea rdx, [rbx + 8]
lea rcx, [rsp + 0x150]
mov r8d, 0x1f0
call sub.msvcrt.dll_memcpy
lea rdx, [rsp + 0x330]
lea rdi, [rsp + 0x298]
mov r9b, byte [rdx + 8]
lea rcx, [rsp + 0x340]
mov r8, rdi
call fcn.1401b087c
cmp byte [rsp + 0x340], 3
jne 0x1401aea58
lea rcx, [rsp + 0x150]
call fcn.1401ad4cb
mov edi, 5
mov bpl, 2
xor r12d, r12d
xor r14d, r14d
jmp 0x1401aeb93
mov rcx, r15
mov rdx, rbx
mov r8, rsi
add rsp, 0x4f8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.1401aedbc
lea r13, [rsp + 0x340]
mov rax, qword [r13 + 0x30]
mov qword [rsp + 0xe7], rax
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmm2, xmmword [r13 + 0x20]
movups xmmword [rsp + 0xd7], xmm2
movups xmmword [rsp + 0xc7], xmm1
movups xmmword [rsp + 0xb7], xmm0
mov qword [rsp + 0x58], rsi
lea rsi, [rsp + 0x150]
mov ecx, 0x10
mov rdi, r13
rep movsq qword [rdi], qword [rsi]
lea rbp, [rsp + 0x2c8]
lea rdi, [rsp + 0x3c0]
mov ecx, 0xb
mov rsi, rbp
rep movsq qword [rdi], qword [rsi]
mov al, byte [rbp + 0x71]
mov byte [rsp + 0x2f], al
mov rax, qword [rbp + 0x68]
mov qword [rsp + 0x50], rax
mov rdi, qword [rbp - 0xf8]
mov r14, qword [rbp - 0xf0]
mov rax, qword [rbp - 0xe8]
mov qword [rsp + 0x38], rax
mov r12b, byte [rbp - 0xe0]
lea rsi, [rsp + 0x1e9]
lea rcx, [rsp + 0xf9]
mov r8d, 0x57
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov cl, byte [rsi + 0x57]
movups xmm0, xmmword [rsi + 0x58]
movaps xmmword [rsp + 0x60], xmm0
mov rax, qword [rsi + 0x67]
mov qword [rsp + 0x6f], rax
mov rax, qword [rbp + 0x58]
mov qword [rsp + 0x40], rax
mov rax, qword [rbp + 0x60]
mov qword [rsp + 0x48], rax
movups xmm0, xmmword [rsi + 0x6f]
movups xmmword [rsp + 0x77], xmm0
movups xmm0, xmmword [rsi + 0x7f]
mov rsi, qword [rsp + 0x58]
movups xmmword [rsp + 0x87], xmm0
movups xmm0, xmmword [rbp - 0x50]
movups xmmword [rsp + 0x97], xmm0
movups xmm0, xmmword [rbp - 0x40]
mov ebp, ecx
movups xmmword [rsp + 0xa7], xmm0
lea rcx, [rsp + 0x420]
mov r8d, 0xd8
mov rdx, r13
call sub.msvcrt.dll_memcpy
lea rcx, [rsp + 0x298]
call fcn.1401aa4a0
mov rcx, rbx
call fcn.1401aa147
mov qword [rbx], rdi
mov qword [rbx + 8], r14
mov rax, qword [rsp + 0x38]
mov qword [rbx + 0x10], rax
mov byte [rbx + 0x18], r12b
lea rcx, [rbx + 0x19]
lea rdx, [rsp + 0xf9]
mov r8d, 0x57
call sub.msvcrt.dll_memcpy
mov byte [rbx + 0x70], bpl
lea rcx, [rbx + 0x71]
lea rdx, [rsp + 0x60]
mov r8d, 0x8f
call sub.msvcrt.dll_memcpy
mov rax, qword [rsp + 0x40]
mov qword [rbx + 0x100], rax
mov rax, qword [rsp + 0x48]
mov qword [rbx + 0x108], rax
mov rax, qword [rsp + 0x50]
mov qword [rbx + 0x110], rax
mov al, byte [rsp + 0x2f]
mov byte [rbx + 0x118], al
lea rcx, [rbx + 0x119]
lea rdx, [rsp + 0x419]
mov r8d, 0xdf
call sub.msvcrt.dll_memcpy
add rdi, 0xfffffffffffffffa
cmp rdi, 2
ja 0x1401aec36
cmp rdi, 1
jne 0x1401aec96
mov rcx, r15
mov rdx, rbx
mov r8, rsi
call fcn.1401aedbc
nop
add rsp, 0x4f8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov qword [rbx], 8
lea rax, str.internal_error:_entered_unreachable_code:_lazy_state_wrong
lea rcx, [rsp + 0x340]
mov qword [rcx], rax
mov qword [rcx + 8], 1
lea rax, [rsp + 0x30]
mov qword [rcx + 0x10], rax
xorps xmm0, xmm0
movups xmmword [rcx + 0x18], xmm0
lea rdx, [0x1402ef390]
call fcn.14015c040
lea rcx, str.internal_error:_entered_unreachable_codeUtf8Errorvalid_up_to
lea r8, [0x1402ef328]
mov edx, 0x28
call fcn.14015d2f0
mov rsi, rax
mov qword [rbx], rdi
mov qword [rbx + 8], r14
mov rax, qword [rsp + 0x38]
mov qword [rbx + 0x10], rax
mov byte [rbx + 0x18], r12b
lea rcx, [rbx + 0x19]
lea rdx, [rsp + 0xf9]
mov r8d, 0x57
call sub.msvcrt.dll_memcpy
mov byte [rbx + 0x70], bpl
lea rcx, [rbx + 0x71]
lea rdx, [rsp + 0x60]
mov r8d, 0x8f
call sub.msvcrt.dll_memcpy
mov rax, qword [rsp + 0x40]
mov qword [rbx + 0x100], rax
mov rax, qword [rsp + 0x48]
mov qword [rbx + 0x108], rax
mov rax, qword [rsp + 0x50]
mov qword [rbx + 0x110], rax
mov al, byte [rsp + 0x2f]
mov byte [rbx + 0x118], al
add rbx, 0x119
lea rdx, [rsp + 0x419]
mov r8d, 0xdf
mov rcx, rbx
call sub.msvcrt.dll_memcpy
mov rcx, rsi
call fcn.140272fa0
mov rsi, rax
mov rax, qword [rsp + 0x330]
test rax, rax
je 0x1401aed6a
lock dec qword [rax]
jne 0x1401aed6a
mov rcx, qword [rsp + 0x330]
call fcn.1401aa924
mov rcx, rdi
call fcn.1401aa4a0
lea rcx, [rsp + 0x150]
call fcn.1401ae41a
lea rcx, [rsp + 0x2c8]
call fcn.1401a880d
lea rcx, [rsp + 0x1d0]
call fcn.1401adae3
mov rax, qword [rsp + 0x320]
lock dec qword [rax]
jne 0x1401aed3f
lea rcx, [rsp + 0x320]
call fcn.140237ba2
jmp 0x1401aed3f