// File: /workspace/github_c_makefile_star2_O2/deplinenoise[P]tundra/unittest/Test_Json.cpp
// Function: JsonTest_Doubles_Test::TestBody()
TEST_F(JsonTest, Doubles)
{
  char input[] = "[123.456, -100.10, -1.0e10, 5e7]";
  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(JsonValue::kArray, v->m_Type);
  ASSERT_EQ(4, array->m_Count);
  ASSERT_EQ(JsonValue::kNumber, array->m_Values[0]->m_Type);
  ASSERT_EQ(JsonValue::kNumber, array->m_Values[1]->m_Type);
  ASSERT_EQ(JsonValue::kNumber, array->m_Values[2]->m_Type);
  ASSERT_EQ(JsonValue::kNumber, array->m_Values[3]->m_Type);
  ASSERT_DOUBLE_EQ(array->m_Values[0]->AsNumber()->m_Number, 123.456);
  ASSERT_DOUBLE_EQ(array->m_Values[1]->AsNumber()->m_Number, -100.10);
  ASSERT_DOUBLE_EQ(array->m_Values[2]->AsNumber()->m_Number, -1.0e10);
  ASSERT_DOUBLE_EQ(array->m_Values[3]->AsNumber()->m_Number, 5e7);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x60, %rsp
movaps 0x1a294(%rip), %xmm0    # 0x47240
leaq 0x30(%rsp), %rax
movaps %xmm0, 0x10(%rax)
movaps 0x1a274(%rip), %xmm0    # 0x47230
movaps %xmm0, (%rax)
movb $0x0, 0x20(%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 0x19d56(%rip), %rsi     # 0x46d3f
leaq 0x19d52(%rip), %rdx     # 0x46d42
leaq 0x1ceb0(%rip), %rbx     # 0x49ea7
leaq 0x10(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rcx
movq %r14, %r8
callq 0x13723
cmpb $0x0, (%r15)
je 0x2d387
leaq 0x18(%rsp), %rdi
callq 0x2295e
leaq 0x20(%rsp), %rcx
andq $0x0, (%rcx)
leaq 0x193ad(%rip), %rsi     # 0x463db
leaq 0x18dac(%rip), %rdx     # 0x45de1
leaq 0x10(%rsp), %rbx
leaq 0x28(%rsp), %r8
movq %rbx, %rdi
callq 0x2d7ec
cmpb $0x0, (%rbx)
je 0x2d3c7
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 0x1935d(%rip), %rsi     # 0x463db
leaq 0x19e8e(%rip), %rdx     # 0x46f13
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2d83c
cmpb $0x0, (%rbx)
je 0x2d3e0
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x3, (%rcx)
movq 0x28(%rsp), %r8
leaq 0x19dd3(%rip), %rsi     # 0x46e8d
leaq 0x19d9d(%rip), %rdx     # 0x46e5e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e10f
cmpb $0x0, (%rbx)
je 0x2d439
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x4, (%rcx)
movq 0x20(%rsp), %r8
addq $0x8, %r8
leaq 0x19ef4(%rip), %rsi     # 0x46fee
leaq 0x19e18(%rip), %rdx     # 0x46f19
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x287b5
cmpb $0x0, (%rbx)
je 0x2d482
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x5, (%rcx)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rax), %r8
leaq 0x19c4c(%rip), %rsi     # 0x46d89
leaq 0x19de4(%rip), %rdx     # 0x46f28
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e10f
cmpb $0x0, (%rbx)
je 0x2d4cb
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x5, (%rcx)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %r8
leaq 0x19c08(%rip), %rsi     # 0x46d89
leaq 0x19df7(%rip), %rdx     # 0x46f7f
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e10f
cmpb $0x0, (%rbx)
je 0x2d514
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x5, (%rcx)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %r8
leaq 0x19bc4(%rip), %rsi     # 0x46d89
leaq 0x19dce(%rip), %rdx     # 0x46f9a
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e10f
cmpb $0x0, (%rbx)
je 0x2d55d
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rsp, %rcx
movl $0x5, (%rcx)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %r8
leaq 0x19b80(%rip), %rsi     # 0x46d89
leaq 0x19de0(%rip), %rdx     # 0x46ff0
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e10f
cmpb $0x0, (%rbx)
je 0x2d5a6
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
xorl %ecx, %ecx
cmpl $0x5, (%rax)
cmoveq %rax, %rcx
movsd 0x8(%rcx), %xmm0
leaq 0x19e93(%rip), %rsi     # 0x470e4
leaq 0x19eb5(%rip), %rdx     # 0x4710d
leaq 0x10(%rsp), %rbx
movsd 0x19a93(%rip), %xmm1    # 0x46cf8
movq %rbx, %rdi
callq 0x2d864
cmpb $0x0, (%rbx)
je 0x2d5ef
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
xorl %ecx, %ecx
cmpl $0x5, (%rax)
cmoveq %rax, %rcx
movsd 0x8(%rcx), %xmm0
leaq 0x19e73(%rip), %rsi     # 0x47115
leaq 0x19e95(%rip), %rdx     # 0x4713e
leaq 0x10(%rsp), %rbx
movsd 0x19a4a(%rip), %xmm1    # 0x46d00
movq %rbx, %rdi
callq 0x2d864
cmpb $0x0, (%rbx)
je 0x2d638
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
xorl %ecx, %ecx
cmpl $0x5, (%rax)
cmoveq %rax, %rcx
movsd 0x8(%rcx), %xmm0
leaq 0x19e53(%rip), %rsi     # 0x47146
leaq 0x19e75(%rip), %rdx     # 0x4716f
leaq 0x10(%rsp), %rbx
movsd 0x19a01(%rip), %xmm1    # 0x46d08
movq %rbx, %rdi
callq 0x2d864
cmpb $0x0, (%rbx)
je 0x2d67e
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
xorl %ecx, %ecx
cmpl $0x5, (%rax)
cmoveq %rax, %rcx
movsd 0x8(%rcx), %xmm0
leaq 0x19e33(%rip), %rsi     # 0x47177
leaq 0x19e55(%rip), %rdx     # 0x471a0
leaq 0x10(%rsp), %rbx
movsd 0x199b8(%rip), %xmm1    # 0x46d10
movq %rbx, %rdi
callq 0x2d864
cmpb $0x0, (%rbx)
jne 0x2d759
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d71a
movq (%rax), %r8
jmp 0x2d721
leaq 0x20(%rsp), %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d39e
movq (%rax), %rbx
leaq 0x19983(%rip), %rdx     # 0x46d28
movq %rsp, %rdi
pushq $0x2
popq %rsi
movl $0x88, %ecx
movq %rbx, %r8
callq 0x104f8
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x10576
jmp 0x2d422
leaq 0x20(%rsp), %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d3f7
movq (%rax), %r8
jmp 0x2d3fe
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d450
movq (%rax), %r8
jmp 0x2d457
leaq 0x1caa9(%rip), %r8      # 0x49ea7
leaq 0x19923(%rip), %rdx     # 0x46d28
movq %rsp, %rdi
pushq $0x2
popq %rsi
movl $0x89, %ecx
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 0x2d703
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d499
movq (%rax), %r8
jmp 0x2d4a0
leaq 0x1ca50(%rip), %r8      # 0x49ea7
leaq 0x198ca(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x8c, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2d6f1
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d4e2
movq (%rax), %r8
jmp 0x2d4e9
leaq 0x1ca07(%rip), %r8      # 0x49ea7
leaq 0x19881(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x8e, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2d6f1
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d52b
movq (%rax), %r8
jmp 0x2d532
leaq 0x1c9be(%rip), %r8      # 0x49ea7
leaq 0x19838(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x8f, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2d6f1
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d574
movq (%rax), %r8
jmp 0x2d57b
leaq 0x1c975(%rip), %r8      # 0x49ea7
leaq 0x197ef(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x90, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2d6f1
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d5bd
movq (%rax), %r8
jmp 0x2d5c4
leaq 0x1c92c(%rip), %r8      # 0x49ea7
leaq 0x197a6(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x91, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2d6f1
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d606
movq (%rax), %r8
jmp 0x2d60d
leaq 0x1c8e3(%rip), %r8      # 0x49ea7
leaq 0x1975d(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x92, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2d6f1
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d64f
movq (%rax), %r8
jmp 0x2d656
leaq 0x1c89a(%rip), %r8      # 0x49ea7
leaq 0x19714(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x93, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2d6f1
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d695
movq (%rax), %r8
jmp 0x2d69c
leaq 0x1c851(%rip), %r8      # 0x49ea7
leaq 0x196cb(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x94, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2d6f1
movq %rsp, %rdi
callq 0x11c8e
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0x2d6c4
movq (%rax), %r8
jmp 0x2d6cb
leaq 0x1c80b(%rip), %r8      # 0x49ea7
leaq 0x19685(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x95, %ecx
callq 0x104f8
leaq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x10576
jmp 0x2d6f1
leaq 0x1c7dc(%rip), %r8      # 0x49ea7
leaq 0x19656(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x96, %ecx
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 0x1c786(%rip), %r8      # 0x49ea7
leaq 0x19600(%rip), %rdx     # 0x46d28
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
movl $0x97, %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 0x2d70b
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
jmp 0x2d79c
jmp 0x2d7ab
jmp 0x2d7d7
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x10558
jmp 0x2d7ae
movq %rax, %rbx
movq %rsp, %rdi
jmp 0x2d7d0
jmp 0x2d7d7
jmp 0x2d7bb
jmp 0x2d7c8
jmp 0x2d7d7
movq %rax, %rbx
movq %rsp, %rdi
callq 0x10558
jmp 0x2d7cb
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x1f8e0
jmp 0x2d7da
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x2295e
movq %rbx, %rdi
callq 0xdbf0