Function at 0x140002370
Capabilities:
Check os version
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x3c8
mov byte [rsp + 0x318], 0
movzx eax, byte [0x140026190]
mov rcx, qword [0x140026178]
test rcx, rcx
jne 0x1400023b7
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je case.default.0x1400026f5
mov rcx, rax
mov qword [0x140026178], rax
mov r8d, 0x10
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je case.default.0x1400026f5
mov rsi, rax
mov qword [rax], 1
mov qword [rax + 8], 1
call fcn.14000d890
mov rcx, rax
shr rcx, 0x20
cmp eax, 2
mov edx, 1
cmovae edx, eax
mov qword [rsp + 0x210], 0x400
mov qword [rsp + 0x1c8], 0
mov qword [rsp + 0x218], 0x200
mov qword [rsp + 0x200], rsi
lea rax, [0x140022ce0]
mov qword [rsp + 0x208], rax
mov qword [rsp + 0x1d8], 0
mov qword [rsp + 0x220], 0
mov qword [rsp + 0x230], 0
mov qword [rsp + 0x240], 0
mov qword [rsp + 0x250], 0
mov dword [rsp + 0x1f8], 0x3b9aca00
mov dword [rsp + 0x1e8], 0
mov dword [rsp + 0x280], 0x3d
mov qword [rsp + 0x260], 0x100
mov word [rsp + 0x288], 0
mov qword [rsp + 0x268], 0
mov byte [rsp + 0x270], 0
mov dword [rsp + 0x274], ecx
mov dword [rsp + 0x278], edx
mov dword [rsp + 0x284], 0x10101
lea rsi, [rsp + 0x60]
lea rdx, [rsp + 0x1c8]
mov rcx, rsi
call fcn.14000e9a0
cmp dword [rsp + 0x60], 2
je case.default.0x1400026f5
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0x170], rax
movups xmm0, xmmword [rsp + 0xa0]
movaps xmmword [rsp + 0x160], xmm0
movdqu xmm0, xmmword [rsp + 0x60]
movups xmm1, xmmword [rsp + 0x70]
movups xmm2, xmmword [rsp + 0x80]
movups xmm3, xmmword [rsp + 0x90]
movaps xmmword [rsp + 0x150], xmm3
movaps xmmword [rsp + 0x140], xmm2
movaps xmmword [rsp + 0x130], xmm1
movdqa xmmword [rsp + 0x120], xmm0
lea rcx, [rsp + 0x120]
lea rdx, [rsp + 0x2b0]
call fcn.14001a640
cmp qword [rsp + 0x120], 0
je 0x1400025b7
cmp qword [rsp + 0x158], 0
je case.default.0x1400026f5
mov rsi, qword [rsp + 0x160]
lea rdi, [rsi + 0xc8]
mov rcx, rdi
call qword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
movzx eax, byte [rsi + 0xd0]
cmp byte [rsi + 0x100], 0
je 0x140002681
mov rcx, rdi
call qword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
jmp 0x140002b51
mov rbx, qword [rsp + 0x158]
mov rdi, qword [rsp + 0x160]
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
movzx eax, byte [rax + 0xd0]
cmp eax, 1
je 0x14000261c
test eax, eax
jne 0x14000271c
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov r14, qword [rcx + rax*8]
lea rcx, [r14 + 0x80]
lea rdx, [0x14000da90]
call fcn.14000ab10
mov byte [r14 + 0xd0], 1
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp qword [rax + 0x80], 0
jne case.default.0x1400026f5
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov qword [rax + 0x80], 0xffffffffffffffff
mov eax, 1
mov ecx, 1
lock xadd qword [rdi], rcx
test rbx, rbx
je 0x14000272a
test rcx, rcx
jns 0x140002735
jmp case.default.0x1400026f5
mov byte [rsi + 0x100], 1
mov rcx, rdi
call qword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov r14, qword [rsi + 0x68]
test r14, r14
je 0x140002b51
mov r15, qword [rsi + 0x60]
add rsi, 0x130
shl r14, 4
xor r12d, r12d
lea r13, [0x140022eb8]
mov rbp, qword [sym.imp.kernel32.dll_WakeConditionVariable]
jmp 0x1400026d5
mov rcx, rsi
call fcn.1400192c0
add r12, 0x10
cmp r14, r12
je 0x140002b51
mov rdi, qword [r15 + r12 + 8]
mov eax, 3
xchg qword [rdi + 0x18], rax
cmp rax, 3
ja case.default.0x1400026f5
movsxd rax, dword [r13 + rax*4]
add rax, r13
jmp rax
lea rbx, [rdi + 0x20]
mov rcx, rbx
call qword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
movzx eax, byte [rdi + 0x28]
mov rcx, rbx
call qword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
add rdi, 0x30
mov rcx, rdi
call rbp
jmp case.0x1400026f5.0
mov qword [rsp + 0x40], 3
jmp 0x1400027b1
test rcx, rcx
js case.default.0x1400026f5
xor eax, eax
mov ecx, dword [0x140026194]
mov rdx, qword gs:[0x58]
mov r8, qword [rdx + rcx*8]
mov rcx, qword [r8 + 0x88]
mov rdx, qword [r8 + 0x90]
mov qword [r8 + 0x88], rax
mov qword [r8 + 0x90], rdi
inc qword [r8 + 0x80]
mov rax, qword [r8 + 0x98]
cmp rax, 0xffffffffffffffff
je case.default.0x1400026f5
inc rax
mov r8d, dword [0x140026194]
mov r9, qword gs:[0x58]
mov r8, qword [r9 + r8*8]
mov qword [r8 + 0x98], rax
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x50], rax
mov rbx, qword [rsp + 0x158]
test rbx, rbx
jne case.default.0x1400026f5
xor edi, edi
xchg qword [rsp + 0x128], rdi
test rdi, rdi
je case.default.0x1400026f5
mov rax, qword [rsp + 0x160]
lock inc qword [rax]
jle case.default.0x1400026f5
lea rcx, [rsp + 0x128]
pxor xmm0, xmm0
movdqu xmmword [rsp + 0xf8], xmm0
mov qword [rsp + 0xd8], 0
mov qword [rsp + 0xe0], rax
mov qword [rsp + 0xe8], 0
mov qword [rsp + 0xf0], rdi
mov qword [rsp + 0x108], 8
mov qword [rsp + 0x110], 0
mov qword [rsp + 0x118], rcx
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
movzx eax, byte [rax + 0xd0]
cmp eax, 1
je 0x14000288c
test eax, eax
jne 0x1400028d6
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rbx, qword [rcx + rax*8]
lea rcx, [rbx + 0x80]
lea rdx, [0x14000da90]
call fcn.14000ab10
mov byte [rbx + 0xd0], 1
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
movabs rcx, 0x8000000000000001
add rcx, 0xfffffffffffffffe
cmp qword [rax + 0x80], rcx
jae case.default.0x1400026f5
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp dword [rax + 0x88], 2
jne 0x140002917
mov qword [rsp + 0xf0], 0
mov rdx, qword [rsp + 0x160]
add rdx, 0x10
mov rcx, rdi
call fcn.14000e0f0
mov qword [rsp + 0xf0], rdi
mov qword [rsp + 0xe8], 0
lea rsi, [rsp + 0xd8]
jmp 0x140002af4
movdqu xmm0, xmmword [rsp + 0xd8]
movups xmm1, xmmword [rsp + 0xe8]
movups xmm2, xmmword [rsp + 0xf8]
movups xmm3, xmmword [rsp + 0x108]
movdqa xmmword [rsp + 0x60], xmm0
mov rax, qword [rsp + 0x118]
mov qword [rsp + 0xa0], rax
movaps xmmword [rsp + 0x90], xmm3
movaps xmmword [rsp + 0x80], xmm2
movaps xmmword [rsp + 0x70], xmm1
cmp qword [rsp + 0x60], 0
jne case.default.0x1400026f5
cmp qword [rsp + 0x70], 0
jne case.default.0x1400026f5
mov qword [rsp + 0x70], 0xffffffffffffffff
mov r12, qword [rsp + 0x78]
mov qword [rsp + 0x78], 0
test r12, r12
je case.default.0x1400026f5
mov qword [rsp + 0x70], 0
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rdi, qword [rcx + rax*8]
mov rbx, qword [rdi + 0xb8]
mov qword [rdi + 0xb8], rsi
mov rdx, qword [rsp + 0x160]
add rdx, 0x10
mov rcx, r12
call fcn.14000e0f0
mov qword [rdi + 0xb8], rbx
cmp qword [rsp + 0x70], 0
jne case.default.0x1400026f5
mov qword [rsp + 0x70], 0xffffffffffffffff
mov rsi, qword [rsp + 0x78]
test rsi, rsi
je 0x140002ae3
mov r15, qword [rsi + 0x58]
test r15, r15
je 0x140002aa5
mov qword [rsp + 0x58], r12
mov rax, qword [rsi + 0x50]
mov rcx, qword [rsi + 0x40]
mov rbx, qword [rsi + 0x48]
xor edx, edx
cmp rax, rcx
mov r8, rcx
cmovb r8, rdx
sub rax, r8
mov r12, rcx
sub r12, rax
lea r13, [rax + r15]
cmp r12, r15
cmovb r13, rcx
mov r14, r15
sub r14, r12
cmovb r14, rdx
sub r13, rax
jne 0x140003fba
cmp r12, r15
mov r12, qword [rsp + 0x58]
jae 0x140002aa5
xor edi, edi
jmp 0x140002a78
inc rdi
cmp r14, rdi
je 0x140002aa5
mov rcx, qword [rbx + rdi*8]
mov rax, 0xffffffffffffffc0
lock xadd qword [rcx], rax
cmp rax, 0x3f
jbe case.default.0x1400026f5
and rax, 0xffffffffffffffc0
cmp rax, 0x40
jne 0x140002a70
mov rax, qword [rcx + 0x10]
call qword [rax + 0x10]
jmp 0x140002a70
cmp qword [rsi + 0x40], 0
je 0x140002abf
mov r8, qword [rsi + 0x48]
mov rcx, qword [0x140026178]
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapFree]
mov rcx, rsi
call fcn.14000ddb0
mov rcx, qword [0x140026178]
xor edx, edx
mov r8, rsi
call qword [sym.imp.kernel32.dll_HeapFree]
mov rax, qword [rsp + 0x70]
inc rax
jmp 0x140002ae5
xor eax, eax
mov qword [rsp + 0x78], r12
mov qword [rsp + 0x70], rax
lea rsi, [rsp + 0x60]
mov rcx, rsi
call fcn.14000de50
mov rcx, rsi
call fcn.14000dae0
cmp dword [rsp + 0x40], 3
je 0x140002b51
mov rdx, qword [rsp + 0x50]
lea rcx, [rsp + 0x40]
call fcn.140019350
mov rax, qword [rsp + 0x40]
cmp rax, 2
je 0x140002b51
lea rcx, [rsp + 0x48]
test rax, rax
je 0x140002b41
mov rax, qword [rsp + 0x48]
lock dec qword [rax]
jne 0x140002b51
call fcn.140013810
jmp 0x140002b51
mov rax, qword [rsp + 0x48]
lock dec qword [rax]
jne 0x140002b51
call fcn.140012e10
cmp qword [rsp + 0x120], 0
jne 0x140002b85
xor esi, esi
xchg qword [rsp + 0x128], rsi
test rsi, rsi
je 0x140002b85
mov rcx, rsi
call fcn.1400043a0
mov rcx, qword [0x140026178]
xor edx, edx
mov r8, rsi
call qword [sym.imp.kernel32.dll_HeapFree]
cmp qword [rsp + 0x158], 0
lea rcx, [rsp + 0x160]
je 0x140002bad
mov rax, qword [rsp + 0x160]
lock dec qword [rax]
jne 0x140002bc0
call fcn.140001ca0
jmp 0x140002bc0
mov rax, qword [rsp + 0x160]
lock dec qword [rax]
jne 0x140002bc0
call fcn.140001bb0
mov rdi, qword [rsp + 0x168]
lea rsi, [rdi + 0x40]
mov rcx, rsi
call qword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
movzx eax, byte [rdi + 0x48]
cmp byte [rdi + 0xcc], 0
je 0x140002bf0
mov rcx, rsi
call qword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
jmp 0x140003e92
mov byte [rdi + 0xcc], 1
mov rax, qword [rdi + 0xa0]
test rax, rax
je 0x140002c15
lock dec qword [rax]
jne 0x140002c15
lea rcx, [rdi + 0xa0]
call fcn.1400132b0
mov qword [rdi + 0xa0], 0
mov ecx, 0xd0
add rcx, qword [rsp + 0x168]
call qword [sym.imp.kernel32.dll_WakeAllConditionVariable]
mov rax, qword [rdi + 0xa8]
mov qword [rsp + 0x58], rax
movups xmm0, xmmword [rdi + 0xb0]
movaps xmmword [rsp + 0x290], xmm0
mov qword [rdi + 0xa8], 0
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp byte [rax + 0x50], 0
jne 0x140002c7c
xor ecx, ecx
call fcn.140019b70
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rbx, qword [rcx + rax*8]
mov rax, qword [rbx + 0x58]
mov rcx, qword [rbx + 0x60]
lea rdx, [rax + 1]
mov qword [rbx + 0x58], rdx
mov r14, qword [rdi + 0x70]
mov rdx, qword [rdi + 0x78]
mov qword [rsp + 0xd0], rdx
mov rdx, qword [rdi + 0x88]
mov qword [rsp + 0xc8], rdx
movups xmm0, xmmword [0x140022e10]
movups xmmword [rdi + 0x80], xmm0
movdqu xmm0, xmmword [0x140022e00]
movdqu xmmword [rdi + 0x70], xmm0
mov qword [rdi + 0x90], rax
mov qword [rdi + 0x98], rcx
mov rcx, rsi
call qword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
movzx eax, byte [rbx + 0xd0]
cmp eax, 1
je 0x140002d36
test eax, eax
jne 0x140002d56
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rsi, qword [rcx + rax*8]
lea rcx, [rsi + 0x80]
lea rdx, [0x14000da90]
call fcn.14000ab10
mov byte [rsi + 0xd0], 1
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp byte [rax + 0xce], 2
jne case.default.0x1400026f5
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov rsi, qword [rax + 0x70]
test rsi, rsi
jne 0x140002d86
call fcn.140019c00
test rax, rax
je 0x14000314c
mov rsi, qword [rax]
lock inc qword [rsi]
jle case.default.0x1400026f5
add rsi, 0x10
lea rdi, [0x14000da90]
nop dword [rax + rax]
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
movzx eax, byte [rax + 0xd0]
cmp eax, 1
je 0x140002dec
test eax, eax
jne 0x140002e30
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rbx, qword [rcx + rax*8]
lea rcx, [rbx + 0x80]
mov rdx, rdi
call fcn.14000ab10
mov byte [rbx + 0xd0], 1
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
movzx r13d, byte [rax + 0xcc]
movzx r12d, byte [rax + 0xcd]
mov word [rax + 0xcc], 0x8001
mov al, 1
mov r15, qword [rsp + 0x170]
test r15, r15
jne 0x140002e44
jmp case.default.0x1400026f5
mov r13b, 2
mov r15, qword [rsp + 0x170]
test r15, r15
je case.default.0x1400026f5
cmp al, 1
je 0x140002e78
movzx eax, al
test eax, eax
jne 0x140002ec0
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rbx, qword [rcx + rax*8]
lea rcx, [rbx + 0x80]
mov rdx, rdi
call fcn.14000ab10
mov byte [rbx + 0xd0], 1
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
movzx ebp, byte [rax + 0xcc]
movzx ebx, byte [rax + 0xcd]
test bpl, bpl
je 0x140002ee0
test bl, bl
jne 0x140002ee0
mov rcx, rsi
call fcn.140011e30
mov r15b, 1
cmp r13b, 2
jne 0x14000308d
jmp 0x1400030fa
xor ebp, ebp
xor ebx, ebx
mov rax, qword [r15 + 0x30]
test al, 2
je 0x140002f1d
jmp 0x140003070
mov eax, ebx
sub al, 1
movzx eax, al
mov ecx, 0
cmovb eax, ecx
test bpl, bpl
movzx ecx, bl
cmovne ecx, eax
mov eax, dword [0x140026194]
mov rdx, qword gs:[0x58]
mov rax, qword [rdx + rax*8]
mov byte [rax + 0xcd], cl
mov rax, qword [r15 + 0x30]
test al, 2
jne 0x140003070
test al, 4
jne 0x14000304e
test al, 1
je 0x140002f92
cmp rsi, qword [r15 + 0x28]
jne 0x140002f66
mov rax, qword [r15 + 0x20]
lea rcx, [fcn.140011da0]
cmp qword [rax], rcx
jne 0x140002f66
lea rcx, [0x140011dc0]
cmp qword [rax + 8], rcx
jne 0x140002f66
lea rcx, [fcn.140011e30]
cmp qword [rax + 0x10], rcx
jne 0x140002f66
lea rcx, [fcn.140011e80]
cmp qword [rax + 0x18], rcx
je 0x140002fc7
mov rax, qword [r15 + 0x30]
nop word [rax + rax]
mov rcx, rax
and rcx, 0xfffffffffffffffe
lock cmpxchg qword [r15 + 0x30], rcx
jne 0x140002f70
test al, 2
jne 0x14000305c
mov rax, qword [r15 + 0x20]
mov rcx, qword [r15 + 0x28]
call qword [rax + 0x18]
mov rcx, rsi
call fcn.140011da0
mov qword [r15 + 0x20], rax
mov qword [r15 + 0x28], rdx
mov rax, qword [r15 + 0x30]
nop word cs:[rax + rax]
mov rcx, rax
or rcx, 1
lock cmpxchg qword [r15 + 0x30], rcx
jne 0x140002fb0
test al, 2
jne 0x140003070
mov r15b, 1
test bpl, bpl
je 0x140003087
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
movzx eax, byte [rax + 0xd0]
cmp eax, 1
je 0x140003023
test eax, eax
jne 0x140003087
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rbp, qword [rcx + rax*8]
lea rcx, [rbp + 0x80]
mov rdx, rdi
call fcn.14000ab10
mov byte [rbp + 0xd0], 1
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov byte [rax + 0xcc], 1
mov byte [rax + 0xcd], bl
cmp r13b, 2
jne 0x14000308d
jmp 0x1400030fa
xor r15d, r15d
cmp r13b, 2
jne 0x14000308d
jmp 0x1400030fa
lock or qword [r15 + 0x30], 1
nop word cs:[rax + rax]
movzx eax, byte [r15 + 0x38]
mov byte [r15 + 0x38], 0
xor al, 1
test al, al
je 0x140003109
xor r15d, r15d
cmp r13b, 2
je 0x1400030fa
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
movzx eax, byte [rax + 0xd0]
cmp eax, 1
je 0x1400030d9
test eax, eax
jne 0x1400030fa
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rbx, qword [rcx + rax*8]
lea rcx, [rbx + 0x80]
mov rdx, rdi
call fcn.14000ab10
mov byte [rbx + 0xd0], 1
mov eax, dword [0x140026194]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov byte [rax + 0xcc], r13b
mov byte [rax + 0xcd], r12b
test r15b, r15b
je 0x140003144
call fcn.140011ea0
jmp 0x140002da0
mov rax, qword [rsp + 0x170]
test rax, rax
je 0x140003129
lock dec qword [rax]
jne 0x140003129
mov rcx, qword [rsp + 0x170]
call fcn.140013600
mov qword [rsp + 0x170], 0
xor r15d, r15d
cmp r13b, 2
jne 0x14000308d
jmp 0x1400030fa
mov rcx, rsi
call fcn.140011e80
mov rax, qword [rsp + 0x58]
test rax, rax
je 0x140003254
movdqa xmm0, xmmword [rsp + 0x290]
movdqu xmmword [rsp + 0x68], xmm0
mov qword [rsp + 0x60], rax
mov rsi, qword [rsp + 0x70]
mov rcx, rsi
mov edx, 0xffffffff
call qword [sym.imp.kernel32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
je 0x140004008
mov rcx, rsi
call qword [sym.imp.kernel32.dll_CloseHandle]
mov rcx, qword [rsp + 0x68]
mov rdx, 0xffffffffffffffff
mov eax, 1
lock cmpxchg qword [rcx + 8], rdx
jne case.default.0x1400026f5
mov rax, qword [rsp + 0x68]
mov rcx, qword [rax]
mov qword [rax + 8], 1
cmp rcx, 1
jne case.default.0x1400026f5
mov rax, qword [rsp + 0x68]
mov rsi, qword [rax + 0x20]
mov rdi, qword [rax + 0x28]
cmp qword [rax + 0x18], 0
mov qword [rax + 0x18], 0
je case.default.0x1400026f5
mov rax, qword [rsp + 0x60]
lock dec qword [rax]
jne 0x140003211
mov rcx, qword [rsp + 0x60]
call fcn.140009f10
mov rax, qword [rsp + 0x68]
lock dec qword [rax]
je 0x14000321c
test rsi, rsi
jne 0x14000322b
jmp 0x140003254
mov rax, qword [rsp + 0x68]
lock dec qword [rax]
jne 0x14000320a
lea rcx, [rsp + 0x68]
call fcn.140013350
test rsi, rsi
je 0x140003254
mov rcx, rsi
call qword [rdi]
cmp qword [rdi + 8], 0
je 0x140003254
cmp qword [rdi + 0x10], 0x11
jb 0x140003242
mov rsi, qword [rsi - 8]
mov rcx, qword [0x140026178]
xor edx, edx
mov r8, rsi
call qword [sym.imp.kernel32.dll_HeapFree]
movdqa xmm0, xmmword [r14]
mov rsi, qword [rsp + 0xd0]
test rsi, rsi
je 0x1400032b5
lea rax, [rsi + 1]
movabs rcx, 0x800000000000000
dec rcx
cmp rax, rcx
mov r11, qword [rsp + 0xc8]
ja 0x1400032ab
mov rcx, rax
shl rcx, 5
add rsi, 0x11
add rsi, rcx
jb 0x1400032ab
movabs rdx, 0x8000000000000001
add rdx, 0xffffffffffffffef
cmp rsi, rdx
jbe 0x140003fb0
xor edx, edx
mov r9, r14
sub r9, rcx
jmp 0x1400032c4
mov eax, 1
xor edx, edx
mov r11, qword [rsp + 0xc8]
lea r8, [r14 + 0x10]
pmovmskb r10d, xmm0
mov ecx, r10d
not ecx
add rax, r14
mov qword [rsp + 0xf0], r14
mov qword [rsp + 0xf8], r8
mov qword [rsp + 0x100], rax
mov word [rsp + 0x108], cx
mov qword [rsp + 0x110], r11
mov qword [rsp + 0xd8], rdx
mov qword [rsp + 0xe0], rsi
mov qword [rsp + 0xe8], r9
test r11, r11
je 0x140003599
cmp r10w, 0xffff
je 0x140003330
mov edx, 0xfffffffe
sub edx, r10d
jmp 0x140003365
movdqa xmm0, xmmword [r8]
pmovmskb ecx, xmm0
add r14, 0xfffffffffffffe00
add r8, 0x10
cmp ecx, 0xffff
je 0x140003330
mov qword [rsp + 0xf8], r8
mov qword [rsp + 0xf0], r14
mov edx, 0xfffffffe
sub edx, ecx
not ecx
mov eax, ecx
and eax, edx
mov word [rsp + 0x108], ax
dec r11
mov qword [rsp + 0x110], r11
tzcnt eax, ecx
shl rax, 5
sub r14, rax
mov rsi, qword [r14 - 0x20]
mov rdi, qword [r14 - 0x18]
movdqu xmm0, xmmword [r14 - 0x10]
movdqa xmmword [rsp + 0x60], xmm0
test rdi, rdi
je 0x140003599
inc r11
mov rax, 0xffffffffffffffff
cmovne rax, r11
cmp rax, 5
mov ebx, 4
cmovae rbx, rax
mov rax, rbx
shr rax, 0x3a
jne case.default.0x1400026f5
movzx eax, byte [0x140026190]
mov rcx, qword [0x140026178]
test rcx, rcx
jne 0x1400033f8
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je case.default.0x1400026f5
mov rcx, rax
mov qword [0x140026178], rax
mov r8, rbx
shl r8, 5
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je case.default.0x1400026f5
mov qword [rax], rsi
mov qword [rax + 8], rdi
movaps xmm0, xmmword [rsp + 0x60]
movups xmmword [rax + 0x10], xmm0
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], 1
movdqu xmm0, xmmword [rsp + 0xd8]
movups xmm1, xmmword [rsp + 0xe8]
movups xmm2, xmmword [rsp + 0xf8]
movups xmm3, xmmword [rsp + 0x108]
movaps xmmword [rsp + 0x90], xmm3
movaps xmmword [rsp + 0x70], xmm1
movaps xmmword [rsp + 0x80], xmm2
movdqa xmmword [rsp + 0x60], xmm0
mov rsi, qword [rsp + 0x98]
movzx ecx, word [rsp + 0x90]
mov r14, qword [rsp + 0x78]
mov r15d, 1
mov rbx, qword [rsp + 0x80]
mov r10, 0xffffffffffffffff
lea rdi, [rsp + 0x40]
mov edx, 1
jmp 0x1400034dc
mov rcx, rdx
shl rcx, 5
mov qword [rax + rcx], r12
mov qword [rax + rcx + 8], r13
movdqa xmm0, xmmword [rsp + 0x2a0]
movdqu xmmword [rax + rcx + 0x10], xmm0
inc rdx
mov qword [rsp + 0x50], rdx
dec r15
mov ecx, ebp
test rsi, rsi
mov qword [rsp + 0x20], rdx
je 0x1400035ab
test cx, cx
je 0x140003510
lea ebp, [rcx - 1]
and ebp, ecx
dec rsi
test r14, r14
jne 0x14000353e
jmp 0x1400035c1
movdqa xmm0, xmmword [rbx]
pmovmskb ecx, xmm0
add r14, 0xfffffffffffffe00
add rbx, 0x10
cmp ecx, 0xffff
je 0x140003510
mov r8d, 0xfffffffe
sub r8d, ecx
not ecx
mov ebp, ecx
and ebp, r8d
dec rsi
tzcnt ecx, ecx
shl rcx, 5
mov r8, r14
sub r8, rcx
mov r12, qword [r8 - 0x20]
mov r13, qword [r8 - 0x18]
movups xmm0, xmmword [r8 - 0x10]
movaps xmmword [rsp + 0x2a0], xmm0
test r13, r13
je 0x1400035b7
cmp rdx, qword [rsp + 0x40]
jne 0x1400034b0
mov r8, rsi
inc r8
cmove r8, r10
mov rcx, rdi
call fcn.14001f690
mov r10, 0xffffffffffffffff
mov rdx, qword [rsp + 0x20]
mov rax, qword [rsp + 0x48]
jmp 0x1400034b0
lea rcx, [rsp + 0xd8]
call fcn.14000d680
jmp 0x140003e92
mov qword [rsp + 0xc0], r15
xor esi, esi
jmp 0x1400035ce
mov qword [rsp + 0xc0], r15
jmp 0x1400035cc
mov qword [rsp + 0xc0], r15
xor r14d, r14d
mov ecx, ebp
mov qword [rsp + 0x78], r14
mov qword [rsp + 0x80], rbx
mov word [rsp + 0x90], cx
mov qword [rsp + 0x98], rsi
lea rcx, [rsp + 0x60]
call fcn.14000d680
mov rsi, qword [rsp + 0x40]
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0x28], rax
mov rdx, qword [rsp + 0x20]
cmp rdx, 0x15
mov qword [rsp + 0x1a0], rsi
jae 0x140003643
cmp rdx, 1
jbe 0x140003d71
mov r8d, 1
mov rsi, qword [rsp + 0x28]
mov rcx, rsi
mov r15, rdx
call fcn.14000d7a0
shl r15, 5
add r15, rsi
jmp 0x140003d89
movzx eax, byte [0x140026190]
mov rcx, qword [0x140026178]
test rcx, rcx
jne 0x140003674
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je case.default.0x1400026f5
mov rcx, rax
mov qword [0x140026178], rax
mov rdx, qword [rsp + 0x20]
movabs r8, 0x8000000000000001
mov rax, rdx
shl rax, 4
add r8, 0xffffffffffffffdf
and r8, rax
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je case.default.0x1400026f5
mov r12, rax
movzx eax, byte [0x140026190]
mov rcx, qword [0x140026178]
test rcx, rcx
jne 0x1400036cc
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je case.default.0x1400026f5
mov rcx, rax
mov qword [0x140026178], rax
mov r8d, 0x100
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je case.default.0x1400026f5
mov r13, rax
mov rax, qword [rsp + 0x28]
lea rcx, [rax + 0x40]
mov qword [rsp + 0x180], rcx
add rax, 0xffffffffffffffe0
mov qword [rsp + 0x198], rax
mov eax, 0x10
mov qword [rsp + 0x188], rax
xor esi, esi
xor ebp, ebp
mov r10, qword [rsp + 0x20]
mov qword [rsp + 0x30], r12
jmp 0x140003736
mov ebp, 1
mov rsi, qword [rsp + 0x190]
cmp rsi, r10
jae 0x140003d49
mov r8, r10
sub r8, rsi
mov r9, rsi
shl r9, 5
mov rax, qword [rsp + 0x28]
lea rcx, [rax + r9]
cmp r8, 2
jae 0x140003760
mov rax, r10
jmp 0x1400038d0
mov rax, qword [rcx]
mov rdx, qword [rcx + 0x20]
cmp rdx, rax
jae 0x140003790
cmp r8, 2
jne 0x1400037a5
lea rax, [rsi + 2]
mov r8d, 2
jmp 0x14000384a
cmp r8, 2
jne 0x1400037f1
lea rax, [rsi + 2]
mov r8d, 2
jmp 0x1400038d0
mov r10, qword [rsp + 0xc0]
lea r11, [r10 + rsi]
add r9, qword [rsp + 0x180]
mov r10d, 2
mov rdi, rdx
nop word cs:[rax + rax]
mov rbx, rdi
mov rdi, qword [r9]
cmp rdi, rbx
jae 0x140003832
lea rbx, [r11 + r10]
inc rbx
inc r10
add r9, 0x20
cmp rbx, 2
jne 0x1400037d0
jmp 0x14000382f
mov r10, qword [rsp + 0xc0]
lea r11, [r10 + rsi]
add r9, qword [rsp + 0x180]
mov r10d, 2
mov rdi, rdx
nop
mov rbx, rdi
mov rdi, qword [r9]
cmp rdi, rbx
jb 0x140003832
lea rbx, [r11 + r10]
inc rbx
inc r10
add r9, 0x20
cmp rbx, 2
jne 0x140003810
mov r10, r8
lea r9, [r10 + rsi]
mov r8, r10
cmp rdx, rax
mov rax, r9
mov r10, qword [rsp + 0x20]
jae 0x1400038d0
cmp rsi, rax
ja case.default.0x1400026f5
cmp rax, r10
ja case.default.0x1400026f5
cmp r8, 2
jb 0x1400038d0
mov r11, rax
mov rax, r8
shr rax, 1
lea rdx, [rsi + r8]
shl rdx, 5
add rdx, qword [rsp + 0x198]
mov r9, rcx
nop
movups xmm0, xmmword [r9]
movups xmm1, xmmword [r9 + 0x10]
movaps xmmword [rsp + 0x70], xmm1
movaps xmmword [rsp + 0x60], xmm0
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
movups xmmword [r9 + 0x10], xmm1
movups xmmword [r9], xmm0
movdqa xmm0, xmmword [rsp + 0x60]
movaps xmm1, xmmword [rsp + 0x70]
movups xmmword [rdx + 0x10], xmm1
movdqu xmmword [rdx], xmm0
add r9, 0x20
add rdx, 0xffffffffffffffe0
dec rax
jne 0x140003880
mov rax, r11
nop word cs:[rax + rax]
mov rdi, rax
sub rdi, rsi
jb case.default.0x1400026f5
cmp rax, r10
ja case.default.0x1400026f5
jae 0x140003930
cmp r8, 0xa
jae 0x140003930
lea rdi, [rsi + 0xa]
cmp rdi, r10
cmovae rdi, r10
mov qword [rsp + 0x190], rdi
sub rdi, rsi
jb case.default.0x1400026f5
cmp r8, 1
adc r8, 0
mov rdx, rdi
call fcn.14000d7a0
mov r10, qword [rsp + 0x20]
cmp rbp, qword [rsp + 0x188]
je 0x140003946
jmp 0x1400039ce
mov qword [rsp + 0x190], rax
cmp rbp, qword [rsp + 0x188]
jne 0x1400039ce
movzx eax, byte [0x140026190]
mov rax, qword [0x140026178]
test rax, rax
jne 0x14000396f
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je case.default.0x1400026f5
mov qword [0x140026178], rax
mov r8, rbp
shl r8, 5
mov rcx, rax
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je case.default.0x1400026f5
mov r12, rax
lea rax, [rbp*2]
mov qword [rsp + 0x188], rax
mov r8, rbp
shl r8, 4
mov rcx, r12
mov rdx, r13
call sub.VCRUNTIME140.dll_memcpy
mov rcx, qword [0x140026178]
xor edx, edx
mov r8, r13
call qword [sym.imp.kernel32.dll_HeapFree]
mov r13, r12
mov r10, qword [rsp + 0x20]
mov r12, qword [rsp + 0x30]
mov rax, rbp
shl rax, 4
mov qword [r13 + rax], rdi
mov qword [r13 + rax + 8], rsi
inc rbp
mov rax, rbp
cmp rbp, 2
mov qword [rsp + 0x1a8], r13
jae 0x140003a7a
jmp 0x140003725
mov r12, qword [rsp + 0x30]
mov rdx, r12
mov r14, qword [rsp + 0x38]
sub rbp, rdx
mov rcx, rdi
mov r8, rbp
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x1c0]
add rax, rbx
mov rcx, qword [rsp + 0x1b8]
mov qword [rcx], rax
mov rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x1b0]
mov qword [rcx], rax
lea rdx, [r14 + 0x10]
not rsi
mov r8, qword [rsp + 0x58]
add r8, rsi
shl r8, 4
mov rcx, r14
call sub.VCRUNTIME140.dll_memmove
mov rax, qword [rsp + 0xc8]
cmp rax, 1
mov r10, qword [rsp + 0x20]
mov r13, qword [rsp + 0x1a8]
jbe 0x140003720
mov rbp, rax
lea r11, [rax - 1]
mov rcx, r11
shl rcx, 4
mov rax, qword [r13 + rcx]
mov rcx, qword [r13 + rcx + 8]
add rcx, rax
cmp rcx, r10
je 0x140003af0
mov rdx, rbp
shl rdx, 4
mov r8, qword [rdx + r13 - 0x20]
cmp r8, rax
jbe 0x140003af0
cmp rbp, 2
jbe 0x140003d35
lea r14, [rbp - 3]
mov rcx, r14
shl rcx, 4
mov rcx, qword [r13 + rcx]
lea r9, [r8 + rax]
cmp rcx, r9
jbe 0x140003b06
cmp rbp, 3
jbe 0x140003d3f
add r8, rcx
cmp qword [rdx + r13 - 0x40], r8
jbe 0x140003b06
jmp 0x140003725
cmp rbp, 3
jb 0x140003b0b
lea r14, [rbp - 3]
mov rcx, r14
shl rcx, 4
mov rcx, qword [r13 + rcx]
cmp rcx, rax
jb 0x140003b0f
lea r14, [rbp - 2]
cmp rbp, r14
jbe case.default.0x1400026f5
lea rax, [r14 + 1]
cmp rbp, rax
jbe case.default.0x1400026f5
mov rcx, r14
shl rcx, 4
mov rdi, qword [r13 + rcx + 8]
shl rax, 4
mov rdx, qword [r13 + rax]
mov r15, qword [r13 + rax + 8]
add r15, rdx
mov r12, r15
sub r12, rdi
jb case.default.0x1400026f5
mov qword [rsp + 0x58], rbp
cmp r15, r10
ja case.default.0x1400026f5
mov qword [rsp + 0x1c0], rdx
mov qword [rsp + 0xc8], r11
lea rdx, [rcx + r13]
mov qword [rsp + 0x38], rdx
mov rbx, qword [r13 + rcx]
lea rcx, [r13 + rax]
mov qword [rsp + 0x1b8], rcx
add rax, r13
add rax, 8
mov qword [rsp + 0x1b0], rax
mov qword [rsp + 0xd0], rdi
shl rdi, 5
add rdi, qword [rsp + 0x28]
mov rbp, rbx
shl rbp, 5
lea r13, [rdi + rbp]
shl r15, 5
mov rsi, r12
sub rsi, rbx
cmp rsi, rbx
jae 0x140003c80
mov rbp, rsi
shl rbp, 5
mov r12, qword [rsp + 0x30]
mov rcx, r12
mov rdx, r13
mov r8, rbp
call sub.VCRUNTIME140.dll_memcpy
add rbp, r12
test rbx, rbx
jle 0x140003d20
test rsi, rsi
jle 0x140003d20
add r15, qword [rsp + 0x198]
mov rsi, r14
mov r14, qword [rsp + 0x38]
nop word cs:[rax + rax]
mov rax, r13
mov rcx, rbp
mov rdx, qword [rbp - 0x20]
mov r8, qword [r13 - 0x20]
cmp rdx, r8
mov r13d, 0
sbb r13, r13
cmp rdx, r8
mov ebp, 0
adc rbp, 0xffffffffffffffff
shl r13, 5
add r13, rax
shl rbp, 5
add rbp, rcx
cmp rdx, r8
mov rax, rbp
cmovb rax, r13
movdqu xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [r15 + 0x10], xmm1
movdqu xmmword [r15], xmm0
cmp r13, rdi
jbe 0x140003c6e
add r15, 0xffffffffffffffe0
cmp rbp, r12
ja 0x140003c10
mov rdi, r13
mov rdx, r12
jmp 0x140003a09
mov rsi, qword [rsp + 0x30]
mov rcx, rsi
mov rdx, rdi
mov r8, rbp
call sub.VCRUNTIME140.dll_memcpy
add rbp, rsi
test rbx, rbx
jle 0x140003d25
cmp r12, rbx
mov rsi, r14
jle 0x1400039fc
add r15, qword [rsp + 0x28]
mov r12, qword [rsp + 0x30]
mov rdx, r12
mov r14, qword [rsp + 0x38]
nop dword [rax]
mov r8, rdx
mov rcx, qword [r13]
xor edx, edx
xor eax, eax
cmp rcx, qword [r8]
setae dl
setb cl
mov r9, r8
cmovb r9, r13
movdqu xmm0, xmmword [r9]
movups xmm1, xmmword [r9 + 0x10]
movups xmmword [rdi + 0x10], xmm1
movdqu xmmword [rdi], xmm0
add rdi, 0x20
shl rdx, 5
add rdx, r8
cmp rdx, rbp
jae 0x140003a09
mov al, cl
shl rax, 5
add r13, rax
cmp r13, r15
jb 0x140003cc0
jmp 0x140003a09
mov rdi, r13
jmp 0x140003d2a
mov r12, qword [rsp + 0x30]
mov rdx, r12
mov rsi, r14
jmp 0x140003a04
mov ebp, 2
jmp 0x140003725
mov ebp, 3
jmp 0x140003725
mov rcx, qword [0x140026178]
xor edx, edx
mov r8, r13
mov rsi, qword [sym.imp.kernel32.dll_HeapFree]
call rsi
mov rcx, qword [0x140026178]
xor edx, edx
mov r8, r12
call rsi
mov rdx, qword [rsp + 0x20]
mov r15, rdx
shl r15, 5
mov rdi, qword [rsp + 0x28]
add r15, rdi
test rdx, rdx
je 0x140003e15
lea r12, [rsp + 0x68]
lea rsi, [rsp + 0x60]
mov r13, qword [sym.imp.kernel32.dll_HeapFree]
mov rdi, qword [rsp + 0x28]
jmp 0x140003dcc
mov rcx, qword [0x140026178]
xor edx, edx
mov r8, rbx
call r13
add rdi, 0x20
cmp rdi, r15
je 0x140003e73
mov rax, qword [rdi + 8]
test rax, rax
je 0x140003e11
movdqu xmm0, xmmword [rdi + 0x10]
movdqu xmmword [r12], xmm0
mov qword [rsp + 0x60], rax
mov rcx, rsi
call fcn.140016d40
test rax, rax
je 0x140003dbf
mov rbx, rax
mov r14, rdx
mov rcx, rax
call qword [rdx]
cmp qword [r14 + 8], 0
je 0x140003dbf
cmp qword [r14 + 0x10], 0x11
jb 0x140003db0
mov rbx, qword [rbx - 8]
jmp 0x140003db0
add rdi, 0x20
sub r15, rdi
je 0x140003e73
shr r15, 5
add rdi, 0x10
mov rsi, qword [sym.imp.kernel32.dll_CloseHandle]
jmp 0x140003e39
add rdi, 0x20
dec r15
je 0x140003e73
mov rcx, qword [rdi + 8]
call rsi
mov rax, qword [rdi - 8]
lock dec qword [rax]
jne 0x140003e60
mov rcx, qword [rdi - 8]
call fcn.140009f10
mov rax, qword [rdi]
lock dec qword [rax]
jne 0x140003e30
jmp 0x140003e69
mov rax, qword [rdi]
lock dec qword [rax]
jne 0x140003e30
mov rcx, rdi
call fcn.140013350
jmp 0x140003e30
cmp qword [rsp + 0x1a0], 0
je 0x140003e92
mov rcx, qword [0x140026178]
xor edx, edx
mov r8, qword [rsp + 0x28]
call qword [sym.imp.kernel32.dll_HeapFree]
mov rax, qword [rsp + 0x168]
lock dec qword [rax]
jne 0x140003ead
lea rcx, [rsp + 0x168]
call fcn.140001f00
mov rdi, qword [rsp + 0x170]
test rdi, rdi
je 0x140003f00
lea rsi, [rsp + 0x170]
mov rax, qword [rdi + 0x30]
nop word cs:[rax + rax]
mov rcx, rax
or rcx, 4
lock cmpxchg qword [rdi + 0x30], rcx
jne 0x140003ed0
and eax, 0xa
cmp eax, 8
jne 0x140003ef2
mov rax, qword [rdi + 0x10]
mov rcx, qword [rdi + 0x18]
call qword [rax + 0x10]
lock dec qword [rdi]
jne 0x140003f00
mov rcx, rsi
call fcn.140001b40
mov rax, qword [rsp + 0x200]
lock dec qword [rax]
jne 0x140003f1b
lea rcx, [rsp + 0x200]
call fcn.140001930
mov rax, qword [rsp + 0x220]
test rax, rax
je 0x140003f3b
lock dec qword [rax]
jne 0x140003f3b
lea rcx, [rsp + 0x220]
call fcn.140001930
mov rax, qword [rsp + 0x230]
test rax, rax
je 0x140003f5b
lock dec qword [rax]
jne 0x140003f5b
lea rcx, [rsp + 0x230]
call fcn.140001930
mov rax, qword [rsp + 0x240]
test rax, rax
je 0x140003f7b
lock dec qword [rax]
jne 0x140003f7b
lea rcx, [rsp + 0x240]
call fcn.140001930
mov rax, qword [rsp + 0x250]
test rax, rax
je 0x140003f9b
lock dec qword [rax]
jne 0x140003f9b
lea rcx, [rsp + 0x250]
call fcn.140001930
nop
add rsp, 0x3c8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov edx, 0x10
jmp 0x1400032ad
lea rbp, [rbx + rax*8]
xor edi, edi
jmp 0x140003fdc
inc rdi
cmp r13, rdi
je 0x140002a54
mov rcx, qword [rbp + rdi*8]
mov rax, 0xffffffffffffffc0
lock xadd qword [rcx], rax
cmp rax, 0x3f
jbe case.default.0x1400026f5
and rax, 0xffffffffffffffc0
cmp rax, 0x40
jne 0x140003fd0
mov rax, qword [rcx + 0x10]
call qword [rax + 0x10]
jmp 0x140003fd0
ud2
call sub.kernel32.dll_GetLastError
ud2