// File: menhits[P]phplus/src/PhplusStdLib.cpp
// Function: populateArrayFuncs()
void populateArrayFuncs()
{
	TupleTypeMaker maker;
	maker.add("_size", Int);
	maker.add("_capacity", Int);
	maker.add("_data", Whatev->getPtr());
	Array=maker.get(false);
	
	addType(Array, "Array");
	
	globalNamespace->addNode(
		AstWhatevToActionFactory::make(
			[](Type leftType, Type rightType) -> Action
			{
				assert leftType->isCreatable() && rightType->isVoid()
					otherwise return nullptr;
				
				Type contentsType=leftType;
				Type arrayType=Array->actuallyIs(makeTuple({{"a", Int}, {"b", Int}, {"c", contentsType->getPtr()}}, true))->getPtr();
				
				return lambdaAction(
					leftType,
					rightType,
					arrayType,
					
					[=](void* leftIn, void* rightIn) -> void*
					{
						void* out=malloc(arrayType->getSize());
						setValInTuple(out, arrayType, "_size", 0);
						setValInTuple(out, arrayType, "_capacity", 0);
						setValInTuple<void*>(out, arrayType, "_data", nullptr);
						return out;
					},
					
					[=](Action inLeft, Action inRight, CppProgram* prog)
					{
						throw PhplusError("not yet implemented", INTERNAL_ERROR);
					},
					
					"Array"
				);
			}
		),
		"Array"
	);
	
	globalNamespace->addNode(
		AstWhatevToActionFactory::make(
			[](Type leftType, Type rightType) -> Action
			{
				assert leftType->matches(Array)
					otherwise return nullptr;
				
				Type arrayType=Array->actuallyIs(leftType->getPtr());
				Type contentsType=arrayType->getSubType("_data").type->getSubType();
				
				assert rightType->matches(contentsType)
					otherwise return nullptr;
				
				return lambdaAction(
					leftType,
					rightType,
					Void,
					
					[=](void* leftIn, void* rightIn) -> void*
					{
						int size=getValFromTuple<int>(leftIn, arrayType, "_size");
						int capacity=getValFromTuple<int>(leftIn, arrayType, "_capacity");
						void* data=getValFromTuple<void*>(leftIn, arrayType, "_data");
						
						if (size+1>capacity)
						{
							if (capacity<1000)
								capacity=1000;
							else
								capacity*=2;
							
							setValInTuple<int>(leftIn, arrayType, "_capacity", capacity);
							void* newData=malloc(capacity*contentsType->getSize());
							memcpy(newData, data, size*contentsType->getSize());
							free(data);
							data=newData;
							setValInTuple<void*>(leftIn, arrayType, "_data", data);
						}
						
						setValInTuple<int>(leftIn, arrayType, "_size", size+1);
						memcpy((char*)data+size*contentsType->getSize(), rightIn, contentsType->getSize());
						
						return nullptr;
					},
					
					[=](Action inLeft, Action inRight, CppProgram* prog)
					{
						throw PhplusError("not yet implemented", INTERNAL_ERROR);
					},
					"append"
				);
			}
		),
		"append"
	);
	
	globalNamespace->addNode(
		AstWhatevToActionFactory::make(
			[](Type leftType, Type rightType) -> Action
			{
				assert leftType->matches(Array->getPtr()) && rightType->matches(Int)
					otherwise return nullptr;
				
				Type arrayType=Array->actuallyIs(leftType->getSubType());
				Type contentsType=arrayType->getSubType("_data").type->getSubType();
				size_t elemSize=contentsType->getSize();
				
				return lambdaAction(
					leftType,
					rightType,
					contentsType,
					
					[=](void* leftIn, void* rightIn) -> void*
					{
						int size=getValFromTuple<int>(leftIn, arrayType, "_size");
						if (*(int*)rightIn<0 || *(int*)rightIn>=size)
							throw PhplusError("index out of bounds, tried to get element at position "+to_string(*(int*)rightIn)+" in array "+to_string(size)+" long", RUNTIME_ERROR);
						
						void* out=malloc(contentsType->getSize());
						memcpy(out, getValFromTuple<char*>(leftIn, arrayType, "_data")+(*(int*)rightIn)*elemSize, elemSize);
						return out;
					},
					
					[=](Action inLeft, Action inRight, CppProgram* prog)
					{
						throw PhplusError("not yet implemented", INTERNAL_ERROR);
					},
					"get"
				);
			}
		),
		"get"
	);
	
	globalNamespace->addNode(
		AstWhatevToActionFactory::make(
			[](Type leftType, Type rightType) -> Action
			{
				Type arrayType=Array->actuallyIs(leftType->getSubType());
				Type contentsType=arrayType->getSubType("_data").type->getSubType();
				
				Type inputType=makeTuple({{"index", Int}, {"value", contentsType}}, true);
				
				assert leftType->getSubType()->matches(Array) && rightType->matches(inputType)
					otherwise return nullptr;
				
				size_t elemSize=contentsType->getSize();
				
				return lambdaAction(
					leftType,
					rightType,
					contentsType,
					
					[=](void* leftIn, void* rightIn) -> void*
					{
						int size=getValFromTuple<int>(leftIn, arrayType, "_size");
						int index=getValFromTuple<int>(rightIn, inputType, "index");
						
						if (index<0 || index>=size)
							throw PhplusError("index out of bounds, tried to set element at position "+to_string(index)+" in array "+to_string(size)+" long", RUNTIME_ERROR);
						
						char* data=getValFromTuple<char*>(leftIn, arrayType, "_data");
						
						memcpy(data+index*elemSize, (char*)rightIn+inputType->getSubType("value").offset, contentsType->getSize());
						
						return nullptr;
					},
					
					[=](Action inLeft, Action inRight, CppProgram* prog)
					{
						throw PhplusError("not yet implemented", INTERNAL_ERROR);
					},
					"set"
				);
			}
		),
		"set"
	);
	
	globalNamespace->addNode(
		AstWhatevToActionFactory::make(
			[](Type leftType, Type rightType) -> Action
			{
				assert leftType->matches(Array) && rightType->isVoid()
					otherwise return nullptr;
				
				Type arrayType=Array->actuallyIs(leftType);
				Type contentsType=arrayType->getSubType("_data").type->getSubType();
				
				return lambdaAction(
					leftType,
					rightType,
					Int,
					
					[=](void* leftIn, void* rightIn) -> void*
					{
						int* out=(int*)malloc(sizeof(int));
						*out=getValFromTuple<int>(leftIn, arrayType, "_size");
						return out;
					},
					
					[=](Action inLeft, Action inRight, CppProgram* prog)
					{
						throw PhplusError("not yet implemented", INTERNAL_ERROR);
					},
					"len"
				);
			}
		),
		"len"
	);
	
	globalNamespace->addNode(
		AstWhatevToActionFactory::make(
			[](Type leftType, Type rightType) -> Action
			{
				assert leftType->isVoid() && rightType->matches(Array)
					otherwise return nullptr;
				
				Type arrayType=Array->actuallyIs(rightType);
				Type contentsType=arrayType->getSubType("_data").type->getSubType();
				size_t elemSize=contentsType->getSize();
				
				return lambdaAction(
					Void,
					rightType,
					rightType,
					
					[=](void* leftIn, void* rightIn) -> void*
					{
						//error.log("Array destroyer called", JSYK);
						int size=getValFromTuple<int>(rightIn, arrayType, "_size");
						void* newData=malloc(elemSize*size);
						void* oldData=getValFromTuple<void*>(rightIn, arrayType, "_data");
						memcpy(newData, oldData, elemSize*size);
						setValInTuple(rightIn, arrayType, "_data", newData);
						void* out=malloc(arrayType->getSize());
						memcpy(out, rightIn, arrayType->getSize());
						return out;
					},
					
					[=](Action inLeft, Action inRight, CppProgram* prog)
					{
						throw PhplusError("not yet implemented", INTERNAL_ERROR);
					},
					"__copy__"
				);
			}
		),
		"__copy__"
	);
	
	globalNamespace->addNode(
		AstWhatevToActionFactory::make(
			[](Type leftType, Type rightType) -> Action
			{
				assert leftType->isVoid() && rightType->matches(Array)
					otherwise return nullptr;
				
				Type arrayType=Array->actuallyIs(rightType);
				
				return lambdaAction(
					Void,
					rightType,
					Void,
					
					[=](void* leftIn, void* rightIn) -> void*
					{
						//error.log("Array destroyer called", JSYK);
						
						free(getValFromTuple<void*>(rightIn, arrayType, "_data"));
						return nullptr;
					},
					
					[=](Action inLeft, Action inRight, CppProgram* prog)
					{
						throw PhplusError("not yet implemented", INTERNAL_ERROR);
					},
					"__destroy__"
				);
			}
		),
		"__destroy__"
	);
}

// Assembly:
subq $0x458, %rsp            # imm = 0x458
leaq 0x450(%rsp), %rdi
callq 0x9f900
leaq 0x42f(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0xb690
movq 0xe0(%rsp), %rdx
leaq 0x734c9(%rip), %rsi     # 0xd5371
leaq 0x430(%rsp), %rdi
callq 0xb4c0
jmp 0x61eb7
leaq 0xb662a(%rip), %rsi     # 0x1184e8
leaq 0x408(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0x1a920
movq 0xd8(%rsp), %rdx
leaq 0x450(%rsp), %rdi
leaq 0x430(%rsp), %rsi
callq 0x9f990
jmp 0x61ef2
leaq 0x408(%rsp), %rdi
callq 0x1a950
leaq 0x430(%rsp), %rdi
callq 0xb6e8
leaq 0x42f(%rsp), %rdi
callq 0xb3f0
leaq 0x3e7(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0xb690
movq 0xd0(%rsp), %rdx
leaq 0x7366a(%rip), %rsi     # 0xd55a7
leaq 0x3e8(%rsp), %rdi
callq 0xb4c0
jmp 0x61f4c
leaq 0xb6595(%rip), %rsi     # 0x1184e8
leaq 0x3d0(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0x1a920
movq 0xc8(%rsp), %rdx
leaq 0x450(%rsp), %rdi
leaq 0x3e8(%rsp), %rsi
callq 0x9f990
jmp 0x61f87
leaq 0x3d0(%rsp), %rdi
callq 0x1a950
leaq 0x3e8(%rsp), %rdi
callq 0xb6e8
leaq 0x3e7(%rsp), %rdi
callq 0xb3f0
leaq 0x3af(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0xb690
movq 0xc0(%rsp), %rdx
leaq 0x7373a(%rip), %rsi     # 0xd570c
leaq 0x3b0(%rsp), %rdi
callq 0xb4c0
jmp 0x61fe1
leaq 0xb64d0(%rip), %rdi     # 0x1184b8
callq 0x1a660
movq %rax, %rsi
leaq 0x398(%rsp), %rdi
callq 0x9ed40
jmp 0x61fff
leaq 0x450(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
leaq 0x398(%rsp), %rdx
callq 0x9f990
jmp 0x6201e
leaq 0x398(%rsp), %rdi
callq 0x1a950
leaq 0x3b0(%rsp), %rdi
callq 0xb6e8
leaq 0x3af(%rsp), %rdi
callq 0xb3f0
leaq 0x388(%rsp), %rdi
leaq 0x450(%rsp), %rsi
xorl %edx, %edx
callq 0xa0070
jmp 0x6205e
leaq 0xb63f3(%rip), %rdi     # 0x118458
movq %rdi, 0xb0(%rsp)
leaq 0x388(%rsp), %rsi
movq %rsi, 0xa8(%rsp)
callq 0x1bae0
movq 0xa8(%rsp), %rdi
callq 0x1a950
movq 0xb0(%rsp), %rsi
leaq 0x378(%rsp), %rdi
callq 0x1a920
leaq 0x357(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0xb690
movq 0xb8(%rsp), %rdx
leaq 0x7326b(%rip), %rsi     # 0xd5333
leaq 0x358(%rsp), %rdi
callq 0xb4c0
jmp 0x620d7
leaq 0x378(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0x4e8b0
jmp 0x620ee
leaq 0x358(%rsp), %rdi
callq 0xb6e8
leaq 0x357(%rsp), %rdi
callq 0xb3f0
leaq 0x378(%rsp), %rdi
callq 0x1a950
leaq 0xb630c(%rip), %rdi     # 0x118428
callq 0x1a6a0
movq %rax, 0x98(%rsp)
leaq 0x328(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
leaq 0x327(%rsp), %rsi
callq 0x62b60
movq 0xa0(%rsp), %rsi
leaq 0x348(%rsp), %rdi
callq 0x96f70
jmp 0x6215d
leaq 0x2ff(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0xb690
movq 0x90(%rsp), %rdx
leaq 0x731b2(%rip), %rsi     # 0xd5333
leaq 0x300(%rsp), %rdi
callq 0xb4c0
jmp 0x62190
movq 0x98(%rsp), %rdi
leaq 0x348(%rsp), %rsi
leaq 0x300(%rsp), %rdx
callq 0x3b150
jmp 0x621af
leaq 0x300(%rsp), %rdi
callq 0xb6e8
leaq 0x2ff(%rsp), %rdi
callq 0xb3f0
leaq 0x348(%rsp), %rdi
callq 0x1b3f0
leaq 0x328(%rsp), %rdi
callq 0x97050
leaq 0xb623e(%rip), %rdi     # 0x118428
callq 0x1a6a0
movq %rax, 0x80(%rsp)
leaq 0x2d0(%rsp), %rdi
movq %rdi, 0x88(%rsp)
leaq 0x2cf(%rsp), %rsi
callq 0x62bf0
movq 0x88(%rsp), %rsi
leaq 0x2f0(%rsp), %rdi
callq 0x96f70
jmp 0x6222b
leaq 0x2a7(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0xb690
movq 0x78(%rsp), %rdx
leaq 0x73368(%rip), %rsi     # 0xd55b1
leaq 0x2a8(%rsp), %rdi
callq 0xb4c0
jmp 0x62258
movq 0x80(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
leaq 0x2a8(%rsp), %rdx
callq 0x3b150
jmp 0x62277
leaq 0x2a8(%rsp), %rdi
callq 0xb6e8
leaq 0x2a7(%rsp), %rdi
callq 0xb3f0
leaq 0x2f0(%rsp), %rdi
callq 0x1b3f0
leaq 0x2d0(%rsp), %rdi
callq 0x97050
leaq 0xb6176(%rip), %rdi     # 0x118428
callq 0x1a6a0
movq %rax, 0x68(%rsp)
leaq 0x278(%rsp), %rdi
movq %rdi, 0x70(%rsp)
leaq 0x277(%rsp), %rsi
callq 0x62c80
movq 0x70(%rsp), %rsi
leaq 0x298(%rsp), %rdi
callq 0x96f70
jmp 0x622ea
leaq 0x24f(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xb690
movq 0x60(%rsp), %rdx
leaq 0x732b0(%rip), %rsi     # 0xd55b8
leaq 0x250(%rsp), %rdi
callq 0xb4c0
jmp 0x62317
movq 0x68(%rsp), %rdi
leaq 0x298(%rsp), %rsi
leaq 0x250(%rsp), %rdx
callq 0x3b150
jmp 0x62333
leaq 0x250(%rsp), %rdi
callq 0xb6e8
leaq 0x24f(%rsp), %rdi
callq 0xb3f0
leaq 0x298(%rsp), %rdi
callq 0x1b3f0
leaq 0x278(%rsp), %rdi
callq 0x97050
leaq 0xb60ba(%rip), %rdi     # 0x118428
callq 0x1a6a0
movq %rax, 0x50(%rsp)
leaq 0x220(%rsp), %rdi
movq %rdi, 0x58(%rsp)
leaq 0x21f(%rsp), %rsi
callq 0x62d10
movq 0x58(%rsp), %rsi
leaq 0x240(%rsp), %rdi
callq 0x96f70
jmp 0x623a6
leaq 0x1f7(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xb690
movq 0x48(%rsp), %rdx
leaq 0x6f1f4(%rip), %rsi     # 0xd15b8
leaq 0x1f8(%rsp), %rdi
callq 0xb4c0
jmp 0x623d3
movq 0x50(%rsp), %rdi
leaq 0x240(%rsp), %rsi
leaq 0x1f8(%rsp), %rdx
callq 0x3b150
jmp 0x623ef
leaq 0x1f8(%rsp), %rdi
callq 0xb6e8
leaq 0x1f7(%rsp), %rdi
callq 0xb3f0
leaq 0x240(%rsp), %rdi
callq 0x1b3f0
leaq 0x220(%rsp), %rdi
callq 0x97050
leaq 0xb5ffe(%rip), %rdi     # 0x118428
callq 0x1a6a0
movq %rax, 0x38(%rsp)
leaq 0x1c8(%rsp), %rdi
movq %rdi, 0x40(%rsp)
leaq 0x1c7(%rsp), %rsi
callq 0x62da0
movq 0x40(%rsp), %rsi
leaq 0x1e8(%rsp), %rdi
callq 0x96f70
jmp 0x62462
leaq 0x19f(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xb690
movq 0x30(%rsp), %rdx
leaq 0x7311d(%rip), %rsi     # 0xd559d
leaq 0x1a0(%rsp), %rdi
callq 0xb4c0
jmp 0x6248f
movq 0x38(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
leaq 0x1a0(%rsp), %rdx
callq 0x3b150
jmp 0x624ab
leaq 0x1a0(%rsp), %rdi
callq 0xb6e8
leaq 0x19f(%rsp), %rdi
callq 0xb3f0
leaq 0x1e8(%rsp), %rdi
callq 0x1b3f0
leaq 0x1c8(%rsp), %rdi
callq 0x97050
leaq 0xb5f42(%rip), %rdi     # 0x118428
callq 0x1a6a0
movq %rax, 0x20(%rsp)
leaq 0x170(%rsp), %rdi
movq %rdi, 0x28(%rsp)
leaq 0x16f(%rsp), %rsi
callq 0x62e30
movq 0x28(%rsp), %rsi
leaq 0x190(%rsp), %rdi
callq 0x96f70
jmp 0x6251e
leaq 0x147(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xb690
movq 0x18(%rsp), %rdx
leaq 0x6fe01(%rip), %rsi     # 0xd233d
leaq 0x148(%rsp), %rdi
callq 0xb4c0
jmp 0x6254b
movq 0x20(%rsp), %rdi
leaq 0x190(%rsp), %rsi
leaq 0x148(%rsp), %rdx
callq 0x3b150
jmp 0x62567
leaq 0x148(%rsp), %rdi
callq 0xb6e8
leaq 0x147(%rsp), %rdi
callq 0xb3f0
leaq 0x190(%rsp), %rdi
callq 0x1b3f0
leaq 0x170(%rsp), %rdi
callq 0x97050
leaq 0xb5e86(%rip), %rdi     # 0x118428
callq 0x1a6a0
movq %rax, 0x8(%rsp)
leaq 0x118(%rsp), %rdi
movq %rdi, 0x10(%rsp)
leaq 0x117(%rsp), %rsi
callq 0x62ec0
movq 0x10(%rsp), %rsi
leaq 0x138(%rsp), %rdi
callq 0x96f70
jmp 0x625da
leaq 0xef(%rsp), %rdi
movq %rdi, (%rsp)
callq 0xb690
movq (%rsp), %rdx
leaq 0x6fd3b(%rip), %rsi     # 0xd2331
leaq 0xf0(%rsp), %rdi
callq 0xb4c0
jmp 0x62605
movq 0x8(%rsp), %rdi
leaq 0x138(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
callq 0x3b150
jmp 0x62621
leaq 0xf0(%rsp), %rdi
callq 0xb6e8
leaq 0xef(%rsp), %rdi
callq 0xb3f0
leaq 0x138(%rsp), %rdi
callq 0x1b3f0
leaq 0x118(%rsp), %rdi
callq 0x97050
leaq 0x450(%rsp), %rdi
callq 0x1c080
addq $0x458, %rsp            # imm = 0x458
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x626ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x408(%rsp), %rdi
callq 0x1a950
leaq 0x430(%rsp), %rdi
callq 0xb6e8
leaq 0x42f(%rsp), %rdi
callq 0xb3f0
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62704
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x3d0(%rsp), %rdi
callq 0x1a950
leaq 0x3e8(%rsp), %rdi
callq 0xb6e8
leaq 0x3e7(%rsp), %rdi
callq 0xb3f0
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62770
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62763
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x398(%rsp), %rdi
callq 0x1a950
leaq 0x3b0(%rsp), %rdi
callq 0xb6e8
leaq 0x3af(%rsp), %rdi
callq 0xb3f0
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x627d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x358(%rsp), %rdi
callq 0xb6e8
leaq 0x357(%rsp), %rdi
callq 0xb3f0
leaq 0x378(%rsp), %rdi
callq 0x1a950
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62858
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x6283e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x300(%rsp), %rdi
callq 0xb6e8
leaq 0x2ff(%rsp), %rdi
callq 0xb3f0
leaq 0x348(%rsp), %rdi
callq 0x1b3f0
leaq 0x328(%rsp), %rdi
callq 0x97050
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x628d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x628b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0xb6e8
leaq 0x2a7(%rsp), %rdi
callq 0xb3f0
leaq 0x2f0(%rsp), %rdi
callq 0x1b3f0
leaq 0x2d0(%rsp), %rdi
callq 0x97050
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x6294a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62930
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x250(%rsp), %rdi
callq 0xb6e8
leaq 0x24f(%rsp), %rdi
callq 0xb3f0
leaq 0x298(%rsp), %rdi
callq 0x1b3f0
leaq 0x278(%rsp), %rdi
callq 0x97050
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x629c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x629a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x1f8(%rsp), %rdi
callq 0xb6e8
leaq 0x1f7(%rsp), %rdi
callq 0xb3f0
leaq 0x240(%rsp), %rdi
callq 0x1b3f0
leaq 0x220(%rsp), %rdi
callq 0x97050
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62a3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62a22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0xb6e8
leaq 0x19f(%rsp), %rdi
callq 0xb3f0
leaq 0x1e8(%rsp), %rdi
callq 0x1b3f0
leaq 0x1c8(%rsp), %rdi
callq 0x97050
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62ab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62a9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0x148(%rsp), %rdi
callq 0xb6e8
leaq 0x147(%rsp), %rdi
callq 0xb3f0
leaq 0x190(%rsp), %rdi
callq 0x1b3f0
leaq 0x170(%rsp), %rdi
callq 0x97050
jmp 0x62b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62b2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
jmp 0x62b11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x420(%rsp)
movl %eax, 0x41c(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0xb6e8
leaq 0xef(%rsp), %rdi
callq 0xb3f0
leaq 0x138(%rsp), %rdi
callq 0x1b3f0
leaq 0x118(%rsp), %rdi
callq 0x97050
leaq 0x450(%rsp), %rdi
callq 0x1c080
movq 0x420(%rsp), %rdi
callq 0xb680
nopw %cs:(%rax,%rax)