// File: /workspace/github_c_makefile_star2_O2/DeforaOS[P]libSystem/tests/string.c
// Function: main
int main(int argc, char * argv[])
{
	int ret = 0;
	String * s;
	(void) argc;

	/* test */
	if((s = string_new(argv[0])) == NULL)
		return 2;
	ret |= _test(s);
	string_delete(s);
	if((s = string_new_format("%s", argv[0])) == NULL)
		return 2;
	ret |= _test(s);
	string_delete(s);
	/* test2 */
	ret |= _test2("", NULL, 0);
	ret |= _test2(" ", NULL, 1);
	ret |= _test2("", "", 0);
	ret |= _test2("Y", "Y", 1);
	ret |= _test2("YYYY", NULL, 0);
	ret |= _test2("YYYY", "", 0);
	ret |= _test2("YYYY", "Y", 4);
	ret |= _test2("ZYYYY", "Z", 0);
	ret |= _test2("YYYYZ", "Z", 1);
	ret |= _test2("YYYYZZ", "Z", 2);
	ret |= _test2("YYYYZZ", "YZ", 6);
	/* test3 */
	ret |= _test3("", NULL, 0);
	ret |= _test3(" ", NULL, 1);
	ret |= _test3("", "", 0);
	ret |= _test3("Y", "Y", 1);
	ret |= _test3("YYYY", NULL, 0);
	ret |= _test3("YYYY", "", 0);
	ret |= _test3("YYYY", "Y", 4);
	ret |= _test3("YZZZZ", "Z", 0);
	ret |= _test3("YZZZZ", "Y", 1);
	ret |= _test3("YYZZZZ", "Y", 2);
	ret |= _test3("YYYYZZ", "YZ", 6);
	/* test4 */
	ret |= _test4("", NULL, 0);
	ret |= _test4(" ", NULL, 1);
	ret |= _test4("", "", 0);
	ret |= _test4("Y", "Y", 1);
	ret |= _test4("YYYY", NULL, 0);
	ret |= _test4("YYYY", "", 0);
	ret |= _test4("YYYY", "Y", 4);
	ret |= _test4("YYYYZ", "Z", 1);
	ret |= _test4("YYYYZZ", "Z", 2);
	ret |= _test4("YYYYZZ", "YZ", 6);
	ret |= _test4("ZZYYYYZZ", "YZ", 8);
	ret |= _test4("ZZYYYYZZ", "Y", 0);
	/* test5 */
	ret |= _test5("test", "", 4);
	ret |= _test5("test", "test", 0);
	ret |= _test5("test", "test2", -1);
	ret |= _test5("test2", "test", 0);
	ret |= _test5("2test", "test", 1);
	ret |= _test5("2test2", "test", 1);
	ret |= _test5("2test2test2", "test", 1);
	/* test6 */
	ret |= _test6("test", "", 4);
	ret |= _test6("test", "test", 0);
	ret |= _test6("test", "test2", -1);
	ret |= _test6("test2", "test", 0);
	ret |= _test6("2test", "test", 1);
	ret |= _test6("2test2", "test", 1);
	ret |= _test6("2test2test2", "test", 6);
	/* test7 */
	ret |= _test7(NULL, 0, "");
	ret |= _test7(NULL, 7, "");
	ret |= _test7("test", 0, "");
	ret |= _test7("test", 1, "t");
	ret |= _test7("test", 4, "test");
	ret |= _test7("test", 7, "test");
	/* test8 */
	ret |= _test8("abcABC", "abcabc");
	ret |= _test8("abcABC123", "abcabc123");
	/* test9 */
	ret |= _test9("abcABC", "ABCABC");
	ret |= _test9("abcABC123", "ABCABC123");
	return ret;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq (%rsi), %rdi
callq 0x1050
pushq $0x2
popq %rbx
testq %rax, %rax
je 0x17a6
movq %rax, %r15
movq %rax, %rdi
callq 0x17b7
movl %eax, %ebp
movq %r15, %rdi
callq 0x1080
movq (%r14), %rsi
leaq 0xda7(%rip), %rdi       # 0x2004
xorl %eax, %eax
callq 0x1100
testq %rax, %rax
je 0x17a6
movq %rax, %r14
movq %rax, %rdi
callq 0x17b7
movl %eax, %r13d
orl %ebp, %r13d
movq %r14, %rdi
callq 0x1080
leaq 0xf4a(%rip), %rbx       # 0x21d7
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x184c
movl %eax, %r14d
leaq 0xd64(%rip), %rdi       # 0x2007
pushq $0x1
popq %rbp
xorl %esi, %esi
movl %ebp, %edx
callq 0x184c
movl %eax, %r15d
orl %r14d, %r15d
movq %rbx, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x184c
movl %eax, %r12d
orl %r15d, %r12d
leaq 0xd3e(%rip), %r14       # 0x200d
movq %r14, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x184c
movl %eax, %ebp
orl %r12d, %ebp
leaq 0xd22(%rip), %r15       # 0x200a
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x184c
movl %eax, %r12d
orl %ebp, %r12d
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x184c
movl %eax, %ebp
orl %r12d, %ebp
pushq $0x4
popq %rdx
movq %r15, %rdi
movq %r14, %rsi
callq 0x184c
movl %eax, %r12d
orl %ebp, %r12d
orl %r13d, %r12d
leaq 0xcdf(%rip), %rdi       # 0x2009
leaq 0xce2(%rip), %r15       # 0x2013
movq %r15, %rsi
xorl %edx, %edx
callq 0x184c
movl %eax, %ebp
leaq 0xccb(%rip), %rdi       # 0x200f
movq %r15, %rsi
pushq $0x1
popq %rdx
callq 0x184c
movl %eax, %r13d
orl %ebp, %r13d
leaq 0xcc2(%rip), %r14       # 0x201e
pushq $0x2
popq %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x184c
movl %eax, %ebp
orl %r13d, %ebp
leaq 0xc9c(%rip), %rsi       # 0x2012
pushq $0x6
popq %rdx
movq %r14, %rdi
callq 0x184c
movl %eax, %r13d
orl %ebp, %r13d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x18d6
movl %eax, %ebp
orl %r13d, %ebp
leaq 0xc68(%rip), %rdi       # 0x2007
xorl %esi, %esi
pushq $0x1
popq %r15
movl %r15d, %edx
callq 0x18d6
movl %eax, %r13d
orl %ebp, %r13d
movq %rbx, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x18d6
movl %eax, %ebp
orl %r13d, %ebp
leaq 0xc41(%rip), %rdi       # 0x200d
movq %rdi, %rsi
movq %rdi, %r14
movl %r15d, %edx
callq 0x18d6
movl %eax, %r13d
orl %ebp, %r13d
orl %r12d, %r13d
leaq 0xc20(%rip), %r15       # 0x200a
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x18d6
movl %eax, %ebp
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x18d6
movl %eax, %r12d
orl %ebp, %r12d
movq %r15, %rdi
movq %r14, %rsi
pushq $0x4
popq %rdx
callq 0x18d6
movl %eax, %ebp
orl %r12d, %ebp
leaq 0xbf1(%rip), %r12       # 0x2016
movq %r12, %rdi
leaq 0xbe4(%rip), %rsi       # 0x2013
xorl %edx, %edx
callq 0x18d6
movl %eax, %ebx
orl %ebp, %ebx
movq %r12, %rdi
movq %r14, %rsi
pushq $0x1
popq %r12
movl %r12d, %edx
callq 0x18d6
movl %eax, %ebp
orl %ebx, %ebp
leaq 0xbbe(%rip), %rdi       # 0x2015
movq %r14, %rsi
pushq $0x2
popq %rdx
callq 0x18d6
movl %eax, %ebx
orl %ebp, %ebx
leaq 0xbb1(%rip), %rdi       # 0x201e
leaq 0xb9e(%rip), %rsi       # 0x2012
pushq $0x6
popq %rdx
callq 0x18d6
movl %eax, %ebp
orl %ebx, %ebp
leaq 0xd50(%rip), %rdi       # 0x21d7
xorl %esi, %esi
xorl %edx, %edx
callq 0x1960
movl %eax, %ebx
orl %ebp, %ebx
leaq 0xb6c(%rip), %rdi       # 0x2007
xorl %esi, %esi
movl %r12d, %ebp
movl %r12d, %edx
callq 0x1960
movl %eax, %r12d
orl %ebx, %r12d
orl %r13d, %r12d
leaq 0xd1f(%rip), %rdi       # 0x21d7
movq %rdi, %rsi
movq %rdi, %r13
xorl %edx, %edx
callq 0x1960
movl %eax, %ebx
movq %r14, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x1960
movl %eax, %ebp
orl %ebx, %ebp
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x1960
movl %eax, %ebx
orl %ebp, %ebx
movq %r15, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x1960
movl %eax, %ebp
orl %ebx, %ebp
movq %r15, %rdi
movq %r14, %rsi
pushq $0x4
popq %rdx
callq 0x1960
movl %eax, %ebx
orl %ebp, %ebx
leaq 0xafd(%rip), %rdi       # 0x200f
leaq 0xafa(%rip), %r15       # 0x2013
movq %r15, %rsi
pushq $0x1
popq %rdx
callq 0x1960
movl %eax, %ebp
orl %ebx, %ebp
leaq 0xaef(%rip), %r13       # 0x201e
movq %r13, %rdi
movq %r15, %rsi
pushq $0x2
popq %rdx
callq 0x1960
movl %eax, %ebx
orl %ebp, %ebx
movq %r13, %rdi
leaq 0xac7(%rip), %r15       # 0x2012
movq %r15, %rsi
pushq $0x6
popq %rdx
callq 0x1960
movl %eax, %ebp
orl %ebx, %ebp
leaq 0xabb(%rip), %rbx       # 0x201c
pushq $0x8
popq %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1960
movl %eax, %r15d
orl %ebp, %r15d
movq %rbx, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x1960
movl %eax, %r13d
orl %r15d, %r13d
orl %r12d, %r13d
leaq 0xa94(%rip), %r14       # 0x2026
pushq $0x4
popq %rdx
movq %r14, %rdi
leaq 0xc38(%rip), %rsi       # 0x21d7
callq 0x19ea
movl %eax, %ebx
movq %r14, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x19ea
movl %eax, %r15d
orl %ebx, %r15d
leaq 0xa71(%rip), %rbp       # 0x2031
pushq $-0x1
popq %rdx
movq %r14, %rdi
movq %rbp, %rsi
callq 0x19ea
movl %eax, %ebx
orl %r15d, %ebx
movq %rbp, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x19ea
movl %eax, %r15d
orl %ebx, %r15d
leaq 0xa38(%rip), %rdi       # 0x2025
pushq $0x1
popq %r12
movq %r14, %rsi
movq %r12, %rdx
callq 0x19ea
movl %eax, %ebx
orl %r15d, %ebx
leaq 0xa28(%rip), %rdi       # 0x2030
movq %r14, %rsi
movq %r12, %rdx
callq 0x19ea
movl %eax, %r15d
orl %ebx, %r15d
leaq 0xa0b(%rip), %rdi       # 0x202b
movq %r14, %rsi
movq %r12, %rdx
callq 0x19ea
movl %eax, %ebx
orl %r15d, %ebx
movq %r14, %rdi
leaq 0xb9d(%rip), %rsi       # 0x21d7
pushq $0x4
popq %rdx
callq 0x1a59
movl %eax, %r15d
orl %ebx, %r15d
movq %r14, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x1a59
movl %eax, %ebx
orl %r15d, %ebx
movq %r14, %rdi
movq %rbp, %rsi
pushq $-0x1
popq %rdx
callq 0x1a59
movl %eax, %r15d
orl %ebx, %r15d
movq %rbp, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x1a59
movl %eax, %ebp
orl %r15d, %ebp
orl %r13d, %ebp
leaq 0x99b(%rip), %rdi       # 0x2025
movq %r14, %rsi
movq %r12, %rdx
callq 0x1a59
movl %eax, %ebx
leaq 0x992(%rip), %rdi       # 0x2030
movq %r14, %rsi
movq %r12, %rdx
callq 0x1a59
movl %eax, %r15d
orl %ebx, %r15d
pushq $0x6
popq %rdx
leaq 0x972(%rip), %rdi       # 0x202b
movq %r14, %rsi
callq 0x1a59
movl %eax, %ebx
orl %r15d, %ebx
xorl %edi, %edi
xorl %esi, %esi
leaq 0xb06(%rip), %r15       # 0x21d7
movq %r15, %rdx
callq 0x1ac8
movl %eax, %r13d
orl %ebx, %r13d
pushq $0x7
popq %rsi
xorl %edi, %edi
movq %r15, %rdx
callq 0x1ac8
movl %eax, %ebx
orl %r13d, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0x1ac8
movl %eax, %r13d
orl %ebx, %r13d
leaq 0x91e(%rip), %rdx       # 0x2029
movq %r14, %rdi
movq %r12, %rsi
callq 0x1ac8
movl %eax, %ebx
orl %r13d, %ebx
movq %r14, %rdi
pushq $0x4
popq %rsi
movq %r14, %rdx
callq 0x1ac8
movl %eax, %r12d
orl %ebx, %r12d
movq %r14, %rdi
pushq $0x7
popq %rsi
movq %r14, %rdx
callq 0x1ac8
movl %eax, %ebx
orl %r12d, %ebx
leaq 0x8ee(%rip), %r14       # 0x2037
leaq 0x8ee(%rip), %rsi       # 0x203e
movq %r14, %rdi
callq 0x1b55
movl %eax, %r15d
orl %ebx, %r15d
leaq 0x8e0(%rip), %rbx       # 0x2045
leaq 0x8e3(%rip), %rsi       # 0x204f
movq %rbx, %rdi
callq 0x1b55
movl %eax, %r12d
orl %r15d, %r12d
leaq 0x8d8(%rip), %rsi       # 0x2059
movq %r14, %rdi
callq 0x1bd8
movl %eax, %r14d
orl %r12d, %r14d
orl %ebp, %r14d
leaq 0x8c7(%rip), %rsi       # 0x2060
movq %rbx, %rdi
callq 0x1bd8
movl %eax, %ebx
orl %r14d, %ebx
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq