// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/misc/string_case.cpp
// Function: smooth::String::ToLower() const
S::String S::String::ToLower() const			
{								
	String	 retVal = *this;				
	Int	 length = Length();				
								
	for (Int i = 0; i < length; i++)			
	{							
		wchar_t	 value = (*this)[i];			

		if	(value >= 0x41 && value <= 0x5a)			retVal[i] = value + 0x20;	// Alphabet
		else if	(value >= 0xc0 && value <= 0xd6)			retVal[i] = value + 0x20;	// Alphabet
		else if	(value >= 0xd8 && value <= 0xde)			retVal[i] = value + 0x20;	// Alphabet
		else if	(value >= 0x100 && value <= 0x12e && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x130)					retVal[i] =	    0x69;	// Single character
		else if	(value >= 0x132 && value <= 0x136 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0x139 && value <= 0x147 &&  (value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0x14a && value <= 0x176 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x178)					retVal[i] =	    0xff;	// Single character
		else if	(value >= 0x179 && value <= 0x17d &&  (value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x181)					retVal[i] =	    0x253;	// Single character
		else if	(value >= 0x182 && value <= 0x184 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x186)					retVal[i] =	    0x254;	// Single character
		else if	(value == 0x187)					retVal[i] =	    0x188;	// Single character
		else if	(value >= 0x189 && value <= 0x18a)			retVal[i] = value + 0xcd;	// Alphabet
		else if	(value == 0x18b)					retVal[i] =	    0x18c;	// Single character
		else if	(value == 0x18e)					retVal[i] =	    0x1dd;	// Single character
		else if	(value == 0x18f)					retVal[i] =	    0x259;	// Single character
		else if	(value == 0x190)					retVal[i] =	    0x25b;	// Single character
		else if	(value == 0x191)					retVal[i] =	    0x192;	// Single character
		else if	(value == 0x193)					retVal[i] =	    0x260;	// Single character
		else if	(value == 0x194)					retVal[i] =	    0x263;	// Single character
		else if	(value == 0x196)					retVal[i] =	    0x269;	// Single character
		else if	(value == 0x197)					retVal[i] =	    0x268;	// Single character
		else if	(value == 0x198)					retVal[i] =	    0x199;	// Single character
		else if	(value == 0x19c)					retVal[i] =	    0x26f;	// Single character
		else if	(value == 0x19d)					retVal[i] =	    0x272;	// Single character
		else if	(value == 0x19f)					retVal[i] =	    0x275;	// Single character
		else if	(value >= 0x1a0 && value <= 0x1a4 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x1a6)					retVal[i] =	    0x280;	// Single character
		else if	(value == 0x1a7)					retVal[i] =	    0x1a8;	// Single character
		else if	(value == 0x1a9)					retVal[i] =	    0x283;	// Single character
		else if	(value == 0x1ac)					retVal[i] =	    0x1ad;	// Single character
		else if	(value == 0x1ae)					retVal[i] =	    0x288;	// Single character
		else if	(value == 0x1af)					retVal[i] =	    0x1b0;	// Single character
		else if	(value >= 0x1b1 && value <= 0x1b2)			retVal[i] = value + 0xd9;	// Alphabet
		else if	(value >= 0x1b3 && value <= 0x1b5 &&  (value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x1b7)					retVal[i] =	    0x292;	// Single character
		else if	(value == 0x1b8)					retVal[i] =	    0x1b9;	// Single character
		else if	(value == 0x1bc)					retVal[i] =	    0x1bd;	// Single character
		else if	(value == 0x1c4)					retVal[i] =	    0x1c6;	// Single character
		else if	(value == 0x1c5)					retVal[i] =	    0x1c6;	// Single character
		else if	(value == 0x1c7)					retVal[i] =	    0x1c9;	// Single character
		else if	(value == 0x1c8)					retVal[i] =	    0x1c9;	// Single character
		else if	(value == 0x1ca)					retVal[i] =	    0x1cc;	// Single character
		else if	(value >= 0x1cb && value <= 0x1db &&  (value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0x1de && value <= 0x1ee && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x1f1)					retVal[i] =	    0x1f3;	// Single character
		else if	(value >= 0x1f2 && value <= 0x1f4 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x1f6)					retVal[i] =	    0x195;	// Single character
		else if	(value == 0x1f7)					retVal[i] =	    0x1bf;	// Single character
		else if	(value >= 0x1f8 && value <= 0x21e && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x220)					retVal[i] =	    0x19e;	// Single character
		else if	(value >= 0x222 && value <= 0x232 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x23a)					retVal[i] =	    0x2c65;	// Single character
		else if	(value == 0x23b)					retVal[i] =	    0x23c;	// Single character
		else if	(value == 0x23d)					retVal[i] =	    0x19a;	// Single character
		else if	(value == 0x23e)					retVal[i] =	    0x2c66;	// Single character
		else if	(value == 0x241)					retVal[i] =	    0x242;	// Single character
		else if	(value == 0x243)					retVal[i] =	    0x180;	// Single character
		else if	(value == 0x244)					retVal[i] =	    0x289;	// Single character
		else if	(value == 0x245)					retVal[i] =	    0x28c;	// Single character
		else if	(value >= 0x246 && value <= 0x24e && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0x370 && value <= 0x372 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x376)					retVal[i] =	    0x377;	// Single character
		else if	(value == 0x386)					retVal[i] =	    0x3ac;	// Single character
		else if	(value >= 0x388 && value <= 0x38a)			retVal[i] = value + 0x25;	// Alphabet
		else if	(value == 0x38c)					retVal[i] =	    0x3cc;	// Single character
		else if	(value >= 0x38e && value <= 0x38f)			retVal[i] = value + 0x3f;	// Alphabet
		else if	(value >= 0x391 && value <= 0x3aa)			retVal[i] = value + 0x20;	// Alphabet
		else if	(value == 0x3cf)					retVal[i] =	    0x3d7;	// Single character
		else if	(value >= 0x3d8 && value <= 0x3ee && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x3f4)					retVal[i] =	    0x3b8;	// Single character
		else if	(value == 0x3f7)					retVal[i] =	    0x3f8;	// Single character
		else if	(value == 0x3f9)					retVal[i] =	    0x3f2;	// Single character
		else if	(value == 0x3fa)					retVal[i] =	    0x3fb;	// Single character
		else if	(value >= 0x3fd && value <= 0x3ff)			retVal[i] = value - 0x82;	// Alphabet
		else if	(value >= 0x400 && value <= 0x40f)			retVal[i] = value + 0x50;	// Alphabet
		else if	(value >= 0x410 && value <= 0x42f)			retVal[i] = value + 0x20;	// Alphabet
		else if	(value >= 0x460 && value <= 0x480 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0x48a && value <= 0x4be && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x4c0)					retVal[i] =	    0x4cf;	// Single character
		else if	(value >= 0x4c1 && value <= 0x4cd &&  (value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0x4d0 && value <= 0x522 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0x531 && value <= 0x556)			retVal[i] = value + 0x30;	// Alphabet
		else if	(value >= 0x10a0 && value <= 0x10c5)			retVal[i] = value + 0x1c60;	// Alphabet
		else if	(value >= 0x1e00 && value <= 0x1e94 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x1e9e)					retVal[i] =	    0xdf;	// Single character
		else if	(value >= 0x1ea0 && value <= 0x1efe && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0x1f08 && value <= 0x1f0f)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1f18 && value <= 0x1f1d)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1f28 && value <= 0x1f2f)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1f38 && value <= 0x1f3f)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1f48 && value <= 0x1f4d)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1f59 && value <= 0x1f5c)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1f68 && value <= 0x1f6f)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1f88 && value <= 0x1f8f)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1f98 && value <= 0x1f9f)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1fa8 && value <= 0x1faf)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1fb8 && value <= 0x1fb9)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1fba && value <= 0x1fbb)			retVal[i] = value - 0x4a;	// Alphabet
		else if	(value == 0x1fbc)					retVal[i] =	    0x1fb3;	// Single character
		else if	(value >= 0x1fc8 && value <= 0x1fcb)			retVal[i] = value - 0x56;	// Alphabet
		else if	(value == 0x1fcc)					retVal[i] =	    0x1fc3;	// Single character
		else if	(value >= 0x1fd8 && value <= 0x1fd9)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1fda && value <= 0x1fdb)			retVal[i] = value - 0x64;	// Alphabet
		else if	(value >= 0x1fe8 && value <= 0x1fe9)			retVal[i] = value - 0x8;	// Alphabet
		else if	(value >= 0x1fea && value <= 0x1feb)			retVal[i] = value - 0x70;	// Alphabet
		else if	(value == 0x1fec)					retVal[i] =	    0x1fe5;	// Single character
		else if	(value >= 0x1ff8 && value <= 0x1ff9)			retVal[i] = value - 0x80;	// Alphabet
		else if	(value >= 0x1ffa && value <= 0x1ffb)			retVal[i] = value - 0x7e;	// Alphabet
		else if	(value == 0x1ffc)					retVal[i] =	    0x1ff3;	// Single character
		else if	(value == 0x2126)					retVal[i] =	    0x3c9;	// Single character
		else if	(value == 0x212a)					retVal[i] =	    0x6b;	// Single character
		else if	(value == 0x212b)					retVal[i] =	    0xe5;	// Single character
		else if	(value == 0x2132)					retVal[i] =	    0x214e;	// Single character
		else if	(value >= 0x2160 && value <= 0x216f)			retVal[i] = value + 0x10;	// Alphabet
		else if	(value == 0x2183)					retVal[i] =	    0x2184;	// Single character
		else if	(value >= 0x24b6 && value <= 0x24cf)			retVal[i] = value + 0x1a;	// Alphabet
		else if	(value >= 0x2c00 && value <= 0x2c2e)			retVal[i] = value + 0x30;	// Alphabet

		/* Work around stupid MSVC's limit on alternatives...
		 * ----
		 * This is not generated automatically, but
		 * needs to be inserted manually here.
		 */
		if	(value == 0x2c60)					retVal[i] =	    0x2c61;	// Single character
		else if	(value == 0x2c62)					retVal[i] =	    0x26b;	// Single character
		else if	(value == 0x2c63)					retVal[i] =	    0x1d7d;	// Single character
		else if	(value == 0x2c64)					retVal[i] =	    0x27d;	// Single character
		else if	(value >= 0x2c67 && value <= 0x2c6b &&  (value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0x2c6d)					retVal[i] =	    0x251;	// Single character
		else if	(value == 0x2c6e)					retVal[i] =	    0x271;	// Single character
		else if	(value == 0x2c6f)					retVal[i] =	    0x250;	// Single character
		else if	(value == 0x2c72)					retVal[i] =	    0x2c73;	// Single character
		else if	(value == 0x2c75)					retVal[i] =	    0x2c76;	// Single character
		else if	(value >= 0x2c80 && value <= 0x2ce2 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0xa640 && value <= 0xa660 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0xa664 && value <= 0xa66c && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0xa680 && value <= 0xa696 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0xa722 && value <= 0xa72e && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0xa732 && value <= 0xa76e && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value >= 0xa779 && value <= 0xa77b &&  (value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0xa77d)					retVal[i] =	    0x1d79;	// Single character
		else if	(value >= 0xa77e && value <= 0xa786 && !(value & 1))	retVal[i] = value + 0x1;	// Special letters
		else if	(value == 0xa78b)					retVal[i] =	    0xa78c;	// Single character
		else if	(value >= 0xff21 && value <= 0xff3a)			retVal[i] = value + 0x20;	// Alphabet
	}							
								
	return retVal;						
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
callq 0x570b0
movq %r14, %rdi
callq 0x57180
movl %eax, %ebp
testl %eax, %eax
jle 0xa9732
xorl %r15d, %r15d
leaq 0x69964(%rip), %r13     # 0x111f70
movq %r14, %rdi
movl %r15d, %esi
callq 0x57fe0
movl %eax, %r12d
leal -0x41(%r12), %eax
cmpl $0x19, %eax
ja 0xa8631
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa8663
leal -0xc0(%r12), %eax
cmpl $0x16, %eax
ja 0xa864b
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa8663
leal -0xd8(%r12), %eax
cmpl $0x6, %eax
ja 0xa86d1
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl %r12d, %ecx
orl $0x20, %ecx
movl %ecx, (%rax)
cmpl $0x2c62, %r12d          # imm = 0x2C62
je 0xa8693
cmpl $0x2c60, %r12d          # imm = 0x2C60
jne 0xa86a9
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x2c61, (%rax)         # imm = 0x2C61
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x26b, (%rax)          # imm = 0x26B
jmp 0xa8786
cmpl $0x2c64, %r12d          # imm = 0x2C64
je 0xa86ff
cmpl $0x2c63, %r12d          # imm = 0x2C63
jne 0xa8712
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1d7d, (%rax)         # imm = 0x1D7D
jmp 0xa8786
leal -0x100(%r12), %eax
cmpl $0x2f, %eax
setae %al
movl %r12d, %ecx
orb %al, %cl
testb $0x1, %cl
jne 0xa8759
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl %r12d, %ecx
orl $0x1, %ecx
jmp 0xa8669
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x27d, (%rax)          # imm = 0x27D
jmp 0xa8786
leal -0x2c6c(%r12), %eax
cmpl $-0x5, %eax
setb %al
testb $0x1, %r12b
sete %cl
orb %al, %cl
je 0xa8775
leal -0x2c6d(%r12), %eax
cmpl $0x8, %eax
ja 0xa8802
movslq (%r13,%rax,4), %rax
addq %r13, %rax
jmpq *%rax
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x251, (%rax)          # imm = 0x251
jmp 0xa8786
cmpl $0x130, %r12d           # imm = 0x130
jne 0xa8797
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x69, (%rax)
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
incl %r12d
movl %r12d, (%rax)
incl %r15d
cmpl %r15d, %ebp
jne 0xa860c
jmp 0xa9732
leal -0x132(%r12), %eax
cmpl $0x5, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa87bc
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
testb $0x1, %r12b
sete %al
leal -0x148(%r12), %ecx
cmpl $-0xf, %ecx
setb %cl
orb %al, %cl
je 0xa887f
leal -0x14a(%r12), %eax
cmpl $0x2d, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa88b9
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
leal -0x2c80(%r12), %eax
cmpl $0x63, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa8894
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa89ce
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x250, (%rax)          # imm = 0x250
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x271, (%rax)          # imm = 0x271
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x2c73, (%rax)         # imm = 0x2C73
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x2c76, (%rax)         # imm = 0x2C76
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal 0x1(%r12), %ecx
jmp 0xa8669
leal -0xa640(%r12), %eax
cmpl $0x21, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa88d8
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa89ce
cmpl $0x178, %r12d           # imm = 0x178
jne 0xa88fd
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0xff, (%rax)
jmp 0xa8786
leal -0xa664(%r12), %eax
cmpl $0x9, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa8935
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa89ce
testb $0x1, %r12b
sete %al
leal -0x17e(%r12), %ecx
cmpl $-0x5, %ecx
setb %cl
orb %al, %cl
je 0xa8957
cmpl $0x181, %r12d           # imm = 0x181
jne 0xa8989
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x253, (%rax)          # imm = 0x253
jmp 0xa8786
leal -0xa680(%r12), %eax
cmpl $0x17, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa8967
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa89ce
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa888a
leal -0xa722(%r12), %eax
cmpl $0xd, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa89ae
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa89ce
leal -0x182(%r12), %eax
cmpl $0x3, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa89d7
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
leal -0xa732(%r12), %eax
cmpl $0x3d, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa89ff
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
orl $0x1, %r12d
jmp 0xa8783
cmpl $0x187, %r12d           # imm = 0x187
je 0xa8a3b
cmpl $0x186, %r12d           # imm = 0x186
jne 0xa8a51
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x254, (%rax)          # imm = 0x254
jmp 0xa8786
testb $0x1, %r12b
sete %al
leal -0xa77c(%r12), %ecx
cmpl $-0x3, %ecx
setb %cl
orb %al, %cl
je 0xa8a76
cmpl $0xa77d, %r12d          # imm = 0xA77D
jne 0xa8abd
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1d79, (%rax)         # imm = 0x1D79
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x188, (%rax)          # imm = 0x188
jmp 0xa8786
leal -0x189(%r12), %eax
cmpl $0x1, %eax
ja 0xa8a86
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal 0xcd(%r12), %ecx
jmp 0xa8669
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa8780
leal -0x18b(%r12), %eax
cmpl $0x14, %eax
ja 0xa8baa
leaq 0x6937e(%rip), %rcx     # 0x111e1c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x18c, (%rax)          # imm = 0x18C
jmp 0xa8786
leal -0xa77e(%r12), %eax
cmpl $0x9, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa8ae2
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa89ce
cmpl $0xa78b, %r12d          # imm = 0xA78B
jne 0xa8b01
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0xa78c, (%rax)         # imm = 0xA78C
jmp 0xa8786
leal -0xff21(%r12), %eax
cmpl $0x19, %eax
ja 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
addl $0x20, %r12d
jmp 0xa8783
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x26f, (%rax)          # imm = 0x26F
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x192, (%rax)          # imm = 0x192
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x275, (%rax)          # imm = 0x275
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x260, (%rax)          # imm = 0x260
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x272, (%rax)          # imm = 0x272
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x25b, (%rax)          # imm = 0x25B
jmp 0xa8786
leal -0x1a0(%r12), %eax
cmpl $0x5, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa8c57
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x259, (%rax)          # imm = 0x259
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1dd, (%rax)          # imm = 0x1DD
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x263, (%rax)          # imm = 0x263
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x269, (%rax)          # imm = 0x269
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x199, (%rax)          # imm = 0x199
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x268, (%rax)          # imm = 0x268
jmp 0xa8786
leal -0x1a6(%r12), %eax
cmpl $0x9, %eax
ja 0xa8ccc
leaq 0x69205(%rip), %rcx     # 0x111e70
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x280, (%rax)          # imm = 0x280
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x283, (%rax)          # imm = 0x283
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1b0, (%rax)          # imm = 0x1B0
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1a8, (%rax)          # imm = 0x1A8
jmp 0xa8786
leal -0x1b1(%r12), %eax
cmpl $0x1, %eax
ja 0xa8d1d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal 0xd9(%r12), %ecx
jmp 0xa8669
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1ad, (%rax)          # imm = 0x1AD
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x288, (%rax)          # imm = 0x288
jmp 0xa8786
testb $0x1, %r12b
sete %al
leal -0x1b6(%r12), %ecx
cmpl $-0x3, %ecx
setb %cl
orb %al, %cl
je 0xa8d69
leal -0x1b7(%r12), %eax
cmpl $0x13, %eax
ja 0xa8d8f
leaq 0x6914e(%rip), %rcx     # 0x111e98
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x292, (%rax)          # imm = 0x292
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa888a
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1b9, (%rax)          # imm = 0x1B9
jmp 0xa8786
testb $0x1, %r12b
sete %al
leal -0x1dc(%r12), %ecx
cmpl $-0x11, %ecx
setb %cl
orb %al, %cl
je 0xa8e47
leal -0x1de(%r12), %eax
cmpl $0x11, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa8e57
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1bd, (%rax)          # imm = 0x1BD
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa8e03
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1c6, (%rax)          # imm = 0x1C6
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa8e26
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1c9, (%rax)          # imm = 0x1C9
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1cc, (%rax)          # imm = 0x1CC
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa888a
cmpl $0x1f1, %r12d           # imm = 0x1F1
jne 0xa8e76
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1f3, (%rax)          # imm = 0x1F3
jmp 0xa8786
leal -0x1f2(%r12), %eax
cmpl $0x3, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa8e9b
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
cmpl $0x1f7, %r12d           # imm = 0x1F7
je 0xa8ec3
cmpl $0x1f6, %r12d           # imm = 0x1F6
jne 0xa8ed9
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x195, (%rax)          # imm = 0x195
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1bf, (%rax)          # imm = 0x1BF
jmp 0xa8786
leal -0x1f8(%r12), %eax
cmpl $0x27, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa8efe
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
cmpl $0x220, %r12d           # imm = 0x220
jne 0xa8f1d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x19e, (%rax)          # imm = 0x19E
jmp 0xa8786
leal -0x222(%r12), %eax
cmpl $0x11, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa8f42
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
leal -0x23a(%r12), %eax
cmpl $0xb, %eax
ja 0xa8f8b
leaq 0x68f92(%rip), %rcx     # 0x111ee8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x2c65, (%rax)         # imm = 0x2C65
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x23c, (%rax)          # imm = 0x23C
jmp 0xa8786
leal -0x246(%r12), %eax
cmpl $0x9, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa9038
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x19a, (%rax)          # imm = 0x19A
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x2c66, (%rax)         # imm = 0x2C66
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x242, (%rax)          # imm = 0x242
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x180, (%rax)          # imm = 0x180
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x289, (%rax)          # imm = 0x289
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x28c, (%rax)          # imm = 0x28C
jmp 0xa8786
leal -0x370(%r12), %eax
cmpl $0x3, %eax
setae %al
orb %r12b, %al
testb $0x1, %al
jne 0xa905d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
cmpl $0x386, %r12d           # imm = 0x386
je 0xa9085
cmpl $0x376, %r12d           # imm = 0x376
jne 0xa909b
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x377, (%rax)          # imm = 0x377
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x3ac, (%rax)          # imm = 0x3AC
jmp 0xa8786
leal -0x388(%r12), %eax
cmpl $0x2, %eax
ja 0xa90bd
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal 0x25(%r12), %ecx
jmp 0xa8669
cmpl $0x38c, %r12d           # imm = 0x38C
jne 0xa90dc
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x3cc, (%rax)          # imm = 0x3CC
jmp 0xa8786
movl %r12d, %eax
andl $-0x2, %eax
cmpl $0x38e, %eax            # imm = 0x38E
jne 0xa90fe
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal 0x3f(%r12), %ecx
jmp 0xa8669
leal -0x391(%r12), %ecx
cmpl $0x19, %ecx
ja 0xa9120
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal 0x20(%r12), %ecx
jmp 0xa8669
cmpl $0x3cf, %r12d           # imm = 0x3CF
jne 0xa913f
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x3d7, (%rax)          # imm = 0x3D7
jmp 0xa8786
leal -0x3d8(%r12), %ecx
cmpl $0x17, %ecx
setae %cl
orb %r12b, %cl
testb $0x1, %cl
jne 0xa9165
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
leal -0x3f4(%r12), %ecx
cmpl $0x6, %ecx
ja 0xa9198
leaq 0x68d9f(%rip), %rdx     # 0x111f18
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x3b8, (%rax)          # imm = 0x3B8
jmp 0xa8786
leal -0x3fd(%r12), %ecx
cmpl $0x2, %ecx
ja 0xa91ff
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal -0x82(%r12), %ecx
jmp 0xa8669
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x3f8, (%rax)          # imm = 0x3F8
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x3f2, (%rax)          # imm = 0x3F2
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x3fb, (%rax)          # imm = 0x3FB
jmp 0xa8786
movl %r12d, %ecx
andl $-0x10, %ecx
cmpl $0x400, %ecx            # imm = 0x400
jne 0xa9223
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl %r12d, %ecx
orl $0x50, %ecx
jmp 0xa8669
leal -0x410(%r12), %edx
cmpl $0x1f, %edx
ja 0xa9240
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa9116
leal -0x460(%r12), %edx
cmpl $0x21, %edx
setae %dl
orb %r12b, %dl
testb $0x1, %dl
jne 0xa9266
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
leal -0x48a(%r12), %edx
cmpl $0x35, %edx
setae %dl
orb %r12b, %dl
testb $0x1, %dl
jne 0xa928c
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
cmpl $0x4c0, %r12d           # imm = 0x4C0
jne 0xa92ab
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x4cf, (%rax)          # imm = 0x4CF
jmp 0xa8786
testb $0x1, %r12b
sete %dl
leal -0x4ce(%r12), %esi
cmpl $-0xd, %esi
setb %sil
orb %dl, %sil
je 0xa92ec
leal -0x4d0(%r12), %edx
cmpl $0x53, %edx
setae %dl
orb %r12b, %dl
testb $0x1, %dl
jne 0xa92fc
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa888a
leal -0x531(%r12), %edx
cmpl $0x25, %edx
ja 0xa9319
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa9728
leal -0x10a0(%r12), %edx
cmpl $0x25, %edx
ja 0xa933e
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal 0x1c60(%r12), %ecx
jmp 0xa8669
leal -0x1e00(%r12), %edx
cmpl $0x95, %edx
setae %dl
orb %r12b, %dl
testb $0x1, %dl
jne 0xa9367
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
cmpl $0x1e9e, %r12d          # imm = 0x1E9E
jne 0xa9386
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0xdf, (%rax)
jmp 0xa8786
leal -0x1ea0(%r12), %edx
cmpl $0x5f, %edx
setae %dl
orb %r12b, %dl
testb $0x1, %dl
jne 0xa93ac
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa86f4
movl %r12d, %edx
andl $-0x8, %edx
cmpl $0x1f08, %edx           # imm = 0x1F08
jne 0xa93ca
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
leal -0x1f18(%r12), %esi
cmpl $0x5, %esi
ja 0xa93e7
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
cmpl $0x1f38, %edx           # imm = 0x1F38
je 0xa9407
cmpl $0x1f28, %edx           # imm = 0x1F28
jne 0xa9417
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
leal -0x1f48(%r12), %esi
cmpl $0x5, %esi
ja 0xa9434
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
leal -0x1f59(%r12), %esi
cmpl $0x3, %esi
ja 0xa9451
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
addl $0xffffe098, %edx       # imm = 0xFFFFE098
roll $0x1c, %edx
cmpl $0x4, %edx
ja 0xa947f
leaq 0x68ace(%rip), %rsi     # 0x111f34
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
cmpl $0x1fba, %eax           # imm = 0x1FBA
je 0xa94cd
cmpl $0x1fb8, %eax           # imm = 0x1FB8
jne 0xa94e2
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal -0x4a(%r12), %ecx
jmp 0xa8669
cmpl $0x1fbc, %r12d          # imm = 0x1FBC
jne 0xa9501
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1fb3, (%rax)         # imm = 0x1FB3
jmp 0xa8786
movl %r12d, %edx
andl $-0x4, %edx
cmpl $0x1fc8, %edx           # imm = 0x1FC8
jne 0xa9524
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal -0x56(%r12), %ecx
jmp 0xa8669
cmpl $0x1fcc, %r12d          # imm = 0x1FCC
jne 0xa9543
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1fc3, (%rax)         # imm = 0x1FC3
jmp 0xa8786
leal -0x1fd8(%r12), %edx
shrl %edx
cmpl $0x9, %edx
ja 0xa9584
leaq 0x689ef(%rip), %rsi     # 0x111f48
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
jmp 0xa95ae
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal -0x64(%r12), %ecx
jmp 0xa8669
cmpl $0x1fec, %r12d          # imm = 0x1FEC
jne 0xa95cd
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1fe5, (%rax)         # imm = 0x1FE5
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal -0x8(%r12), %ecx
jmp 0xa8669
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal -0x70(%r12), %ecx
jmp 0xa8669
cmpl $0x1ffa, %eax           # imm = 0x1FFA
je 0xa95f0
cmpl $0x1ff8, %eax           # imm = 0x1FF8
jne 0xa9605
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal -0x80(%r12), %ecx
jmp 0xa8669
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal -0x7e(%r12), %ecx
jmp 0xa8669
cmpl $0x2129, %r12d          # imm = 0x2129
jle 0xa9643
cmpl $0x212a, %r12d          # imm = 0x212A
je 0xa966b
cmpl $0x212b, %r12d          # imm = 0x212B
je 0xa9681
cmpl $0x2132, %r12d          # imm = 0x2132
jne 0xa96ad
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x214e, (%rax)         # imm = 0x214E
jmp 0xa8786
cmpl $0x1ffc, %r12d          # imm = 0x1FFC
je 0xa9697
cmpl $0x2126, %r12d          # imm = 0x2126
jne 0xa96ad
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x3c9, (%rax)          # imm = 0x3C9
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x6b, (%rax)
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0xe5, (%rax)
jmp 0xa8786
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x1ff3, (%rax)         # imm = 0x1FF3
jmp 0xa8786
cmpl $0x2160, %ecx           # imm = 0x2160
jne 0xa96cb
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl %r12d, %ecx
orl $0x10, %ecx
jmp 0xa8669
cmpl $0x2183, %r12d          # imm = 0x2183
jne 0xa96ea
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
movl $0x2184, (%rax)         # imm = 0x2184
jmp 0xa8786
leal -0x24b6(%r12), %eax
cmpl $0x19, %eax
ja 0xa970c
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal 0x1a(%r12), %ecx
jmp 0xa8669
leal -0x2c00(%r12), %eax
cmpl $0x2e, %eax
ja 0xa866b
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58990
leal 0x30(%r12), %ecx
jmp 0xa8669
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xa9746
movq %rax, %r14
movq %rbx, %rdi
callq 0x59200
movq %r14, %rdi
callq 0x57090
nop