// File: Alcaro[P]bridges/arlib/json.cpp
// Function: jsonwriter::strwrap(cstring)
string jsonwriter::strwrap(cstring s)
{
	const uint8_t * sp = s.bytes().ptr();
	const uint8_t * spe = sp + s.length();
	
	string out = "\"";
	const uint8_t * previt = sp;
	for (const uint8_t * it = sp; it < spe; it++)
	{
#ifdef __SSE2__
		if (spe-it >= 16)
		{
			__m128i chs = _mm_loadu_si128((__m128i*)it);
			
			__m128i bad1 = _mm_cmplt_epi8(_mm_xor_si128(chs, _mm_set1_epi8(0x82)), _mm_set1_epi8((int8_t)(0x21^0x80)));
			__m128i bad2 = _mm_or_si128(_mm_cmpeq_epi8(chs, _mm_set1_epi8(0x7F)), _mm_cmpeq_epi8(chs, _mm_set1_epi8(0x5C)));
			__m128i bad = _mm_or_si128(bad1, bad2);
			int mask = _mm_movemask_epi8(bad);
			if (mask == 0)
			{
				it += 16-1; // -1 for the it++ above (oddly enough, this way is faster)
				continue;
			}
			it += ctz32(mask);
		}
#endif
		
		uint8_t c = *it;
		// DEL is legal according to nst/JSONTestSuite, but let's avoid it anyways
		if ((c^2) <= 32 || c == '\\' || c == 0x7F)
		{
			out += arrayview<uint8_t>(previt, it-previt);
			previt = it+1;
			
			if(0);
			else if (c=='\n') out += "\\n";
			else if (c=='\r') out += "\\r";
			else if (c=='\t') out += "\\t";
			else if (c=='\b') out += "\\b";
			else if (c=='\f') out += "\\f";
			else if (c=='\"') out += "\\\"";
			else if (c=='\\') out += "\\\\";
			else out += "\\u"+tostringhex<4>(c);
		}
	}
	out += arrayview<uint8_t>(previt, spe-previt);
	return out+"\"";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x370, %rsp            # imm = 0x370
movq %rdi, -0x350(%rbp)
movq %rdi, %rax
movq %rax, -0x348(%rbp)
movq %rdi, -0x210(%rbp)
movq %rsi, -0x220(%rbp)
movq %rdx, -0x218(%rbp)
leaq -0x220(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x108(%rbp), %rax
leaq -0x118(%rbp), %rcx
movq %rcx, -0x28(%rbp)
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x340(%rbp)
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x29b99
movq -0x340(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5cc0
movq -0x340(%rbp), %rsi
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, %edx
leaq -0x118(%rbp), %rdi
callq 0x5ed0
jmp 0x29bb4
movq -0x340(%rbp), %rax
movq (%rax), %rsi
movl 0x8(%rax), %eax
movl %eax, %edx
leaq -0x118(%rbp), %rdi
callq 0x5ed0
movups -0x118(%rbp), %xmm0
movaps %xmm0, -0x100(%rbp)
movq -0x100(%rbp), %rcx
movq -0xf8(%rbp), %rax
movq %rcx, -0x238(%rbp)
movq %rax, -0x230(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x62c0
movq %rax, -0x228(%rbp)
movq -0x228(%rbp), %rax
movq %rax, -0x360(%rbp)
leaq -0x220(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x358(%rbp)
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x29c55
movq -0x358(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0xe4(%rbp)
jmp 0x29c65
movq -0x358(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xe4(%rbp)
movq -0x360(%rbp), %rax
movl -0xe4(%rbp), %ecx
addq %rcx, %rax
movq %rax, -0x240(%rbp)
leaq -0x250(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x39696(%rip), %rax     # 0x63327
movq %rax, -0xe0(%rbp)
movq -0xd8(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0x5c00
movq -0x368(%rbp), %rdi
movq -0xe0(%rbp), %rsi
callq 0x5c20
movq -0x228(%rbp), %rax
movq %rax, -0x258(%rbp)
movq -0x228(%rbp), %rax
movq %rax, -0x260(%rbp)
movq -0x260(%rbp), %rax
cmpq -0x240(%rbp), %rax
jae 0x2a590
movq -0x240(%rbp), %rax
movq -0x260(%rbp), %rcx
subq %rcx, %rax
cmpq $0x10, %rax
jl 0x2a32b
movq -0x260(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0x270(%rbp)
movaps -0x270(%rbp), %xmm1
movb $-0x7e, -0x1b1(%rbp)
movb -0x1b1(%rbp), %al
movb %al, -0x36c(%rbp)
movb %al, -0x91(%rbp)
movb %al, -0x92(%rbp)
movb %al, -0x93(%rbp)
movb %al, -0x94(%rbp)
movb %al, -0x95(%rbp)
movb %al, -0x96(%rbp)
movb %al, -0x97(%rbp)
movb %al, -0x98(%rbp)
movb %al, -0x99(%rbp)
movb %al, -0x9a(%rbp)
movb %al, -0x9b(%rbp)
movb %al, -0x9c(%rbp)
movb %al, -0x9d(%rbp)
movb %al, -0x9e(%rbp)
movb %al, -0x9f(%rbp)
movb %al, -0xa0(%rbp)
movzbl -0x91(%rbp), %eax
movd %eax, %xmm0
movzbl -0x92(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
movzbl -0x93(%rbp), %eax
movd %eax, %xmm3
movzbl -0x94(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
punpcklwd %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
movzbl -0x95(%rbp), %eax
movd %eax, %xmm2
movzbl -0x96(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
movzbl -0x97(%rbp), %eax
movd %eax, %xmm4
movzbl -0x98(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm4, %xmm2    # xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]
punpcklwd %xmm3, %xmm2    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
punpckldq %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
movzbl -0x99(%rbp), %eax
movd %eax, %xmm3
movzbl -0x9a(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
movzbl -0x9b(%rbp), %eax
movd %eax, %xmm4
movzbl -0x9c(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm4, %xmm3    # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
punpcklwd %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]
movzbl -0x9d(%rbp), %eax
movd %eax, %xmm0
movzbl -0x9e(%rbp), %eax
movd %eax, %xmm4
punpcklbw %xmm0, %xmm4    # xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3],xmm4[4],xmm0[4],xmm4[5],xmm0[5],xmm4[6],xmm0[6],xmm4[7],xmm0[7]
movzbl -0x9f(%rbp), %eax
movd %eax, %xmm5
movzbl -0xa0(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm5, %xmm0    # xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
punpcklwd %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3]
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
punpcklqdq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0]
movaps %xmm0, -0xb0(%rbp)
movaps -0xb0(%rbp), %xmm0
movaps %xmm1, -0x1d0(%rbp)
movaps %xmm0, -0x1e0(%rbp)
movaps -0x1d0(%rbp), %xmm1
movaps -0x1e0(%rbp), %xmm0
pxor %xmm0, %xmm1
movb $-0x5f, -0x1b2(%rbp)
movb -0x1b2(%rbp), %al
movb %al, -0x36b(%rbp)
movb %al, -0x71(%rbp)
movb %al, -0x72(%rbp)
movb %al, -0x73(%rbp)
movb %al, -0x74(%rbp)
movb %al, -0x75(%rbp)
movb %al, -0x76(%rbp)
movb %al, -0x77(%rbp)
movb %al, -0x78(%rbp)
movb %al, -0x79(%rbp)
movb %al, -0x7a(%rbp)
movb %al, -0x7b(%rbp)
movb %al, -0x7c(%rbp)
movb %al, -0x7d(%rbp)
movb %al, -0x7e(%rbp)
movb %al, -0x7f(%rbp)
movb %al, -0x80(%rbp)
movzbl -0x71(%rbp), %eax
movd %eax, %xmm0
movzbl -0x72(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
movzbl -0x73(%rbp), %eax
movd %eax, %xmm3
movzbl -0x74(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
punpcklwd %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
movzbl -0x75(%rbp), %eax
movd %eax, %xmm2
movzbl -0x76(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
movzbl -0x77(%rbp), %eax
movd %eax, %xmm4
movzbl -0x78(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm4, %xmm2    # xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]
punpcklwd %xmm3, %xmm2    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
punpckldq %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
movzbl -0x79(%rbp), %eax
movd %eax, %xmm3
movzbl -0x7a(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
movzbl -0x7b(%rbp), %eax
movd %eax, %xmm4
movzbl -0x7c(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm4, %xmm3    # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
punpcklwd %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]
movzbl -0x7d(%rbp), %eax
movd %eax, %xmm0
movzbl -0x7e(%rbp), %eax
movd %eax, %xmm4
punpcklbw %xmm0, %xmm4    # xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3],xmm4[4],xmm0[4],xmm4[5],xmm0[5],xmm4[6],xmm0[6],xmm4[7],xmm0[7]
movzbl -0x7f(%rbp), %eax
movd %eax, %xmm5
movzbl -0x80(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm5, %xmm0    # xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
punpcklwd %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3]
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
punpcklqdq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0]
movaps %xmm0, -0x90(%rbp)
movaps -0x90(%rbp), %xmm0
movaps %xmm1, -0x1f0(%rbp)
movaps %xmm0, -0x200(%rbp)
movaps -0x200(%rbp), %xmm1
movaps -0x1f0(%rbp), %xmm0
movaps %xmm1, -0xc0(%rbp)
movaps %xmm0, -0xd0(%rbp)
movaps -0xc0(%rbp), %xmm0
movaps -0xd0(%rbp), %xmm1
pcmpgtb %xmm1, %xmm0
movaps %xmm0, -0x280(%rbp)
movaps -0x270(%rbp), %xmm1
movb $0x7f, -0x1b3(%rbp)
movb -0x1b3(%rbp), %al
movb %al, -0x36a(%rbp)
movb %al, -0x51(%rbp)
movb %al, -0x52(%rbp)
movb %al, -0x53(%rbp)
movb %al, -0x54(%rbp)
movb %al, -0x55(%rbp)
movb %al, -0x56(%rbp)
movb %al, -0x57(%rbp)
movb %al, -0x58(%rbp)
movb %al, -0x59(%rbp)
movb %al, -0x5a(%rbp)
movb %al, -0x5b(%rbp)
movb %al, -0x5c(%rbp)
movb %al, -0x5d(%rbp)
movb %al, -0x5e(%rbp)
movb %al, -0x5f(%rbp)
movb %al, -0x60(%rbp)
movzbl -0x51(%rbp), %eax
movd %eax, %xmm0
movzbl -0x52(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
movzbl -0x53(%rbp), %eax
movd %eax, %xmm3
movzbl -0x54(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
punpcklwd %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
movzbl -0x55(%rbp), %eax
movd %eax, %xmm2
movzbl -0x56(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
movzbl -0x57(%rbp), %eax
movd %eax, %xmm4
movzbl -0x58(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm4, %xmm2    # xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]
punpcklwd %xmm3, %xmm2    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
punpckldq %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
movzbl -0x59(%rbp), %eax
movd %eax, %xmm3
movzbl -0x5a(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
movzbl -0x5b(%rbp), %eax
movd %eax, %xmm4
movzbl -0x5c(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm4, %xmm3    # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
punpcklwd %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]
movzbl -0x5d(%rbp), %eax
movd %eax, %xmm0
movzbl -0x5e(%rbp), %eax
movd %eax, %xmm4
punpcklbw %xmm0, %xmm4    # xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3],xmm4[4],xmm0[4],xmm4[5],xmm0[5],xmm4[6],xmm0[6],xmm4[7],xmm0[7]
movzbl -0x5f(%rbp), %eax
movd %eax, %xmm5
movzbl -0x60(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm5, %xmm0    # xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
punpcklwd %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3]
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
punpcklqdq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0]
movaps %xmm0, -0x70(%rbp)
movaps -0x70(%rbp), %xmm0
movaps %xmm1, -0x180(%rbp)
movaps %xmm0, -0x190(%rbp)
movaps -0x180(%rbp), %xmm1
movaps -0x190(%rbp), %xmm0
pcmpeqb %xmm0, %xmm1
movaps -0x270(%rbp), %xmm2
movb $0x5c, -0x1b4(%rbp)
movb -0x1b4(%rbp), %al
movb %al, -0x369(%rbp)
movb %al, -0x31(%rbp)
movb %al, -0x32(%rbp)
movb %al, -0x33(%rbp)
movb %al, -0x34(%rbp)
movb %al, -0x35(%rbp)
movb %al, -0x36(%rbp)
movb %al, -0x37(%rbp)
movb %al, -0x38(%rbp)
movb %al, -0x39(%rbp)
movb %al, -0x3a(%rbp)
movb %al, -0x3b(%rbp)
movb %al, -0x3c(%rbp)
movb %al, -0x3d(%rbp)
movb %al, -0x3e(%rbp)
movb %al, -0x3f(%rbp)
movb %al, -0x40(%rbp)
movzbl -0x31(%rbp), %eax
movd %eax, %xmm0
movzbl -0x32(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
movzbl -0x33(%rbp), %eax
movd %eax, %xmm4
movzbl -0x34(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
punpcklwd %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
movzbl -0x35(%rbp), %eax
movd %eax, %xmm3
movzbl -0x36(%rbp), %eax
movd %eax, %xmm4
punpcklbw %xmm3, %xmm4    # xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]
movzbl -0x37(%rbp), %eax
movd %eax, %xmm5
movzbl -0x38(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm5, %xmm3    # xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7]
punpcklwd %xmm4, %xmm3    # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
punpckldq %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]
movzbl -0x39(%rbp), %eax
movd %eax, %xmm4
movzbl -0x3a(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
movzbl -0x3b(%rbp), %eax
movd %eax, %xmm5
movzbl -0x3c(%rbp), %eax
movd %eax, %xmm4
punpcklbw %xmm5, %xmm4    # xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3],xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7]
punpcklwd %xmm0, %xmm4    # xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]
movzbl -0x3d(%rbp), %eax
movd %eax, %xmm0
movzbl -0x3e(%rbp), %eax
movd %eax, %xmm5
punpcklbw %xmm0, %xmm5    # xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3],xmm5[4],xmm0[4],xmm5[5],xmm0[5],xmm5[6],xmm0[6],xmm5[7],xmm0[7]
movzbl -0x3f(%rbp), %eax
movd %eax, %xmm6
movzbl -0x40(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm6, %xmm0    # xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3],xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]
punpcklwd %xmm5, %xmm0    # xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3]
punpckldq %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
punpcklqdq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0]
movaps %xmm0, -0x50(%rbp)
movaps -0x50(%rbp), %xmm0
movaps %xmm2, -0x1a0(%rbp)
movaps %xmm0, -0x1b0(%rbp)
movaps -0x1a0(%rbp), %xmm0
movaps -0x1b0(%rbp), %xmm2
pcmpeqb %xmm2, %xmm0
movdqa %xmm1, -0x140(%rbp)
movdqa %xmm0, -0x150(%rbp)
movdqa -0x140(%rbp), %xmm0
por -0x150(%rbp), %xmm0
movdqa %xmm0, -0x290(%rbp)
movdqa -0x280(%rbp), %xmm1
movdqa -0x290(%rbp), %xmm0
movdqa %xmm1, -0x160(%rbp)
movdqa %xmm0, -0x170(%rbp)
movdqa -0x160(%rbp), %xmm0
por -0x170(%rbp), %xmm0
movdqa %xmm0, -0x2a0(%rbp)
movdqa -0x2a0(%rbp), %xmm0
movdqa %xmm0, -0x130(%rbp)
movdqa -0x130(%rbp), %xmm0
pmovmskb %xmm0, %eax
movl %eax, -0x2a4(%rbp)
cmpl $0x0, -0x2a4(%rbp)
jne 0x2a30a
movq -0x260(%rbp), %rax
addq $0xf, %rax
movq %rax, -0x260(%rbp)
jmp 0x2a579
movl -0x2a4(%rbp), %edi
callq 0x29ab0
movl %eax, %ecx
movq -0x260(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x260(%rbp)
movq -0x260(%rbp), %rax
movb (%rax), %al
movb %al, -0x2a5(%rbp)
movzbl -0x2a5(%rbp), %eax
xorl $0x2, %eax
cmpl $0x20, %eax
jle 0x2a365
movzbl -0x2a5(%rbp), %eax
cmpl $0x5c, %eax
je 0x2a365
movzbl -0x2a5(%rbp), %eax
cmpl $0x7f, %eax
jne 0x2a577
movq -0x258(%rbp), %rsi
movq -0x260(%rbp), %rdx
movq -0x258(%rbp), %rax
subq %rax, %rdx
leaq -0x2c8(%rbp), %rdi
callq 0x5d70
movq -0x2c8(%rbp), %rsi
movq -0x2c0(%rbp), %rdx
leaq -0x2b8(%rbp), %rdi
callq 0x2ac10
movq -0x2b8(%rbp), %rsi
movq -0x2b0(%rbp), %rdx
leaq -0x250(%rbp), %rdi
callq 0x5e00
movq -0x260(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x258(%rbp)
movzbl -0x2a5(%rbp), %eax
cmpl $0xa, %eax
jne 0x2a3f3
leaq -0x250(%rbp), %rdi
leaq 0x396c7(%rip), %rsi     # 0x63ab0
callq 0x5ce0
jmp 0x2a575
movzbl -0x2a5(%rbp), %eax
cmpl $0xd, %eax
jne 0x2a417
leaq -0x250(%rbp), %rdi
leaq 0x396a6(%rip), %rsi     # 0x63ab3
callq 0x5ce0
jmp 0x2a573
movzbl -0x2a5(%rbp), %eax
cmpl $0x9, %eax
jne 0x2a43b
leaq -0x250(%rbp), %rdi
leaq 0x39685(%rip), %rsi     # 0x63ab6
callq 0x5ce0
jmp 0x2a571
movzbl -0x2a5(%rbp), %eax
cmpl $0x8, %eax
jne 0x2a45f
leaq -0x250(%rbp), %rdi
leaq 0x39664(%rip), %rsi     # 0x63ab9
callq 0x5ce0
jmp 0x2a56f
movzbl -0x2a5(%rbp), %eax
cmpl $0xc, %eax
jne 0x2a483
leaq -0x250(%rbp), %rdi
leaq 0x39643(%rip), %rsi     # 0x63abc
callq 0x5ce0
jmp 0x2a56d
movzbl -0x2a5(%rbp), %eax
cmpl $0x22, %eax
jne 0x2a4a7
leaq -0x250(%rbp), %rdi
leaq 0x39622(%rip), %rsi     # 0x63abf
callq 0x5ce0
jmp 0x2a56b
movzbl -0x2a5(%rbp), %eax
cmpl $0x5c, %eax
jne 0x2a4cb
leaq -0x250(%rbp), %rdi
leaq 0x39601(%rip), %rsi     # 0x63ac2
callq 0x5ce0
jmp 0x2a569
leaq -0x308(%rbp), %rdi
movzbl -0x2a5(%rbp), %esi
callq 0x2aca0
movq -0x308(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq -0x300(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movq -0x2f8(%rbp), %rdx
movq -0x2f0(%rbp), %rcx
leaq -0x2e8(%rbp), %rdi
leaq 0x395af(%rip), %rsi     # 0x63ac5
callq 0x57e0
movq -0x2e8(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movq -0x2e0(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movq -0x2d8(%rbp), %rsi
movq -0x2d0(%rbp), %rdx
leaq -0x250(%rbp), %rdi
callq 0x5e00
leaq -0x2e8(%rbp), %rdi
callq 0x5870
leaq -0x308(%rbp), %rdi
callq 0x5870
jmp 0x2a56b
jmp 0x2a56d
jmp 0x2a56f
jmp 0x2a571
jmp 0x2a573
jmp 0x2a575
jmp 0x2a577
jmp 0x2a579
movq -0x260(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x260(%rbp)
jmp 0x29cda
movq -0x258(%rbp), %rsi
movq -0x240(%rbp), %rdx
movq -0x258(%rbp), %rax
subq %rax, %rdx
leaq -0x328(%rbp), %rdi
callq 0x5d70
movq -0x328(%rbp), %rsi
movq -0x320(%rbp), %rdx
leaq -0x318(%rbp), %rdi
callq 0x2ac10
movq -0x318(%rbp), %rsi
movq -0x310(%rbp), %rdx
leaq -0x250(%rbp), %rdi
callq 0x5e00
movq -0x350(%rbp), %rdi
movq -0x250(%rbp), %rax
movq %rax, -0x338(%rbp)
movq -0x248(%rbp), %rax
movq %rax, -0x330(%rbp)
movq -0x338(%rbp), %rsi
movq -0x330(%rbp), %rdx
leaq 0x38d07(%rip), %rcx     # 0x63327
callq 0xb7d0
leaq -0x250(%rbp), %rdi
callq 0x5870
movq -0x348(%rbp), %rax
addq $0x370, %rsp            # imm = 0x370
popq %rbp
retq
nopw %cs:(%rax,%rax)