// File: /workspace/github_cpp_makefile_star2_O2/haught[P]cws_plugin/cws_plugin.cpp
// Function: write_1_gcode(char*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&)
void write_1_gcode(char *fileName,map<string, string> &valueMap) {
	ofstream ofile;               //��������ļ�
	int layerNum = static_cast<int>(strtol(valueMap.at("totalLayer").c_str(), NULL, 0));
	int bottomLayerNum = static_cast<int>(strtol(valueMap.at("bottomLayCount").c_str(), NULL, 0));
	int normalExposureTime = static_cast<float>(strtof(valueMap.at("normalExposureTime").c_str(), NULL))*1000;
	int bottomLayExposureTime = static_cast<float>(strtof(valueMap.at("bottomLayExposureTime").c_str(), NULL)) * 1000;
	int bottomLightOffTime = static_cast<float>(strtof(valueMap.at("bottomLightOffTime").c_str(), NULL)) * 1000;
	int lightOffTime = static_cast<float>(strtof(valueMap.at("lightOffTime").c_str(), NULL)) * 1000;
	int resolutionX = static_cast<int>(strtol(valueMap.at("resolutionX").c_str(), NULL, 0));
	int resolutionY = static_cast<int>(strtol(valueMap.at("resolutionY").c_str(), NULL, 0));
	float widthX = static_cast<float>(strtof(valueMap.at("machineX").c_str(), NULL));
	float widthY = static_cast<float>(strtof(valueMap.at("machineY").c_str(), NULL));
	float layerHeight = static_cast<float>(strtof(valueMap.at("layerHeight").c_str(), NULL));
	ofile.open(fileName);     //��Ϊ����ļ���
	ofile << ";(****Build and Slicing Parameters****)" << endl;
	ofile << ";(Pix per mm X = " << resolutionX/widthX << " px/mm)" << endl;
	ofile << ";(Pix per mm Y = " << resolutionY/widthY << " px/mm)" << endl;
	ofile << ";(X Resolution = " << resolutionX << ")" << endl;
	ofile << ";(Y Resolution = " << resolutionY << ")" << endl;
	ofile << ";(Layer Thickness = " << layerHeight << " mm)" << endl;
	ofile << ";(Layer Time = 7000 ms)" << endl;
	ofile << ";(Bottom Layers Time = " << bottomLayExposureTime << " ms)" << endl;
	ofile << ";(Number of Bottom Layers = " << valueMap.at("bottomLayCount") << ")" << endl;
	ofile << ";(Blanking Layer Time = " << int(static_cast<float>(strtof(valueMap.at("normalExposureTime").c_str(), NULL)) * 1000) << " ms)" << endl;
	ofile << ";(Build Direction = Bottom_Up)" << endl;
	ofile << ";(Lift Distance = " << valueMap.at("normalLayerLiftHeight") << " mm)" << endl; 
	ofile << ";(Slide/Tilt Value = 0)" << endl;
	ofile << ";(Anti Aliasing = True)" << endl;
	ofile << ";(Use Mainlift GCode Tab = False)" << endl;
	ofile << ";(Anti Aliasing Value = 2)" << endl;
	ofile << ";(Z Lift Feed Rate = 60.00000 mm/s)" << endl;
	ofile << ";(Z Lift Retract Rate = 150.00000 mm/s)" << endl;
	ofile << ";(Flip X = " << ((valueMap.at("mirror") == "1")?"True":"False") << ")" << endl;
	ofile << ";(Flip Y = False)" << endl;
	ofile << ";Number of Slices = " << valueMap.at("totalLayer") <<  endl;
	ofile << ";(****Machine Configuration ******)" << endl;
	ofile << ";(Platform X Size = " << valueMap.at("machineX") << "mm)" << endl;
	ofile << ";(Platform Y Size = " << valueMap.at("machineY") << "mm)" << endl;
	ofile << ";(Platform Z Size = " << valueMap.at("machineZ") << "mm)" << endl;
	ofile << ";(Max X Feedrate = 100mm/s)" << endl;
	ofile << ";(Max Y Feedrate = 100mm/s)" << endl;
	ofile << ";(Max Z Feedrate = 100mm/s)" << endl;
	ofile << ";(Machine Type = UV_DLP)" << endl;
	ofile << "; ********** Header Start ********" << endl;
	ofile << "; Here you can set any G or M - Code which should be executed BEFORE the build process" << endl;
	ofile << "G21; Set units to be mm" << endl;
	ofile << "G91; Relative Positioning" << endl;
	ofile << "M17; Enable motors" << endl;
	ofile << "G28 Z0" << endl;
	ofile << "<Slice> Blank" << endl;
	ofile << "; ********** Header End **********" << endl;

	float normalLayerLiftHeight = static_cast<float>(strtof(valueMap.at("normalLayerLiftHeight").c_str(), NULL)) ;

	float dropHeight = normalLayerLiftHeight - layerHeight;
	for (int i = 0; i < layerNum; i++) {
		ofile << "M106 S255" << endl;

		ofile << ";********** Pre - Slice Start ********" << endl;
		ofile << ";Set up any GCode here to be executed before a lift" << endl;
		ofile << ";********** Pre - Slice End **********" << endl;
		ofile << ";<Slice> " << i << endl;
		ofile << ";<Delay> " << ((i < bottomLayerNum)? bottomLayExposureTime:normalExposureTime) << endl;
		ofile << ";<Slice> Blank" << endl;
		ofile << "M106 S0" << endl;
		ofile << "; ********** Lift Sequence ********" << endl;
		ofile << "G1 Z" << valueMap.at("normalLayerLiftHeight") << " F" << ((i < bottomLayerNum)?valueMap.at("bottomLayerLiftSpeed"):valueMap.at("normalLayerLiftSpeed")) << endl; 
		ofile << "G1 Z-" << dropHeight << " F" << valueMap.at("normalDropSpeed") << endl;
		ofile << ";<Delay> " << ((i < bottomLayerNum)?bottomLightOffTime : lightOffTime) << endl;
	}

	ofile << "; ********** Footer Start ********" << endl;
	ofile << "; Here you can set any G or M - Code which should be executed after the last Layer is Printed" << endl;
	ofile << "M18; Disable Motors" << endl;
	ofile << "M106 SO" << endl;
	ofile << "G1 Z40" << endl;
	ofile << ";<Completed>" << endl;
	ofile << "; ********** Footer End ********" << endl;

	ofile.close();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2a8, %rsp            # imm = 0x2A8
movq %rsi, %r12
movq %rdi, %rbx
leaq -0x2a8(%rbp), %rdi
callq 0x2330
leaq 0x39cc(%rip), %rsi      # 0x6008
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2290
movq %rax, -0xa0(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x3998(%rip), %rsi      # 0x6013
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2290
movq %rax, -0x70(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x396b(%rip), %rsi      # 0x6022
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
callq 0x2270
movss %xmm0, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x3943(%rip), %rsi      # 0x6035
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
callq 0x2270
movss %xmm0, -0x58(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x391e(%rip), %rsi      # 0x604b
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
callq 0x2270
movss %xmm0, -0xa8(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x38f3(%rip), %rsi      # 0x605e
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
callq 0x2270
movss %xmm0, -0xa4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x38c2(%rip), %rsi      # 0x606b
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2290
movq %rax, %r15
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x3893(%rip), %rsi      # 0x6077
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2290
movq %rax, %r14
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x3864(%rip), %rsi      # 0x6083
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
callq 0x2270
movss %xmm0, -0x68(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x3832(%rip), %rsi      # 0x608c
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
callq 0x2270
movss %xmm0, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x3800(%rip), %rsi      # 0x6095
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
callq 0x2270
movss %xmm0, -0x74(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq -0x2a8(%rbp), %rdi
pushq $0x10
popq %rdx
movq %rbx, %rsi
callq 0x2050
leaq 0x37bf(%rip), %rsi      # 0x60a1
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x37cc(%rip), %rsi      # 0x60c9
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
cvtsi2ss %r15d, %xmm0
divss -0x68(%rbp), %xmm0
movq %rax, %rdi
callq 0x2180
leaq 0x37b9(%rip), %rsi      # 0x60db
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x37aa(%rip), %rsi      # 0x60e3
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
cvtsi2ss %r14d, %xmm0
divss -0x50(%rbp), %xmm0
movq %rax, %rdi
callq 0x2180
leaq 0x377d(%rip), %rsi      # 0x60db
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3780(%rip), %rsi      # 0x60f5
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
movl %r15d, %esi
callq 0x2340
leaq 0x46d4(%rip), %rsi      # 0x7067
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x375d(%rip), %rsi      # 0x6107
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
movl %r14d, %esi
callq 0x2340
leaq 0x469f(%rip), %rsi      # 0x7067
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x373a(%rip), %rsi      # 0x6119
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
movss -0x74(%rbp), %xmm0
callq 0x2180
leaq 0x372f(%rip), %rsi      # 0x612e
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x371d(%rip), %rsi      # 0x6133
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x371a(%rip), %rsi      # 0x614b
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movss -0x58(%rbp), %xmm0
mulss 0x35ba(%rip), %xmm0     # 0x6004
cvttss2si %xmm0, %esi
movq %rax, %rdi
movl %esi, -0x58(%rbp)
callq 0x2340
leaq 0x36e6(%rip), %rsi      # 0x6146
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x36ec(%rip), %rsi      # 0x6163
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rbx
leaq 0x3586(%rip), %rsi      # 0x6013
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq %rbx, %rdi
movq %rax, %rsi
callq 0x21d0
leaq 0x45ac(%rip), %rsi      # 0x7067
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x36a5(%rip), %rsi      # 0x6180
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rbx
leaq 0x3531(%rip), %rsi      # 0x6022
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq (%rax), %rdi
xorl %esi, %esi
callq 0x2270
mulss 0x34e5(%rip), %xmm0     # 0x6004
cvttss2si %xmm0, %esi
movq %rbx, %rdi
callq 0x2340
leaq 0x3614(%rip), %rsi      # 0x6146
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x3647(%rip), %rsi      # 0x6199
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x364b(%rip), %rsi      # 0x61b8
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rbx
leaq 0x3648(%rip), %rsi      # 0x61cb
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq %rbx, %rdi
movq %rax, %rsi
callq 0x21d0
leaq 0x357d(%rip), %rsi      # 0x612e
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x3610(%rip), %rsi      # 0x61e1
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x360d(%rip), %rsi      # 0x61f9
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x360a(%rip), %rsi      # 0x6211
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3611(%rip), %rsi      # 0x6233
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3611(%rip), %rsi      # 0x624e
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x361a(%rip), %rsi      # 0x6272
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3627(%rip), %rsi      # 0x629a
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rbx
leaq 0x361d(%rip), %rsi      # 0x62a6
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
leaq 0x3601(%rip), %rsi      # 0x62ad
movq %rax, %rdi
callq 0x4c89
leaq 0x35f4(%rip), %rcx      # 0x62af
leaq 0x35f2(%rip), %rsi      # 0x62b4
testb %al, %al
cmovneq %rcx, %rsi
movq %rbx, %rdi
callq 0x21f0
leaq 0x4390(%rip), %rsi      # 0x7067
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x35c3(%rip), %rsi      # 0x62ba
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x35ba(%rip), %rsi      # 0x62cc
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rbx
leaq 0x32e0(%rip), %rsi      # 0x6008
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq %rbx, %rdi
movq %rax, %rsi
callq 0x21d0
movq %rax, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x357a(%rip), %rsi      # 0x62e1
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3583(%rip), %rsi      # 0x6305
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rbx
leaq 0x32eb(%rip), %rsi      # 0x6083
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq %rbx, %rdi
movq %rax, %rsi
callq 0x21d0
leaq 0x3369(%rip), %rsi      # 0x612f
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x3534(%rip), %rsi      # 0x631a
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rbx
leaq 0x3290(%rip), %rsi      # 0x608c
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq %rbx, %rdi
movq %rax, %rsi
callq 0x21d0
leaq 0x3305(%rip), %rsi      # 0x612f
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x34e5(%rip), %rsi      # 0x632f
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rbx
leaq 0x34e4(%rip), %rsi      # 0x6344
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, %rdi
callq 0x4c3a
movq %rbx, %rdi
movq %rax, %rsi
callq 0x21d0
leaq 0x32a1(%rip), %rsi      # 0x612f
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
callq 0x2110
leaq 0x349f(%rip), %rsi      # 0x634d
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x34a0(%rip), %rsi      # 0x6369
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x34a1(%rip), %rsi      # 0x6385
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x34a2(%rip), %rsi      # 0x63a1
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3c32(%rip), %rsi      # 0x6b4c
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3485(%rip), %rsi      # 0x63ba
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x34c1(%rip), %rsi      # 0x6411
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x34be(%rip), %rsi      # 0x6429
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x34bd(%rip), %rsi      # 0x6443
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x34b5(%rip), %rsi      # 0x6456
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3565(%rip), %rsi      # 0x6521
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3486(%rip), %rsi      # 0x645d
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x31d9(%rip), %rsi      # 0x61cb
leaq -0x48(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x4b8c
leaq -0x48(%rbp), %rsi
movq %r12, -0x68(%rbp)
movq %r12, %rdi
callq 0x4c3a
movss -0x54(%rbp), %xmm0
mulss 0x2fe5(%rip), %xmm0     # 0x6004
cvttss2si %xmm0, %ecx
movl %ecx, -0x54(%rbp)
movq (%rax), %rdi
xorl %r13d, %r13d
xorl %esi, %esi
callq 0x2270
movss %xmm0, -0x50(%rbp)
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x2110
movq -0xa0(%rbp), %rax
testl %eax, %eax
cmovlel %r13d, %eax
movq %rax, -0xa0(%rbp)
movss -0x50(%rbp), %xmm0
subss -0x74(%rbp), %xmm0
movss %xmm0, -0x50(%rbp)
leaq -0x2a8(%rbp), %r12
cmpl %r13d, -0xa0(%rbp)
je 0x32f1
movq %r12, %rdi
leaq 0x33fb(%rip), %rsi      # 0x6480
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x33ee(%rip), %rsi      # 0x648a
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x33fe(%rip), %rsi      # 0x64b1
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x341b(%rip), %rsi      # 0x64e5
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x342b(%rip), %rsi      # 0x650c
callq 0x21f0
movq %rax, %rdi
movl %r13d, %esi
callq 0x2340
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x3413(%rip), %rsi      # 0x6516
callq 0x21f0
cmpl -0x70(%rbp), %r13d
movl -0x54(%rbp), %esi
cmovll -0x58(%rbp), %esi
movq %rax, %rdi
callq 0x2340
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x33f3(%rip), %rsi      # 0x6520
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x3b53(%rip), %rsi      # 0x6c97
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x33d4(%rip), %rsi      # 0x652f
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x33e1(%rip), %rsi      # 0x6553
callq 0x21f0
movq %rax, %r15
movq %r14, %rdi
leaq 0x3047(%rip), %rsi      # 0x61cb
leaq -0x49(%rbp), %rdx
callq 0x4b8c
movq -0x68(%rbp), %rdi
movq %r14, %rsi
callq 0x4c3a
movq %r15, %rdi
movq %rax, %rsi
callq 0x21d0
movq %rax, %rdi
leaq 0x33aa(%rip), %rsi      # 0x6558
callq 0x21f0
movq %rax, %r15
cmpl -0x70(%rbp), %r13d
jge 0x31e4
leaq -0x98(%rbp), %rbx
movq %rbx, %rdi
leaq 0x338e(%rip), %rsi      # 0x655b
leaq -0x5a(%rbp), %rdx
callq 0x4b8c
movq -0x68(%rbp), %rdi
movq %rbx, %rsi
callq 0x4c3a
jmp 0x320a
leaq -0x2c8(%rbp), %rbx
movq %rbx, %rdi
leaq 0x337b(%rip), %rsi      # 0x6570
leaq -0x59(%rbp), %rdx
callq 0x4b8c
movq -0x68(%rbp), %rdi
movq %rbx, %rsi
callq 0x4c3a
movq %r15, %rdi
movq %rax, %rsi
callq 0x21d0
movq %rax, %rdi
callq 0x2120
cmpl -0x70(%rbp), %r13d
jge 0x322c
leaq -0x98(%rbp), %rdi
jmp 0x3233
leaq -0x2c8(%rbp), %rdi
callq 0x2110
movq %r14, %rdi
callq 0x2110
movq %r12, %rdi
leaq 0x333b(%rip), %rsi      # 0x6585
callq 0x21f0
movq %rax, %rdi
movss -0x50(%rbp), %xmm0
callq 0x2180
movq %rax, %rdi
leaq 0x32f2(%rip), %rsi      # 0x6558
callq 0x21f0
movq %rax, %r15
movq %r14, %rdi
leaq 0x3313(%rip), %rsi      # 0x658b
leaq -0x49(%rbp), %rdx
callq 0x4b8c
movq -0x68(%rbp), %rdi
movq %r14, %rsi
callq 0x4c3a
movq %r15, %rdi
movq %rax, %rsi
callq 0x21d0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
callq 0x2110
movq %r12, %rdi
leaq 0x3264(%rip), %rsi      # 0x6516
callq 0x21f0
movss -0xa8(%rbp), %xmm0
cmpl -0x70(%rbp), %r13d
jl 0x32cd
movss -0xa4(%rbp), %xmm0
mulss 0x2d2f(%rip), %xmm0     # 0x6004
cvttss2si %xmm0, %esi
movq %rax, %rdi
callq 0x2340
movq %rax, %rdi
callq 0x2120
incl %r13d
jmp 0x306e
leaq 0x38a8(%rip), %rsi      # 0x6ba0
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x3288(%rip), %rsi      # 0x659b
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x32cb(%rip), %rsi      # 0x65f9
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x32c4(%rip), %rsi      # 0x660d
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x32b1(%rip), %rsi      # 0x6615
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x329d(%rip), %rsi      # 0x661c
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq 0x328f(%rip), %rsi      # 0x6629
leaq -0x2a8(%rbp), %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x2120
leaq -0x2a8(%rbp), %rdi
callq 0x22a0
leaq -0x2a8(%rbp), %rdi
callq 0x22d0
addq $0x2a8, %rsp            # imm = 0x2A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x347e
jmp 0x348c
jmp 0x348c
jmp 0x348c
jmp 0x348c
jmp 0x348c
jmp 0x348c
jmp 0x348c
jmp 0x348c
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x347e
jmp 0x347e
jmp 0x347e
jmp 0x347e
jmp 0x347e
jmp 0x347e
jmp 0x347e
jmp 0x348c
jmp 0x347e
jmp 0x347e
movq %rax, %rbx
jmp 0x346c
movq %rax, %rbx
jmp 0x3463
jmp 0x348c
jmp 0x348c
movq %rax, %rbx
cmpl -0x70(%rbp), %r13d
jge 0x346c
leaq -0x98(%rbp), %rdi
jmp 0x3473
leaq -0x2c8(%rbp), %rdi
callq 0x2110
jmp 0x3481
jmp 0x348c
jmp 0x347e
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x2110
jmp 0x348f
movq %rax, %rbx
leaq -0x2a8(%rbp), %rdi
callq 0x22d0
movq %rbx, %rdi
callq 0x2350