Function at 0x140018960
Capabilities:
Access peb ldr_data

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xd8
mov qword [rsp + 0x80], r9
mov ebp, r8d
mov qword [rsp + 0x68], rdx
mov r12d, ecx
mov rax, qword [0x14029a038]
xor rax, rsp
mov qword [rsp + 0xd0], rax
mov ecx, pe_nt_image_headers64
call fcn.14017b1d8
mov rdi, rax
mov rcx, rax
xor edx, edx
call fcn.14014cbe0
mov eax, ebp
mov rcx, rax
shl rcx, 4
mov qword [rsp + 0x58], rcx
add rcx, 8
mov qword [rsp + 0x30], rcx
test ebp, ebp
mov qword [rsp + 0x50], rdi
jne 0x140018d43
lea rax, [rdi + 0x58]
mov qword [rsp + 0x60], rax
xor r13d, r13d
xor r15d, r15d
xor eax, eax
mov qword [rsp + 0x40], rax
mov ebx, r12d
mov rcx, rdi
call fcn.14014cb60
mov rsi, rax
mov r14, qword [rsp + 0x30]
mov qword [rsp + 0x78], rbx
lea rdx, [r14 + rbx]
add rdx, rax
movabs rax, 0xaaaaaaaaaaaaaaaa
lea rbx, [rsp + 0xc8]
mov qword [rbx], rax
lea rcx, [rsp + 0xc0]
mov qword [rcx], rax
mov qword [rsp + 0x20], r13
mov r8, rdx
mov r9, rbx
call fcn.14014cd10
mov rdi, qword [rbx]
lea rbx, [rdi + rsi]
xorps xmm0, xmm0
movaps xmmword [rsp + 0xa0], xmm0
mov qword [rsp + 0xb0], 0
test r13, r13
jne 0x140018e0f
mov dword [rbx], ebp
mov rax, r14
shr rax, 0x20
jne 0x140018e8d
mov dword [rbx + 4], r14d
test ebp, ebp
jne 0x140018bc4
mov r12, qword [rsp + 0xc0]
mov qword [rsp + 0xc0], 0
mov r15, rbx
lea r13, [rbx + r14]
xor ebp, ebp
mov rax, qword [rsp + 0xa0]
test rax, rax
jne 0x140018ea7
mov rcx, qword [rsp + 0xc0]
mov qword [rsp + 0xc0], 0
test rcx, rcx
jne 0x140018edd
mov rcx, qword [rsp + 0x40]
test rcx, rcx
jne 0x140018d39
test ebp, ebp
jne 0x140018ef3
mov ecx, 0x88
call fcn.14017b1d8
mov rbx, rax
lea rax, [0x140272431]
mov qword [rbx + 8], rax
lea rax, [0x14026d250]
mov qword [rbx], rax
mov rdi, qword [rsp + 0x50]
mov qword [rbx + 0x10], rdi
xorps xmm0, xmm0
movups xmmword [rbx + 0x18], xmm0
xor eax, eax
mov qword [rbx + 0x28], rax
mov qword [rbx + 0x30], r12
mov word [rbx + 0x38], 0x100
mov byte [rbx + 0x3a], 1
mov qword [rbx + 0x40], r15
mov rcx, qword [rsp + 0x30]
mov qword [rbx + 0x48], rcx
mov qword [rbx + 0x50], r13
mov rcx, qword [rsp + 0x78]
mov qword [rbx + 0x58], rcx
movups xmmword [rbx + 0x60], xmm0
movups xmmword [rbx + 0x70], xmm0
mov qword [rbx + 0x80], rax
mov eax, dword [0x14029f580]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140018e24
lock inc dword [0x14029f570]
mov rcx, qword [rdi + 0x70]
mov qword [rdi + 0x70], rbx
test rcx, rcx
jne 0x140018f2d
mov rax, qword [rsp + 0x80]
mov rcx, qword [rax]
mov qword [rax], rdi
test rcx, rcx
jne 0x140018f43
mov rcx, qword [rsp + 0xd0]
xor rcx, rsp
call fcn.14017e7b0
mov eax, ebp
add rsp, 0xd8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x70], rbx
lea r12, [rax + rbx]
add r12, 8
mov r8, qword [rsp + 0x40]
sub r15, r8
movabs rcx, 0x2aaaaaaaaaaaaaab
mov rax, r15
imul rcx
mov r13, rdx
mov rax, rdx
shr rax, 0x3f
sar r13, 1
add r13, rax
mov rax, qword [rsp + 0xa0]
mov qword [rsp + 0x38], rax
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0x48], rax
lea rbp, [rsi + rdi]
add rbp, 0x14
lea rbx, [r8 + 8]
xor r15d, r15d
xor r14d, r14d
xor edi, edi
sub r13, 1
jb 0x140018fa2
mov rax, qword [rsp + 0x68]
mov rsi, qword [rax + r15]
mov rax, qword [rsi]
mov rax, qword [rax]
mov rcx, rsi
call qword [case.0x1401e7f70.0]
mov rcx, r14
shl rcx, 4
mov rdx, qword [rsp + 0x38]
add rcx, rdx
cmp rdx, qword [rsp + 0x48]
mov dword [rbp + r15 - 0xc], eax
mov eax, dword [rbx - 8]
mov dword [rbp + r15 - 8], eax
mov eax, dword [rbx - 4]
mov dword [rbp + r15 - 4], eax
mov eax, dword [rbx]
mov dword [rbp + r15], eax
mov r9d, 0
cmovne r9, rcx
mov r8, rdi
shl r8, 4
mov rax, qword [rsp + 0x60]
add r8, qword [rax]
mov rax, qword [rsi]
mov rax, qword [rax + 0xc0]
mov rcx, rsi
mov rdx, r12
call qword [case.0x1401e7f70.0]
test al, al
je 0x140018f52
mov eax, dword [rbx - 8]
mov ecx, dword [rbx - 4]
add r12, rax
add rdi, rcx
mov eax, dword [rbx]
add r14, rax
add r15, 0x10
add rbx, 0xc
cmp qword [rsp + 0x58], r15
jne 0x140018c2c
mov rcx, qword [rsp + 0xc0]
lea rdx, [rsp + 0x88]
mov rax, qword [rsp + 0x38]
mov qword [rdx], rax
mov rax, qword [rsp + 0x48]
mov qword [rdx + 8], rax
mov rax, qword [rsp + 0xb0]
mov qword [rdx + 0x10], rax
xorps xmm0, xmm0
movaps xmmword [rsp + 0xa0], xmm0
mov qword [rsp + 0xb0], 0
mov rax, qword [rcx]
mov rax, qword [rax + 0x30]
call qword [case.0x1401e7f70.0]
mov r14, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x70]
jmp 0x140018a7a
call fcn.14017b254
jmp 0x140018ad3
shl rax, 2
lea rsi, [rax + rax*2]
mov rcx, rsi
call fcn.14017b1d8
mov rcx, rax
mov qword [rsp + 0x40], rax
lea r15, [rax + rsi]
xor eax, eax
mov rcx, qword [rsp + 0x40]
add rcx, rax
je 0x140018fce
mov dword [rcx + 8], 0
mov qword [rcx], 0
add rax, 0xc
cmp rsi, rax
jne 0x140018d61
mov rbx, qword [rsp + 0x40]
add rbx, 8
xor edi, edi
xor esi, esi
xor r13d, r13d
mov rax, qword [rsp + 0x68]
mov rcx, qword [rax + rdi]
lea rdx, [rbx - 8]
lea r8, [rbx - 4]
mov rax, qword [rcx]
mov rax, qword [rax + 0xb8]
mov r9, rbx
call qword [case.0x1401e7f70.0]
mov eax, dword [rbx - 8]
mov ecx, dword [rbx - 4]
add qword [rsp + 0x30], rax
add rsi, rcx
mov eax, dword [rbx]
add r13, rax
add rdi, 0x10
add rbx, 0xc
cmp qword [rsp + 0x58], rdi
jne 0x140018d96
mov rdi, qword [rsp + 0x50]
lea rax, [rdi + 0x58]
mov qword [rsp + 0x60], rax
mov rax, qword [rdi + 0x60]
sub rax, qword [rdi + 0x58]
sar rax, 4
cmp rsi, rax
jbe 0x1400189e9
mov rcx, rdi
mov rdx, rsi
call fcn.14014cf50
jmp 0x1400189e9
lea rcx, [rsp + 0xa0]
mov rdx, r13
call fcn.140019020
jmp 0x140018a5f
lea rcx, [0x14029f580]
call fcn.14017b2bc
cmp dword [0x14029f580], 0xffffffff
jne 0x140018b6f
lea rax, [0x14026e0e0]
mov qword [0x14029f578], rax
lea rsi, [0x14029f578]
call fcn.140003150
lea rcx, [rsp + 0xa0]
mov byte [rcx], 1
mov qword [rsp + 0x20], rcx
lea r8, str.MojoMessages
mov rcx, rax
mov rdx, rsi
xor r9d, r9d
call fcn.140151290
lea rcx, [0x14029f580]
call fcn.14017b25c
jmp 0x140018b6f
mov ebp, 0xb
xor r12d, r12d
xor r15d, r15d
xor r13d, r13d
xor eax, eax
mov qword [rsp + 0x30], rax
jmp 0x140018a97
mov rsi, qword [rsp + 0xa8]
mov rdi, rax
cmp rsi, rax
je 0x140018ed0
add rsi, 0xfffffffffffffff0
mov rcx, rsi
call fcn.140170dc0
cmp rsi, rdi
jne 0x140018eb7
mov rdi, qword [rsp + 0xa0]
mov rcx, rdi
call fcn.14017b254
jmp 0x140018aa8
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x1401e7f70.0]
jmp 0x140018ac5
cmp qword [rsp + 0x50], 0
je 0x140018f0a
mov rcx, qword [rsp + 0x50]
mov edx, 1
call fcn.140171290
test r12, r12
je 0x140018b9e
mov rax, qword [r12]
mov rax, qword [rax]
mov rcx, r12
mov edx, 1
call qword [case.0x1401e7f70.0]
jmp 0x140018b9e
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x1401e7f70.0]
jmp 0x140018b87
mov edx, 1
call fcn.140171290
jmp 0x140018b9e
mov rax, qword [rsp + 0x48]
cmp qword [rsp + 0x38], rax
je 0x140018ffa
xor r12d, r12d
mov ebp, 3
mov rsi, qword [rsp + 0x38]
mov rcx, rsi
call fcn.140075200
add rsi, 0x10
mov r15d, 0
mov r13d, 0
mov eax, 0
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], rsi
cmp rsi, qword [rsp + 0x48]
jne 0x140018f6a
jmp 0x140018a97
lea rax, str.vector___index_out_of_bounds
mov qword [rsp + 0x20], rax
lea rcx, str._s:_d:_assertion__s_failed:__s
lea rdx, str....._buildtools_third_partylibc_trunkinclude_vector
lea r9, str.__n___size__
mov r8d, 0x587
call fcn.1401bdbc0
lea rax, str.null_pointer_given_to_construct_at
mov qword [rsp + 0x20], rax
lea rcx, str._s:_d:_assertion__s_failed:__s
lea rdx, str....._buildtools_third_partylibc_trunkinclude__memoryconstruct_at.h
lea r9, str.__location___nullptr
mov r8d, 0x23
call fcn.1401bdbc0
mov ebp, 3
xor r12d, r12d
xor r15d, r15d
xor r13d, r13d
xor eax, eax
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x38]
jmp 0x140018a9f