Dump of assembler code for function JSON_parse_string:
1387	{
   0x00007fffefe2779a <+0>:	push   %rbp
   0x00007fffefe2779b <+1>:	mov    %rsp,%rbp
   0x00007fffefe2779e <+4>:	push   %rbx
   0x00007fffefe2779f <+5>:	sub    $0x48,%rsp
   0x00007fffefe277a3 <+9>:	mov    %rdi,-0x38(%rbp)
   0x00007fffefe277a7 <+13>:	mov    %rsi,-0x40(%rbp)
   0x00007fffefe277ab <+17>:	mov    %rdx,-0x48(%rbp)
   0x00007fffefe277af <+21>:	mov    %rcx,-0x50(%rbp)

1388	    int cs = EVIL;
=> 0x00007fffefe277b3 <+25>:	movl   $0x666,-0x2c(%rbp)

1389	    VALUE match_string;
1390	
1391	    *result = rb_str_buf_new(0);
   0x00007fffefe277ba <+32>:	mov    $0x0,%edi
   0x00007fffefe277bf <+37>:	callq  0x7fffefe25250 <rb_str_buf_new@plt>
   0x00007fffefe277c4 <+42>:	mov    %rax,%rdx
   0x00007fffefe277c7 <+45>:	mov    -0x50(%rbp),%rax
   0x00007fffefe277cb <+49>:	mov    %rdx,(%rax)

1392	
1393	
1394		{
1395		cs = JSON_string_start;
   0x00007fffefe277ce <+52>:	mov    0x2a20(%rip),%eax        # 0x7fffefe2a1f4 <JSON_string_start>
   0x00007fffefe277d4 <+58>:	mov    %eax,-0x2c(%rbp)

1396		}
1397	
1398	
1399	    json->memo = p;
   0x00007fffefe277d7 <+61>:	mov    -0x38(%rbp),%rax
   0x00007fffefe277db <+65>:	mov    -0x40(%rbp),%rdx
   0x00007fffefe277df <+69>:	mov    %rdx,0x18(%rax)

1400	
1401	
1402		{
1403		if ( p == pe )
   0x00007fffefe277e3 <+73>:	mov    -0x40(%rbp),%rax
   0x00007fffefe277e7 <+77>:	cmp    -0x48(%rbp),%rax
   0x00007fffefe277eb <+81>:	je     0x7fffefe27b55 <JSON_parse_string+955>

1404			goto _test_eof;
   0x00007fffefe27b55 <+955>:	nop
1405		switch ( cs )
   0x00007fffefe277f1 <+87>:	cmpl   $0x8,-0x2c(%rbp)
   0x00007fffefe277f5 <+91>:	ja     0x7fffefe27b19 <JSON_parse_string+895>
   0x00007fffefe277fb <+97>:	mov    -0x2c(%rbp),%eax
   0x00007fffefe277fe <+100>:	lea    0x0(,%rax,4),%rdx
   0x00007fffefe27806 <+108>:	lea    0x29f7(%rip),%rax        # 0x7fffefe2a204
   0x00007fffefe2780d <+115>:	mov    (%rdx,%rax,1),%eax
   0x00007fffefe27810 <+118>:	movslq %eax,%rdx
   0x00007fffefe27813 <+121>:	lea    0x29ea(%rip),%rax        # 0x7fffefe2a204
   0x00007fffefe2781a <+128>:	add    %rdx,%rax
   0x00007fffefe2781d <+131>:	jmpq   *%rax

1406		{
1407	case 1:
1408		if ( (*p) == 34 )
   0x00007fffefe2781f <+133>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27823 <+137>:	movzbl (%rax),%eax
   0x00007fffefe27826 <+140>:	cmp    $0x22,%al
   0x00007fffefe27828 <+142>:	je     0x7fffefe27845 <JSON_parse_string+171>

1409			goto st2;
   0x00007fffefe27845 <+171>:	nop
   0x00007fffefe27846 <+172>:	jmp    0x7fffefe2784f <JSON_parse_string+181>

1410		goto st0;
   0x00007fffefe2782a <+144>:	jmp    0x7fffefe27839 <JSON_parse_string+159>

1411	st0:
1412	cs = 0;
   0x00007fffefe27839 <+159>:	movl   $0x0,-0x2c(%rbp)

1413		goto _out;
   0x00007fffefe27840 <+166>:	jmpq   0x7fffefe27b56 <JSON_parse_string+956>

1414	st2:
1415		if ( ++p == pe )
   0x00007fffefe2784f <+181>:	addq   $0x1,-0x40(%rbp)
   0x00007fffefe27854 <+186>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27858 <+190>:	cmp    -0x48(%rbp),%rax
   0x00007fffefe2785c <+194>:	je     0x7fffefe27b18 <JSON_parse_string+894>

1416			goto _test_eof2;
   0x00007fffefe27b18 <+894>:	nop

1417	case 2:
1418		switch( (*p) ) {
   0x00007fffefe27862 <+200>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27866 <+204>:	movzbl (%rax),%eax
   0x00007fffefe27869 <+207>:	movsbl %al,%eax
   0x00007fffefe2786c <+210>:	cmp    $0x22,%eax
   0x00007fffefe2786f <+213>:	je     0x7fffefe27892 <JSON_parse_string+248>
   0x00007fffefe27871 <+215>:	cmp    $0x5c,%eax
   0x00007fffefe27874 <+218>:	je     0x7fffefe27924 <JSON_parse_string+394>

1419			case 34: goto tr2;
   0x00007fffefe27892 <+248>:	nop

1420			case 92: goto st3;
   0x00007fffefe27924 <+394>:	nop

1421		}
1422		if ( 0 <= (*p) && (*p) <= 31 )
   0x00007fffefe2787a <+224>:	mov    -0x40(%rbp),%rax
   0x00007fffefe2787e <+228>:	movzbl (%rax),%eax
   0x00007fffefe27881 <+231>:	test   %al,%al
   0x00007fffefe27883 <+233>:	js     0x7fffefe27848 <JSON_parse_string+174>
   0x00007fffefe27885 <+235>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27889 <+239>:	movzbl (%rax),%eax
   0x00007fffefe2788c <+242>:	cmp    $0x1f,%al
   0x00007fffefe2788e <+244>:	jg     0x7fffefe27848 <JSON_parse_string+174>

1423			goto st0;
   0x00007fffefe27890 <+246>:	jmp    0x7fffefe27839 <JSON_parse_string+159>

1424		goto st2;
   0x00007fffefe27848 <+174>:	nop
   0x00007fffefe27849 <+175>:	jmp    0x7fffefe2784f <JSON_parse_string+181>

1425	tr2:
1426	
1427		{
1428	        *result = json_string_unescape(*result, json->memo + 1, p);
   0x00007fffefe27893 <+249>:	mov    -0x38(%rbp),%rax
   0x00007fffefe27897 <+253>:	mov    0x18(%rax),%rax
   0x00007fffefe2789b <+257>:	lea    0x1(%rax),%rcx
   0x00007fffefe2789f <+261>:	mov    -0x50(%rbp),%rax
   0x00007fffefe278a3 <+265>:	mov    (%rax),%rax
   0x00007fffefe278a6 <+268>:	mov    -0x40(%rbp),%rdx
   0x00007fffefe278aa <+272>:	mov    %rcx,%rsi
   0x00007fffefe278ad <+275>:	mov    %rax,%rdi
   0x00007fffefe278b0 <+278>:	callq  0x7fffefe27435 <json_string_unescape>
   0x00007fffefe278b5 <+283>:	mov    %rax,%rdx
   0x00007fffefe278b8 <+286>:	mov    -0x50(%rbp),%rax
   0x00007fffefe278bc <+290>:	mov    %rdx,(%rax)

1429	        if (NIL_P(*result)) {
   0x00007fffefe278bf <+293>:	mov    -0x50(%rbp),%rax
   0x00007fffefe278c3 <+297>:	mov    (%rax),%rax
   0x00007fffefe278c6 <+300>:	cmp    $0x4,%rax
   0x00007fffefe278ca <+304>:	jne    0x7fffefe278e2 <JSON_parse_string+328>

1430	            p--;
   0x00007fffefe278cc <+306>:	subq   $0x1,-0x40(%rbp)

1431	            {p++; cs = 8; goto _out;}
   0x00007fffefe278d1 <+311>:	addq   $0x1,-0x40(%rbp)
   0x00007fffefe278d6 <+316>:	movl   $0x8,-0x2c(%rbp)
   0x00007fffefe278dd <+323>:	jmpq   0x7fffefe27b56 <JSON_parse_string+956>

1432	        } else {
1433	            FORCE_UTF8(*result);
   0x00007fffefe278e2 <+328>:	callq  0x7fffefe25210 <rb_utf8_encoding@plt>
   0x00007fffefe278e7 <+333>:	mov    %rax,%rbx
   0x00007fffefe278ea <+336>:	mov    -0x50(%rbp),%rax
   0x00007fffefe278ee <+340>:	mov    (%rax),%rax
   0x00007fffefe278f1 <+343>:	mov    %rax,%rdi
   0x00007fffefe278f4 <+346>:	callq  0x7fffefe25290 <rb_str_dup@plt>
   0x00007fffefe278f9 <+351>:	mov    %rbx,%rsi
   0x00007fffefe278fc <+354>:	mov    %rax,%rdi
   0x00007fffefe278ff <+357>:	callq  0x7fffefe25160 <rb_enc_associate@plt>
   0x00007fffefe27904 <+362>:	mov    %rax,%rdx
   0x00007fffefe27907 <+365>:	mov    -0x50(%rbp),%rax
   0x00007fffefe2790b <+369>:	mov    %rdx,(%rax)

1434	            {p = (( p + 1))-1;}
1435	        }
1436	    }
1437	
1438		{ p--; {p++; cs = 8; goto _out;} }
   0x00007fffefe2790e <+372>:	subq   $0x1,-0x40(%rbp)
   0x00007fffefe27913 <+377>:	addq   $0x1,-0x40(%rbp)
   0x00007fffefe27918 <+382>:	movl   $0x8,-0x2c(%rbp)
   0x00007fffefe2791f <+389>:	jmpq   0x7fffefe27b56 <JSON_parse_string+956>

1439		goto st8;
1440	st8:
1441		if ( ++p == pe )
1442			goto _test_eof8;
1443	case 8:
1444	
1445		goto st0;
   0x00007fffefe2782c <+146>:	nop
   0x00007fffefe2782d <+147>:	jmp    0x7fffefe27839 <JSON_parse_string+159>
1446	st3:
1447		if ( ++p == pe )
   0x00007fffefe27925 <+395>:	addq   $0x1,-0x40(%rbp)
   0x00007fffefe2792a <+400>:	mov    -0x40(%rbp),%rax
   0x00007fffefe2792e <+404>:	cmp    -0x48(%rbp),%rax
   0x00007fffefe27932 <+408>:	je     0x7fffefe27b22 <JSON_parse_string+904>

1448			goto _test_eof3;
   0x00007fffefe27b22 <+904>:	nop

1449	case 3:
1450		if ( (*p) == 117 )
   0x00007fffefe27938 <+414>:	mov    -0x40(%rbp),%rax
   0x00007fffefe2793c <+418>:	movzbl (%rax),%eax
   0x00007fffefe2793f <+421>:	cmp    $0x75,%al
   0x00007fffefe27941 <+423>:	je     0x7fffefe27966 <JSON_parse_string+460>

1451			goto st4;
   0x00007fffefe27966 <+460>:	nop

1452		if ( 0 <= (*p) && (*p) <= 31 )
   0x00007fffefe27943 <+425>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27947 <+429>:	movzbl (%rax),%eax
   0x00007fffefe2794a <+432>:	test   %al,%al
   0x00007fffefe2794c <+434>:	js     0x7fffefe2784b <JSON_parse_string+177>
   0x00007fffefe27952 <+440>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27956 <+444>:	movzbl (%rax),%eax
   0x00007fffefe27959 <+447>:	cmp    $0x1f,%al
   0x00007fffefe2795b <+449>:	jg     0x7fffefe2784b <JSON_parse_string+177>

1453			goto st0;
   0x00007fffefe27961 <+455>:	jmpq   0x7fffefe27839 <JSON_parse_string+159>

1454		goto st2;
   0x00007fffefe2784b <+177>:	nop
   0x00007fffefe2784c <+178>:	jmp    0x7fffefe2784f <JSON_parse_string+181>

1455	st4:
1456		if ( ++p == pe )
   0x00007fffefe27967 <+461>:	addq   $0x1,-0x40(%rbp)
   0x00007fffefe2796c <+466>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27970 <+470>:	cmp    -0x48(%rbp),%rax
   0x00007fffefe27974 <+474>:	je     0x7fffefe27b2c <JSON_parse_string+914>

1457			goto _test_eof4;
   0x00007fffefe27b2c <+914>:	nop

1458	case 4:
1459		if ( (*p) < 65 ) {
   0x00007fffefe2797a <+480>:	mov    -0x40(%rbp),%rax
   0x00007fffefe2797e <+484>:	movzbl (%rax),%eax
   0x00007fffefe27981 <+487>:	cmp    $0x40,%al
   0x00007fffefe27983 <+489>:	jg     0x7fffefe279a5 <JSON_parse_string+523>

1460			if ( 48 <= (*p) && (*p) <= 57 )
   0x00007fffefe27985 <+491>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27989 <+495>:	movzbl (%rax),%eax
   0x00007fffefe2798c <+498>:	cmp    $0x2f,%al
   0x00007fffefe2798e <+500>:	jle    0x7fffefe2782f <JSON_parse_string+149>
   0x00007fffefe27994 <+506>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27998 <+510>:	movzbl (%rax),%eax
   0x00007fffefe2799b <+513>:	cmp    $0x39,%al
   0x00007fffefe2799d <+515>:	jg     0x7fffefe2782f <JSON_parse_string+149>

1461				goto st5;
   0x00007fffefe279a3 <+521>:	jmp    0x7fffefe279d1 <JSON_parse_string+567>

1462		} else if ( (*p) > 70 ) {
   0x00007fffefe279a5 <+523>:	mov    -0x40(%rbp),%rax
   0x00007fffefe279a9 <+527>:	movzbl (%rax),%eax
   0x00007fffefe279ac <+530>:	cmp    $0x46,%al
   0x00007fffefe279ae <+532>:	jle    0x7fffefe279d0 <JSON_parse_string+566>

1463			if ( 97 <= (*p) && (*p) <= 102 )
   0x00007fffefe279b0 <+534>:	mov    -0x40(%rbp),%rax
   0x00007fffefe279b4 <+538>:	movzbl (%rax),%eax
   0x00007fffefe279b7 <+541>:	cmp    $0x60,%al
   0x00007fffefe279b9 <+543>:	jle    0x7fffefe2782f <JSON_parse_string+149>
   0x00007fffefe279bf <+549>:	mov    -0x40(%rbp),%rax
   0x00007fffefe279c3 <+553>:	movzbl (%rax),%eax
   0x00007fffefe279c6 <+556>:	cmp    $0x66,%al
   0x00007fffefe279c8 <+558>:	jg     0x7fffefe2782f <JSON_parse_string+149>

1464				goto st5;
   0x00007fffefe279ce <+564>:	jmp    0x7fffefe279d1 <JSON_parse_string+567>

1465		} else
1466			goto st5;
   0x00007fffefe279d0 <+566>:	nop

1467		goto st0;
   0x00007fffefe2782f <+149>:	nop
   0x00007fffefe27830 <+150>:	jmp    0x7fffefe27839 <JSON_parse_string+159>

1468	st5:
1469		if ( ++p == pe )
   0x00007fffefe279d1 <+567>:	addq   $0x1,-0x40(%rbp)
   0x00007fffefe279d6 <+572>:	mov    -0x40(%rbp),%rax
   0x00007fffefe279da <+576>:	cmp    -0x48(%rbp),%rax
   0x00007fffefe279de <+580>:	je     0x7fffefe27b36 <JSON_parse_string+924>

1470			goto _test_eof5;
   0x00007fffefe27b36 <+924>:	nop

1471	case 5:
1472		if ( (*p) < 65 ) {
   0x00007fffefe279e4 <+586>:	mov    -0x40(%rbp),%rax
   0x00007fffefe279e8 <+590>:	movzbl (%rax),%eax
   0x00007fffefe279eb <+593>:	cmp    $0x40,%al
   0x00007fffefe279ed <+595>:	jg     0x7fffefe27a0f <JSON_parse_string+629>

1473			if ( 48 <= (*p) && (*p) <= 57 )
   0x00007fffefe279ef <+597>:	mov    -0x40(%rbp),%rax
   0x00007fffefe279f3 <+601>:	movzbl (%rax),%eax
   0x00007fffefe279f6 <+604>:	cmp    $0x2f,%al
   0x00007fffefe279f8 <+606>:	jle    0x7fffefe27832 <JSON_parse_string+152>
   0x00007fffefe279fe <+612>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a02 <+616>:	movzbl (%rax),%eax
   0x00007fffefe27a05 <+619>:	cmp    $0x39,%al
   0x00007fffefe27a07 <+621>:	jg     0x7fffefe27832 <JSON_parse_string+152>

1474				goto st6;
   0x00007fffefe27a0d <+627>:	jmp    0x7fffefe27a3b <JSON_parse_string+673>

1475		} else if ( (*p) > 70 ) {
   0x00007fffefe27a0f <+629>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a13 <+633>:	movzbl (%rax),%eax
   0x00007fffefe27a16 <+636>:	cmp    $0x46,%al
   0x00007fffefe27a18 <+638>:	jle    0x7fffefe27a3a <JSON_parse_string+672>

1476			if ( 97 <= (*p) && (*p) <= 102 )
   0x00007fffefe27a1a <+640>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a1e <+644>:	movzbl (%rax),%eax
   0x00007fffefe27a21 <+647>:	cmp    $0x60,%al
   0x00007fffefe27a23 <+649>:	jle    0x7fffefe27832 <JSON_parse_string+152>
   0x00007fffefe27a29 <+655>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a2d <+659>:	movzbl (%rax),%eax
   0x00007fffefe27a30 <+662>:	cmp    $0x66,%al
   0x00007fffefe27a32 <+664>:	jg     0x7fffefe27832 <JSON_parse_string+152>

1477				goto st6;
   0x00007fffefe27a38 <+670>:	jmp    0x7fffefe27a3b <JSON_parse_string+673>

1478		} else
1479			goto st6;
   0x00007fffefe27a3a <+672>:	nop

1480		goto st0;
   0x00007fffefe27832 <+152>:	nop
   0x00007fffefe27833 <+153>:	jmp    0x7fffefe27839 <JSON_parse_string+159>

1481	st6:
1482		if ( ++p == pe )
   0x00007fffefe27a3b <+673>:	addq   $0x1,-0x40(%rbp)
   0x00007fffefe27a40 <+678>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a44 <+682>:	cmp    -0x48(%rbp),%rax
   0x00007fffefe27a48 <+686>:	je     0x7fffefe27b40 <JSON_parse_string+934>

1483			goto _test_eof6;
   0x00007fffefe27b40 <+934>:	nop

1484	case 6:
1485		if ( (*p) < 65 ) {
   0x00007fffefe27a4e <+692>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a52 <+696>:	movzbl (%rax),%eax
   0x00007fffefe27a55 <+699>:	cmp    $0x40,%al
   0x00007fffefe27a57 <+701>:	jg     0x7fffefe27a79 <JSON_parse_string+735>

1486			if ( 48 <= (*p) && (*p) <= 57 )
   0x00007fffefe27a59 <+703>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a5d <+707>:	movzbl (%rax),%eax
   0x00007fffefe27a60 <+710>:	cmp    $0x2f,%al
   0x00007fffefe27a62 <+712>:	jle    0x7fffefe27835 <JSON_parse_string+155>
   0x00007fffefe27a68 <+718>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a6c <+722>:	movzbl (%rax),%eax
   0x00007fffefe27a6f <+725>:	cmp    $0x39,%al
   0x00007fffefe27a71 <+727>:	jg     0x7fffefe27835 <JSON_parse_string+155>

1487				goto st7;
   0x00007fffefe27a77 <+733>:	jmp    0x7fffefe27aa5 <JSON_parse_string+779>

1488		} else if ( (*p) > 70 ) {
   0x00007fffefe27a79 <+735>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a7d <+739>:	movzbl (%rax),%eax
   0x00007fffefe27a80 <+742>:	cmp    $0x46,%al
   0x00007fffefe27a82 <+744>:	jle    0x7fffefe27aa4 <JSON_parse_string+778>

1489			if ( 97 <= (*p) && (*p) <= 102 )
   0x00007fffefe27a84 <+746>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a88 <+750>:	movzbl (%rax),%eax
   0x00007fffefe27a8b <+753>:	cmp    $0x60,%al
   0x00007fffefe27a8d <+755>:	jle    0x7fffefe27835 <JSON_parse_string+155>
   0x00007fffefe27a93 <+761>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27a97 <+765>:	movzbl (%rax),%eax
   0x00007fffefe27a9a <+768>:	cmp    $0x66,%al
   0x00007fffefe27a9c <+770>:	jg     0x7fffefe27835 <JSON_parse_string+155>

1490				goto st7;
   0x00007fffefe27aa2 <+776>:	jmp    0x7fffefe27aa5 <JSON_parse_string+779>

1491		} else
1492			goto st7;
   0x00007fffefe27aa4 <+778>:	nop

1493		goto st0;
   0x00007fffefe27835 <+155>:	nop
   0x00007fffefe27836 <+156>:	jmp    0x7fffefe27839 <JSON_parse_string+159>

1494	st7:
1495		if ( ++p == pe )
   0x00007fffefe27aa5 <+779>:	addq   $0x1,-0x40(%rbp)
   0x00007fffefe27aaa <+784>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27aae <+788>:	cmp    -0x48(%rbp),%rax
   0x00007fffefe27ab2 <+792>:	je     0x7fffefe27b4a <JSON_parse_string+944>

1496			goto _test_eof7;
   0x00007fffefe27b4a <+944>:	nop

1497	case 7:
1498		if ( (*p) < 65 ) {
   0x00007fffefe27ab8 <+798>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27abc <+802>:	movzbl (%rax),%eax
   0x00007fffefe27abf <+805>:	cmp    $0x40,%al
   0x00007fffefe27ac1 <+807>:	jg     0x7fffefe27ae6 <JSON_parse_string+844>

1499			if ( 48 <= (*p) && (*p) <= 57 )
   0x00007fffefe27ac3 <+809>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27ac7 <+813>:	movzbl (%rax),%eax
   0x00007fffefe27aca <+816>:	cmp    $0x2f,%al
   0x00007fffefe27acc <+818>:	jle    0x7fffefe27838 <JSON_parse_string+158>
   0x00007fffefe27ad2 <+824>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27ad6 <+828>:	movzbl (%rax),%eax
   0x00007fffefe27ad9 <+831>:	cmp    $0x39,%al
   0x00007fffefe27adb <+833>:	jg     0x7fffefe27838 <JSON_parse_string+158>

1500				goto st2;
   0x00007fffefe27ae1 <+839>:	jmpq   0x7fffefe2784f <JSON_parse_string+181>

1501		} else if ( (*p) > 70 ) {
   0x00007fffefe27ae6 <+844>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27aea <+848>:	movzbl (%rax),%eax
   0x00007fffefe27aed <+851>:	cmp    $0x46,%al
   0x00007fffefe27aef <+853>:	jle    0x7fffefe2784e <JSON_parse_string+180>

1502			if ( 97 <= (*p) && (*p) <= 102 )
   0x00007fffefe27af5 <+859>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27af9 <+863>:	movzbl (%rax),%eax
   0x00007fffefe27afc <+866>:	cmp    $0x60,%al
   0x00007fffefe27afe <+868>:	jle    0x7fffefe27838 <JSON_parse_string+158>
   0x00007fffefe27b04 <+874>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27b08 <+878>:	movzbl (%rax),%eax
   0x00007fffefe27b0b <+881>:	cmp    $0x66,%al
   0x00007fffefe27b0d <+883>:	jg     0x7fffefe27838 <JSON_parse_string+158>

1503				goto st2;
   0x00007fffefe27b13 <+889>:	jmpq   0x7fffefe2784f <JSON_parse_string+181>

1504		} else
1505			goto st2;
   0x00007fffefe2784e <+180>:	nop

1506		goto st0;
   0x00007fffefe27838 <+158>:	nop

1507		}
1508		_test_eof2: cs = 2; goto _test_eof;
   0x00007fffefe27b19 <+895>:	movl   $0x2,-0x2c(%rbp)
   0x00007fffefe27b20 <+902>:	jmp    0x7fffefe27b56 <JSON_parse_string+956>

1509		_test_eof8: cs = 8; goto _test_eof;
1510		_test_eof3: cs = 3; goto _test_eof;
   0x00007fffefe27b23 <+905>:	movl   $0x3,-0x2c(%rbp)
   0x00007fffefe27b2a <+912>:	jmp    0x7fffefe27b56 <JSON_parse_string+956>

1511		_test_eof4: cs = 4; goto _test_eof;
   0x00007fffefe27b2d <+915>:	movl   $0x4,-0x2c(%rbp)
   0x00007fffefe27b34 <+922>:	jmp    0x7fffefe27b56 <JSON_parse_string+956>

1512		_test_eof5: cs = 5; goto _test_eof;
   0x00007fffefe27b37 <+925>:	movl   $0x5,-0x2c(%rbp)
   0x00007fffefe27b3e <+932>:	jmp    0x7fffefe27b56 <JSON_parse_string+956>

1513		_test_eof6: cs = 6; goto _test_eof;
   0x00007fffefe27b41 <+935>:	movl   $0x6,-0x2c(%rbp)
   0x00007fffefe27b48 <+942>:	jmp    0x7fffefe27b56 <JSON_parse_string+956>

1514		_test_eof7: cs = 7; goto _test_eof;
   0x00007fffefe27b4b <+945>:	movl   $0x7,-0x2c(%rbp)
   0x00007fffefe27b52 <+952>:	nop
   0x00007fffefe27b53 <+953>:	jmp    0x7fffefe27b56 <JSON_parse_string+956>

1515	
1516		_test_eof: {}
1517		_out: {}
1518		}
1519	
1520	
1521	
1522	    if (json->create_additions && RTEST(match_string = json->match_string)) {
   0x00007fffefe27b56 <+956>:	mov    -0x38(%rbp),%rax
   0x00007fffefe27b5a <+960>:	mov    0x50(%rax),%eax
   0x00007fffefe27b5d <+963>:	test   %eax,%eax
   0x00007fffefe27b5f <+965>:	je     0x7fffefe27c10 <JSON_parse_string+1142>
   0x00007fffefe27b65 <+971>:	mov    -0x38(%rbp),%rax
   0x00007fffefe27b69 <+975>:	mov    0x58(%rax),%rax
   0x00007fffefe27b6d <+979>:	mov    %rax,-0x28(%rbp)
   0x00007fffefe27b71 <+983>:	mov    -0x28(%rbp),%rax
   0x00007fffefe27b75 <+987>:	and    $0xfffffffffffffffb,%rax
   0x00007fffefe27b79 <+991>:	test   %rax,%rax
   0x00007fffefe27b7c <+994>:	je     0x7fffefe27c10 <JSON_parse_string+1142>

1523	          VALUE klass;
1524	          VALUE memo = rb_ary_new2(2);
   0x00007fffefe27b82 <+1000>:	mov    $0x2,%edi
   0x00007fffefe27b87 <+1005>:	callq  0x7fffefe252e0 <rb_ary_new2@plt>
   0x00007fffefe27b8c <+1010>:	mov    %rax,-0x20(%rbp)

1525	          rb_ary_push(memo, *result);
   0x00007fffefe27b90 <+1014>:	mov    -0x50(%rbp),%rax
   0x00007fffefe27b94 <+1018>:	mov    (%rax),%rdx
   0x00007fffefe27b97 <+1021>:	mov    -0x20(%rbp),%rax
   0x00007fffefe27b9b <+1025>:	mov    %rdx,%rsi
   0x00007fffefe27b9e <+1028>:	mov    %rax,%rdi
   0x00007fffefe27ba1 <+1031>:	callq  0x7fffefe252d0 <rb_ary_push@plt>

1526	          rb_hash_foreach(match_string, match_i, memo);
   0x00007fffefe27ba6 <+1036>:	mov    -0x20(%rbp),%rdx
   0x00007fffefe27baa <+1040>:	mov    -0x28(%rbp),%rax
   0x00007fffefe27bae <+1044>:	lea    -0x4c7(%rip),%rsi        # 0x7fffefe276ee <match_i>
   0x00007fffefe27bb5 <+1051>:	mov    %rax,%rdi
   0x00007fffefe27bb8 <+1054>:	callq  0x7fffefe25260 <rb_hash_foreach@plt>

1527	          klass = rb_ary_entry(memo, 1);
   0x00007fffefe27bbd <+1059>:	mov    -0x20(%rbp),%rax
   0x00007fffefe27bc1 <+1063>:	mov    $0x1,%esi
   0x00007fffefe27bc6 <+1068>:	mov    %rax,%rdi
   0x00007fffefe27bc9 <+1071>:	callq  0x7fffefe25150 <rb_ary_entry@plt>
   0x00007fffefe27bce <+1076>:	mov    %rax,-0x18(%rbp)

1528	          if (RTEST(klass)) {
   0x00007fffefe27bd2 <+1080>:	mov    -0x18(%rbp),%rax
   0x00007fffefe27bd6 <+1084>:	and    $0xfffffffffffffffb,%rax
   0x00007fffefe27bda <+1088>:	test   %rax,%rax
   0x00007fffefe27bdd <+1091>:	je     0x7fffefe27c10 <JSON_parse_string+1142>

1529	              *result = rb_funcall(klass, i_json_create, 1, *result);
   0x00007fffefe27bdf <+1093>:	mov    -0x50(%rbp),%rax
   0x00007fffefe27be3 <+1097>:	mov    (%rax),%rdx
   0x00007fffefe27be6 <+1100>:	mov    0x2035f3(%rip),%rsi        # 0x7ffff002b1e0 <i_json_create>
   0x00007fffefe27bed <+1107>:	mov    -0x18(%rbp),%rax
   0x00007fffefe27bf1 <+1111>:	mov    %rdx,%rcx
   0x00007fffefe27bf4 <+1114>:	mov    $0x1,%edx
   0x00007fffefe27bf9 <+1119>:	mov    %rax,%rdi
   0x00007fffefe27bfc <+1122>:	mov    $0x0,%eax
   0x00007fffefe27c01 <+1127>:	callq  0x7fffefe251a0 <rb_funcall@plt>
   0x00007fffefe27c06 <+1132>:	mov    %rax,%rdx
   0x00007fffefe27c09 <+1135>:	mov    -0x50(%rbp),%rax
   0x00007fffefe27c0d <+1139>:	mov    %rdx,(%rax)

1530	          }
1531	    }
1532	
1533	    if (json->symbolize_names && json->parsing_name) {
   0x00007fffefe27c10 <+1142>:	mov    -0x38(%rbp),%rax
   0x00007fffefe27c14 <+1146>:	mov    0x38(%rax),%eax
   0x00007fffefe27c17 <+1149>:	test   %eax,%eax
   0x00007fffefe27c19 <+1151>:	je     0x7fffefe27c3f <JSON_parse_string+1189>
   0x00007fffefe27c1b <+1153>:	mov    -0x38(%rbp),%rax
   0x00007fffefe27c1f <+1157>:	mov    0x34(%rax),%eax
   0x00007fffefe27c22 <+1160>:	test   %eax,%eax
   0x00007fffefe27c24 <+1162>:	je     0x7fffefe27c3f <JSON_parse_string+1189>

1534	      *result = rb_str_intern(*result);
   0x00007fffefe27c26 <+1164>:	mov    -0x50(%rbp),%rax
   0x00007fffefe27c2a <+1168>:	mov    (%rax),%rax
   0x00007fffefe27c2d <+1171>:	mov    %rax,%rdi
   0x00007fffefe27c30 <+1174>:	callq  0x7fffefe25380 <rb_str_intern@plt>
   0x00007fffefe27c35 <+1179>:	mov    %rax,%rdx
   0x00007fffefe27c38 <+1182>:	mov    -0x50(%rbp),%rax
   0x00007fffefe27c3c <+1186>:	mov    %rdx,(%rax)

1535	    }
1536	    if (cs >= JSON_string_first_final) {
   0x00007fffefe27c3f <+1189>:	mov    0x25b3(%rip),%eax        # 0x7fffefe2a1f8 <JSON_string_first_final>
   0x00007fffefe27c45 <+1195>:	cmp    %eax,-0x2c(%rbp)
   0x00007fffefe27c48 <+1198>:	jl     0x7fffefe27c54 <JSON_parse_string+1210>

1537	        return p + 1;
   0x00007fffefe27c4a <+1200>:	mov    -0x40(%rbp),%rax
   0x00007fffefe27c4e <+1204>:	add    $0x1,%rax
   0x00007fffefe27c52 <+1208>:	jmp    0x7fffefe27c59 <JSON_parse_string+1215>

1538	    } else {
1539	        return NULL;
   0x00007fffefe27c54 <+1210>:	mov    $0x0,%eax

1540	    }
1541	}
   0x00007fffefe27c59 <+1215>:	add    $0x48,%rsp
   0x00007fffefe27c5d <+1219>:	pop    %rbx
   0x00007fffefe27c5e <+1220>:	pop    %rbp
   0x00007fffefe27c5f <+1221>:	retq   

End of assembler dump.

