Function at 0x140195dc0
Capabilities:
Set socket configuration

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x538
mov rdi, rcx
mov rsi, qword [rcx + 0xd8]
mov r14, qword [rcx + 0xe0]
mov rcx, rsi
call qword [r14 + 0xb8]
test rax, rax
je 0x140195e5c
mov rbx, rax
mov dword [rsp + 0x98], 0
mov rcx, qword [rax]
mov dword [rsp + 0x20], 4
lea r9, [rsp + 0x98]
mov edx, 0xffff
mov r8d, 0x1006
call sub.ws2_32.dll_setsockopt
cmp eax, 0xffffffff
je 0x140195e77
mov dword [rsp + 0x98], 0
mov rcx, qword [rbx]
mov dword [rsp + 0x20], 4
lea r9, [rsp + 0x98]
mov edx, 0xffff
mov r8d, 0x1005
call sub.ws2_32.dll_setsockopt
cmp eax, 0xffffffff
je 0x140195e77
movabs rbp, 0x8000000000000000
cmp qword [rdi + 8], rbp
jne 0x140195ee9
mov rcx, rbp
mov rsi, rcx
jmp 0x140196169
call sub.ws2_32.dll_WSAGetLastError
mov ebx, eax
cmp qword [rdi + 0xb8], 0
je 0x140195eab
mov r8, qword [rdi + 0xb0]
mov rcx, qword [0x141ada118]
xor edx, edx
call fcn.1401cdfe4
mov rsi, qword [rdi + 0xd8]
mov r14, qword [rdi + 0xe0]
shl rbx, 0x20
mov rcx, rsi
call qword [r14]
cmp qword [r14 + 8], 0
je 0x140195ed8
cmp qword [r14 + 0x10], 0x11
jb 0x140195ec7
mov rsi, qword [rsi - 8]
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, rsi
call fcn.1401cdfe4
or rbx, 2
mov rcx, rdi
call fcn.140195ce0
jmp 0x140196f7a
mov r14, qword [rdi]
cmp r14, 0xffffffffffffffff
je 0x140195efd
lock inc qword [r14 + 8]
jle 0x140196732
mov r15, qword [rdi + 0x10]
mov rbx, qword [rdi + 0x18]
mov r13d, 1
test rbx, rbx
je 0x140195f38
js 0x140196732
movzx eax, byte [0x141ada129]
xor ecx, ecx
mov rdx, rbx
call fcn.14014fee0
test rax, rax
je 0x140196732
mov rcx, rax
mov rsi, rbx
jmp 0x140195f3f
xor esi, esi
mov ecx, 1
mov qword [rsp + 0x58], rcx
mov rdx, r15
mov r8, rbx
call sub.msvcrt.dll_memcpy
mov r12, qword [rdi + 0x28]
mov r15, qword [rdi + 0x30]
test r15, r15
je 0x140195f89
js 0x140196732
movzx eax, byte [0x141ada129]
xor ecx, ecx
mov rdx, r15
call fcn.14014fee0
test rax, rax
je 0x140196732
mov r13, rax
mov rax, r15
mov qword [rsp + 0x40], r15
jmp 0x140195f90
xor eax, eax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x50], r13
mov rcx, r13
mov rdx, r12
mov r8, r15
call sub.msvcrt.dll_memcpy
movzx r9d, word [rdi + 0x88]
movzx r10d, word [rdi + 0x8a]
cmp qword [rdi + 0x38], rbp
jne 0x140195fd0
mov rcx, rbp
mov qword [rsp + 0x48], rcx
mov rdx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x40]
jmp 0x14019615f
mov word [rsp + 0x34], r10w
mov word [rsp + 0x36], r9w
mov r13, qword [rdi + 0x40]
mov r8, qword [rdi + 0x48]
test r8, r8
mov qword [rsp + 0x60], r8
je 0x140196020
js 0x140196732
movzx eax, byte [0x141ada129]
xor ecx, ecx
mov rdx, r8
call fcn.14014fee0
mov r8, qword [rsp + 0x60]
test rax, rax
je 0x140196732
mov r12, rax
mov rax, r8
mov qword [rsp + 0x48], r8
jmp 0x14019602d
mov r12d, 1
xor eax, eax
mov qword [rsp + 0x48], rax
mov rcx, r12
mov rdx, r13
call sub.msvcrt.dll_memcpy
mov eax, dword [rdi + 0x80]
mov dword [rsp + 0x38], eax
cmp qword [rdi + 0x50], rbp
jne 0x140196052
mov rax, rbp
mov qword [rsp + 0x70], rbp
jmp 0x1401960b7
mov rdx, qword [rdi + 0x58]
mov r13, qword [rdi + 0x60]
test r13, r13
je 0x140196093
mov qword [rsp + 0x68], rdx
js 0x140196732
movzx eax, byte [0x141ada129]
xor ecx, ecx
mov rdx, r13
call fcn.14014fee0
test rax, rax
je 0x140196732
mov rcx, r13
mov qword [rsp + 0x70], r13
mov rdx, qword [rsp + 0x68]
jmp 0x14019609f
mov eax, 1
xor ecx, ecx
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x88], rax
mov rcx, rax
mov qword [rsp + 0x68], r13
mov r8, r13
call sub.msvcrt.dll_memcpy
mov rdx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x40]
cmp qword [rdi + 0x68], rbp
movzx r9d, word [rsp + 0x36]
movzx r10d, word [rsp + 0x34]
mov r11, qword [rsp + 0x60]
mov qword [rsp + 0x90], r12
jne 0x1401960e5
mov r12, rbp
jmp 0x140196158
mov rdx, qword [rdi + 0x70]
mov r13, qword [rdi + 0x78]
test r13, r13
je 0x14019612a
mov qword [rsp + 0x80], rdx
js 0x140196732
movzx eax, byte [0x141ada129]
xor ecx, ecx
mov rdx, r13
call fcn.14014fee0
test rax, rax
je 0x140196732
mov rbp, rax
mov r12, r13
mov rdx, qword [rsp + 0x80]
jmp 0x140196132
mov ebp, 1
xor r12d, r12d
mov rcx, rbp
mov r8, r13
call sub.msvcrt.dll_memcpy
mov rdx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x40]
movzx r9d, word [rsp + 0x36]
movzx r10d, word [rsp + 0x34]
mov r11, qword [rsp + 0x60]
movzx eax, byte [rdi + 0x84]
movabs rcx, 0x8000000000000000
mov qword [rsp + 0x260], r14
mov qword [rsp + 0x268], rsi
mov qword [rsp + 0x270], rdx
mov qword [rsp + 0x278], rbx
mov qword [rsp + 0x280], r8
mov rdx, qword [rsp + 0x50]
mov qword [rsp + 0x288], rdx
mov qword [rsp + 0x290], r15
mov rdx, qword [rsp + 0x48]
mov qword [rsp + 0x298], rdx
mov rdx, qword [rsp + 0x90]
mov qword [rsp + 0x2a0], rdx
mov qword [rsp + 0x2a8], r11
mov rdx, qword [rsp + 0x70]
mov qword [rsp + 0x2b0], rdx
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x2b8], rdx
mov rdx, qword [rsp + 0x68]
mov qword [rsp + 0x2c0], rdx
mov qword [rsp + 0x2c8], r12
mov qword [rsp + 0x2d0], rbp
mov qword [rsp + 0x2d8], r13
mov edx, dword [rsp + 0x38]
mov dword [rsp + 0x2e0], edx
mov byte [rsp + 0x2e4], al
mov word [rsp + 0x2e8], r9w
mov word [rsp + 0x2ea], r10w
cmp rsi, rcx
mov rbp, rcx
je 0x14019641a
cmp r14, 0xffffffffffffffff
je 0x14019641a
lea r13, [rsp + 0x268]
mov rax, qword [r14]
nop word cs:[rax + rax]
test rax, rax
je 0x14019641a
js 0x140196732
lea rcx, [rax + 1]
lock cmpxchg qword [r14], rcx
jne 0x140196260
mov qword [rsp + 0x78], r14
cmp qword [r14 + 0x90], 0
je 0x1401964a8
cmp qword [r14 + 0x98], 0
je 0x1401964a8
lea rsi, [r14 + 0x38]
mov cl, 1
xor eax, eax
lock cmpxchg byte [rsi], cl
jne 0x140196e6c
mov qword [rsp + 0x50], rsi
lea r15, [rsp + 0x180]
mov rcx, r15
mov rdx, r13
call fcn.1401b4030
lea rdx, [r14 + 0x60]
lea rcx, [rsp + 0x98]
mov qword [rsp + 0x48], rdx
mov r8, r15
call fcn.1401b2f30
mov rbx, qword [rsp + 0x98]
lea rdx, [rsp + 0xa0]
lea rcx, [rsp + 0x4b0]
mov r8d, 0x88
call sub.msvcrt.dll_memcpy
mov r12, qword [rsp + 0x128]
mov rsi, qword [rsp + 0x130]
test rbx, rbx
je 0x140196536
movzx eax, byte [0x141ada129]
mov edx, 0xe8
xor ecx, ecx
call fcn.14014fee0
test rax, rax
je 0x140196732
mov r15, rax
mov r8d, 0xe8
mov rcx, rax
mov rdx, rdi
call sub.msvcrt.dll_memcpy
mov rdi, qword [r12]
mov rax, qword [r12 + 8]
mov rcx, rax
and rcx, rsi
movdqu xmm0, xmmword [rdi + rcx]
pmovmskb edx, xmm0
test edx, edx
jne 0x140196387
mov r8d, 0x10
nop dword [rax]
add rcx, r8
and rcx, rax
movdqu xmm0, xmmword [rdi + rcx]
pmovmskb edx, xmm0
add r8, 0x10
test edx, edx
je 0x140196370
tzcnt edx, edx
add rdx, rcx
and rdx, rax
movzx ecx, byte [rdi + rdx]
test cl, cl
js 0x1401963a9
movdqa xmm0, xmmword [rdi]
pmovmskb ecx, xmm0
tzcnt edx, ecx
movzx ecx, byte [rdi + rdx]
shr rsi, 0x39
lea r8, [rdx - 0x10]
and r8, rax
mov byte [rdi + rdx], sil
mov byte [rdi + r8 + 0x10], sil
neg rdx
imul rsi, rdx, 0xa8
and cl, 1
movzx eax, cl
sub qword [r12 + 0x10], rax
lea rcx, [rdi + rsi]
add rcx, 0xffffffffffffff58
lea rdx, [rsp + 0x4b0]
mov r8d, 0x88
call sub.msvcrt.dll_memcpy
mov qword [rdi + rsi - 0x20], 1
mov qword [rdi + rsi - 0x18], r15
mov qword [rdi + rsi - 0x10], 0
mov qword [rdi + rsi - 8], 1
inc qword [r12 + 0x18]
jmp 0x1401969fc
cmp qword [rdi + 0xb8], 0
je 0x140196439
mov r8, qword [rdi + 0xb0]
mov rcx, qword [0x141ada118]
xor edx, edx
call fcn.1401cdfe4
mov rsi, qword [rdi + 0xd8]
mov rbx, qword [rdi + 0xe0]
mov rcx, rsi
call qword [rbx]
cmp qword [rbx + 8], 0
je 0x14019646f
cmp qword [rbx + 0x10], 0x11
jb 0x14019645e
mov rsi, qword [rsi - 8]
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, rsi
call fcn.1401cdfe4
cmp qword [rdi + 8], rbp
je 0x140196f6b
mov r8, qword [rdi]
add rdi, 8
cmp r8, 0xffffffffffffffff
je 0x14019649b
lock dec qword [r8 + 8]
jne 0x14019649b
mov rcx, qword [0x141ada118]
xor edx, edx
call fcn.1401cdfe4
mov rcx, rdi
call fcn.1401995a0
jmp 0x140196f6b
cmp qword [rdi + 0xb8], 0
je 0x1401964c7
mov r8, qword [rdi + 0xb0]
mov rcx, qword [0x141ada118]
xor edx, edx
call fcn.1401cdfe4
mov rsi, qword [rdi + 0xd8]
mov rbx, qword [rdi + 0xe0]
mov rcx, rsi
call qword [rbx]
cmp qword [rbx + 8], 0
je 0x1401964fd
cmp qword [rbx + 0x10], 0x11
jb 0x1401964ec
mov rsi, qword [rsi - 8]
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, rsi
call fcn.1401cdfe4
cmp qword [rdi + 8], rbp
je 0x140196f56
mov r8, qword [rdi]
add rdi, 8
cmp r8, 0xffffffffffffffff
je 0x140196f4e
lock dec qword [r8 + 8]
jne 0x140196f4e
mov rcx, qword [0x141ada118]
xor edx, edx
call fcn.1401cdfe4
jmp 0x140196f4e
lea rcx, [rsp + 0x410]
lea rdx, [rsp + 0x4b0]
mov r8d, 0x88
call sub.msvcrt.dll_memcpy
mov qword [rsp + 0x498], r12
mov qword [rsp + 0x4a0], rsi
mov rax, qword [r12 - 0x20]
mov rsi, qword [r12 - 8]
cmp rsi, rax
jne 0x140196584
lea rcx, [r12 - 0x20]
call fcn.140199430
mov rax, qword [r12 - 0x20]
mov rsi, qword [r12 - 8]
mov rcx, qword [r12 - 0x10]
add rcx, rsi
xor edx, edx
cmp rcx, rax
cmovae rdx, rax
sub rcx, rdx
imul rcx, rcx, 0xe8
add rcx, qword [r12 - 0x18]
mov r8d, 0xe8
mov rdx, rdi
call sub.msvcrt.dll_memcpy
lea rax, [rsi + 1]
mov qword [r12 - 8], rax
cmp rax, qword [r14 + 0x98]
jbe 0x1401969e5
mov rax, qword [r12 - 0x10]
lea rcx, [rax + 1]
mov rdx, qword [r12 - 0x20]
mov r8, qword [r12 - 0x18]
xor r9d, r9d
cmp rcx, rdx
cmovae r9, rdx
neg r9
lea rcx, [rax + r9]
inc rcx
mov qword [r12 - 0x10], rcx
mov qword [r12 - 8], rsi
imul rax, rax, 0xe8
mov rsi, qword [r8 + rax]
mov rdi, qword [r8 + rax + 8]
lea rdx, [r8 + rax]
add rdx, 0x10
lea rcx, [rsp + 0x180]
mov r8d, 0xd8
call sub.msvcrt.dll_memcpy
lea rax, [rbp + 1]
cmp rdi, rax
je 0x140196732
mov qword [rsp + 0x98], rsi
mov qword [rsp + 0xa0], rdi
lea rcx, [rsp + 0xa8]
lea rdx, [rsp + 0x180]
mov r8d, 0xd8
call sub.msvcrt.dll_memcpy
mov rax, qword [r14 + 0x58]
mov qword [rsp + 0x38], rax
test rax, rax
je 0x140196732
mov r15, qword [r14 + 0x40]
mov rdi, qword [r14 + 0x48]
mov rax, qword [r14 + 0x50]
xor esi, esi
cmp rax, r15
mov rcx, r15
cmovb rcx, rsi
sub rax, rcx
mov rcx, r15
sub rcx, rax
mov rbp, qword [rsp + 0x38]
lea rdx, [rax + rbp]
sub rbp, rcx
cmova rdx, r15
cmovbe rbp, rsi
cmp rax, rdx
je 0x1401966f1
mov rdx, rax
shl rdx, 7
lea r12, [rdx + rax*8]
add r12, rdi
mov rax, qword [rsp + 0x38]
cmp rax, rcx
cmovb rcx, rax
mov rax, rcx
shl rax, 7
lea rbx, [rax + rcx*8]
xor esi, esi
mov rcx, r12
mov rdx, r13
call fcn.14019ff70
test al, al
jne 0x140196734
inc rsi
add r12, 0x88
add rbx, 0xffffffffffffff78
jne 0x1401966cf
test rbp, rbp
je 0x140196732
mov rax, rbp
shl rax, 7
lea rbx, [rax + rbp*8]
mov r12, rdi
nop word cs:[rax + rax]
mov rcx, r12
mov rdx, r13
call fcn.14019ff70
test al, al
jne 0x140196734
inc rsi
add r12, 0x88
add rbx, 0xffffffffffffff78
jne 0x140196710
ud2
cmp qword [rsp + 0x38], rsi
jbe 0x140196732
mov r8, qword [r14 + 0x50]
lea r9, [r8 + rsi]
xor eax, eax
cmp r9, r15
cmovae rax, r15
sub r9, rax
mov rax, r9
shl rax, 7
lea rax, [rax + r9*8]
mov r12, qword [rdi + rax]
movups xmm0, xmmword [rdi + rax + 0x78]
movaps xmmword [rsp + 0x1f0], xmm0
movups xmm0, xmmword [rdi + rax + 0x68]
movaps xmmword [rsp + 0x1e0], xmm0
movups xmm0, xmmword [rdi + rax + 0x58]
movaps xmmword [rsp + 0x1d0], xmm0
movups xmm0, xmmword [rdi + rax + 0x48]
movaps xmmword [rsp + 0x1c0], xmm0
movups xmm0, xmmword [rdi + rax + 0x38]
movaps xmmword [rsp + 0x1b0], xmm0
movups xmm0, xmmword [rdi + rax + 0x28]
movaps xmmword [rsp + 0x1a0], xmm0
movups xmm0, xmmword [rdi + rax + 0x18]
movaps xmmword [rsp + 0x190], xmm0
movups xmm0, xmmword [rdi + rax + 8]
movaps xmmword [rsp + 0x180], xmm0
mov rax, rsi
not rax
add rax, qword [rsp + 0x38]
cmp rax, rsi
jae 0x1401967f4
lea rcx, [r9 + 1]
xor edx, edx
cmp rcx, r15
cmovae rdx, r15
neg rdx
lea r8, [r9 + rdx]
inc r8
mov qword [rsp + 0x20], rax
jmp 0x140196814
lea rax, [r8 + 1]
xor ecx, ecx
cmp rax, r15
cmovae rcx, r15
neg rcx
lea r9, [r8 + rcx]
inc r9
mov qword [r14 + 0x50], r9
mov qword [rsp + 0x20], rsi
mov rcx, r15
mov rdx, rdi
call fcn.1401990b0
movabs rax, 0x8000000000000000
mov rcx, qword [rsp + 0x38]
dec rcx
mov qword [r14 + 0x58], rcx
movaps xmm0, xmmword [rsp + 0x1f0]
movaps xmmword [rsp + 0x360], xmm0
movaps xmm0, xmmword [rsp + 0x1e0]
movaps xmmword [rsp + 0x350], xmm0
movaps xmm0, xmmword [rsp + 0x1d0]
movaps xmmword [rsp + 0x340], xmm0
movaps xmm0, xmmword [rsp + 0x1c0]
movaps xmmword [rsp + 0x330], xmm0
movdqa xmm0, xmmword [rsp + 0x180]
movdqa xmm1, xmmword [rsp + 0x190]
movaps xmm2, xmmword [rsp + 0x1a0]
movaps xmm3, xmmword [rsp + 0x1b0]
movaps xmmword [rsp + 0x320], xmm3
movaps xmmword [rsp + 0x310], xmm2
movdqa xmmword [rsp + 0x300], xmm1
movdqa xmmword [rsp + 0x2f0], xmm0
cmp r12, rax
je 0x140196732
mov qword [rsp + 0x180], r12
movaps xmm0, xmmword [rsp + 0x2f0]
movdqa xmm1, xmmword [rsp + 0x300]
movaps xmm2, xmmword [rsp + 0x310]
movaps xmm3, xmmword [rsp + 0x320]
movups xmmword [rsp + 0x188], xmm0
movdqu xmmword [rsp + 0x198], xmm1
movups xmmword [rsp + 0x1a8], xmm2
movups xmmword [rsp + 0x1b8], xmm3
movaps xmm0, xmmword [rsp + 0x330]
movups xmmword [rsp + 0x1c8], xmm0
movaps xmm0, xmmword [rsp + 0x340]
movups xmmword [rsp + 0x1d8], xmm0
movaps xmm0, xmmword [rsp + 0x350]
movups xmmword [rsp + 0x1e8], xmm0
movdqa xmm0, xmmword [rsp + 0x360]
movdqu xmmword [rsp + 0x1f8], xmm0
lea rcx, [rsp + 0x180]
call fcn.1401995a0
cmp qword [rsp + 0x150], 0
je 0x14019697c
mov r8, qword [rsp + 0x148]
mov rcx, qword [0x141ada118]
xor edx, edx
call fcn.1401cdfe4
mov rdi, qword [rsp + 0x170]
mov rsi, qword [rsp + 0x178]
mov rcx, rdi
call qword [rsi]
cmp qword [rsi + 8], 0
movabs rbp, 0x8000000000000000
je 0x1401969be
cmp qword [rsi + 0x10], 0x11
jb 0x1401969ad
mov rdi, qword [rdi - 8]
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, rdi
call fcn.1401cdfe4
cmp qword [rsp + 0xa0], rbp
je 0x1401969e5
lea rdi, [rsp + 0xa0]
mov rcx, qword [rsp + 0x98]
call fcn.1401a64b0
mov rcx, rdi
call fcn.1401995a0
cmp qword [rsp + 0x410], rbp
je 0x1401969fc
lea rcx, [rsp + 0x410]
call fcn.1401995a0
mov r15, qword [rsp + 0x50]
lea rcx, [rsp + 0x98]
mov rdx, r13
call fcn.1401b4030
mov rax, qword [r14 + 0x40]
mov rsi, qword [r14 + 0x58]
cmp rsi, rax
jne 0x140196a2f
lea rcx, [r14 + 0x40]
call fcn.140199380
mov rax, qword [r14 + 0x40]
mov rsi, qword [r14 + 0x58]
mov rcx, qword [r14 + 0x50]
add rcx, rsi
xor edi, edi
cmp rcx, rax
mov edx, 0
cmovae rdx, rax
sub rcx, rdx
mov rax, rcx
shl rax, 7
lea rcx, [rax + rcx*8]
add rcx, qword [r14 + 0x48]
lea rdx, [rsp + 0x98]
mov r8d, 0x88
call sub.msvcrt.dll_memcpy
inc rsi
mov qword [r14 + 0x58], rsi
cmp rsi, qword [r14 + 0x90]
xchg byte [r14 + 0x38], dil
jbe 0x140196d31
cmp dil, 2
jne 0x140196a8f
mov rcx, r15
call fcn.1401f3560
cmp qword [r14 + 0x90], 0
je 0x140196732
cmp qword [r14 + 0x98], 0
je 0x140196732
mov cl, 1
xor eax, eax
lock cmpxchg byte [r15], cl
jne 0x140196f91
mov rcx, qword [r14 + 0x58]
test rcx, rcx
je 0x140196732
mov rdx, qword [r14 + 0x50]
lea r8, [rdx + 1]
mov r9, qword [r14 + 0x40]
mov rax, qword [r14 + 0x48]
xor r10d, r10d
cmp r8, r9
cmovae r10, r9
neg r10
lea r8, [rdx + r10]
inc r8
mov qword [r14 + 0x50], r8
dec rcx
mov qword [r14 + 0x58], rcx
mov rcx, rdx
shl rcx, 7
lea rdx, [rcx + rdx*8]
mov rcx, qword [rax + rdx]
cmp rcx, rbp
je 0x140196732
add rax, rdx
mov qword [rsp + 0x388], rcx
movups xmm0, xmmword [rax + 8]
movdqu xmm1, xmmword [rax + 0x18]
movups xmm2, xmmword [rax + 0x28]
movups xmm3, xmmword [rax + 0x38]
movups xmmword [rsp + 0x390], xmm0
movdqu xmmword [rsp + 0x3a0], xmm1
movups xmmword [rsp + 0x3b0], xmm2
movups xmmword [rsp + 0x3c0], xmm3
movups xmm0, xmmword [rax + 0x48]
movups xmmword [rsp + 0x3d0], xmm0
movups xmm0, xmmword [rax + 0x58]
movups xmmword [rsp + 0x3e0], xmm0
movups xmm0, xmmword [rax + 0x68]
movups xmmword [rsp + 0x3f0], xmm0
movdqu xmm0, xmmword [rax + 0x78]
movdqu xmmword [rsp + 0x400], xmm0
lea rcx, [rsp + 0x98]
lea r8, [rsp + 0x388]
mov rdx, qword [rsp + 0x48]
call fcn.1401b2f30
cmp qword [rsp + 0x98], 0
jne 0x140196732
lea rdx, [rsp + 0xa0]
lea rdi, [rsp + 0x418]
mov r8d, 0x98
mov rcx, rdi
call sub.msvcrt.dll_memcpy
mov qword [rsp + 0x410], 0
lea rcx, [rsp + 0x2f0]
mov r8d, 0x98
mov rdx, rdi
call sub.msvcrt.dll_memcpy
mov rax, qword [rsp + 0x378]
mov rsi, qword [rax - 8]
test rsi, rsi
je 0x140196732
mov rcx, qword [rax - 0x10]
lea rdx, [rcx + 1]
mov r8, qword [rax - 0x20]
mov r9, qword [rax - 0x18]
xor r10d, r10d
cmp rdx, r8
cmovae r10, r8
neg r10
lea rdx, [rcx + r10]
inc rdx
mov qword [rax - 0x10], rdx
dec rsi
mov qword [rax - 8], rsi
imul rax, rcx, 0xe8
mov rbx, qword [r9 + rax]
mov r14, qword [r9 + rax + 8]
lea rdx, [r9 + rax]
add rdx, 0x10
lea rcx, [rsp + 0x180]
mov r8d, 0xd8
call sub.msvcrt.dll_memcpy
lea rax, [rbp + 1]
cmp r14, rax
je 0x140196732
mov qword [rsp + 0x98], rbx
lea rbx, [rsp + 0xa0]
mov qword [rsp + 0xa0], r14
lea rcx, [rsp + 0xa8]
lea rdx, [rsp + 0x180]
mov r8d, 0xd8
call sub.msvcrt.dll_memcpy
test rsi, rsi
je 0x140196d48
cmp qword [rsp + 0x150], 0
je 0x140196cbf
mov r8, qword [rsp + 0x148]
mov rcx, qword [0x141ada118]
xor edx, edx
call fcn.1401cdfe4
mov r14, qword [rsp + 0x170]
mov rsi, qword [rsp + 0x178]
mov rcx, r14
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x140196cf7
cmp qword [rsi + 0x10], 0x11
jb 0x140196ce6
mov r14, qword [r14 - 8]
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, r14
call fcn.1401cdfe4
cmp qword [rsp + 0xa0], rbp
je 0x140196d16
mov rcx, qword [rsp + 0x98]
call fcn.1401a64b0
mov rcx, rbx
call fcn.1401995a0
cmp qword [rsp + 0x2f0], rbp
je 0x140196f32
lea rcx, [rsp + 0x2f0]
jmp 0x140196f2d
cmp dil, 2
jne 0x140196f56
mov rcx, r15
call fcn.1401f3560
jmp 0x140196f56
mov rdx, qword [rsp + 0x4a0]
mov rax, qword [rsp + 0x4a8]
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 0x140196db2
bsr r11w, r11w
xor r11d, 0xf
jmp 0x140196db7
mov r11w, 0x10
mov rsi, qword [rsp + 0x418]
or r10d, 0x10000
tzcnt r10d, r10d
add r11d, r10d
mov r10b, pe_nt_image_headers64
cmp r11w, 0xf
ja 0x140196ddf
inc qword [rax + 0x10]
mov r10b, 0xff
mov byte [rcx + r8], r10b
mov byte [rcx + r9 + 0x10], r10b
dec qword [rax + 0x18]
add rdx, 0xffffffffffffff58
lea rcx, [rsp + 0x180]
mov r8d, 0xa8
call sub.msvcrt.dll_memcpy
cmp rsi, rbp
je 0x140196e13
mov rcx, rdi
call fcn.1401995a0
mov rsi, qword [rsp + 0x208]
mov r14, qword [rsp + 0x210]
mov r13, qword [rsp + 0x218]
mov r15, qword [rsp + 0x220]
lea rcx, [rsp + 0x180]
call fcn.1401995a0
test r15, r15
je 0x140196e64
xor eax, eax
cmp r13, rsi
cmovae rax, rsi
sub r13, rax
mov rax, rsi
sub rax, r13
mov r12, r15
sub r12, rax
jbe 0x140196e79
mov r15, rsi
jmp 0x140196e7f
xor r13d, r13d
xor r15d, r15d
jmp 0x140196e7c
mov rcx, rsi
call fcn.14015d680
jmp 0x1401962ad
add r15, r13
xor r12d, r12d
imul rcx, r13, 0xe8
add rcx, r14
sub r15, r13
mov rdx, r15
call fcn.1401994d0
mov rcx, r14
mov rdx, r12
call fcn.1401994d0
test rsi, rsi
je 0x140196eb5
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, r14
call fcn.1401cdfe4
cmp qword [rsp + 0x150], 0
mov r15, qword [rsp + 0x50]
je 0x140196edb
mov r8, qword [rsp + 0x148]
mov rcx, qword [0x141ada118]
xor edx, edx
call fcn.1401cdfe4
mov r14, qword [rsp + 0x170]
mov rsi, qword [rsp + 0x178]
mov rcx, r14
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x140196f13
cmp qword [rsi + 0x10], 0x11
jb 0x140196f02
mov r14, qword [r14 - 8]
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, r14
call fcn.1401cdfe4
cmp qword [rsp + 0xa0], rbp
je 0x140196f32
mov rcx, qword [rsp + 0x98]
call fcn.1401a64b0
mov rcx, rbx
call fcn.1401995a0
xor eax, eax
xchg byte [r15], al
cmp al, 2
jne 0x140196f43
mov rcx, r15
call fcn.1401f3560
cmp qword [rsp + 0x410], 0
je 0x140196f56
mov rcx, rdi
call fcn.1401995a0
mov rax, qword [rsp + 0x78]
lock dec qword [rax]
jne 0x140196f6b
lea rcx, [rsp + 0x78]
call fcn.1401a5c40
lea rcx, [rsp + 0x260]
call fcn.140195ce0
xor ebx, ebx
mov rax, rbx
add rsp, 0x538
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, r15
call fcn.14015d680
mov rcx, qword [r14 + 0x58]
test rcx, rcx
jne 0x140196ac7
jmp 0x140196732