LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/datetime.cpp
// Function: smooth::DateTime::SetYMD(int, int, int)
S::Bool S::DateTime::SetYMD(Int year, Int month, Int day)
{
	if (year  <  1900	       ) return False;
	if (month <=	0 || month > 12) return False;
	if (day	  <=	0 || day   > 31) return False;

	tm	 lt = localtime_p((time_t *) value);

	lt.tm_year = year - 1900;
	lt.tm_mon  = month - 1;
	lt.tm_mday = day;

	time_t	 t  = mktime(&lt);

	memcpy(value, &t, sizeof(time_t));

	return True;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x68(%rbp)
cmpl $0x76c, -0x14(%rbp)     # imm = 0x76C
jge 0xf03fc
movb $0x0, -0x1(%rbp)
jmp 0xf046c
cmpl $0x0, -0x18(%rbp)
jle 0xf0408
cmpl $0xc, -0x18(%rbp)
jle 0xf040e
movb $0x0, -0x1(%rbp)
jmp 0xf046c
cmpl $0x0, -0x1c(%rbp)
jle 0xf041a
cmpl $0x1f, -0x1c(%rbp)
jle 0xf0420
movb $0x0, -0x1(%rbp)
jmp 0xf046c
movq -0x68(%rbp), %rax
movq (%rax), %rsi
leaq -0x58(%rbp), %rdi
callq 0xf0480
movl -0x14(%rbp), %eax
subl $0x76c, %eax            # imm = 0x76C
movl %eax, -0x44(%rbp)
movl -0x18(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x48(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x4c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x5a720
movq %rax, %rcx
movq -0x68(%rbp), %rax
movq %rcx, -0x60(%rbp)
movq (%rax), %rax
movq -0x60(%rbp), %rcx
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x70, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/datetime.cpp
// Function: smooth::DateTime::SetHMS(int, int, int)
S::Bool S::DateTime::SetHMS(Int hour, Int min, Int sec)
{
	if (hour < 0 || hour >= 24) return False;
	if (min	 < 0 || min  >= 60) return False;
	if (sec	 < 0 || sec  >= 60) return False;

	tm	 lt = localtime_p((time_t *) value);

	lt.tm_hour = hour;
	lt.tm_min  = min;
	lt.tm_sec  = sec;

	time_t	 t  = mktime(&lt);

	memcpy(value, &t, sizeof(time_t));

	return True;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x68(%rbp)
cmpl $0x0, -0x14(%rbp)
jl 0xf04e9
cmpl $0x18, -0x14(%rbp)
jl 0xf04ef
movb $0x0, -0x1(%rbp)
jmp 0xf0557
cmpl $0x0, -0x18(%rbp)
jl 0xf04fb
cmpl $0x3c, -0x18(%rbp)
jl 0xf0501
movb $0x0, -0x1(%rbp)
jmp 0xf0557
cmpl $0x0, -0x1c(%rbp)
jl 0xf050d
cmpl $0x3c, -0x1c(%rbp)
jl 0xf0513
movb $0x0, -0x1(%rbp)
jmp 0xf0557
movq -0x68(%rbp), %rax
movq (%rax), %rsi
leaq -0x58(%rbp), %rdi
callq 0xf0480
movl -0x14(%rbp), %eax
movl %eax, -0x50(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x58(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x5a720
movq %rax, %rcx
movq -0x68(%rbp), %rax
movq %rcx, -0x60(%rbp)
movq (%rax), %rax
movq -0x60(%rbp), %rcx
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/datetime.cpp
// Function: smooth::DateTime::SetYear(int)
S::Bool S::DateTime::SetYear(Int year)
{
	if (year < 0) return False;

	tm	 lt = localtime_p((time_t *) value);

	lt.tm_year = year - 1900;

	time_t	 t  = mktime(&lt);

	memcpy(value, &t, sizeof(time_t));

	return True;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpl $0x0, -0x14(%rbp)
jge 0xf0623
movb $0x0, -0x1(%rbp)
jmp 0xf0660
movq -0x60(%rbp), %rax
movq (%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0xf0480
movl -0x14(%rbp), %eax
subl $0x76c, %eax            # imm = 0x76C
movl %eax, -0x3c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5a720
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, -0x58(%rbp)
movq (%rax), %rax
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/datetime.cpp
// Function: smooth::DateTime::SetMonth(int)
S::Bool S::DateTime::SetMonth(Int month)
{
	if (month <= 0 || month > 12) return False;

	tm	 lt = localtime_p((time_t *) value);

	lt.tm_mon  = month - 1;

	time_t	 t  = mktime(&lt);

	memcpy(value, &t, sizeof(time_t));

	return True;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpl $0x0, -0x14(%rbp)
jle 0xf0693
cmpl $0xc, -0x14(%rbp)
jle 0xf0699
movb $0x0, -0x1(%rbp)
jmp 0xf06d4
movq -0x60(%rbp), %rax
movq (%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0xf0480
movl -0x14(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x40(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5a720
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, -0x58(%rbp)
movq (%rax), %rax
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/datetime.cpp
// Function: smooth::DateTime::SetDay(int)
S::Bool S::DateTime::SetDay(Int day)
{
	if (day <= 0 || day > 31) return False;

	tm	 lt = localtime_p((time_t *) value);

	lt.tm_mday = day;

	time_t	 t  = mktime(&lt);

	memcpy(value, &t, sizeof(time_t));

	return True;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpl $0x0, -0x14(%rbp)
jle 0xf0703
cmpl $0x1f, -0x14(%rbp)
jle 0xf0709
movb $0x0, -0x1(%rbp)
jmp 0xf0741
movq -0x60(%rbp), %rax
movq (%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0xf0480
movl -0x14(%rbp), %eax
movl %eax, -0x44(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5a720
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, -0x58(%rbp)
movq (%rax), %rax
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/datetime.cpp
// Function: smooth::DateTime::SetHour(int)
S::Bool S::DateTime::SetHour(Int hour)
{
	if (hour < 0 || hour >= 24) return False;

	tm	 lt = localtime_p((time_t *) value);

	lt.tm_hour = hour;

	time_t	 t  = mktime(&lt);

	memcpy(value, &t, sizeof(time_t));

	return True;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpl $0x0, -0x14(%rbp)
jl 0xf0803
cmpl $0x18, -0x14(%rbp)
jl 0xf0809
movb $0x0, -0x1(%rbp)
jmp 0xf0841
movq -0x60(%rbp), %rax
movq (%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0xf0480
movl -0x14(%rbp), %eax
movl %eax, -0x48(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5a720
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, -0x58(%rbp)
movq (%rax), %rax
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/datetime.cpp
// Function: smooth::DateTime::SetMinute(int)
S::Bool S::DateTime::SetMinute(Int min)
{
	if (min < 0 || min >= 60) return False;

	tm	 lt = localtime_p((time_t *) value);

	lt.tm_min  = min;

	time_t	 t  = mktime(&lt);

	memcpy(value, &t, sizeof(time_t));

	return True;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpl $0x0, -0x14(%rbp)
jl 0xf0873
cmpl $0x3c, -0x14(%rbp)
jl 0xf0879
movb $0x0, -0x1(%rbp)
jmp 0xf08b1
movq -0x60(%rbp), %rax
movq (%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0xf0480
movl -0x14(%rbp), %eax
movl %eax, -0x4c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5a720
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, -0x58(%rbp)
movq (%rax), %rax
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/datetime.cpp
// Function: smooth::DateTime::SetSecond(int)
S::Bool S::DateTime::SetSecond(Int sec)
{
	if (sec < 0 || sec >= 60) return False;

	tm	 lt = localtime_p((time_t *) value);

	lt.tm_sec  = sec;

	time_t	 t  = mktime(&lt);

	memcpy(value, &t, sizeof(time_t));

	return True;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpl $0x0, -0x14(%rbp)
jl 0xf08e3
cmpl $0x3c, -0x14(%rbp)
jl 0xf08e9
movb $0x0, -0x1(%rbp)
jmp 0xf0921
movq -0x60(%rbp), %rax
movq (%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0xf0480
movl -0x14(%rbp), %eax
movl %eax, -0x50(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5a720
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, -0x58(%rbp)
movq (%rax), %rax
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/math.cpp
// Function: smooth::Math::Pow(int, int)
S::Float S::Math::Pow(Int in, Int ie)
{
	Float	 value = 1;

	if (ie >= 0) for (Int i = 0; i <  ie; i++) value *= in;
	else	     for (Int i = 0; i < -ie; i++) value /= in;

	return value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movsd 0x966d6(%rip), %xmm0    # 0x187368
movsd %xmm0, -0x10(%rbp)
cmpl $0x0, -0x8(%rbp)
jl 0xf0cc8
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0xf0cc6
cvtsi2sdl -0x4(%rbp), %xmm0
mulsd -0x10(%rbp), %xmm0
movsd %xmm0, -0x10(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xf0ca4
jmp 0xf0cfb
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
xorl %ecx, %ecx
subl -0x8(%rbp), %ecx
cmpl %ecx, %eax
jge 0xf0cf9
cvtsi2sdl -0x4(%rbp), %xmm1
movsd -0x10(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x10(%rbp)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0xf0ccf
jmp 0xf0cfb
movsd -0x10(%rbp), %xmm0
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/math.cpp
// Function: smooth::Math::Pow(long long, long long)
S::Float S::Math::Pow(Int64 in, Int64 ie)
{
	Float	 value = 1;

	if (ie >= 0) for (Int i = 0; i <  ie; i++) value *= in;
	else	     for (Int i = 0; i < -ie; i++) value /= in;

	return value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movsd 0x96644(%rip), %xmm0    # 0x187368
movsd %xmm0, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
jl 0xf0d5e
movl $0x0, -0x1c(%rbp)
movslq -0x1c(%rbp), %rax
cmpq -0x10(%rbp), %rax
jge 0xf0d5c
cvtsi2sdq -0x8(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0xf0d37
jmp 0xf0d95
movl $0x0, -0x20(%rbp)
movslq -0x20(%rbp), %rax
xorl %ecx, %ecx
subq -0x10(%rbp), %rcx
cmpq %rcx, %rax
jge 0xf0d93
cvtsi2sdq -0x8(%rbp), %xmm1
movsd -0x18(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0xf0d65
jmp 0xf0d95
movsd -0x18(%rbp), %xmm0
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/math.cpp
// Function: smooth::Math::Random()
S::Int32 S::Math::Random()
{
	Threads::Lock	 lock(randMutex);

	/* rand() may generate only 15 bit numbers (e.g. on Windows),
	 * so combine multiple results to generate a 32 bit value.
	 */
	Int32	 value = 0;

	value  = (rand() & 0xFFF) << 20;
	value |= (rand() & 0xFFF) <<  8;
	value |= (rand() & 0xFF )      ;

	return value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
leaq -0x8(%rbp), %rdi
leaq 0x11bbcd(%rip), %rsi    # 0x20ca10
callq 0x59160
movl $0x0, -0xc(%rbp)
callq 0x5cde0
andl $0xfff, %eax            # imm = 0xFFF
shll $0x14, %eax
movl %eax, -0xc(%rbp)
callq 0x5cde0
andl $0xfff, %eax            # imm = 0xFFF
shll $0x8, %eax
orl -0xc(%rbp), %eax
movl %eax, -0xc(%rbp)
callq 0x5cde0
andl $0xff, %eax
orl -0xc(%rbp), %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x10(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x5a0e0
movl -0x10(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/memory.cpp
// Function: smooth::Memory::Resize(int)
S::Bool S::Memory::Resize(Int size)
{
	UnsignedByte	*oldMemory = memory;

	if ((memory = (UnsignedByte *) realloc(memory, size)) == NIL)
	{
		free(oldMemory);

		return False;
	}

	return True;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq (%rax), %rcx
movq %rcx, -0x20(%rbp)
movq (%rax), %rdi
movslq -0x14(%rbp), %rsi
callq 0x594e0
movq -0x28(%rbp), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0xf0fa6
movq -0x20(%rbp), %rdi
callq 0x59930
movb $0x0, -0x1(%rbp)
jmp 0xf0faa
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/number.cpp
// Function: smooth::Number::FromIntString(smooth::String const&)
S::Number S::Number::FromIntString(const String &string)
{
	Int	 first = string[0];
	Int	 sign  = (first == '-' ? -1 : 1);
	Int	 skip  = 0;

	if (first == '-' || first == '+') skip = 1;

	Int	 length = string.Length();
	Int	 digits = 0;

	for (Int i = skip; i < length; i++)
	{
		Int	 digit = string[i];

		if ((digit >= '0' && digit <= '9')) digits++;
		else				    break;
	}

	Int64	 value = 0;

	for (Int i = 0; i < digits; i++)
	{
		value += Int64(string[skip + i] - '0') * (Int64) Math::Pow(10, digits - i - 1);
	}

	return value * sign;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x50(%rbp)
movq %rdi, %rax
movq %rax, -0x48(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x5c900
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %edx
movl $0x1, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
cmpl $0x2d, %edx
cmovel %ecx, %eax
movl %eax, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
cmpl $0x2d, -0x14(%rbp)
je 0xf1422
cmpl $0x2b, -0x14(%rbp)
jne 0xf1429
movl $0x1, -0x1c(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5b800
movl %eax, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0xf147f
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0x5c900
movl %eax, -0x2c(%rbp)
cmpl $0x30, -0x2c(%rbp)
jl 0xf1470
cmpl $0x39, -0x2c(%rbp)
jg 0xf1470
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0xf1472
jmp 0xf147f
jmp 0xf1474
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0xf1442
movq $0x0, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0xf14e1
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
addl -0x3c(%rbp), %esi
callq 0x5c900
subl $0x30, %eax
cltq
movq %rax, -0x58(%rbp)
movl -0x24(%rbp), %esi
subl -0x3c(%rbp), %esi
subl $0x1, %esi
movl $0xa, %edi
callq 0x5a330
movq -0x58(%rbp), %rax
cvttsd2si %xmm0, %rcx
imulq %rcx, %rax
addq -0x38(%rbp), %rax
movq %rax, -0x38(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0xf148e
movq -0x50(%rbp), %rdi
movq -0x38(%rbp), %rsi
movslq -0x18(%rbp), %rax
imulq %rax, %rsi
callq 0x5dd30
movq -0x48(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/number.cpp
// Function: smooth::Number::ToIntString() const
S::String S::Number::ToIntString() const
{
	if (intValue == 0) return kZero;

	String	 string;
	Int	 length = (Int) Math::Log10(Math::Abs(intValue)) + 1;

	for (Int i = 0; i < length; i++)
	{
		string[i] = '0' + Int64(Math::Abs(intValue) / Math::Pow(10, length - i - 1)) % 10;
	}

	if (intValue < 0) string = String(kMinus).Append(string);

	return string;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x58(%rbp)
movq %rdi, %rax
movq %rax, -0x50(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, (%rax)
jne 0xf1921
movq -0x58(%rbp), %rdi
leaq 0x11b101(%rip), %rsi    # 0x20ca18
callq 0x5b6d0
jmp 0xf1ac7
movq -0x58(%rbp), %rdi
movb $0x0, -0x11(%rbp)
xorl %esi, %esi
callq 0x5da90
movq -0x48(%rbp), %rax
movq (%rax), %rdi
callq 0x5a5d0
movq %rax, -0x60(%rbp)
jmp 0xf1942
movq -0x60(%rbp), %rax
cvtsi2sd %rax, %xmm0
callq 0x5a800
movsd %xmm0, -0x68(%rbp)
jmp 0xf1957
movsd -0x68(%rbp), %xmm0
cvttsd2si %xmm0, %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x18(%rbp), %eax
jge 0xf1a41
movq -0x48(%rbp), %rax
movq (%rax), %rdi
callq 0x5a5d0
movq %rax, -0x70(%rbp)
jmp 0xf198b
movq -0x70(%rbp), %rax
cvtsi2sd %rax, %xmm0
movsd %xmm0, -0x80(%rbp)
movl -0x18(%rbp), %eax
movl -0x28(%rbp), %esi
notl %esi
addl %eax, %esi
movl $0xa, %edi
callq 0x5a330
movsd %xmm0, -0x78(%rbp)
jmp 0xf19b4
movq -0x58(%rbp), %rdi
movsd -0x78(%rbp), %xmm1
movsd -0x80(%rbp), %xmm0
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %rax
movq %rax, -0x98(%rbp)
movabsq $0x6666666666666667, %rcx # imm = 0x6666666666666667
imulq %rcx
movq -0x98(%rbp), %rax
movq %rdx, %rcx
shrq $0x3f, %rcx
shrq $0x2, %rdx
addl %ecx, %edx
addl %edx, %edx
movl %edx, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
addl $0x30, %eax
movl %eax, -0x8c(%rbp)
movl -0x28(%rbp), %esi
callq 0x5d4e0
movq %rax, -0x88(%rbp)
jmp 0xf1a16
movq -0x88(%rbp), %rax
movl -0x8c(%rbp), %ecx
movl %ecx, (%rax)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0xf196d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf1abc
movq -0x48(%rbp), %rax
cmpq $0x0, (%rax)
jge 0xf1aa7
leaq 0x11afde(%rip), %rsi    # 0x20ca30
leaq -0x40(%rbp), %rdi
callq 0x5b6d0
jmp 0xf1a5d
movq -0x58(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x5a710
movq %rax, -0xa0(%rbp)
jmp 0xf1a73
movq -0xa0(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x59760
jmp 0xf1a85
leaq -0x40(%rbp), %rdi
callq 0x5df00
jmp 0xf1aa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5df00
jmp 0xf1abc
movb $0x1, -0x11(%rbp)
testb $0x1, -0x11(%rbp)
jne 0xf1aba
movq -0x58(%rbp), %rdi
callq 0x5df00
jmp 0xf1ac7
movq -0x58(%rbp), %rdi
callq 0x5df00
jmp 0xf1ad4
movq -0x50(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::operator=(wchar_t const*)
S::String &S::String::operator =(const wchar_t *newString)
{
	Clean();

	if (newString != NIL)
	{
		Int	 size = wcslen(newString) + 1;

		wString.Resize(size);

		wcsncpy(wString, newString, size);
	}

	return *this;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x20(%rbp)
callq 0x5c070
cmpq $0x0, -0x10(%rbp)
je 0xf24f9
movq -0x10(%rbp), %rdi
callq 0x5b8b0
movq -0x20(%rbp), %rdi
addq $0x1, %rax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %esi
callq 0xf5650
movq -0x20(%rbp), %rdi
callq 0xf5750
movq %rax, %rdi
movq -0x10(%rbp), %rsi
movslq -0x14(%rbp), %rdx
callq 0x5d8f0
movq -0x20(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::operator=(smooth::String const&)
S::String &S::String::operator =(const String &newString)
{
	if (&newString == this) return *this;

	Clean();

	if (newString.wString.Size() > 0)
	{
		Int	 size = newString.wString.Size();

		wString.Resize(size);

		wcsncpy(wString, newString.wString, size);
	}

	return *this;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq %rax, -0x18(%rbp)
jne 0xf2588
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xf25e5
movq -0x28(%rbp), %rdi
callq 0x5c070
movq -0x18(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jle 0xf25dd
movq -0x18(%rbp), %rdi
callq 0xf5730
movq -0x28(%rbp), %rdi
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %esi
callq 0xf5650
movq -0x28(%rbp), %rdi
callq 0xf5750
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0xf5750
movq -0x30(%rbp), %rdi
movq %rax, %rsi
movslq -0x1c(%rbp), %rdx
callq 0x5d8f0
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::AddTemporaryBuffer(char*)
S::Void S::String::AddTemporaryBuffer(char *buffer)
{
	/* Free old buffers and add new.
	 */
	if (allocatedBuffers == NIL) allocatedBuffers = new BufferArray();

	if (allocatedBuffers->Length() >= 8) DeleteTemporaryBuffers();

	allocatedBuffers->Add(buffer);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x115a9d(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x8(%rax), %rax
cmpq $0x0, (%rax)
jne 0xf28c8
movl $0x58, %edi
callq 0x59820
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x20(%rbp)
callq 0xf55c0
jmp 0xf2890
leaq 0x115a69(%rip), %rdi    # 0x208300
callq 0x5abb0
movq -0x20(%rbp), %rcx
leaq 0x8(%rax), %rax
movq %rcx, (%rax)
jmp 0xf28c8
movq -0x20(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
movl $0x58, %esi
callq 0x595b0
jmp 0xf2914
leaq 0x115a31(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x5c990
cmpl $0x8, %eax
jl 0xf28ef
xorl %edi, %edi
callq 0x5cec0
leaq 0x115a0a(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x8(%rax), %rax
movq (%rax), %rdi
leaq -0x8(%rbp), %rsi
callq 0xf5600
addq $0x20, %rsp
popq %rbp
retq
movq -0x10(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::EncodeBase64() const
S::String S::String::EncodeBase64() const
{
	if (wString.Size() == 0) return NIL;

	const char		*utf8string = ConvertTo("UTF-8");
	int			 length	    = strlen(utf8string);

	Buffer<UnsignedByte>	 buffer(length);

	strncpy((char *) (UnsignedByte *) buffer, utf8string, length);

	return Encoding::Base64(buffer).Encode();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x68(%rbp)
movq %rdi, %rax
movq %rax, -0x60(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0xf5730
cmpl $0x0, %eax
jne 0xf2a90
movq -0x68(%rbp), %rdi
xorl %esi, %esi
callq 0x5da90
jmp 0xf2b45
movq -0x58(%rbp), %rdi
leaq 0xb314b(%rip), %rsi     # 0x1a5be6
callq 0x5c120
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5a790
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %esi
leaq -0x38(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x71080
movq -0x78(%rbp), %rdi
callq 0x71100
movq %rax, -0x70(%rbp)
jmp 0xf2acf
movq -0x70(%rbp), %rdi
movq -0x18(%rbp), %rsi
movslq -0x1c(%rbp), %rdx
callq 0x59810
leaq -0x50(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x5aca0
jmp 0xf2aef
movq -0x68(%rbp), %rdi
leaq -0x50(%rbp), %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5d840
jmp 0xf2b03
leaq -0x50(%rbp), %rdi
callq 0x5a240
leaq -0x38(%rbp), %rdi
callq 0x71000
jmp 0xf2b45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xf2b3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5a240
leaq -0x38(%rbp), %rdi
callq 0x71000
jmp 0xf2b52
movq -0x60(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x5b6b0
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::DecodeBase64() const
S::String S::String::DecodeBase64() const
{
	if (wString.Size() == 0) return NIL;

	Buffer<UnsignedByte>	 buffer;
	String			 string;

	Encoding::Base64(buffer).Decode(*this);

	string.ImportFrom("UTF-8", (char *) (UnsignedByte *) buffer);

	return string;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x60(%rbp)
movq %rdi, %rax
movq %rax, -0x58(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0xf5730
cmpl $0x0, %eax
jne 0xf2d6d
movq -0x60(%rbp), %rdi
xorl %esi, %esi
callq 0x5da90
jmp 0xf2e3a
leaq -0x28(%rbp), %rdi
callq 0x70fc0
movq -0x60(%rbp), %rdi
movb $0x0, -0x29(%rbp)
xorl %esi, %esi
callq 0x5da90
jmp 0xf2d87
leaq -0x48(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x5aca0
jmp 0xf2d96
movq -0x50(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x5dd20
jmp 0xf2da5
leaq -0x48(%rbp), %rdi
callq 0x5a240
leaq -0x28(%rbp), %rdi
callq 0x71100
movq %rax, -0x68(%rbp)
jmp 0xf2dbd
movq -0x68(%rbp), %rdx
movq -0x60(%rbp), %rdi
leaq 0xb2e1a(%rip), %rsi     # 0x1a5be6
callq 0x5ae70
jmp 0xf2dd3
movb $0x1, -0x29(%rbp)
testb $0x1, -0x29(%rbp)
jne 0xf2e1b
jmp 0xf2e12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xf2e2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xf2e26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a240
jmp 0xf2e26
movq -0x60(%rbp), %rdi
callq 0x5df00
leaq -0x28(%rbp), %rdi
callq 0x71000
jmp 0xf2e3a
movq -0x60(%rbp), %rdi
callq 0x5df00
leaq -0x28(%rbp), %rdi
callq 0x71000
jmp 0xf2e44
movq -0x58(%rbp), %rax
addq $0x70, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::IsUnicode(smooth::String const&)
S::Bool S::String::IsUnicode(const String &string)
{
	const wchar_t	*chars	= string;
	Int		 length = string.Length();

	for (Int i = 0; i < length; i++)
	{
		if ( chars[i] <	 0x20 || chars[i] > 0xFF ||
		    (chars[i] >= 0x80 && chars[i] < 0xA0)) return True;
	}

	return False;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5d7c0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5b800
movl %eax, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0xf33b8
movq -0x18(%rbp), %rax
movslq -0x20(%rbp), %rcx
cmpl $0x20, (%rax,%rcx,4)
jl 0xf33a5
movq -0x18(%rbp), %rax
movslq -0x20(%rbp), %rcx
cmpl $0xff, (%rax,%rcx,4)
jg 0xf33a5
movq -0x18(%rbp), %rax
movslq -0x20(%rbp), %rcx
cmpl $0x80, (%rax,%rcx,4)
jl 0xf33ab
movq -0x18(%rbp), %rax
movslq -0x20(%rbp), %rcx
cmpl $0xa0, (%rax,%rcx,4)
jge 0xf33ab
movb $0x1, -0x1(%rbp)
jmp 0xf33bc
jmp 0xf33ad
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0xf335c
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::SetInputFormat(char const*)
const char *S::String::SetInputFormat(const char *iFormat)
{
	if (iFormat == NIL) return SetInputFormat(GetDefaultEncoding());

	/* Return immediately if requested format equals current.
	 */
	if (inputFormat != NIL && strcmp(iFormat, inputFormat) == 0) return inputFormat;

	/* Backup input format and set new one.
	 */
	char	*previousInputFormat = inputFormat;

	inputFormat = NIL;

	if (strcmp(iFormat, GetDefaultEncoding()) != 0)
	{
		int	 length = strlen(iFormat) + 1;

		inputFormat = new char [length];

		strncpy(inputFormat, iFormat, length);
	}

	/* Add previous format to temporary buffers list.
	 */
	if (previousInputFormat != NIL)
	{
		AddTemporaryBuffer(previousInputFormat);

		return previousInputFormat;
	}

	return GetDefaultEncoding();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0xf3469
callq 0x5d450
movq %rax, %rdi
callq 0x59040
movq %rax, -0x8(%rbp)
jmp 0xf359c
leaq 0x114e90(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x18(%rax), %rax
cmpq $0x0, (%rax)
je 0xf34cd
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x114e6f(%rip), %rdi    # 0x208300
callq 0x5abb0
movq -0x28(%rbp), %rdi
leaq 0x18(%rax), %rax
movq (%rax), %rsi
callq 0x5c440
cmpl $0x0, %eax
jne 0xf34cd
leaq 0x114e4b(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0xf359c
leaq 0x114e2c(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
leaq 0x114e12(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x18(%rax), %rax
movq $0x0, (%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
callq 0x5d450
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x5c440
cmpl $0x0, %eax
je 0xf3579
movq -0x10(%rbp), %rdi
callq 0x5a790
addq $0x1, %rax
movl %eax, -0x1c(%rbp)
movslq -0x1c(%rbp), %rdi
callq 0x5ab20
movq %rax, -0x38(%rbp)
leaq 0x114dbd(%rip), %rdi    # 0x208300
callq 0x5abb0
movq -0x38(%rbp), %rcx
leaq 0x18(%rax), %rax
movq %rcx, (%rax)
leaq 0x114da3(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x18(%rax), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
movslq -0x1c(%rbp), %rdx
callq 0x59810
cmpq $0x0, -0x18(%rbp)
je 0xf3593
movq -0x18(%rbp), %rdi
callq 0x5d400
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xf359c
callq 0x5d450
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::SetOutputFormat(char const*)
const char *S::String::SetOutputFormat(const char *oFormat)
{
	if (oFormat == NIL) return SetOutputFormat(GetDefaultEncoding());

	/* Return immediately if requested format equals current.
	 */
	if (outputFormat != NIL && strcmp(oFormat, outputFormat) == 0) return outputFormat;

	/* Backup output format and set new one.
	 */
	char	*previousOutputFormat = outputFormat;

	outputFormat = NIL;

	if (strcmp(oFormat, GetDefaultEncoding()) != 0)
	{
		int	 length = strlen(oFormat) + 1;

		outputFormat = new char [length];

		strncpy(outputFormat, oFormat, length);
	}

	/* Add previous format to temporary buffers list.
	 */
	if (previousOutputFormat != NIL)
	{
		AddTemporaryBuffer(previousOutputFormat);

		return previousOutputFormat;
	}

	return GetDefaultEncoding();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0xf3629
callq 0x5d450
movq %rax, %rdi
callq 0x5d880
movq %rax, -0x8(%rbp)
jmp 0xf375c
leaq 0x114cd0(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x20(%rax), %rax
cmpq $0x0, (%rax)
je 0xf368d
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x114caf(%rip), %rdi    # 0x208300
callq 0x5abb0
movq -0x28(%rbp), %rdi
leaq 0x20(%rax), %rax
movq (%rax), %rsi
callq 0x5c440
cmpl $0x0, %eax
jne 0xf368d
leaq 0x114c8b(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x20(%rax), %rax
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0xf375c
leaq 0x114c6c(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x20(%rax), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
leaq 0x114c52(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x20(%rax), %rax
movq $0x0, (%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
callq 0x5d450
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x5c440
cmpl $0x0, %eax
je 0xf3739
movq -0x10(%rbp), %rdi
callq 0x5a790
addq $0x1, %rax
movl %eax, -0x1c(%rbp)
movslq -0x1c(%rbp), %rdi
callq 0x5ab20
movq %rax, -0x38(%rbp)
leaq 0x114bfd(%rip), %rdi    # 0x208300
callq 0x5abb0
movq -0x38(%rbp), %rcx
leaq 0x20(%rax), %rax
movq %rcx, (%rax)
leaq 0x114be3(%rip), %rdi    # 0x208300
callq 0x5abb0
leaq 0x20(%rax), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
movslq -0x1c(%rbp), %rdx
callq 0x59810
cmpq $0x0, -0x18(%rbp)
je 0xf3753
movq -0x18(%rbp), %rdi
callq 0x5d400
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xf375c
callq 0x5d450
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::GetInternalFormat()
const char *S::String::GetInternalFormat()
{
	static char	*internalFormat = NIL;

	if (internalFormat == NIL)
	{
		UnsignedInt16	 bom = 0xFEFF;

		if	(sizeof(wchar_t) == 2) internalFormat = (char *) (((UnsignedInt8 *) &bom)[0] == 0xFF ? "UTF-16LE" : "UTF-16BE");
		else if (sizeof(wchar_t) == 4) internalFormat = (char *) (((UnsignedInt8 *) &bom)[0] == 0xFF ? "UTF-32LE" : "UTF-32BE");
	}

	return internalFormat;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
cmpq $0x0, 0x1192f4(%rip)    # 0x20ca70
jne 0xf37b4
movw $0xfeff, -0x2(%rbp)     # imm = 0xFEFF
movzbl -0x2(%rbp), %eax
cmpl $0xff, %eax
jne 0xf379c
leaq 0xb2282(%rip), %rax     # 0x1a5a18
movq %rax, -0x10(%rbp)
jmp 0xf37a9
leaq 0xb227e(%rip), %rax     # 0x1a5a21
movq %rax, -0x10(%rbp)
jmp 0xf37a9
movq -0x10(%rbp), %rax
movq %rax, 0x1192bc(%rip)    # 0x20ca70
movq 0x1192b5(%rip), %rax    # 0x20ca70
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::operator[](int)
wchar_t &S::String::operator [](int n)
{
	static wchar_t	 dummy = 0;

	if (n < 0) return dummy;

	if (n + 1 >= wString.Size())
	{
		Int	 length = Length();

		/* Allocate more memory than actually
		 * needed to speed up string operations.
		 */
		wString.Resize(n + Math::Max(10, Math::Min(n / 10, 100000)));

		wmemset(wString + length, 0, wString.Size() - length);
	}

	return wString[n];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpl $0x0, -0x14(%rbp)
jge 0xf3bad
leaq 0x118ed4(%rip), %rax    # 0x20ca78
movq %rax, -0x8(%rbp)
jmp 0xf3c4d
movq -0x20(%rbp), %rdi
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
callq 0xf5730
movl %eax, %ecx
movl -0x24(%rbp), %eax
cmpl %ecx, %eax
jl 0xf3c3d
movq -0x20(%rbp), %rdi
callq 0x5b800
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x14(%rbp), %eax
movl $0xa, %ecx
cltd
idivl %ecx
movl %eax, %edi
movl $0x186a0, %esi          # imm = 0x186A0
callq 0x5ce90
movl %eax, %esi
movl $0xa, %edi
callq 0x5aae0
movl -0x34(%rbp), %esi
movq -0x20(%rbp), %rdi
addl %eax, %esi
callq 0xf5650
movq -0x20(%rbp), %rdi
callq 0xf5750
movq -0x20(%rbp), %rdi
movslq -0x18(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
callq 0xf5730
movq -0x30(%rbp), %rdi
subl -0x18(%rbp), %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x5a9b0
movq -0x20(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0xf5790
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::operator==(char const*) const
S::Bool S::String::operator ==(const char *str) const
{
	if (wString.Size() == 0 && str == NIL) return True;
	if (wString.Size() == 0 && str != NIL) if (str[0] == 0) return True;
	if (wString.Size() != 0 && str == NIL) if (wString[0] == 0) return True;
	if (wString.Size() == 0 || str == NIL) return False;

	if (!Compare(str)) return True;
	else		   return False;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0xf5730
cmpl $0x0, %eax
jne 0xf3da2
cmpq $0x0, -0x18(%rbp)
jne 0xf3da2
movb $0x1, -0x1(%rbp)
jmp 0xf3e7d
movq -0x48(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf3dce
cmpq $0x0, -0x18(%rbp)
je 0xf3dce
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0xf3dcc
movb $0x1, -0x1(%rbp)
jmp 0xf3e7d
jmp 0xf3dce
movq -0x48(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf3dfe
cmpq $0x0, -0x18(%rbp)
jne 0xf3dfe
movq -0x48(%rbp), %rdi
xorl %esi, %esi
callq 0xf57c0
cmpl $0x0, %eax
jne 0xf3dfc
movb $0x1, -0x1(%rbp)
jmp 0xf3e7d
jmp 0xf3dfe
movq -0x48(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf3e13
cmpq $0x0, -0x18(%rbp)
jne 0xf3e19
movb $0x0, -0x1(%rbp)
jmp 0xf3e7d
movq -0x18(%rbp), %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x5c1f0
movq -0x48(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x5d070
movl %eax, -0x4c(%rbp)
jmp 0xf3e3c
movl -0x4c(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x59(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5df00
movb -0x59(%rbp), %al
testb $0x1, %al
jne 0xf3e5c
jmp 0xf3e79
movb $0x1, -0x1(%rbp)
jmp 0xf3e7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5df00
jmp 0xf3e88
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::Compare(smooth::String const&) const
S::Int S::String::Compare(const String &str) const
{
	Int	 len1 = Length();
	Int	 len2 = str.Length();

	if	(len1 != len2)					       return len1 - len2;
	else if (len1 > 0 && wcsncmp(wString, str.wString, len1) != 0) return 1;

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x28(%rbp)
callq 0x5b800
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5b800
movl %eax, -0x20(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0xf3edf
movl -0x1c(%rbp), %eax
subl -0x20(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xf3f22
cmpl $0x0, -0x1c(%rbp)
jle 0xf3f19
movq -0x28(%rbp), %rdi
callq 0xf5750
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0xf5750
movq -0x30(%rbp), %rdi
movq %rax, %rsi
movslq -0x1c(%rbp), %rdx
callq 0x5b980
cmpl $0x0, %eax
je 0xf3f19
movl $0x1, -0x4(%rbp)
jmp 0xf3f22
jmp 0xf3f1b
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::operator==(smooth::String const&) const
S::Bool S::String::operator ==(const String &str) const
{
	if (wString.Size() == 0 && str.wString.Size() == 0) return True;
	if (wString.Size() == 0 && str.wString.Size() != 0) if (str.wString[0] == 0) return True;
	if (wString.Size() != 0 && str.wString.Size() == 0) if (wString[0] == 0) return True;
	if (wString.Size() == 0 || str.wString.Size() == 0) return False;

	if (!Compare(str)) return True;
	else		   return False;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x20(%rbp)
callq 0xf5730
cmpl $0x0, %eax
jne 0xf4089
movq -0x18(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf4089
movb $0x1, -0x1(%rbp)
jmp 0xf412f
movq -0x20(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf40bd
movq -0x18(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf40bd
movq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0xf57c0
cmpl $0x0, %eax
jne 0xf40bb
movb $0x1, -0x1(%rbp)
jmp 0xf412f
jmp 0xf40bd
movq -0x20(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf40f1
movq -0x18(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf40f1
movq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0xf57c0
cmpl $0x0, %eax
jne 0xf40ef
movb $0x1, -0x1(%rbp)
jmp 0xf412f
jmp 0xf40f1
movq -0x20(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf410d
movq -0x18(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf4113
movb $0x0, -0x1(%rbp)
jmp 0xf412f
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5d070
cmpl $0x0, %eax
jne 0xf412b
movb $0x1, -0x1(%rbp)
jmp 0xf412f
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::operator!=(char const*) const
S::Bool S::String::operator !=(const char *str) const
{
	if (wString.Size() == 0 && str == NIL)	return False;
	if (wString.Size() == 0 && str != NIL)	if (str[0] == 0) return False;
	if (wString.Size() != 0 && str == NIL)	if (wString[0] == 0) return False;
	if (wString.Size() == 0 || str == NIL)	return True;

	if (Compare(str) != 0) return True;
	else		       return False;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0xf5730
cmpl $0x0, %eax
jne 0xf41c2
cmpq $0x0, -0x18(%rbp)
jne 0xf41c2
movb $0x0, -0x1(%rbp)
jmp 0xf428b
movq -0x48(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf41ee
cmpq $0x0, -0x18(%rbp)
je 0xf41ee
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0xf41ec
movb $0x0, -0x1(%rbp)
jmp 0xf428b
jmp 0xf41ee
movq -0x48(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf421b
cmpq $0x0, -0x18(%rbp)
jne 0xf421b
movq -0x48(%rbp), %rdi
xorl %esi, %esi
callq 0xf57c0
cmpl $0x0, %eax
jne 0xf4219
movb $0x0, -0x1(%rbp)
jmp 0xf428b
jmp 0xf421b
movq -0x48(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf4230
cmpq $0x0, -0x18(%rbp)
jne 0xf4236
movb $0x1, -0x1(%rbp)
jmp 0xf428b
movq -0x18(%rbp), %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x5c1f0
movq -0x48(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x5d070
movl %eax, -0x4c(%rbp)
jmp 0xf4259
leaq -0x30(%rbp), %rdi
callq 0x5df00
movl -0x4c(%rbp), %eax
cmpl $0x0, %eax
je 0xf4287
movb $0x1, -0x1(%rbp)
jmp 0xf428b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5df00
jmp 0xf4296
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nop
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::operator!=(wchar_t const*) const
S::Bool S::String::operator !=(const wchar_t *str) const
{
	if (wString.Size() == 0 && str == NIL) return False;
	if (wString.Size() == 0 && str != NIL) if (str[0] == 0) return False;
	if (wString.Size() != 0 && str == NIL) if (wString[0] == 0) return False;
	if (wString.Size() == 0 || str == NIL) return True;

	if (Compare(str) != 0) return True;
	else		       return False;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0xf5730
cmpl $0x0, %eax
jne 0xf42d2
cmpq $0x0, -0x18(%rbp)
jne 0xf42d2
movb $0x0, -0x1(%rbp)
jmp 0xf4398
movq -0x48(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf42fb
cmpq $0x0, -0x18(%rbp)
je 0xf42fb
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
jne 0xf42f9
movb $0x0, -0x1(%rbp)
jmp 0xf4398
jmp 0xf42fb
movq -0x48(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf4328
cmpq $0x0, -0x18(%rbp)
jne 0xf4328
movq -0x48(%rbp), %rdi
xorl %esi, %esi
callq 0xf57c0
cmpl $0x0, %eax
jne 0xf4326
movb $0x0, -0x1(%rbp)
jmp 0xf4398
jmp 0xf4328
movq -0x48(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf433d
cmpq $0x0, -0x18(%rbp)
jne 0xf4343
movb $0x1, -0x1(%rbp)
jmp 0xf4398
movq -0x18(%rbp), %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x5ae10
movq -0x48(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x5d070
movl %eax, -0x4c(%rbp)
jmp 0xf4366
leaq -0x30(%rbp), %rdi
callq 0x5df00
movl -0x4c(%rbp), %eax
cmpl $0x0, %eax
je 0xf4394
movb $0x1, -0x1(%rbp)
jmp 0xf4398
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5df00
jmp 0xf43a3
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::operator!=(smooth::String const&) const
S::Bool S::String::operator !=(const String &str) const
{
	if (wString.Size() == 0 && str.wString.Size() == 0) return False;
	if (wString.Size() == 0 && str.wString.Size() != 0) if (str.wString[0] == 0) return False;
	if (wString.Size() != 0 && str.wString.Size() == 0) if (wString[0] == 0) return False;
	if (wString.Size() == 0 || str.wString.Size() == 0) return True;

	if (Compare(str) != 0) return True;
	else		       return False;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x20(%rbp)
callq 0xf5730
cmpl $0x0, %eax
jne 0xf43e9
movq -0x18(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf43e9
movb $0x0, -0x1(%rbp)
jmp 0xf448f
movq -0x20(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf441d
movq -0x18(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf441d
movq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0xf57c0
cmpl $0x0, %eax
jne 0xf441b
movb $0x0, -0x1(%rbp)
jmp 0xf448f
jmp 0xf441d
movq -0x20(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf4451
movq -0x18(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf4451
movq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0xf57c0
cmpl $0x0, %eax
jne 0xf444f
movb $0x0, -0x1(%rbp)
jmp 0xf448f
jmp 0xf4451
movq -0x20(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
je 0xf446d
movq -0x18(%rbp), %rdi
callq 0xf5730
cmpl $0x0, %eax
jne 0xf4473
movb $0x1, -0x1(%rbp)
jmp 0xf448f
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5d070
cmpl $0x0, %eax
je 0xf448b
movb $0x1, -0x1(%rbp)
jmp 0xf448f
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::Find(smooth::String const&) const
S::Int S::String::Find(const String &str) const
{
	if (str	  == NIL) return 0;
	if (*this == NIL) return -1;

	wchar_t* start = wcsstr(wString, str.wString);

	if (start != NIL) return start - wString;

	return -1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0x59320
testb $0x1, %al
jne 0xf44c9
jmp 0xf44d2
movl $0x0, -0x4(%rbp)
jmp 0xf4544
movq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x59320
testb $0x1, %al
jne 0xf44e3
jmp 0xf44ec
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf4544
movq -0x28(%rbp), %rdi
callq 0xf5750
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0xf5750
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x5a670
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0xf453d
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
callq 0xf5750
movq %rax, %rcx
movq -0x38(%rbp), %rax
subq %rcx, %rax
sarq $0x2, %rax
movl %eax, -0x4(%rbp)
jmp 0xf4544
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/misc/string.cpp
// Function: smooth::String::FindLast(smooth::String const&) const
S::Int S::String::FindLast(const String &str) const
{
	if (str == NIL) return Length();

	Int	 len1 = Length();
	Int	 len2 = str.Length();

	for (Int i = len1 - len2; i >= 0; i--)
	{
		if (wcsncmp(wString + i, str.wString, len2) == 0) return i;
	}

	return -1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0x59320
testb $0x1, %al
jne 0xf4579
jmp 0xf4587
movq -0x30(%rbp), %rdi
callq 0x5b800
movl %eax, -0x4(%rbp)
jmp 0xf4600
movq -0x30(%rbp), %rdi
callq 0x5b800
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5b800
movl %eax, -0x20(%rbp)
movl -0x1c(%rbp), %eax
subl -0x20(%rbp), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jl 0xf45f9
movq -0x30(%rbp), %rdi
callq 0xf5750
movslq -0x24(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0xf5750
movq -0x38(%rbp), %rdi
movq %rax, %rsi
movslq -0x20(%rbp), %rdx
callq 0x5b980
cmpl $0x0, %eax
jne 0xf45ec
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xf4600
jmp 0xf45ee
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0xf45a8
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)