Function at 0x1400995a0
Capabilities:
Set socket configuration

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x498
movdqa xmmword [rsp + 0x480], xmm8
movdqa xmmword [rsp + 0x470], xmm7
movdqa xmmword [rsp + 0x460], xmm6
mov rbx, rcx
mov rsi, qword [rcx + 0xd8]
mov r14, qword [rcx + 0xe0]
mov rcx, rsi
call qword [r14 + 0xb8]
test rax, rax
je 0x140099658
mov rdi, rax
mov dword [rsp + 0x1d8], 0
mov rcx, qword [rax]
mov dword [rsp + 0x20], 4
lea r9, [rsp + 0x1d8]
mov edx, 0xffff
mov r8d, 0x1006
call sub.ws2_32.dll_setsockopt
cmp eax, 0xffffffff
je 0x140099673
mov dword [rsp + 0x1d8], 0
mov rcx, qword [rdi]
mov dword [rsp + 0x20], 4
lea r9, [rsp + 0x1d8]
mov edx, 0xffff
mov r8d, 0x1005
call sub.ws2_32.dll_setsockopt
cmp eax, 0xffffffff
je 0x140099673
movabs r15, 0x8000000000000000
cmp qword [rbx + 8], r15
jne 0x1400996e5
mov rcx, r15
mov rdi, rcx
jmp 0x1400999bd
call sub.ws2_32.dll_WSAGetLastError
mov edi, eax
shl rdi, 0x20
cmp qword [rbx + 0xb8], 0
je 0x1400996ab
mov r8, qword [rbx + 0xb0]
mov rcx, qword [0x140228110]
xor edx, edx
call sub.kernel32.dll_HeapFree
mov rsi, qword [rbx + 0xd8]
mov r14, qword [rbx + 0xe0]
or rdi, 2
mov rcx, rsi
call qword [r14]
cmp qword [r14 + 8], 0
je 0x1400996d8
cmp qword [r14 + 0x10], 0x11
jb 0x1400996c7
mov rsi, qword [rsi - 8]
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, rsi
call sub.kernel32.dll_HeapFree
mov rcx, rbx
call fcn.1400994c0
jmp 0x14009a7c5
mov rsi, qword [rbx]
cmp rsi, 0xffffffffffffffff
je 0x1400996f9
lock inc qword [rsi + 8]
jle 0x14009a982
mov r14, qword [rbx + 0x10]
mov rdi, qword [rbx + 0x18]
mov ebp, 1
mov ecx, 1
test rdi, rdi
je 0x140099757
js 0x14009a982
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
jne 0x140099741
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x14009a982
mov rcx, rax
mov qword [0x140228110], rax
xor edx, edx
mov r8, rdi
call sub.kernel32.dll_HeapAlloc
mov rcx, rax
test rax, rax
je 0x14009a982
mov qword [rsp + 0x28], rcx
mov rdx, r14
mov r8, rdi
call sub.msvcrt.dll_memcpy
mov r14, qword [rbx + 0x28]
mov r12, qword [rbx + 0x30]
test r12, r12
je 0x1400997bb
js 0x14009a982
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
jne 0x1400997a5
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x14009a982
mov rcx, rax
mov qword [0x140228110], rax
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapAlloc
mov rbp, rax
test rax, rax
je 0x14009a982
mov rcx, rbp
mov rdx, r14
mov r8, r12
call sub.msvcrt.dll_memcpy
movzx r8d, word [rbx + 0x88]
movzx r9d, word [rbx + 0x8a]
cmp qword [rbx + 0x38], r15
mov qword [rsp + 0x38], rbp
jne 0x1400997f1
mov r13, r15
mov rdx, qword [rsp + 0x28]
jmp 0x1400999b3
mov r14, qword [rbx + 0x40]
mov r13, qword [rbx + 0x48]
test r13, r13
mov word [rsp + 0x30], r8w
mov word [rsp + 0x40], r9w
je 0x140099852
js 0x14009a982
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
jne 0x14009983b
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x14009a982
mov rcx, rax
mov qword [0x140228110], rax
xor edx, edx
mov r8, r13
call sub.kernel32.dll_HeapAlloc
mov rcx, rax
test rax, rax
jne 0x140099857
jmp 0x14009a982
mov ecx, 1
mov qword [rsp + 0x48], rcx
mov rdx, r14
mov r8, r13
call sub.msvcrt.dll_memcpy
mov r11d, dword [rbx + 0x80]
cmp qword [rbx + 0x50], r15
jne 0x14009987e
mov rbp, r15
mov rdx, qword [rsp + 0x28]
jmp 0x1400998fd
mov rdx, qword [rbx + 0x58]
mov rbp, qword [rbx + 0x60]
test rbp, rbp
je 0x1400998dd
js 0x14009a982
mov r14d, r11d
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
mov qword [rsp + 0x58], rdx
jne 0x1400998c4
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x14009a982
mov rcx, rax
mov qword [0x140228110], rax
xor edx, edx
mov r8, rbp
call sub.kernel32.dll_HeapAlloc
test rax, rax
mov rdx, qword [rsp + 0x58]
jne 0x1400998e5
jmp 0x14009a982
mov r14d, r11d
mov eax, 1
mov qword [rsp + 0x50], rax
mov rcx, rax
mov r8, rbp
call sub.msvcrt.dll_memcpy
mov rdx, qword [rsp + 0x28]
mov r11d, r14d
cmp qword [rbx + 0x68], r15
movzx r8d, word [rsp + 0x30]
movzx r9d, word [rsp + 0x40]
mov r10, qword [rsp + 0x48]
jne 0x14009991c
mov r14, r15
jmp 0x1400999ac
mov rdx, qword [rbx + 0x70]
mov r14, qword [rbx + 0x78]
test r14, r14
mov dword [rsp + 0x64], r11d
je 0x140099980
js 0x14009a982
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
mov qword [rsp + 0x58], rdx
jne 0x140099964
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x14009a982
mov rcx, rax
mov qword [0x140228110], rax
xor edx, edx
mov r8, r14
call sub.kernel32.dll_HeapAlloc
mov r15, rax
test rax, rax
mov rdx, qword [rsp + 0x58]
jne 0x140099986
jmp 0x14009a982
mov r15d, 1
mov rcx, r15
mov r8, r14
call sub.msvcrt.dll_memcpy
mov rdx, qword [rsp + 0x28]
movzx r8d, word [rsp + 0x30]
movzx r9d, word [rsp + 0x40]
mov r10, qword [rsp + 0x48]
mov r11d, dword [rsp + 0x64]
movzx eax, byte [rbx + 0x84]
movabs rcx, 0x8000000000000000
mov qword [rsp + 0x70], rsi
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x88], rdi
mov qword [rsp + 0x90], r12
mov rdx, qword [rsp + 0x38]
mov qword [rsp + 0x98], rdx
mov qword [rsp + 0xa0], r12
mov qword [rsp + 0xa8], r13
mov qword [rsp + 0xb0], r10
mov qword [rsp + 0xb8], r13
mov qword [rsp + 0xc0], rbp
mov rdx, qword [rsp + 0x50]
mov qword [rsp + 0xc8], rdx
mov qword [rsp + 0xd0], rbp
mov qword [rsp + 0xd8], r14
mov qword [rsp + 0xe0], r15
mov qword [rsp + 0xe8], r14
mov dword [rsp + 0xf0], r11d
mov byte [rsp + 0xf4], al
mov word [rsp + 0xf8], r8w
mov word [rsp + 0xfa], r9w
cmp rdi, rcx
mov r15, rcx
je 0x140099bd9
cmp rsi, 0xffffffffffffffff
je 0x140099bd9
mov rax, qword [rsi]
nop dword [rax + rax]
test rax, rax
je 0x140099bd9
js 0x14009a982
lea rcx, [rax + 1]
lock cmpxchg qword [rsi], rcx
jne 0x140099a80
mov qword [rsp + 0x68], rsi
cmp qword [rsi + 0x98], 0
je 0x140099c6a
cmp qword [rsi + 0xa0], 0
je 0x140099c6a
lea rcx, [rsi + 0x38]
mov qword [rsp + 0x28], rcx
call sub.kernel32.dll_AcquireSRWLockExclusive
movzx eax, byte [rsi + 0x40]
test al, al
jne 0x14009a982
lea r13, [rsp + 0x1d8]
mov rcx, r13
lea rdx, [rsp + 0x78]
call fcn.1400ac560
lea rax, [rsi + 0x68]
mov qword [rsp + 0x30], rax
mov rcx, qword [rsi + 0x88]
mov rdx, qword [rsi + 0x90]
mov r8, r13
call fcn.14009cd80
mov r12, rax
mov rcx, qword [rsi + 0x68]
mov rdi, qword [rsi + 0x70]
shr rax, 0x39
mov qword [rsp + 0x40], rax
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm6, xmm0, 0
lea r15, [rcx - 0xa8]
xor eax, eax
mov qword [rsp + 0x50], rax
pcmpeqd xmm7, xmm7
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x38], rcx
and r12, rdi
movdqu xmm8, xmmword [rcx + r12]
movdqa xmm0, xmm8
pcmpeqb xmm0, xmm6
pmovmskb ecx, xmm0
nop word cs:[rax + rax]
test cx, cx
je 0x140099ba8
lea r14d, [rcx - 1]
and r14d, ecx
tzcnt eax, ecx
add rax, r12
and rax, rdi
neg rax
imul rbp, rax, 0xa8
lea rcx, [r15 + rbp]
mov rdx, r13
call fcn.1400b0db0
mov ecx, r14d
test al, al
je 0x140099b70
jmp 0x140099cfc
pcmpeqb xmm8, xmm7
pmovmskb eax, xmm8
test eax, eax
jne 0x14009a7f5
mov rax, qword [rsp + 0x50]
add r12, rax
add r12, 0x10
add rax, 0x10
mov qword [rsp + 0x50], rax
mov rcx, qword [rsp + 0x38]
jmp 0x140099b4b
cmp qword [rbx + 0xb8], 0
je 0x140099bf8
mov r8, qword [rbx + 0xb0]
mov rcx, qword [0x140228110]
xor edx, edx
call sub.kernel32.dll_HeapFree
mov rsi, qword [rbx + 0xd8]
mov rdi, qword [rbx + 0xe0]
mov rcx, rsi
call qword [rdi]
cmp qword [rdi + 8], 0
je 0x140099c2e
cmp qword [rdi + 0x10], 0x11
jb 0x140099c1d
mov rsi, qword [rsi - 8]
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, rsi
call sub.kernel32.dll_HeapFree
cmp qword [rbx + 8], r15
je 0x14009a7b9
lea rsi, [rbx + 8]
mov rax, qword [rbx]
cmp rax, 0xffffffffffffffff
je 0x140099c5d
lock dec qword [rax + 8]
jne 0x140099c5d
mov r8, qword [rbx]
mov rcx, qword [0x140228110]
xor edx, edx
call sub.kernel32.dll_HeapFree
mov rcx, rsi
call fcn.1400ac8a0
jmp 0x14009a7b9
cmp qword [rbx + 0xb8], 0
je 0x140099c89
mov r8, qword [rbx + 0xb0]
mov rcx, qword [0x140228110]
xor edx, edx
call sub.kernel32.dll_HeapFree
mov rdi, qword [rbx + 0xd8]
mov r14, qword [rbx + 0xe0]
mov rcx, rdi
call qword [r14]
cmp qword [r14 + 8], 0
je 0x140099cc0
cmp qword [r14 + 0x10], 0x11
jb 0x140099caf
mov rdi, qword [rdi - 8]
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, rdi
call sub.kernel32.dll_HeapFree
cmp qword [rbx + 8], r15
je 0x14009a7a9
lea rdi, [rbx + 8]
mov rax, qword [rbx]
cmp rax, 0xffffffffffffffff
je 0x140099cef
lock dec qword [rax + 8]
jne 0x140099cef
mov r8, qword [rbx]
mov rcx, qword [0x140228110]
xor edx, edx
call sub.kernel32.dll_HeapFree
mov rcx, rdi
call fcn.1400ac8a0
jmp 0x14009a7a9
mov r14, qword [rsp + 0x38]
lea r13, [r14 + rbp]
lea r12, [rsp + 0x340]
lea rdx, [rsp + 0x1d8]
mov r8d, 0x88
mov rcx, r12
call sub.msvcrt.dll_memcpy
lea rcx, [rsp + 0x3c8]
mov r8d, 0x88
mov rdx, r12
call sub.msvcrt.dll_memcpy
mov qword [rsp + 0x450], r13
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x458], rax
mov rax, qword [r14 + rbp - 0x20]
mov rdi, qword [r14 + rbp - 8]
cmp rdi, rax
jne 0x140099d72
lea rcx, [r14 + rbp]
add rcx, 0xffffffffffffffe0
call fcn.1400ae0a0
mov rax, qword [r13 - 0x20]
mov rdi, qword [r13 - 8]
mov rcx, qword [r13 - 0x10]
add rcx, rdi
xor edx, edx
cmp rcx, rax
cmovae rdx, rax
sub rcx, rdx
imul rcx, rcx, 0xe8
add rcx, qword [r13 - 0x18]
mov r8d, 0xe8
mov rdx, rbx
call sub.msvcrt.dll_memcpy
lea rax, [rdi + 1]
mov qword [r13 - 8], rax
cmp rax, qword [rsi + 0xa0]
movabs r15, 0x8000000000000000
jbe 0x14009a1d5
mov rax, qword [r13 - 0x10]
lea rcx, [rax + 1]
mov rdx, qword [r13 - 0x20]
mov r8, qword [r13 - 0x18]
xor r9d, r9d
cmp rcx, rdx
cmovae r9, rdx
neg r9
lea rcx, [rax + r9]
inc rcx
mov qword [r13 - 0x10], rcx
mov qword [r13 - 8], rdi
imul rax, rax, 0xe8
mov rdi, qword [r8 + rax]
mov rbx, qword [r8 + rax + 8]
lea rdx, [r8 + rax]
add rdx, 0x10
lea rcx, [rsp + 0x100]
mov r8d, 0xd8
call sub.msvcrt.dll_memcpy
lea rax, [r15 + 1]
cmp rbx, rax
je 0x14009a982
mov qword [rsp + 0x1d8], rdi
mov qword [rsp + 0x1e0], rbx
lea rcx, [rsp + 0x1e8]
lea rdx, [rsp + 0x100]
mov r8d, 0xd8
call sub.msvcrt.dll_memcpy
mov r12, qword [rsi + 0x48]
mov rbp, qword [rsi + 0x60]
test rbp, rbp
je 0x140099e7c
mov rax, qword [rsi + 0x58]
xor ecx, ecx
cmp rax, r12
cmovae rcx, r12
sub rax, rcx
mov rcx, r12
sub rcx, rax
mov rdi, rbp
sub rdi, rcx
jbe 0x140099e82
mov rcx, r12
jmp 0x140099e88
xor eax, eax
xor ecx, ecx
jmp 0x140099e86
lea rcx, [rax + rbp]
xor edi, edi
mov r13, qword [rsi + 0x50]
mov rdx, rax
shl rdx, 7
lea r15, [rdx + rax*8]
mov rax, rcx
shl rax, 7
lea rbx, [rax + rcx*8]
mov r14d, 1
nop dword [rax + rax]
cmp rbx, r15
je 0x140099ee8
lea rcx, [r15 + r13]
lea rdx, [rsp + 0x78]
call fcn.1400b0db0
dec r14
add r15, 0x88
test al, al
je 0x140099eb0
inc al
movzx eax, al
and eax, 1
sub rax, r14
movabs r15, 0x8000000000000000
jmp 0x140099f36
mov rax, rdi
shl rax, 7
lea rdi, [rax + rdi*8]
mov rcx, r13
movabs r15, 0x8000000000000000
test rdi, rdi
je 0x14009a982
lea rbx, [rcx + 0x88]
lea rdx, [rsp + 0x78]
call fcn.1400b0db0
add rdi, 0xffffffffffffff78
dec r14
mov rcx, rbx
test al, al
je 0x140099f00
inc al
movzx eax, al
and eax, 1
sub rax, r14
cmp rbp, rax
jbe 0x14009a982
mov r8, qword [rsi + 0x58]
lea r9, [r8 + rax]
xor ecx, ecx
cmp r9, r12
cmovae rcx, r12
sub r9, rcx
mov rcx, r9
shl rcx, 7
lea rcx, [rcx + r9*8]
mov r14, qword [r13 + rcx]
movups xmm0, xmmword [r13 + rcx + 0x78]
movaps xmmword [rsp + 0x170], xmm0
movups xmm0, xmmword [r13 + rcx + 0x68]
movaps xmmword [rsp + 0x160], xmm0
movups xmm0, xmmword [r13 + rcx + 0x58]
movaps xmmword [rsp + 0x150], xmm0
movups xmm0, xmmword [r13 + rcx + 0x48]
movaps xmmword [rsp + 0x140], xmm0
movups xmm0, xmmword [r13 + rcx + 0x38]
movaps xmmword [rsp + 0x130], xmm0
movups xmm0, xmmword [r13 + rcx + 0x28]
movaps xmmword [rsp + 0x120], xmm0
movups xmm0, xmmword [r13 + rcx + 0x18]
movaps xmmword [rsp + 0x110], xmm0
movups xmm0, xmmword [r13 + rcx + 8]
movaps xmmword [rsp + 0x100], xmm0
mov rcx, rax
not rcx
add rcx, rbp
cmp rcx, rax
jae 0x140099fff
lea rax, [r9 + 1]
xor edx, edx
cmp rax, r12
cmovae rdx, r12
neg rdx
lea r8, [r9 + rdx]
inc r8
mov qword [rsp + 0x20], rcx
jmp 0x14009a01f
lea rcx, [r8 + 1]
xor edx, edx
cmp rcx, r12
cmovae rdx, r12
neg rdx
lea r9, [r8 + rdx]
inc r9
mov qword [rsi + 0x58], r9
mov qword [rsp + 0x20], rax
mov rcx, r12
mov rdx, r13
call fcn.1400ade10
dec rbp
mov qword [rsi + 0x60], rbp
movaps xmm0, xmmword [rsp + 0x170]
movaps xmmword [rsp + 0x330], xmm0
movaps xmm0, xmmword [rsp + 0x160]
movaps xmmword [rsp + 0x320], xmm0
movaps xmm0, xmmword [rsp + 0x150]
movaps xmmword [rsp + 0x310], xmm0
movaps xmm0, xmmword [rsp + 0x140]
movaps xmmword [rsp + 0x300], xmm0
movdqa xmm0, xmmword [rsp + 0x100]
movdqa xmm1, xmmword [rsp + 0x110]
movaps xmm2, xmmword [rsp + 0x120]
movaps xmm3, xmmword [rsp + 0x130]
movaps xmmword [rsp + 0x2f0], xmm3
movaps xmmword [rsp + 0x2e0], xmm2
movdqa xmmword [rsp + 0x2d0], xmm1
movdqa xmmword [rsp + 0x2c0], xmm0
cmp r14, r15
je 0x14009a982
mov qword [rsp + 0x100], r14
movaps xmm0, xmmword [rsp + 0x2c0]
movdqa xmm1, xmmword [rsp + 0x2d0]
movaps xmm2, xmmword [rsp + 0x2e0]
movaps xmm3, xmmword [rsp + 0x2f0]
movups xmmword [rsp + 0x108], xmm0
movdqu xmmword [rsp + 0x118], xmm1
movups xmmword [rsp + 0x128], xmm2
movups xmmword [rsp + 0x138], xmm3
movaps xmm0, xmmword [rsp + 0x300]
movups xmmword [rsp + 0x148], xmm0
movaps xmm0, xmmword [rsp + 0x310]
movups xmmword [rsp + 0x158], xmm0
movaps xmm0, xmmword [rsp + 0x320]
movups xmmword [rsp + 0x168], xmm0
movdqa xmm0, xmmword [rsp + 0x330]
movdqu xmmword [rsp + 0x178], xmm0
lea rcx, [rsp + 0x100]
call fcn.1400ac8a0
cmp qword [rsp + 0x290], 0
je 0x14009a178
mov r8, qword [rsp + 0x288]
mov rcx, qword [0x140228110]
xor edx, edx
call sub.kernel32.dll_HeapFree
mov r12, qword [rsp + 0x2b0]
mov rdi, qword [rsp + 0x2b8]
mov rcx, r12
call qword [rdi]
cmp qword [rdi + 8], 0
je 0x14009a1b1
cmp qword [rdi + 0x10], 0x11
jb 0x14009a1a0
mov r12, qword [r12 - 8]
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
cmp qword [rsp + 0x1e0], r15
je 0x14009a1d5
lea rcx, [rsp + 0x1d8]
call fcn.1400a8660
lea rcx, [rsp + 0x1e0]
call fcn.1400ac8a0
cmp qword [rsp + 0x3c8], r15
je 0x14009a1ec
lea rcx, [rsp + 0x3c8]
call fcn.1400ac8a0
mov r14, qword [rsp + 0x28]
lea rcx, [rsp + 0x1d8]
lea rdx, [rsp + 0x78]
call fcn.1400ac560
mov rax, qword [rsi + 0x48]
mov rdi, qword [rsi + 0x60]
cmp rdi, rax
jne 0x14009a221
lea rcx, [rsi + 0x48]
call fcn.1400ae140
mov rax, qword [rsi + 0x48]
mov rdi, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x58]
add rcx, rdi
xor edx, edx
cmp rcx, rax
cmovae rdx, rax
sub rcx, rdx
mov rax, rcx
shl rax, 7
lea rcx, [rax + rcx*8]
add rcx, qword [rsi + 0x50]
lea rdx, [rsp + 0x1d8]
mov r8d, 0x88
call sub.msvcrt.dll_memcpy
inc rdi
mov qword [rsi + 0x60], rdi
mov rbx, qword [rsi + 0x98]
mov rcx, r14
call sub.kernel32.dll_ReleaseSRWLockExclusive
cmp rdi, rbx
jbe 0x14009a7a9
cmp qword [rsi + 0x98], 0
je 0x14009a982
cmp qword [rsi + 0xa0], 0
je 0x14009a982
mov rcx, r14
call sub.kernel32.dll_AcquireSRWLockExclusive
movzx eax, byte [rsi + 0x40]
test al, al
jne 0x14009a982
mov rcx, qword [rsi + 0x60]
test rcx, rcx
je 0x14009a982
mov rdx, qword [rsi + 0x58]
lea r8, [rdx + 1]
mov r9, qword [rsi + 0x48]
mov rax, qword [rsi + 0x50]
xor r10d, r10d
cmp r8, r9
cmovae r10, r9
neg r10
lea r8, [rdx + r10]
inc r8
mov qword [rsi + 0x58], r8
dec rcx
mov qword [rsi + 0x60], rcx
mov rcx, rdx
shl rcx, 7
lea rdx, [rcx + rdx*8]
mov rcx, qword [rax + rdx]
cmp rcx, r15
je 0x14009a982
add rax, rdx
mov qword [rsp + 0x340], rcx
movups xmm0, xmmword [rax + 8]
movdqu xmm1, xmmword [rax + 0x18]
movups xmm2, xmmword [rax + 0x28]
movups xmm3, xmmword [rax + 0x38]
movups xmmword [rsp + 0x348], xmm0
movdqu xmmword [rsp + 0x358], xmm1
movups xmmword [rsp + 0x368], xmm2
movups xmmword [rsp + 0x378], xmm3
movups xmm0, xmmword [rax + 0x48]
movups xmmword [rsp + 0x388], xmm0
movups xmm0, xmmword [rax + 0x58]
movups xmmword [rsp + 0x398], xmm0
movups xmm0, xmmword [rax + 0x68]
movups xmmword [rsp + 0x3a8], xmm0
movups xmm0, xmmword [rax + 0x78]
movups xmmword [rsp + 0x3b8], xmm0
mov rcx, qword [rsi + 0x88]
mov rdx, qword [rsi + 0x90]
lea rbx, [rsp + 0x340]
mov r8, rbx
call fcn.14009cd80
mov r15, rax
mov r14, qword [rsi + 0x68]
mov rdi, qword [rsi + 0x70]
shr rax, 0x39
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm6, xmm0, 0
lea r12, [r14 - 0xa8]
xor eax, eax
mov qword [rsp + 0x38], rax
pcmpeqd xmm7, xmm7
and r15, rdi
movdqu xmm8, xmmword [r14 + r15]
movdqa xmm0, xmm8
pcmpeqb xmm0, xmm6
pmovmskb ecx, xmm0
nop dword [rax]
test cx, cx
je 0x14009a405
lea r13d, [rcx - 1]
and r13d, ecx
tzcnt eax, ecx
add rax, r15
and rax, rdi
neg rax
imul rbp, rax, 0xa8
lea rcx, [r12 + rbp]
mov rdx, rbx
call fcn.1400b0db0
mov ecx, r13d
test al, al
je 0x14009a3d0
jmp 0x14009a42e
pcmpeqb xmm8, xmm7
pmovmskb eax, xmm8
test eax, eax
jne 0x14009a967
mov rax, qword [rsp + 0x38]
add r15, rax
add r15, 0x10
add rax, 0x10
mov qword [rsp + 0x38], rax
jmp 0x14009a3b7
lea rbx, [r14 + rbp]
lea rcx, [rsp + 0x3c8]
lea rdx, [rsp + 0x340]
mov r8d, 0x88
call sub.msvcrt.dll_memcpy
mov qword [rsp + 0x450], rbx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x458], rax
mov rdi, qword [r14 + rbp - 8]
test rdi, rdi
movabs r15, 0x8000000000000000
je 0x14009a982
mov rax, qword [rbx - 0x10]
lea rcx, [rax + 1]
mov rdx, qword [rbx - 0x20]
mov r8, qword [rbx - 0x18]
xor r9d, r9d
cmp rcx, rdx
cmovae r9, rdx
neg r9
lea rcx, [rax + r9]
inc rcx
mov qword [rbx - 0x10], rcx
dec rdi
mov qword [rbx - 8], rdi
imul rax, rax, 0xe8
mov rbx, qword [r8 + rax]
mov r14, qword [r8 + rax + 8]
lea rdx, [r8 + rax]
add rdx, 0x10
lea rcx, [rsp + 0x100]
mov r8d, 0xd8
call sub.msvcrt.dll_memcpy
lea rax, [r15 + 1]
cmp r14, rax
je 0x14009a982
mov qword [rsp + 0x1d8], rbx
lea rbx, [rsp + 0x1e0]
mov qword [rsp + 0x1e0], r14
lea rcx, [rsp + 0x1e8]
lea rdx, [rsp + 0x100]
mov r8d, 0xd8
call sub.msvcrt.dll_memcpy
test rdi, rdi
je 0x14009a5b5
cmp qword [rsp + 0x290], 0
mov r12, qword [rsp + 0x28]
je 0x14009a543
mov r8, qword [rsp + 0x288]
mov rcx, qword [0x140228110]
xor edx, edx
call sub.kernel32.dll_HeapFree
mov r14, qword [rsp + 0x2b0]
mov rdi, qword [rsp + 0x2b8]
mov rcx, r14
call qword [rdi]
cmp qword [rdi + 8], 0
je 0x14009a57b
cmp qword [rdi + 0x10], 0x11
jb 0x14009a56a
mov r14, qword [r14 - 8]
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, r14
call sub.kernel32.dll_HeapFree
cmp qword [rsp + 0x1e0], r15
je 0x14009a59a
lea rcx, [rsp + 0x1d8]
call fcn.1400a8660
mov rcx, rbx
call fcn.1400ac8a0
cmp qword [rsp + 0x3c8], r15
je 0x14009a7a1
lea rcx, [rsp + 0x3c8]
jmp 0x14009a79c
mov rdx, qword [rsp + 0x450]
mov rax, qword [rsp + 0x458]
mov rcx, qword [rax]
mov r9, rcx
sub r9, rdx
sar r9, 3
movabs r8, 0xcf3cf3cf3cf3cf3d
imul r8, r9
lea r9, [r8 - 0x10]
and r9, qword [rax + 8]
movdqu xmm0, xmmword [rcx + r9]
pcmpeqd xmm1, xmm1
pcmpeqb xmm0, xmm1
psllw xmm0, 7
pmovmskb r11d, xmm0
movdqu xmm0, xmmword [rcx + r8]
pcmpeqb xmm0, xmm1
pmovmskb r10d, xmm0
test r11d, r11d
je 0x14009a61f
bsr r11w, r11w
xor r11d, 0xf
jmp 0x14009a624
mov r11w, 0x10
mov rdi, qword [rsp + 0x3c8]
or r10d, 0x10000
tzcnt r10d, r10d
add r11d, r10d
mov r10b, pe_nt_image_headers64
cmp r11w, 0xf
ja 0x14009a64c
inc qword [rax + 0x10]
mov r10b, 0xff
mov byte [rcx + r8], r10b
mov byte [r9 + rcx + 0x10], r10b
dec qword [rax + 0x18]
add rdx, 0xffffffffffffff58
lea rcx, [rsp + 0x100]
mov r8d, 0xa8
call sub.msvcrt.dll_memcpy
cmp rdi, r15
je 0x14009a685
lea rcx, [rsp + 0x3c8]
call fcn.1400ac8a0
mov rdi, qword [rsp + 0x188]
mov r14, qword [rsp + 0x190]
mov r13, qword [rsp + 0x198]
mov r15, qword [rsp + 0x1a0]
lea rcx, [rsp + 0x100]
call fcn.1400ac8a0
test r15, r15
je 0x14009a6d6
xor eax, eax
cmp r13, rdi
cmovae rax, rdi
sub r13, rax
mov rax, rdi
sub rax, r13
mov r12, r15
sub r12, rax
jbe 0x14009a6de
mov r15, rdi
jmp 0x14009a6e4
xor r13d, r13d
xor r15d, r15d
jmp 0x14009a6e1
add r15, r13
xor r12d, r12d
imul rcx, r13, 0xe8
add rcx, r14
sub r15, r13
mov rdx, r15
call fcn.1400b0cd0
mov rcx, r14
mov rdx, r12
call fcn.1400b0cd0
test rdi, rdi
je 0x14009a71a
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, r14
call sub.kernel32.dll_HeapFree
cmp qword [rsp + 0x290], 0
movabs r15, 0x8000000000000000
mov r12, qword [rsp + 0x28]
je 0x14009a74a
mov r8, qword [rsp + 0x288]
mov rcx, qword [0x140228110]
xor edx, edx
call sub.kernel32.dll_HeapFree
mov r14, qword [rsp + 0x2b0]
mov rdi, qword [rsp + 0x2b8]
mov rcx, r14
call qword [rdi]
cmp qword [rdi + 8], 0
je 0x14009a782
cmp qword [rdi + 0x10], 0x11
jb 0x14009a771
mov r14, qword [r14 - 8]
mov rcx, qword [0x140228110]
xor edx, edx
mov r8, r14
call sub.kernel32.dll_HeapFree
cmp qword [rsp + 0x1e0], r15
je 0x14009a7a1
lea rcx, [rsp + 0x1d8]
call fcn.1400a8660
mov rcx, rbx
call fcn.1400ac8a0
mov rcx, r12
call sub.kernel32.dll_ReleaseSRWLockExclusive
lock dec qword [rsi]
jne 0x14009a7b9
lea rcx, [rsp + 0x68]
call fcn.1400a7d50
lea rcx, [rsp + 0x70]
call fcn.1400994c0
xor edi, edi
mov rax, rdi
movaps xmm6, xmmword [rsp + 0x460]
movaps xmm7, xmmword [rsp + 0x470]
movaps xmm8, xmmword [rsp + 0x480]
add rsp, 0x498
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp qword [rsi + 0x78], 0
je 0x14009a951
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x1d8]
mov r8d, 0x88
call sub.msvcrt.dll_memcpy
movzx eax, byte [0x140228121]
mov rcx, qword [0x140228110]
test rcx, rcx
movabs r15, 0x8000000000000000
jne 0x14009a850
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x14009a982
mov rcx, rax
mov qword [0x140228110], rax
mov r8d, 0xe8
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x14009a982
mov r13, rax
mov r8d, 0xe8
mov rcx, rax
mov rdx, rbx
call sub.msvcrt.dll_memcpy
mov rbx, qword [rsi + 0x68]
mov rax, qword [rsi + 0x70]
mov r8, qword [rsp + 0x48]
and r8, rax
movdqu xmm0, xmmword [rbx + r8]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x14009a89f
mov r9, qword [rsp + 0x40]
jmp 0x14009a8c1
mov edx, 0x10
mov r9, qword [rsp + 0x40]
add r8, rdx
and r8, rax
movdqu xmm0, xmmword [rbx + r8]
pmovmskb ecx, xmm0
add rdx, 0x10
test ecx, ecx
je 0x14009a8a9
tzcnt ecx, ecx
add rcx, r8
and rcx, rax
movzx edx, byte [rbx + rcx]
test dl, dl
js 0x14009a8e3
movdqa xmm0, xmmword [rbx]
pmovmskb ecx, xmm0
tzcnt ecx, ecx
movzx edx, byte [rbx + rcx]
lea r8, [rcx - 0x10]
and r8, rax
mov byte [rbx + rcx], r9b
mov byte [r8 + rbx + 0x10], r9b
neg rcx
imul rdi, rcx, 0xa8
and dl, 1
movzx eax, dl
sub qword [rsi + 0x78], rax
lea rcx, [rbx + rdi]
add rcx, 0xffffffffffffff58
lea rdx, [rsp + 0x340]
mov r8d, 0x88
call sub.msvcrt.dll_memcpy
mov qword [rbx + rdi - 0x20], 1
mov qword [rbx + rdi - 0x18], r13
mov qword [rbx + rdi - 0x10], 0
mov qword [rbx + rdi - 8], 1
inc qword [rsi + 0x80]
jmp 0x14009a1ec
lea rdx, [rsi + 0x88]
mov rcx, qword [rsp + 0x30]
call fcn.1400b0f10
jmp 0x14009a800
cmp qword [rsi + 0x78], 0
jne 0x14009a982
add rsi, 0x88
mov rcx, qword [rsp + 0x30]
mov rdx, rsi
call fcn.1400b0f10
ud2