// File: yukioc[P]tscrpt/t-tscrpt.cpp
// Function: t_add()
void t_add(){/*{{{*/
	tscrpt_t sc;
	obj_t*o;

	//! \test 2 + 3 => 5
	o = sc.eval("2 + 3");
	mu_assert(o!=NULL);
	mu_assert(o->type=='N');
	mu_assert(o->value()==5);
	delete o;

	//! \test 4+6 => 10
	o = sc.eval("4+6");
	mu_assert(o!=NULL);
	mu_assert(o->type=='N');
	mu_assert(o->value()==10);
	delete o;

	//! \test "hello," + "world" => "hello,world"
	o = sc.eval("\"hello,\" + \"world\"");
	mu_assert(o!=NULL);
	mu_assert(o->type=='S');
	mu_assert(o->str().compare("hello,world")==0);
	delete o;

	//! \test "aaa" + "" => "aaa"
	o = sc.eval("\"aaa\" + \"\"");
	mu_assert(o!=NULL);
	mu_assert(o->type=='S');
	mu_assert(o->str().compare("aaa")==0);
	delete o;

	//! \test "" + "bbb" => "bbb"
	o = sc.eval("\"\" + \"bbb\"");
	mu_assert(o!=NULL);
	mu_assert(o->type=='S');
	mu_assert(o->str().compare("bbb")==0);
	delete o;

	//! \test "ccc" + 4 => "ccc4"
	o = sc.eval("\"ccc\" + 4");
	mu_assert(o!=NULL);
	mu_assert(o->type=='S');
	mu_assert(o->str().compare("ccc4")==0);
	delete o;

	//! \test 8 + "aaa" => 8
	o = sc.eval("8 + \"ddd\"");
	mu_assert(o!=NULL);
	mu_assert(o->type=='N');
	mu_assert(o->value()==8);
	delete o;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
leaq -0x8(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x25b0
movq -0x30(%rbp), %rdi
leaq 0x269b(%rip), %rsi      # 0xa97e
callq 0x2670
movq %rax, -0x28(%rbp)
jmp 0x82ee
movq -0x28(%rbp), %rax
movq %rax, -0x10(%rbp)
movl 0x5f00(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x5ef7(%rip)      # 0xe1fc
cmpq $0x0, -0x10(%rbp)
jne 0x8359
movl 0x5ee2(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5eda(%rip)      # 0xe1f4
leaq 0x21bb(%rip), %rdi      # 0xa4dc
leaq 0x21d2(%rip), %rsi      # 0xa4fa
leaq 0x23e5(%rip), %rcx      # 0xa714
xorl %eax, %eax
movl $0x15c, %edx            # imm = 0x15C
callq 0x2040
jmp 0x833d
jmp 0x8359
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x25d0
jmp 0x8c4b
jmp 0x835b
jmp 0x835d
jmp 0x835f
movl 0x5e97(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x5e8e(%rip)      # 0xe1fc
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4e, %eax
je 0x83ad
movl 0x5e74(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5e6c(%rip)      # 0xe1f4
leaq 0x214d(%rip), %rdi      # 0xa4dc
leaq 0x2164(%rip), %rsi      # 0xa4fa
leaq 0x237f(%rip), %rcx      # 0xa71c
xorl %eax, %eax
movl $0x15d, %edx            # imm = 0x15D
callq 0x2040
jmp 0x83ab
jmp 0x83ad
jmp 0x83af
jmp 0x83b1
jmp 0x83b3
movl 0x5e43(%rip), %eax      # 0xe1fc
incl %eax
movl %eax, 0x5e3b(%rip)      # 0xe1fc
movq -0x10(%rbp), %rdi
callq 0x2480
movl %eax, -0x34(%rbp)
jmp 0x83cf
movl -0x34(%rbp), %eax
cmpl $0x5, %eax
je 0x840a
movl 0x5e17(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5e0f(%rip)      # 0xe1f4
leaq 0x20f0(%rip), %rdi      # 0xa4dc
leaq 0x2107(%rip), %rsi      # 0xa4fa
leaq 0x258a(%rip), %rcx      # 0xa984
xorl %eax, %eax
movl $0x15e, %edx            # imm = 0x15E
callq 0x2040
jmp 0x8408
jmp 0x840a
jmp 0x840c
jmp 0x840e
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
je 0x8433
movq -0x40(%rbp), %rdi
callq 0x4480
movq -0x40(%rbp), %rdi
movl $0x30, %esi
callq 0x21d0
leaq 0x2558(%rip), %rsi      # 0xa992
leaq -0x8(%rbp), %rdi
callq 0x2670
movq %rax, -0x48(%rbp)
jmp 0x8449
movq -0x48(%rbp), %rax
movq %rax, -0x10(%rbp)
movl 0x5da5(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x5d9c(%rip)      # 0xe1fc
cmpq $0x0, -0x10(%rbp)
jne 0x849a
movl 0x5d87(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5d7f(%rip)      # 0xe1f4
leaq 0x2060(%rip), %rdi      # 0xa4dc
leaq 0x2077(%rip), %rsi      # 0xa4fa
leaq 0x228a(%rip), %rcx      # 0xa714
xorl %eax, %eax
movl $0x163, %edx            # imm = 0x163
callq 0x2040
jmp 0x8498
jmp 0x849a
jmp 0x849c
jmp 0x849e
jmp 0x84a0
movl 0x5d56(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x5d4d(%rip)      # 0xe1fc
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4e, %eax
je 0x84ee
movl 0x5d33(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5d2b(%rip)      # 0xe1f4
leaq 0x200c(%rip), %rdi      # 0xa4dc
leaq 0x2023(%rip), %rsi      # 0xa4fa
leaq 0x223e(%rip), %rcx      # 0xa71c
xorl %eax, %eax
movl $0x164, %edx            # imm = 0x164
callq 0x2040
jmp 0x84ec
jmp 0x84ee
jmp 0x84f0
jmp 0x84f2
jmp 0x84f4
movl 0x5d02(%rip), %eax      # 0xe1fc
incl %eax
movl %eax, 0x5cfa(%rip)      # 0xe1fc
movq -0x10(%rbp), %rdi
callq 0x2480
movl %eax, -0x4c(%rbp)
jmp 0x8510
movl -0x4c(%rbp), %eax
cmpl $0xa, %eax
je 0x854b
movl 0x5cd6(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5cce(%rip)      # 0xe1f4
leaq 0x1faf(%rip), %rdi      # 0xa4dc
leaq 0x1fc6(%rip), %rsi      # 0xa4fa
leaq 0x2200(%rip), %rcx      # 0xa73b
xorl %eax, %eax
movl $0x165, %edx            # imm = 0x165
callq 0x2040
jmp 0x8549
jmp 0x854b
jmp 0x854d
jmp 0x854f
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, %rax
je 0x8574
movq -0x58(%rbp), %rdi
callq 0x4480
movq -0x58(%rbp), %rdi
movl $0x30, %esi
callq 0x21d0
leaq 0x241b(%rip), %rsi      # 0xa996
leaq -0x8(%rbp), %rdi
callq 0x2670
movq %rax, -0x60(%rbp)
jmp 0x858a
movq -0x60(%rbp), %rax
movq %rax, -0x10(%rbp)
movl 0x5c64(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x5c5b(%rip)      # 0xe1fc
cmpq $0x0, -0x10(%rbp)
jne 0x85db
movl 0x5c46(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5c3e(%rip)      # 0xe1f4
leaq 0x1f1f(%rip), %rdi      # 0xa4dc
leaq 0x1f36(%rip), %rsi      # 0xa4fa
leaq 0x2149(%rip), %rcx      # 0xa714
xorl %eax, %eax
movl $0x16a, %edx            # imm = 0x16A
callq 0x2040
jmp 0x85d9
jmp 0x85db
jmp 0x85dd
jmp 0x85df
jmp 0x85e1
movl 0x5c15(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x5c0c(%rip)      # 0xe1fc
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x53, %eax
je 0x862f
movl 0x5bf2(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5bea(%rip)      # 0xe1f4
leaq 0x1ecb(%rip), %rdi      # 0xa4dc
leaq 0x1ee2(%rip), %rsi      # 0xa4fa
leaq 0x2159(%rip), %rcx      # 0xa778
xorl %eax, %eax
movl $0x16b, %edx            # imm = 0x16B
callq 0x2040
jmp 0x862d
jmp 0x862f
jmp 0x8631
jmp 0x8633
jmp 0x8635
movl 0x5bc1(%rip), %eax      # 0xe1fc
incl %eax
movl %eax, 0x5bb9(%rip)      # 0xe1fc
movq -0x10(%rbp), %rdi
callq 0x2500
movq %rax, -0x68(%rbp)
jmp 0x8652
movq -0x68(%rbp), %rdi
leaq 0x234c(%rip), %rsi      # 0xa9a9
callq 0x20a0
cmpl $0x0, %eax
je 0x869a
movl 0x5b87(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5b7f(%rip)      # 0xe1f4
leaq 0x1e60(%rip), %rdi      # 0xa4dc
leaq 0x1e77(%rip), %rsi      # 0xa4fa
leaq 0x232b(%rip), %rcx      # 0xa9b5
xorl %eax, %eax
movl $0x16c, %edx            # imm = 0x16C
callq 0x2040
jmp 0x8698
jmp 0x869a
jmp 0x869c
jmp 0x869e
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
cmpq $0x0, %rax
je 0x86c3
movq -0x70(%rbp), %rdi
callq 0x4480
movq -0x70(%rbp), %rdi
movl $0x30, %esi
callq 0x21d0
leaq 0x230e(%rip), %rsi      # 0xa9d8
leaq -0x8(%rbp), %rdi
callq 0x2670
movq %rax, -0x78(%rbp)
jmp 0x86d9
movq -0x78(%rbp), %rax
movq %rax, -0x10(%rbp)
movl 0x5b15(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x5b0c(%rip)      # 0xe1fc
cmpq $0x0, -0x10(%rbp)
jne 0x872a
movl 0x5af7(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5aef(%rip)      # 0xe1f4
leaq 0x1dd0(%rip), %rdi      # 0xa4dc
leaq 0x1de7(%rip), %rsi      # 0xa4fa
leaq 0x1ffa(%rip), %rcx      # 0xa714
xorl %eax, %eax
movl $0x171, %edx            # imm = 0x171
callq 0x2040
jmp 0x8728
jmp 0x872a
jmp 0x872c
jmp 0x872e
jmp 0x8730
movl 0x5ac6(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x5abd(%rip)      # 0xe1fc
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x53, %eax
je 0x877e
movl 0x5aa3(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5a9b(%rip)      # 0xe1f4
leaq 0x1d7c(%rip), %rdi      # 0xa4dc
leaq 0x1d93(%rip), %rsi      # 0xa4fa
leaq 0x200a(%rip), %rcx      # 0xa778
xorl %eax, %eax
movl $0x172, %edx            # imm = 0x172
callq 0x2040
jmp 0x877c
jmp 0x877e
jmp 0x8780
jmp 0x8782
jmp 0x8784
movl 0x5a72(%rip), %eax      # 0xe1fc
incl %eax
movl %eax, 0x5a6a(%rip)      # 0xe1fc
movq -0x10(%rbp), %rdi
callq 0x2500
movq %rax, -0x80(%rbp)
jmp 0x87a1
movq -0x80(%rbp), %rdi
leaq 0x2237(%rip), %rsi      # 0xa9e3
callq 0x20a0
cmpl $0x0, %eax
je 0x87e9
movl 0x5a38(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5a30(%rip)      # 0xe1f4
leaq 0x1d11(%rip), %rdi      # 0xa4dc
leaq 0x1d28(%rip), %rsi      # 0xa4fa
leaq 0x220e(%rip), %rcx      # 0xa9e7
xorl %eax, %eax
movl $0x173, %edx            # imm = 0x173
callq 0x2040
jmp 0x87e7
jmp 0x87e9
jmp 0x87eb
jmp 0x87ed
movq -0x10(%rbp), %rax
movq %rax, -0x88(%rbp)
cmpq $0x0, %rax
je 0x881b
movq -0x88(%rbp), %rdi
callq 0x4480
movq -0x88(%rbp), %rdi
movl $0x30, %esi
callq 0x21d0
leaq 0x21e0(%rip), %rsi      # 0xaa02
leaq -0x8(%rbp), %rdi
callq 0x2670
movq %rax, -0x90(%rbp)
jmp 0x8834
movq -0x90(%rbp), %rax
movq %rax, -0x10(%rbp)
movl 0x59b7(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x59ae(%rip)      # 0xe1fc
cmpq $0x0, -0x10(%rbp)
jne 0x8888
movl 0x5999(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5991(%rip)      # 0xe1f4
leaq 0x1c72(%rip), %rdi      # 0xa4dc
leaq 0x1c89(%rip), %rsi      # 0xa4fa
leaq 0x1e9c(%rip), %rcx      # 0xa714
xorl %eax, %eax
movl $0x178, %edx            # imm = 0x178
callq 0x2040
jmp 0x8886
jmp 0x8888
jmp 0x888a
jmp 0x888c
jmp 0x888e
movl 0x5968(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x595f(%rip)      # 0xe1fc
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x53, %eax
je 0x88dc
movl 0x5945(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x593d(%rip)      # 0xe1f4
leaq 0x1c1e(%rip), %rdi      # 0xa4dc
leaq 0x1c35(%rip), %rsi      # 0xa4fa
leaq 0x1eac(%rip), %rcx      # 0xa778
xorl %eax, %eax
movl $0x179, %edx            # imm = 0x179
callq 0x2040
jmp 0x88da
jmp 0x88dc
jmp 0x88de
jmp 0x88e0
jmp 0x88e2
movl 0x5914(%rip), %eax      # 0xe1fc
incl %eax
movl %eax, 0x590c(%rip)      # 0xe1fc
movq -0x10(%rbp), %rdi
callq 0x2500
movq %rax, -0x98(%rbp)
jmp 0x8902
movq -0x98(%rbp), %rdi
leaq 0x1dba(%rip), %rsi      # 0xa6ca
callq 0x20a0
cmpl $0x0, %eax
je 0x894d
movl 0x58d4(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x58cc(%rip)      # 0xe1f4
leaq 0x1bad(%rip), %rdi      # 0xa4dc
leaq 0x1bc4(%rip), %rsi      # 0xa4fa
leaq 0x20d0(%rip), %rcx      # 0xaa0d
xorl %eax, %eax
movl $0x17a, %edx            # imm = 0x17A
callq 0x2040
jmp 0x894b
jmp 0x894d
jmp 0x894f
jmp 0x8951
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
cmpq $0x0, %rax
je 0x897f
movq -0xa0(%rbp), %rdi
callq 0x4480
movq -0xa0(%rbp), %rdi
movl $0x30, %esi
callq 0x21d0
leaq 0x20a2(%rip), %rsi      # 0xaa28
leaq -0x8(%rbp), %rdi
callq 0x2670
movq %rax, -0xa8(%rbp)
jmp 0x8998
movq -0xa8(%rbp), %rax
movq %rax, -0x10(%rbp)
movl 0x5853(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x584a(%rip)      # 0xe1fc
cmpq $0x0, -0x10(%rbp)
jne 0x89ec
movl 0x5835(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x582d(%rip)      # 0xe1f4
leaq 0x1b0e(%rip), %rdi      # 0xa4dc
leaq 0x1b25(%rip), %rsi      # 0xa4fa
leaq 0x1d38(%rip), %rcx      # 0xa714
xorl %eax, %eax
movl $0x17f, %edx            # imm = 0x17F
callq 0x2040
jmp 0x89ea
jmp 0x89ec
jmp 0x89ee
jmp 0x89f0
jmp 0x89f2
movl 0x5804(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x57fb(%rip)      # 0xe1fc
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x53, %eax
je 0x8a40
movl 0x57e1(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x57d9(%rip)      # 0xe1f4
leaq 0x1aba(%rip), %rdi      # 0xa4dc
leaq 0x1ad1(%rip), %rsi      # 0xa4fa
leaq 0x1d48(%rip), %rcx      # 0xa778
xorl %eax, %eax
movl $0x180, %edx            # imm = 0x180
callq 0x2040
jmp 0x8a3e
jmp 0x8a40
jmp 0x8a42
jmp 0x8a44
jmp 0x8a46
movl 0x57b0(%rip), %eax      # 0xe1fc
incl %eax
movl %eax, 0x57a8(%rip)      # 0xe1fc
movq -0x10(%rbp), %rdi
callq 0x2500
movq %rax, -0xb0(%rbp)
jmp 0x8a66
movq -0xb0(%rbp), %rdi
leaq 0x1fbe(%rip), %rsi      # 0xaa32
callq 0x20a0
cmpl $0x0, %eax
je 0x8ab1
movl 0x5770(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5768(%rip)      # 0xe1f4
leaq 0x1a49(%rip), %rdi      # 0xa4dc
leaq 0x1a60(%rip), %rsi      # 0xa4fa
leaq 0x1f96(%rip), %rcx      # 0xaa37
xorl %eax, %eax
movl $0x181, %edx            # imm = 0x181
callq 0x2040
jmp 0x8aaf
jmp 0x8ab1
jmp 0x8ab3
jmp 0x8ab5
movq -0x10(%rbp), %rax
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x8ae3
movq -0xb8(%rbp), %rdi
callq 0x4480
movq -0xb8(%rbp), %rdi
movl $0x30, %esi
callq 0x21d0
leaq 0x1f69(%rip), %rsi      # 0xaa53
leaq -0x8(%rbp), %rdi
callq 0x2670
movq %rax, -0xc0(%rbp)
jmp 0x8afc
movq -0xc0(%rbp), %rax
movq %rax, -0x10(%rbp)
movl 0x56ef(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x56e6(%rip)      # 0xe1fc
cmpq $0x0, -0x10(%rbp)
jne 0x8b50
movl 0x56d1(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x56c9(%rip)      # 0xe1f4
leaq 0x19aa(%rip), %rdi      # 0xa4dc
leaq 0x19c1(%rip), %rsi      # 0xa4fa
leaq 0x1bd4(%rip), %rcx      # 0xa714
xorl %eax, %eax
movl $0x186, %edx            # imm = 0x186
callq 0x2040
jmp 0x8b4e
jmp 0x8b50
jmp 0x8b52
jmp 0x8b54
jmp 0x8b56
movl 0x56a0(%rip), %eax      # 0xe1fc
addl $0x1, %eax
movl %eax, 0x5697(%rip)      # 0xe1fc
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4e, %eax
je 0x8ba4
movl 0x567d(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5675(%rip)      # 0xe1f4
leaq 0x1956(%rip), %rdi      # 0xa4dc
leaq 0x196d(%rip), %rsi      # 0xa4fa
leaq 0x1b88(%rip), %rcx      # 0xa71c
xorl %eax, %eax
movl $0x187, %edx            # imm = 0x187
callq 0x2040
jmp 0x8ba2
jmp 0x8ba4
jmp 0x8ba6
jmp 0x8ba8
jmp 0x8baa
movl 0x564c(%rip), %eax      # 0xe1fc
incl %eax
movl %eax, 0x5644(%rip)      # 0xe1fc
movq -0x10(%rbp), %rdi
callq 0x2480
movl %eax, -0xc4(%rbp)
jmp 0x8bc9
movl -0xc4(%rbp), %eax
cmpl $0x8, %eax
je 0x8c07
movl 0x561a(%rip), %eax      # 0xe1f4
incl %eax
movl %eax, 0x5612(%rip)      # 0xe1f4
leaq 0x18f3(%rip), %rdi      # 0xa4dc
leaq 0x190a(%rip), %rsi      # 0xa4fa
leaq 0x1d5e(%rip), %rcx      # 0xa955
xorl %eax, %eax
movl $0x188, %edx            # imm = 0x188
callq 0x2040
jmp 0x8c05
jmp 0x8c07
jmp 0x8c09
jmp 0x8c0b
movq -0x10(%rbp), %rax
movq %rax, -0xd0(%rbp)
cmpq $0x0, %rax
je 0x8c39
movq -0xd0(%rbp), %rdi
callq 0x4480
movq -0xd0(%rbp), %rdi
movl $0x30, %esi
callq 0x21d0
leaq -0x8(%rbp), %rdi
callq 0x25d0
addq $0xd0, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x2330
nopw %cs:(%rax,%rax)