Function at 0x140133ec0
Capabilities:
Load assembly via iassembly

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x938
movaps xmmword [rsp + 0x920], xmm6
mov rdi, r8
mov rsi, rdx
mov r13, rcx
mov qword [rsp + 0x100], 0
mov qword [rsp + 0x108], 4
mov qword [rsp + 0xd0], 1
mov qword [rsp + 0xd8], 1
movzx eax, byte [0x14036c240]
mov rcx, qword [0x14036c198]
test rcx, rcx
jne 0x140133f3f
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x140136a84
mov rcx, rax
mov qword [0x14036c198], rax
mov r8d, 0xd0
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x140136a84
mov rbx, rax
lea rdx, [rsp + 0xd0]
mov r8d, 0xd0
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov qword [rsp + 0x30], rbx
lock inc qword [rbx]
jle 0x140136a80
lea rcx, [rsp + 0x740]
mov r8d, 0x110
mov rdx, rdi
call sub.msvcrt.dll_memcpy
mov rax, qword [rdi + 0x110]
mov r14, qword [rdi + 0x130]
mov r12d, 2
cmp rax, 2
je 0x140134326
mov r15, qword [rdi + 0x118]
mov rbx, qword [rdi + 0x120]
mov rdi, qword [rdi + 0x128]
test rax, rax
je 0x140133fdb
mov ecx, 1
mov rax, rdi
mov rdx, r14
jmp 0x140134146
lea rcx, [rsp + 0xd0]
mov rdx, 0xfffffffffffffffe
xor r8d, r8d
call fcn.14008a910
mov rax, qword [rsp + 0xf0]
mov qword [rsp + 0x300], rax
movups xmm0, xmmword [rsp + 0xd0]
movups xmm1, xmmword [rsp + 0xe0]
movaps xmmword [rsp + 0x2f0], xmm1
movaps xmmword [rsp + 0x2e0], xmm0
movups xmm0, xmmword [rsp + 0x118]
movaps xmmword [rsp + 0x5c0], xmm0
movups xmm1, xmmword [rsp + 0x108]
movaps xmmword [rsp + 0x5b0], xmm1
movups xmm2, xmmword [rsp + 0xf8]
movaps xmmword [rsp + 0x5a0], xmm2
mov qword [rsp + 0x308], r15
mov qword [rsp + 0x310], rbx
mov qword [rsp + 0x318], rdi
mov qword [rsp + 0x320], r14
movaps xmmword [rsp + 0xf0], xmm0
movaps xmmword [rsp + 0xe0], xmm1
movaps xmmword [rsp + 0xd0], xmm2
movzx eax, byte [0x14036c240]
mov rcx, qword [0x14036c198]
test rcx, rcx
jne 0x1401340b5
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x140136cd6
mov rcx, rax
mov qword [0x14036c198], rax
mov r8d, 0x30
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x140136cd6
mov rbx, rax
movaps xmm0, xmmword [rsp + 0x5a0]
movaps xmm1, xmmword [rsp + 0x5b0]
movaps xmm2, xmmword [rsp + 0x5c0]
movups xmmword [rax + 0x20], xmm2
movups xmmword [rax + 0x10], xmm1
movups xmmword [rax], xmm0
movaps xmm0, xmmword [rsp + 0x2e0]
movaps xmm1, xmmword [rsp + 0x2f0]
movaps xmm2, xmmword [rsp + 0x300]
movaps xmmword [rsp + 0x5a0], xmm0
movaps xmmword [rsp + 0x5b0], xmm1
movaps xmmword [rsp + 0x5c0], xmm2
mov rax, qword [rsp + 0x310]
mov qword [rsp + 0x5d0], rax
lea rax, [0x1402ebf88]
xor r15d, r15d
mov r12, rdi
xor edx, edx
mov rcx, rdi
mov rdi, r14
mov r8, qword [rsp + 0x5d0]
mov qword [rsp + 0x100], r8
movaps xmm0, xmmword [rsp + 0x5a0]
movaps xmm1, xmmword [rsp + 0x5b0]
movaps xmm2, xmmword [rsp + 0x5c0]
movaps xmmword [rsp + 0xf0], xmm2
movaps xmmword [rsp + 0xe0], xmm1
movaps xmmword [rsp + 0xd0], xmm0
mov qword [rsp + 0x108], r12
mov qword [rsp + 0x110], r14
mov qword [rsp + 0x6b8], r15
mov qword [rsp + 0x6c0], rbx
mov qword [rsp + 0x6c8], rax
mov qword [rsp + 0x6d0], rdx
test rcx, rcx
je 0x14013423f
movups xmm0, xmmword [0x1402f1380]
movaps xmmword [rsp + 0x520], xmm0
movups xmm0, xmmword [0x1402f1370]
movaps xmmword [rsp + 0x510], xmm0
lea rcx, [rsp + 0x2e0]
mov rdx, rdi
call fcn.14007f2f0
lea rdx, [rsp + 0x768]
lea rcx, [rsp + 0x5a0]
lea r8, [rsp + 0x510]
lea r9, [rsp + 0x2e0]
call fcn.140154280
cmp byte [rsp + 0x5c0], 2
je 0x14013423f
mov rax, qword [rsp + 0x5a0]
mov rdx, qword [rsp + 0x5a8]
lea rcx, [rsp + 0x5b8]
mov r8, qword [rsp + 0x5b0]
call qword [rax + 0x10]
mov rax, qword [rsp + 0x6b8]
mov rcx, qword [rsp + 0x6c0]
mov rdx, qword [rsp + 0x6c8]
mov qword [rsp + 0x2f0], rdx
mov rdx, qword [rsp + 0x6d0]
mov qword [rsp + 0x2f8], rdx
mov qword [rsp + 0x2e0], rax
mov qword [rsp + 0x2e8], rcx
cmp qword [rsp + 0x740], 0
je 0x14013429a
lea rdi, [rsp + 0x748]
mov rcx, rdi
call fcn.1401584e0
mov qword [rsp + 0x740], 1
mov rax, qword [rsp + 0x2e0]
mov rcx, qword [rsp + 0x2e8]
mov rdx, qword [rsp + 0x2f0]
mov r8, qword [rsp + 0x2f8]
mov qword [rsp + 0x748], rax
mov qword [rsp + 0x750], rcx
mov qword [rsp + 0x758], rdx
mov qword [rsp + 0x760], r8
movaps xmm0, xmmword [rsp + 0xd0]
movaps xmm1, xmmword [rsp + 0xe0]
movaps xmm2, xmmword [rsp + 0xf0]
movaps xmmword [rsp + 0x2e0], xmm0
movaps xmmword [rsp + 0x2f0], xmm1
movaps xmmword [rsp + 0x300], xmm2
mov rax, qword [rsp + 0x100]
mov qword [rsp + 0x310], rax
lea rdi, [rsp + 0xd0]
lea rdx, [rsp + 0x740]
mov r8d, 0x110
mov rcx, rdi
call sub.msvcrt.dll_memcpy
movaps xmm0, xmmword [rsp + 0x2e0]
movaps xmm1, xmmword [rsp + 0x2f0]
movaps xmm2, xmmword [rsp + 0x300]
movups xmmword [rsp + 0x1e0], xmm0
movups xmmword [rsp + 0x1f0], xmm1
movups xmmword [rsp + 0x200], xmm2
mov rax, qword [rsp + 0x310]
mov qword [rsp + 0x210], rax
lea rcx, [rsp + 0x5a0]
mov r8d, 0x110
mov rdx, rdi
call sub.msvcrt.dll_memcpy
mov rax, qword [rsp + 0x210]
mov qword [rsp + 0x4f0], rax
movups xmm0, xmmword [rsp + 0x1e0]
movups xmm1, xmmword [rsp + 0x1f0]
movups xmm2, xmmword [rsp + 0x200]
movaps xmmword [rsp + 0x4e0], xmm2
movaps xmmword [rsp + 0x4d0], xmm1
movaps xmmword [rsp + 0x4c0], xmm0
mov qword [rsp + 0x4f8], r12
mov qword [rsp + 0x500], r14
mov rdi, qword [rsp + 0x638]
mov r15, qword [rsp + 0x648]
test r15, r15
je 0x140134453
setns bl
js 0x140136b2d
movzx eax, byte [0x14036c240]
mov rcx, qword [0x14036c198]
test rcx, rcx
mov r14, qword [rsp + 0x30]
jne 0x140134434
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x140134443
mov rcx, rax
mov qword [0x14036c198], rax
xor edx, edx
mov r8, r15
call sub.kernel32.dll_HeapAlloc
test rax, rax
jne 0x14013445d
movzx ecx, bl
mov rdx, r15
call fcn.140004360
jmp 0x140136dec
mov eax, 1
mov r14, qword [rsp + 0x30]
mov qword [rsp + 0xc8], rax
mov rcx, rax
mov rdx, rdi
mov r8, r15
call sub.msvcrt.dll_memcpy
mov eax, dword [rsp + 0x654]
mov dword [rsp + 0x90], eax
mov eax, dword [rsp + 0x658]
mov dword [rsp + 0x94], eax
mov eax, dword [rsp + 0x65c]
mov dword [rsp + 0x98], eax
mov eax, dword [rsp + 0x660]
mov dword [rsp + 0x9c], eax
movups xmm0, xmmword [rsp + 0x668]
movaps xmmword [rsp + 0x480], xmm0
movzx eax, byte [rsp + 0x678]
mov byte [rsp + 0x490], al
mov r12d, dword [rsp + 0x688]
cmp r12d, 0x3b9aca00
jne 0x1401344e5
lea rax, [rsi + 8]
mov r12d, dword [rsi + 0x10]
jmp 0x1401344ed
lea rax, [rsp + 0x680]
mov rcx, qword [rsi]
mov qword [rsp + 0x4a0], rcx
mov rsi, qword [rcx + 0x10]
test rsi, rsi
mov qword [rsp + 0x48], r15
je 0x140136ae0
movzx ecx, word [rsp + 0x650]
mov word [rsp + 0x3c], cx
movzx ecx, word [rsp + 0x652]
mov word [rsp + 0x3e], cx
mov ecx, dword [rsp + 0x664]
mov dword [rsp + 0x8c], ecx
mov ecx, dword [rsp + 0x628]
mov dword [rsp + 0x7c], ecx
mov ecx, dword [rsp + 0x62c]
mov dword [rsp + 0x80], ecx
mov ecx, dword [rsp + 0x630]
mov dword [rsp + 0x84], ecx
mov ecx, dword [rsp + 0x634]
mov dword [rsp + 0x88], ecx
mov rax, qword [rax]
mov qword [rsp + 0x470], rax
mov rdi, qword [rsp + 0x5a0]
lea rdx, [rsp + 0x5a8]
lea rcx, [rsp + 0x740]
mov r8d, 0x108
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi + 0x1c8]
mov qword [rsp + 0x4b0], r13
mov dword [rsp + 0x2c], r12d
nop dword [rax]
test al, 1
jne 0x1401346ca
cmp rax, 0xfffffffffffffffe
je 0x140136dee
lea rcx, [rax + 2]
lock cmpxchg qword [rsi + 0x1c8], rcx
jne 0x1401345b0
mov rax, qword [rsp + 0x4a0]
mov rsi, qword [rax + 0x10]
mov qword [rsp + 0xd0], rdi
lea rdi, [rsp + 0xd8]
lea rdx, [rsp + 0x740]
mov r8d, 0x108
mov rcx, rdi
call sub.msvcrt.dll_memcpy
mov qword [rsp + 0x1e0], r14
mov ebx, 1
lock xadd qword [rsi + 0x88], rbx
mov r12, rbx
and r12, 0xffffffffffffffe0
mov r14, qword [rsi + 0x80]
mov rax, r12
sub rax, qword [r14 + 0x2300]
jne 0x14013624e
and ebx, 0x1f
imul rcx, rbx, 0x118
add rcx, r14
lea rdx, [rsp + 0xd0]
mov r8d, 0x118
call sub.msvcrt.dll_memmove
mov eax, 1
mov ecx, ebx
shl rax, cl
lock or qword [r14 + 0x2310], rax
mov rax, qword [rsi + 0x110]
mov r14, qword [rsp + 0x30]
mov r12d, dword [rsp + 0x2c]
nop word [rax + rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [rsi + 0x110], rcx
jne 0x140134680
test rax, rax
jne 0x1401346ef
mov rax, qword [rsi + 0x100]
mov rcx, qword [rsi + 0x108]
mov qword [rsi + 0x100], 0
lock and qword [rsi + 0x110], 0xfffffffffffffffd
test rax, rax
je 0x1401346ef
mov bl, 1
xor ebp, ebp
mov dil, 1
call qword [rax + 8]
jmp 0x1401346ef
lea rcx, [rsp + 0x2e0]
lea rdx, [rsp + 0x740]
mov r8d, 0x108
call sub.msvcrt.dll_memcpy
cmp rdi, 2
shr rax, 5
and ebx, 0x1f
cmp rax, rbx
seta bpl
xorps xmm6, xmm6
movabs r13, 0x100000000
jmp 0x140136281
xor ebp, ebp
pause
cmp qword [r14 + 0x2300], r12
je 0x14013463a
mov r15, r14
mov r14, qword [r14 + 0x2308]
test r14, r14
jne 0x140136370
mov r14, qword [r15 + 0x2300]
movzx eax, byte [0x14036c240]
mov rax, qword [0x14036c198]
test rax, rax
jne 0x1401362c3
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je case.0x140111922.86
mov qword [0x14036c198], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je case.0x140111922.86
mov rcx, rax
add r14, 0x20
mov qword [rax + 0x2300], r14
movups xmmword [rax + 0x2308], xmm6
mov qword [rax + 0x2318], 0
xor eax, eax
lock cmpxchg qword [r15 + 0x2308], rcx
jne 0x14013630e
mov r14, rcx
jmp 0x140136370
mov r14, rax
mov rax, qword [rax + 0x2300]
add rax, 0x20
mov qword [rcx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [r14 + 0x2308], rcx
je 0x140136370
mov rdx, rax
nop word cs:[rax + rax]
pause
mov rax, qword [rdx + 0x2300]
add rax, 0x20
mov qword [rcx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [rdx + 0x2308], rcx
mov rdx, rax
jne 0x140136340
nop word cs:[rax + rax]
mov rax, qword [r15 + 0x2310]
cmp eax, 0xffffffff
sete al
test bpl, al
je 0x140136270
mov rax, r15
lock cmpxchg qword [rsi + 0x80], r14
jne 0x140136270
mfence
mov rax, qword [rsi + 0x88]
mov qword [r15 + 0x2318], rax
lock or qword [r15 + 0x2310], r13
mov bpl, 1
jmp 0x140136272
mov ecx, 8
mov edx, 0xd0
call fcn.140004360
jmp 0x140136dec
add byte [rax], al
mov bl, 1
lea rcx, [0x1402ef99d]
call fcn.140004320
jmp 0x140136dec
add byte [rax], al
mov ecx, 8
mov edx, 0x30
call fcn.140004360
jmp 0x140136dec
mov ecx, 7
int 0x29
ud2