// File: /workspace/github_c_makefile_star2_O2/deplinenoise[P]tundra/unittest/Test_Json.cpp
// Function: JsonTest_StringEscapes_Test::TestBody()
TEST_F(JsonTest, StringEscapes)
{
  char input[] = "[\" foo \", \"\\\\\", \"\\n\\r\\t\\f\\b\\/\", \"\\u004C\\u004c\"]";
  const JsonValue* v = JsonParse(input, &alloc, &scratch, error_msg);

  ASSERT_STREQ("", error_msg);
  ASSERT_NE(nullptr, v);

  const JsonArrayValue* array = v->AsArray();
  ASSERT_NE(nullptr, array);

  ASSERT_EQ(4, array->m_Count);
  ASSERT_EQ(JsonValue::kString, array->m_Values[0]->m_Type);
  ASSERT_EQ(JsonValue::kString, array->m_Values[1]->m_Type);
  ASSERT_EQ(JsonValue::kString, array->m_Values[2]->m_Type);
  ASSERT_EQ(JsonValue::kString, array->m_Values[3]->m_Type);
  ASSERT_STREQ(" foo ", array->m_Values[0]->AsString()->m_String);
  ASSERT_STREQ("\\", array->m_Values[1]->AsString()->m_String);
  ASSERT_STREQ("\n\r\t\f\b/", array->m_Values[2]->AsString()->m_String);
  ASSERT_STREQ("LL", array->m_Values[3]->AsString()->m_String);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x60, %rsp
movaps 0x1aa22(%rip), %xmm0    # 0x47220
leaq 0x30(%rsp), %rax
movaps %xmm0, 0x20(%rax)
movaps 0x1aa02(%rip), %xmm0    # 0x47210
movaps %xmm0, 0x10(%rax)
movaps 0x1a9e7(%rip), %xmm0    # 0x47200
movaps %xmm0, (%rax)
leaq 0x18(%rdi), %rsi
leaq 0x50(%rdi), %rdx
leaq 0x88(%rdi), %r14
movq %rax, %rdi
movq %r14, %rcx
callq 0x34778
movq %rax, 0x28(%rsp)
leaq 0x1a4fd(%rip), %rsi     # 0x46d3f
leaq 0x1a4f9(%rip), %rdx     # 0x46d42
leaq 0x1d657(%rip), %rbx     # 0x49ea7
leaq 0x10(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rcx
movq %r14, %r8
callq 0x13723
cmpb $0x0, (%r15)
je 0x2cb9c
leaq 0x18(%rsp), %rdi
callq 0x2295e
leaq 0x20(%rsp), %rcx
andq $0x0, (%rcx)
leaq 0x19b54(%rip), %rsi     # 0x463db
leaq 0x19553(%rip), %rdx     # 0x45de1
leaq 0x10(%rsp), %rbx
leaq 0x28(%rsp), %r8
movq %rbx, %rdi
callq 0x2d7ec
cmpb $0x0, (%rbx)
je 0x2cbda
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq 0x28(%rsp), %rax
xorl %ecx, %ecx
cmpl $0x3, (%rax)
cmoveq %rax, %rcx
leaq 0x20(%rsp), %r8
movq %rcx, (%r8)
movq %rsp, %rcx
andq $0x0, (%rcx)
leaq 0x19b04(%rip), %rsi     # 0x463db
leaq 0x1a635(%rip), %rdx     # 0x46f13
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2d83c
cmpb $0x0, (%rbx)
je 0x2cbf3
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x4, (%rcx)
movq 0x20(%rsp), %r8
addq $0x8, %r8
leaq 0x1a6d7(%rip), %rsi     # 0x46fee
leaq 0x1a5fb(%rip), %rdx     # 0x46f19
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x287b5
cmpb $0x0, (%rbx)
je 0x2cc4a
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x4, (%rcx)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rax), %r8
leaq 0x1a567(%rip), %rsi     # 0x46ec1
leaq 0x1a5c7(%rip), %rdx     # 0x46f28
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e10f
cmpb $0x0, (%rbx)
je 0x2cc91
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x4, (%rcx)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %r8
leaq 0x1a523(%rip), %rsi     # 0x46ec1
leaq 0x1a5da(%rip), %rdx     # 0x46f7f
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e10f
cmpb $0x0, (%rbx)
je 0x2ccd8
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x4, (%rcx)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %r8
leaq 0x1a4df(%rip), %rsi     # 0x46ec1
leaq 0x1a5b1(%rip), %rdx     # 0x46f9a
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e10f
cmpb $0x0, (%rbx)
je 0x2cd1f
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x4, (%rcx)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %r8
leaq 0x1a49b(%rip), %rsi     # 0x46ec1
leaq 0x1a5c3(%rip), %rdx     # 0x46ff0
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e10f
cmpb $0x0, (%rbx)
je 0x2cd66
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
xorl %ecx, %ecx
cmpl $0x4, (%rax)
cmoveq %rax, %rcx
movq 0x8(%rcx), %r8
leaq 0x1a59e(%rip), %rsi     # 0x4700b
leaq 0x1a59f(%rip), %rdx     # 0x47013
leaq 0x1a5c1(%rip), %rcx     # 0x4703c
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x13723
cmpb $0x0, (%rbx)
je 0x2cdad
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
xorl %ecx, %ecx
cmpl $0x4, (%rax)
cmoveq %rax, %rcx
movq 0x8(%rcx), %r8
leaq 0x1a586(%rip), %rsi     # 0x47042
leaq 0x1a584(%rip), %rdx     # 0x47047
leaq 0x19305(%rip), %rcx     # 0x45dcf
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x13723
cmpb $0x0, (%rbx)
je 0x2cdf4
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
xorl %ecx, %ecx
cmpl $0x4, (%rax)
cmoveq %rax, %rcx
movq 0x8(%rcx), %r8
leaq 0x1a565(%rip), %rsi     # 0x47070
leaq 0x1a56c(%rip), %rdx     # 0x4707e
leaq 0x1a58e(%rip), %rcx     # 0x470a7
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x13723
cmpb $0x0, (%rbx)
je 0x2ce38
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
xorl %ecx, %ecx
cmpl $0x4, (%rax)
cmoveq %rax, %rcx
movq 0x8(%rcx), %r8
leaq 0x1a554(%rip), %rsi     # 0x470ae
leaq 0x1a552(%rip), %rdx     # 0x470b3
leaq 0x18826(%rip), %rcx     # 0x4538e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x13723
cmpb $0x0, (%rbx)
jne 0x2cf0f
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2ced0
movq (%rax), %r8
jmp 0x2ced7
leaq 0x20(%rsp), %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2cbb3
movq (%rax), %rbx
leaq 0x1a16e(%rip), %rdx     # 0x46d28
movq %rsp, %rdi
pushq $0x2
popq %rsi
pushq $0x72
popq %rcx
movq %rbx, %r8
callq 0x104f8
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x10576
jmp 0x2cc33
leaq 0x20(%rsp), %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2cc0a
movq (%rax), %r8
jmp 0x2cc11
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2cc61
movq (%rax), %r8
jmp 0x2cc68
leaq 0x1d296(%rip), %r8      # 0x49ea7
leaq 0x1a110(%rip), %rdx     # 0x46d28
movq %rsp, %rdi
pushq $0x2
popq %rsi
pushq $0x73
popq %rcx
callq 0x104f8
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x10576
leaq 0x18(%rsp), %rbx
movq %rsp, %rdi
callq 0x10558
leaq 0x20(%rsp), %rdi
jmp 0x2ceb9
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2cca8
movq (%rax), %r8
jmp 0x2ccaf
leaq 0x1d23f(%rip), %r8      # 0x49ea7
leaq 0x1a0b9(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x76
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2cea7
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2ccef
movq (%rax), %r8
jmp 0x2ccf6
leaq 0x1d1f8(%rip), %r8      # 0x49ea7
leaq 0x1a072(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x78
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2cea7
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2cd36
movq (%rax), %r8
jmp 0x2cd3d
leaq 0x1d1b1(%rip), %r8      # 0x49ea7
leaq 0x1a02b(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x79
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2cea7
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2cd7d
movq (%rax), %r8
jmp 0x2cd84
leaq 0x1d16a(%rip), %r8      # 0x49ea7
leaq 0x19fe4(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x7a
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2cea7
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2cdc4
movq (%rax), %r8
jmp 0x2cdcb
leaq 0x1d123(%rip), %r8      # 0x49ea7
leaq 0x19f9d(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x7b
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2cea7
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2ce0b
movq (%rax), %r8
jmp 0x2ce12
leaq 0x1d0dc(%rip), %r8      # 0x49ea7
leaq 0x19f56(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x7c
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2cea7
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2ce4f
movq (%rax), %r8
jmp 0x2ce56
leaq 0x1d095(%rip), %r8      # 0x49ea7
leaq 0x19f0f(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x7d
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2cea7
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2ce7c
movq (%rax), %r8
jmp 0x2ce83
leaq 0x1d051(%rip), %r8      # 0x49ea7
leaq 0x19ecb(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x7e
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2cea7
leaq 0x1d024(%rip), %r8      # 0x49ea7
leaq 0x19e9e(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x7f
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
leaq 0x18(%rsp), %rbx
leaq 0x8(%rsp), %rdi
callq 0x10558
movq %rsp, %rdi
callq 0x1f8e0
movq %rbx, %rdi
callq 0x2295e
addq $0x60, %rsp
popq %rbx
popq %r14
popq %r15
retq
leaq 0x1cfd0(%rip), %r8      # 0x49ea7
leaq 0x19e4a(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x80, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
leaq 0x8(%rsp), %rdi
callq 0x10558
movq %rsp, %rdi
callq 0x1f8e0
leaq 0x18(%rsp), %rdi
jmp 0x2cec1
jmp 0x2cf4c
jmp 0x2cf5b
jmp 0x2cf87
jmp 0x2cf4c
jmp 0x2cf5b
jmp 0x2cf87
jmp 0x2cf4c
jmp 0x2cf5b
jmp 0x2cf87
jmp 0x2cf4c
jmp 0x2cf5b
jmp 0x2cf87
jmp 0x2cf4c
jmp 0x2cf5b
jmp 0x2cf87
jmp 0x2cf4c
jmp 0x2cf5b
jmp 0x2cf87
jmp 0x2cf4c
jmp 0x2cf5b
jmp 0x2cf87
jmp 0x2cf4c
jmp 0x2cf5b
jmp 0x2cf87
jmp 0x2cf4c
jmp 0x2cf5b
jmp 0x2cf87
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x10558
jmp 0x2cf5e
movq %rax, %rbx
movq %rsp, %rdi
jmp 0x2cf80
jmp 0x2cf87
jmp 0x2cf6b
jmp 0x2cf78
jmp 0x2cf87
movq %rax, %rbx
movq %rsp, %rdi
callq 0x10558
jmp 0x2cf7b
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x1f8e0
jmp 0x2cf8a
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rbx, %rdi
callq 0xdbf0