// File: /workspace/github_cpp_makefile_star2_O1/rossy[P]crossc/SPIRV-Cross/spirv_glsl.cpp
// Function: spirv_cross::CompilerGLSL::emit_glsl_op(unsigned int, unsigned int, unsigned int, unsigned int const*, unsigned int)
void CompilerGLSL::emit_glsl_op(uint32_t result_type, uint32_t id, uint32_t eop, const uint32_t *args, uint32_t)
{
	auto op = static_cast<GLSLstd450>(eop);

	if (is_legacy() && is_unsigned_glsl_opcode(op))
		SPIRV_CROSS_THROW("Unsigned integers are not supported on legacy GLSL targets.");

	switch (op)
	{
	// FP fiddling
	case GLSLstd450Round:
		emit_unary_func_op(result_type, id, args[0], "round");
		break;

	case GLSLstd450RoundEven:
		if ((options.es && options.version >= 300) || (!options.es && options.version >= 130))
			emit_unary_func_op(result_type, id, args[0], "roundEven");
		else
			SPIRV_CROSS_THROW("roundEven supported only in ESSL 300 and GLSL 130 and up.");
		break;

	case GLSLstd450Trunc:
		emit_unary_func_op(result_type, id, args[0], "trunc");
		break;
	case GLSLstd450SAbs:
	case GLSLstd450FAbs:
		emit_unary_func_op(result_type, id, args[0], "abs");
		break;
	case GLSLstd450SSign:
	case GLSLstd450FSign:
		emit_unary_func_op(result_type, id, args[0], "sign");
		break;
	case GLSLstd450Floor:
		emit_unary_func_op(result_type, id, args[0], "floor");
		break;
	case GLSLstd450Ceil:
		emit_unary_func_op(result_type, id, args[0], "ceil");
		break;
	case GLSLstd450Fract:
		emit_unary_func_op(result_type, id, args[0], "fract");
		break;
	case GLSLstd450Radians:
		emit_unary_func_op(result_type, id, args[0], "radians");
		break;
	case GLSLstd450Degrees:
		emit_unary_func_op(result_type, id, args[0], "degrees");
		break;
	case GLSLstd450Fma:
		emit_trinary_func_op(result_type, id, args[0], args[1], args[2], "fma");
		break;
	case GLSLstd450Modf:
		register_call_out_argument(args[1]);
		forced_temporaries.insert(id);
		emit_binary_func_op(result_type, id, args[0], args[1], "modf");
		break;

	case GLSLstd450ModfStruct:
	{
		forced_temporaries.insert(id);
		auto &type = get<SPIRType>(result_type);
		auto flags = ir.meta[id].decoration.decoration_flags;
		statement(flags_to_precision_qualifiers_glsl(type, flags), variable_decl(type, to_name(id)), ";");
		set<SPIRExpression>(id, to_name(id), result_type, true);

		statement(to_expression(id), ".", to_member_name(type, 0), " = ", "modf(", to_expression(args[0]), ", ",
		          to_expression(id), ".", to_member_name(type, 1), ");");
		break;
	}

	// Minmax
	case GLSLstd450UMin:
	case GLSLstd450FMin:
	case GLSLstd450SMin:
		emit_binary_func_op(result_type, id, args[0], args[1], "min");
		break;
	case GLSLstd450FMax:
	case GLSLstd450UMax:
	case GLSLstd450SMax:
		emit_binary_func_op(result_type, id, args[0], args[1], "max");
		break;
	case GLSLstd450FClamp:
	case GLSLstd450UClamp:
	case GLSLstd450SClamp:
		emit_trinary_func_op(result_type, id, args[0], args[1], args[2], "clamp");
		break;

	// Trig
	case GLSLstd450Sin:
		emit_unary_func_op(result_type, id, args[0], "sin");
		break;
	case GLSLstd450Cos:
		emit_unary_func_op(result_type, id, args[0], "cos");
		break;
	case GLSLstd450Tan:
		emit_unary_func_op(result_type, id, args[0], "tan");
		break;
	case GLSLstd450Asin:
		emit_unary_func_op(result_type, id, args[0], "asin");
		break;
	case GLSLstd450Acos:
		emit_unary_func_op(result_type, id, args[0], "acos");
		break;
	case GLSLstd450Atan:
		emit_unary_func_op(result_type, id, args[0], "atan");
		break;
	case GLSLstd450Sinh:
		emit_unary_func_op(result_type, id, args[0], "sinh");
		break;
	case GLSLstd450Cosh:
		emit_unary_func_op(result_type, id, args[0], "cosh");
		break;
	case GLSLstd450Tanh:
		emit_unary_func_op(result_type, id, args[0], "tanh");
		break;
	case GLSLstd450Asinh:
		emit_unary_func_op(result_type, id, args[0], "asinh");
		break;
	case GLSLstd450Acosh:
		emit_unary_func_op(result_type, id, args[0], "acosh");
		break;
	case GLSLstd450Atanh:
		emit_unary_func_op(result_type, id, args[0], "atanh");
		break;
	case GLSLstd450Atan2:
		emit_binary_func_op(result_type, id, args[0], args[1], "atan");
		break;

	// Exponentials
	case GLSLstd450Pow:
		emit_binary_func_op(result_type, id, args[0], args[1], "pow");
		break;
	case GLSLstd450Exp:
		emit_unary_func_op(result_type, id, args[0], "exp");
		break;
	case GLSLstd450Log:
		emit_unary_func_op(result_type, id, args[0], "log");
		break;
	case GLSLstd450Exp2:
		emit_unary_func_op(result_type, id, args[0], "exp2");
		break;
	case GLSLstd450Log2:
		emit_unary_func_op(result_type, id, args[0], "log2");
		break;
	case GLSLstd450Sqrt:
		emit_unary_func_op(result_type, id, args[0], "sqrt");
		break;
	case GLSLstd450InverseSqrt:
		emit_unary_func_op(result_type, id, args[0], "inversesqrt");
		break;

	// Matrix math
	case GLSLstd450Determinant:
		emit_unary_func_op(result_type, id, args[0], "determinant");
		break;
	case GLSLstd450MatrixInverse:
		emit_unary_func_op(result_type, id, args[0], "inverse");
		break;

	// Lerping
	case GLSLstd450FMix:
	case GLSLstd450IMix:
	{
		emit_mix_op(result_type, id, args[0], args[1], args[2]);
		break;
	}
	case GLSLstd450Step:
		emit_binary_func_op(result_type, id, args[0], args[1], "step");
		break;
	case GLSLstd450SmoothStep:
		emit_trinary_func_op(result_type, id, args[0], args[1], args[2], "smoothstep");
		break;

	// Packing
	case GLSLstd450Frexp:
		register_call_out_argument(args[1]);
		forced_temporaries.insert(id);
		emit_binary_func_op(result_type, id, args[0], args[1], "frexp");
		break;

	case GLSLstd450FrexpStruct:
	{
		forced_temporaries.insert(id);
		auto &type = get<SPIRType>(result_type);
		auto flags = ir.meta[id].decoration.decoration_flags;
		statement(flags_to_precision_qualifiers_glsl(type, flags), variable_decl(type, to_name(id)), ";");
		set<SPIRExpression>(id, to_name(id), result_type, true);

		statement(to_expression(id), ".", to_member_name(type, 0), " = ", "frexp(", to_expression(args[0]), ", ",
		          to_expression(id), ".", to_member_name(type, 1), ");");
		break;
	}

	case GLSLstd450Ldexp:
		emit_binary_func_op(result_type, id, args[0], args[1], "ldexp");
		break;
	case GLSLstd450PackSnorm4x8:
		emit_unary_func_op(result_type, id, args[0], "packSnorm4x8");
		break;
	case GLSLstd450PackUnorm4x8:
		emit_unary_func_op(result_type, id, args[0], "packUnorm4x8");
		break;
	case GLSLstd450PackSnorm2x16:
		emit_unary_func_op(result_type, id, args[0], "packSnorm2x16");
		break;
	case GLSLstd450PackUnorm2x16:
		emit_unary_func_op(result_type, id, args[0], "packUnorm2x16");
		break;
	case GLSLstd450PackHalf2x16:
		emit_unary_func_op(result_type, id, args[0], "packHalf2x16");
		break;
	case GLSLstd450UnpackSnorm4x8:
		emit_unary_func_op(result_type, id, args[0], "unpackSnorm4x8");
		break;
	case GLSLstd450UnpackUnorm4x8:
		emit_unary_func_op(result_type, id, args[0], "unpackUnorm4x8");
		break;
	case GLSLstd450UnpackSnorm2x16:
		emit_unary_func_op(result_type, id, args[0], "unpackSnorm2x16");
		break;
	case GLSLstd450UnpackUnorm2x16:
		emit_unary_func_op(result_type, id, args[0], "unpackUnorm2x16");
		break;
	case GLSLstd450UnpackHalf2x16:
		emit_unary_func_op(result_type, id, args[0], "unpackHalf2x16");
		break;

	case GLSLstd450PackDouble2x32:
		emit_unary_func_op(result_type, id, args[0], "packDouble2x32");
		break;
	case GLSLstd450UnpackDouble2x32:
		emit_unary_func_op(result_type, id, args[0], "unpackDouble2x32");
		break;

	// Vector math
	case GLSLstd450Length:
		emit_unary_func_op(result_type, id, args[0], "length");
		break;
	case GLSLstd450Distance:
		emit_binary_func_op(result_type, id, args[0], args[1], "distance");
		break;
	case GLSLstd450Cross:
		emit_binary_func_op(result_type, id, args[0], args[1], "cross");
		break;
	case GLSLstd450Normalize:
		emit_unary_func_op(result_type, id, args[0], "normalize");
		break;
	case GLSLstd450FaceForward:
		emit_trinary_func_op(result_type, id, args[0], args[1], args[2], "faceforward");
		break;
	case GLSLstd450Reflect:
		emit_binary_func_op(result_type, id, args[0], args[1], "reflect");
		break;
	case GLSLstd450Refract:
		emit_trinary_func_op(result_type, id, args[0], args[1], args[2], "refract");
		break;

	// Bit-fiddling
	case GLSLstd450FindILsb:
		emit_unary_func_op(result_type, id, args[0], "findLSB");
		break;
	case GLSLstd450FindSMsb:
	case GLSLstd450FindUMsb:
		emit_unary_func_op(result_type, id, args[0], "findMSB");
		break;

	// Multisampled varying
	case GLSLstd450InterpolateAtCentroid:
		emit_unary_func_op(result_type, id, args[0], "interpolateAtCentroid");
		break;
	case GLSLstd450InterpolateAtSample:
		emit_binary_func_op(result_type, id, args[0], args[1], "interpolateAtSample");
		break;
	case GLSLstd450InterpolateAtOffset:
		emit_binary_func_op(result_type, id, args[0], args[1], "interpolateAtOffset");
		break;

	case GLSLstd450NMin:
		emit_binary_func_op(result_type, id, args[0], args[1], "unsupported_glsl450_nmin");
		break;
	case GLSLstd450NMax:
		emit_binary_func_op(result_type, id, args[0], args[1], "unsupported_glsl450_nmax");
		break;
	case GLSLstd450NClamp:
		emit_binary_func_op(result_type, id, args[0], args[1], "unsupported_glsl450_nclamp");
		break;

	default:
		statement("// unimplemented GLSL op ", eop);
		break;
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xf8, %rsp
movq %r8, %r14
movq %rdi, %rbx
movl %esi, 0xc(%rsp)
movl %edx, 0x8(%rsp)
movl %ecx, 0x54(%rsp)
movb 0x43c(%rdi), %dil
movl 0x438(%rbx), %eax
testb %dil, %dil
movl $0x12b, %r8d            # imm = 0x12B
movl $0x81, %r9d
cmovnel %r8d, %r9d
cmpl %r9d, %eax
ja 0x3e5ae
leal -0x26(%rcx), %r8d
cmpl $0x25, %r8d
ja 0x3e5ae
movabsq $0x2000000049, %r9      # imm = 0x2000000049
btq %r8, %r9
jb 0x3efa1
decl %ecx
cmpl $0x50, %ecx
ja 0x3ef7b
leaq 0x78268(%rip), %r8      # 0xb6828
movslq (%r8,%rcx,4), %rcx
addq %r8, %rcx
jmpq *%rcx
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x85365(%rip), %r9      # 0xc393c
jmp 0x3ef3f
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x85364(%rip), %rax     # 0xc3956
jmp 0x3ee2a
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x85344(%rip), %r9      # 0xc3949
jmp 0x3ef3f
movl (%r14), %ecx
leaq 0x79d28(%rip), %r8      # 0xb833c
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79fd2(%rip), %r8      # 0xb85f5
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79b7c(%rip), %r8      # 0xb81ae
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
movq %rbx, %rdi
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3bc18
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x7b104(%rip), %r9      # 0xb976d
jmp 0x3ef3f
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x79f59(%rip), %r9      # 0xb85d5
jmp 0x3ef3f
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x79ded(%rip), %r9      # 0xb847c
jmp 0x3ef3f
leaq 0x228(%rbx), %rdi
leaq 0xb8(%rsp), %rdx
movq %rdi, (%rdx)
leaq 0x8(%rsp), %r12
movq %r12, %rsi
callq 0x1fc02
movl 0xc(%rsp), %esi
movq %rbx, %rdi
callq 0xa426
movq %rax, %r15
movl (%r12), %eax
movq 0x38(%rbx), %rcx
imulq $0x148, %rax, %rax      # imm = 0x148
leaq (%rcx,%rax), %rsi
addq $0x60, %rsi
leaq 0xb8(%rsp), %r12
movq %r12, %rdi
callq 0x520d4
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x2beea
movq %rax, 0x58(%rsp)
movl 0x8(%rsp), %edx
movq (%rbx), %rax
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %ecx
callq *0x38(%rax)
movq (%rbx), %rax
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rcx
movq %rbx, %rsi
movq %r15, %rdx
xorl %r8d, %r8d
callq *0xc8(%rax)
leaq 0x813b3(%rip), %rcx     # 0xbfae9
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x55172
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3e763
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3e77e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x8(%rsp), %ebp
movq (%rbx), %rax
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
callq *0x38(%rax)
leaq 0x30(%rsp), %r8
movb $0x1, (%r8)
leaq 0x10(%rsp), %rdx
leaq 0xc(%rsp), %rcx
movq %rbx, %rdi
movl %ebp, %esi
callq 0x54412
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rbp
cmpq %rbp, %rdi
je 0x3e7d0
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x345e6
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x2c69c
movl (%r14), %edx
leaq 0x58(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x345e6
movl 0x8(%rsp), %edx
leaq 0x98(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x345e6
leaq 0x78(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
movq %r15, %rdx
movl $0x1, %ecx
callq 0x2c69c
leaq 0x812ac(%rip), %rax     # 0xbfae8
leaq 0x7d016(%rip), %rdx     # 0xbb859
leaq 0x7c871(%rip), %r10     # 0xbb0bb
leaq 0x81201(%rip), %r8      # 0xbfa52
leaq 0x7aef5(%rip), %r9      # 0xb974d
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rcx
movq %rbx, %rdi
pushq %rax
pushq %r13
pushq %rdx
pushq %r12
pushq %r10
pushq %r14
callq 0x554f0
addq $0x30, %rsp
jmp 0x3eaa6
movl 0x4(%r14), %esi
movq %rbx, %rdi
callq 0x3f208
leaq 0x228(%rbx), %rdi
leaq 0xb8(%rsp), %rdx
movq %rdi, (%rdx)
leaq 0x8(%rsp), %r15
movq %r15, %rsi
callq 0x1fc02
movl 0xc(%rsp), %esi
movl (%r15), %edx
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x79ab0(%rip), %r9      # 0xb836d
jmp 0x3ebf6
leaq 0x228(%rbx), %rdi
leaq 0xb8(%rsp), %rdx
movq %rdi, (%rdx)
leaq 0x8(%rsp), %r12
movq %r12, %rsi
callq 0x1fc02
movl 0xc(%rsp), %esi
movq %rbx, %rdi
callq 0xa426
movq %rax, %r15
movl (%r12), %eax
movq 0x38(%rbx), %rcx
imulq $0x148, %rax, %rax      # imm = 0x148
leaq (%rcx,%rax), %rsi
addq $0x60, %rsi
leaq 0xb8(%rsp), %r12
movq %r12, %rdi
callq 0x520d4
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x2beea
movq %rax, 0x58(%rsp)
movl 0x8(%rsp), %edx
movq (%rbx), %rax
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %ecx
callq *0x38(%rax)
movq (%rbx), %rax
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rcx
movq %rbx, %rsi
movq %r15, %rdx
xorl %r8d, %r8d
callq *0xc8(%rax)
leaq 0x81185(%rip), %rcx     # 0xbfae9
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x55172
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3e991
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3e9ac
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x8(%rsp), %ebp
movq (%rbx), %rax
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
callq *0x38(%rax)
leaq 0x30(%rsp), %r8
movb $0x1, (%r8)
leaq 0x10(%rsp), %rdx
leaq 0xc(%rsp), %rcx
movq %rbx, %rdi
movl %ebp, %esi
callq 0x54412
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rbp
cmpq %rbp, %rdi
je 0x3e9fe
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x345e6
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x2c69c
movl (%r14), %edx
leaq 0x58(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x345e6
movl 0x8(%rsp), %edx
leaq 0x98(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x345e6
leaq 0x78(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
movq %r15, %rdx
movl $0x1, %ecx
callq 0x2c69c
leaq 0x8107e(%rip), %rax     # 0xbfae8
leaq 0x7cde8(%rip), %rdx     # 0xbb859
leaq 0x7c643(%rip), %r10     # 0xbb0bb
leaq 0x80fd3(%rip), %r8      # 0xbfa52
leaq 0x7acb5(%rip), %r9      # 0xb973b
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rcx
movq %rbx, %rdi
pushq %rax
pushq %r13
pushq %rdx
pushq %r12
pushq %r10
pushq %r14
callq 0x552f8
addq $0x30, %rsp
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3eac7
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3eae8
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3eb03
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x3eb1f
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x3eb36
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0xc0(%rsp), %rdi
callq 0xd5b0
jmp 0x3ef8f
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x7ac30(%rip), %r9      # 0xb9786
jmp 0x3ef3f
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x85745(%rip), %r9      # 0xc42ae
jmp 0x3ef3f
movl (%r14), %ecx
leaq 0x79918(%rip), %r8      # 0xb8490
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x79a4a(%rip), %rax     # 0xb85dd
jmp 0x3ee2a
movl (%r14), %ecx
leaq 0x7995c(%rip), %r8      # 0xb84fe
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x805fa(%rip), %r8      # 0xbf1ab
jmp 0x3ef62
movl 0x4(%r14), %esi
movq %rbx, %rdi
callq 0x3f208
leaq 0x228(%rbx), %rdi
leaq 0xb8(%rsp), %rdx
movq %rdi, (%rdx)
leaq 0x8(%rsp), %r15
movq %r15, %rsi
callq 0x1fc02
movl 0xc(%rsp), %esi
movl (%r15), %edx
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x79988(%rip), %r9      # 0xb857e
movq %rbx, %rdi
callq 0x3a8a0
jmp 0x3ef8f
movl (%r14), %ecx
leaq 0x8063c(%rip), %r8      # 0xbf249
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x799e0(%rip), %r9      # 0xb8600
jmp 0x3ef3f
movl (%r14), %ecx
leaq 0x79583(%rip), %r8      # 0xb81b2
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79593(%rip), %r8      # 0xb81d1
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x796cf(%rip), %rax     # 0xb8328
jmp 0x3ee2a
movl (%r14), %ecx
leaq 0x79852(%rip), %r8      # 0xb84ba
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79632(%rip), %r8      # 0xb82a9
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x79619(%rip), %r9      # 0xb82a3
jmp 0x3ef3f
movl (%r14), %ecx
leaq 0x7952d(%rip), %r8      # 0xb81c6
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79937(%rip), %r8      # 0xb85df
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x7990e(%rip), %r9      # 0xb85c9
jmp 0x3ef3f
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x79502(%rip), %r9      # 0xb81d0
jmp 0x3ef3f
movl (%r14), %ecx
leaq 0x79a73(%rip), %r8      # 0xb8750
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x794d9(%rip), %r8      # 0xb81c5
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79668(%rip), %r8      # 0xb8363
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x798e4(%rip), %rax     # 0xb85fa
jmp 0x3ee2a
movl (%r14), %ecx
leaq 0x84bb5(%rip), %r8      # 0xc38da
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x798b1(%rip), %r8      # 0xb85e5
jmp 0x3ef62
testb %dil, %dil
movl $0x12c, %ecx            # imm = 0x12C
movl $0x82, %edi
cmovnel %ecx, %edi
cmpl %edi, %eax
jb 0x3f010
movl (%r14), %ecx
leaq 0x79890(%rip), %r8      # 0xb85eb
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79758(%rip), %r8      # 0xb84c2
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79457(%rip), %r8      # 0xb81d0
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x7944e(%rip), %r8      # 0xb81d6
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79433(%rip), %r8      # 0xb81ca
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x7940d(%rip), %r8      # 0xb81b3
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79416(%rip), %r8      # 0xb81cb
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79809(%rip), %r8      # 0xb85cd
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x794cb(%rip), %r8      # 0xb829e
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x80481(%rip), %r8      # 0xbf263
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x7998c(%rip), %r8      # 0xb877d
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x796c9(%rip), %r8      # 0xb84c9
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x7a932(%rip), %r8      # 0xb9741
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x7953f(%rip), %rax     # 0xb8369
movq %rbx, %rdi
pushq %rax
callq 0x3ae2a
addq $0x108, %rsp            # imm = 0x108
jmp 0x3ef96
movl (%r14), %ecx
leaq 0x803af(%rip), %r8      # 0xbf1f8
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x7964a(%rip), %r9      # 0xb84a6
jmp 0x3ef3f
movl (%r14), %ecx
leaq 0x7934c(%rip), %r8      # 0xb81b7
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x80316(%rip), %r8      # 0xbf190
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79657(%rip), %r8      # 0xb84e0
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x8032c(%rip), %r8      # 0xbf1c4
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79311(%rip), %r8      # 0xb81b8
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x7931f(%rip), %r8      # 0xb81d5
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x7945e(%rip), %r8      # 0xb8323
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x7962e(%rip), %r8      # 0xb8502
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x795f9(%rip), %r8      # 0xb84dc
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x80288(%rip), %r8      # 0xbf177
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x80332(%rip), %r8      # 0xbf22d
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x802d8(%rip), %r8      # 0xbf1df
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x79421(%rip), %r8      # 0xb8334
jmp 0x3ef62
movl (%r14), %ecx
leaq 0x802f4(%rip), %r8      # 0xbf213
jmp 0x3ef62
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x795ab(%rip), %r9      # 0xb84da
jmp 0x3ef3f
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x7a815(%rip), %r9      # 0xb9754
movq %rbx, %rdi
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3a8a0
movl (%r14), %ecx
leaq 0x79643(%rip), %r8      # 0xb85a5
movq %rbx, %rdi
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3a790
leaq 0x7a81f(%rip), %rsi     # 0xb97a1
leaq 0x54(%rsp), %rdx
movq %rbx, %rdi
callq 0x556e8
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
leaq 0xc8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7a704(%rip), %rsi     # 0xb96c5
leaq 0x7a738(%rip), %rdx     # 0xb9700
leaq 0xb8(%rsp), %rdi
callq 0x7c64
movb $0x1, %bpl
leaq 0xb8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0xbdda9(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0xbdd81(%rip), %rsi     # 0xfcd80
movq 0xbefd2(%rip), %rdx     # 0xfdfd8
movq %r14, %rdi
callq 0x6470
jmp 0x3f07d
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
leaq 0xc8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7a6d1(%rip), %rsi     # 0xb9701
leaq 0x7a703(%rip), %rdx     # 0xb973a
leaq 0xb8(%rsp), %rdi
callq 0x7c64
movb $0x1, %bpl
leaq 0xb8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0xbdd3a(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0xbdd12(%rip), %rsi     # 0xfcd80
movq 0xbef63(%rip), %rdx     # 0xfdfd8
movq %r14, %rdi
callq 0x6470
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
cmpq %r15, %rdi
je 0x3f0a5
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x3f0a5
movq %rax, %rbx
movb $0x1, %bpl
testb %bpl, %bpl
je 0x3f200
jmp 0x3f1f8
jmp 0x3f0b5
movq %rax, %rbx
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3f0e0
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x3f0e0
jmp 0x3f0dd
movq %rax, %rbx
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3f108
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x3f108
jmp 0x3f105
movq %rax, %rbx
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3f12a
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x3f12a
jmp 0x3f127
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x3f155
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x3f155
jmp 0x3f152
jmp 0x3f152
jmp 0x3f1b9
jmp 0x3f1b9
jmp 0x3f152
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3f1bc
movq 0x20(%rsp), %rsi
jmp 0x3f1a9
jmp 0x3f1b9
jmp 0x3f1b9
jmp 0x3f171
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3f196
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x3f196
jmp 0x3f193
movq %rax, %rbx
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3f1bc
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x3f1bc
jmp 0x3f1b9
jmp 0x3f1b9
jmp 0x3f1b9
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0xd5b0
jmp 0x3f200
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
cmpq %r15, %rdi
je 0x3f1f3
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x3f1f3
movq %rax, %rbx
movb $0x1, %bpl
testb %bpl, %bpl
je 0x3f200
movq %r14, %rdi
callq 0x6200
movq %rbx, %rdi
callq 0x64a0