// File: /workspace/github_cpp_makefile_star2_O2/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
movl %ecx, %r12d
movl %edx, %ebp
movl %esi, %r15d
movq %rdi, %rbx
movl %esi, 0xc(%rsp)
movl %edx, 0x8(%rsp)
movl %ecx, 0x54(%rsp)
callq 0x41b9c
testb %al, %al
je 0x32864
leal -0x26(%r12), %eax
cmpl $0x25, %eax
ja 0x32864
movabsq $0x2000000049, %rcx     # imm = 0x2000000049
btq %rax, %rcx
jb 0x3317d
decl %r12d
cmpl $0x50, %r12d
ja 0x33157
leaq 0x5df80(%rip), %rax     # 0x907f8
movslq (%rax,%r12,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x6b035(%rip), %r9      # 0x9d8c4
jmp 0x33111
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x6b034(%rip), %rax     # 0x9d8de
jmp 0x32ff4
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x6b014(%rip), %r9      # 0x9d8d1
jmp 0x33111
movl (%r14), %ecx
leaq 0x5fa40(%rip), %r8      # 0x9230c
jmp 0x33139
movl (%r14), %ecx
leaq 0x5fcea(%rip), %r8      # 0x925c5
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f894(%rip), %r8      # 0x9217e
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
movq %rbx, %rdi
movl %r15d, %esi
movl %ebp, %edx
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x309f0
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x60e17(%rip), %r9      # 0x9373d
jmp 0x33111
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5fc6c(%rip), %r9      # 0x925a5
jmp 0x33111
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5fb00(%rip), %r9      # 0x9244c
jmp 0x33111
leaq 0x228(%rbx), %rdi
leaq 0x8(%rsp), %r12
movq %r12, %rsi
callq 0x1af30
movl 0xc(%rsp), %esi
movq %rbx, %rdi
callq 0x90a4
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 0x934a
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x25714
movq %rax, 0x58(%rsp)
movl 0x8(%rsp), %edx
movq (%rbx), %rax
leaq 0x30(%rsp), %rdi
pushq $0x1
popq %rcx
movq %rbx, %rsi
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 0x6709b(%rip), %rcx     # 0x99a81
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x440bc
leaq 0x10(%rsp), %rdi
callq 0x6548
leaq 0x30(%rsp), %rdi
callq 0x6548
movl 0x8(%rsp), %ebp
movq (%rbx), %rax
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rcx
movq %rbx, %rsi
movl %ebp, %edx
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 0x436b4
leaq 0x10(%rsp), %rdi
callq 0x6548
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x2b9f0
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x25cca
movl (%r14), %edx
leaq 0x58(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2b9f0
movl 0x8(%rsp), %edx
leaq 0x98(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x2b9f0
leaq 0x78(%rsp), %r13
pushq $0x1
popq %rcx
movq %r13, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x25cca
leaq 0x66fcc(%rip), %rax     # 0x99a80
leaq 0x62d6e(%rip), %rdx     # 0x95829
leaq 0x625c9(%rip), %r10     # 0x9508b
leaq 0x66f21(%rip), %r8      # 0x999ea
leaq 0x60c4d(%rip), %r9      # 0x9371d
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rcx
movq %rbx, %rdi
pushq %rax
pushq %r13
pushq %rdx
pushq %r12
pushq %r10
pushq %r14
callq 0x4430c
addq $0x30, %rsp
jmp 0x32cce
movl 0x4(%r14), %esi
movq %rbx, %rdi
callq 0x33350
leaq 0x228(%rbx), %rdi
leaq 0x8(%rsp), %r15
movq %r15, %rsi
callq 0x1af30
movl 0xc(%rsp), %esi
movl (%r15), %edx
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5f813(%rip), %r9      # 0x9233d
jmp 0x32db8
leaq 0x228(%rbx), %rdi
leaq 0x8(%rsp), %r12
movq %r12, %rsi
callq 0x1af30
movl 0xc(%rsp), %esi
movq %rbx, %rdi
callq 0x90a4
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 0x934a
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x25714
movq %rax, 0x58(%rsp)
movl 0x8(%rsp), %edx
movq (%rbx), %rax
leaq 0x30(%rsp), %rdi
pushq $0x1
popq %rcx
movq %rbx, %rsi
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 0x66ebd(%rip), %rcx     # 0x99a81
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x440bc
leaq 0x10(%rsp), %rdi
callq 0x6548
leaq 0x30(%rsp), %rdi
callq 0x6548
movl 0x8(%rsp), %ebp
movq (%rbx), %rax
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rcx
movq %rbx, %rsi
movl %ebp, %edx
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 0x436b4
leaq 0x10(%rsp), %rdi
callq 0x6548
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x2b9f0
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x25cca
movl (%r14), %edx
leaq 0x58(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2b9f0
movl 0x8(%rsp), %edx
leaq 0x98(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x2b9f0
leaq 0x78(%rsp), %r13
pushq $0x1
popq %rcx
movq %r13, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x25cca
leaq 0x66dee(%rip), %rax     # 0x99a80
leaq 0x62b90(%rip), %rdx     # 0x95829
leaq 0x623eb(%rip), %r10     # 0x9508b
leaq 0x66d43(%rip), %r8      # 0x999ea
leaq 0x60a5d(%rip), %r9      # 0x9370b
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rcx
movq %rbx, %rdi
pushq %rax
pushq %r13
pushq %rdx
pushq %r12
pushq %r10
pushq %r14
callq 0x44196
addq $0x30, %rsp
leaq 0x78(%rsp), %rdi
callq 0x6548
leaq 0x98(%rsp), %rdi
callq 0x6548
leaq 0x58(%rsp), %rdi
callq 0x6548
leaq 0x30(%rsp), %rdi
callq 0x6548
leaq 0x10(%rsp), %rdi
callq 0x6548
leaq 0xc0(%rsp), %rdi
callq 0xb51c
jmp 0x3316b
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x60a33(%rip), %r9      # 0x93756
jmp 0x33111
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x6b500(%rip), %r9      # 0x9e236
jmp 0x33111
movl (%r14), %ecx
leaq 0x5f71b(%rip), %r8      # 0x92460
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x5f84d(%rip), %rax     # 0x925ad
jmp 0x32ff4
movl (%r14), %ecx
leaq 0x5f75f(%rip), %r8      # 0x924ce
jmp 0x33139
movl (%r14), %ecx
leaq 0x663c5(%rip), %r8      # 0x99143
jmp 0x33139
movl 0x4(%r14), %esi
movq %rbx, %rdi
callq 0x33350
leaq 0x228(%rbx), %rdi
leaq 0x8(%rsp), %r15
movq %r15, %rsi
callq 0x1af30
movl 0xc(%rsp), %esi
movl (%r15), %edx
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5f796(%rip), %r9      # 0x9254e
movq %rbx, %rdi
callq 0x2fab8
jmp 0x3316b
movl (%r14), %ecx
leaq 0x66412(%rip), %r8      # 0x991e1
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5f7ee(%rip), %r9      # 0x925d0
jmp 0x33111
movl (%r14), %ecx
leaq 0x5f391(%rip), %r8      # 0x92182
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f3a1(%rip), %r8      # 0x921a1
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x5f4dd(%rip), %rax     # 0x922f8
jmp 0x32ff4
movl (%r14), %ecx
leaq 0x5f660(%rip), %r8      # 0x9248a
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f440(%rip), %r8      # 0x92279
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5f427(%rip), %r9      # 0x92273
jmp 0x33111
movl (%r14), %ecx
leaq 0x5f33b(%rip), %r8      # 0x92196
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f745(%rip), %r8      # 0x925af
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5f71c(%rip), %r9      # 0x92599
jmp 0x33111
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5f310(%rip), %r9      # 0x921a0
jmp 0x33111
movl (%r14), %ecx
leaq 0x5f881(%rip), %r8      # 0x92720
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f2e7(%rip), %r8      # 0x92195
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f476(%rip), %r8      # 0x92333
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x5f6f2(%rip), %rax     # 0x925ca
jmp 0x32ff4
movl (%r14), %ecx
leaq 0x6a97b(%rip), %r8      # 0x9d862
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f6bf(%rip), %r8      # 0x925b5
jmp 0x33139
cmpb $0x0, 0x43c(%rbx)
movl $0x12c, %eax            # imm = 0x12C
movl $0x82, %ecx
cmovnel %eax, %ecx
cmpl %ecx, 0x438(%rbx)
jb 0x331ce
movl (%r14), %ecx
leaq 0x5f696(%rip), %r8      # 0x925bb
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f55e(%rip), %r8      # 0x92492
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f25d(%rip), %r8      # 0x921a0
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f254(%rip), %r8      # 0x921a6
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f239(%rip), %r8      # 0x9219a
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f213(%rip), %r8      # 0x92183
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f21c(%rip), %r8      # 0x9219b
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f60f(%rip), %r8      # 0x9259d
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f2d1(%rip), %r8      # 0x9226e
jmp 0x33139
movl (%r14), %ecx
leaq 0x6624f(%rip), %r8      # 0x991fb
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f792(%rip), %r8      # 0x9274d
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f4cf(%rip), %r8      # 0x92499
jmp 0x33139
movl (%r14), %ecx
leaq 0x60738(%rip), %r8      # 0x93711
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0x5f345(%rip), %rax     # 0x92339
movq %rbx, %rdi
movl %r15d, %esi
movl %ebp, %edx
pushq %rax
callq 0x2fe8e
addq $0x108, %rsp            # imm = 0x108
jmp 0x33172
movl (%r14), %ecx
leaq 0x66178(%rip), %r8      # 0x99190
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5f44b(%rip), %r9      # 0x92476
jmp 0x33111
movl (%r14), %ecx
leaq 0x5f14d(%rip), %r8      # 0x92187
jmp 0x33139
movl (%r14), %ecx
leaq 0x660df(%rip), %r8      # 0x99128
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f458(%rip), %r8      # 0x924b0
jmp 0x33139
movl (%r14), %ecx
leaq 0x660f5(%rip), %r8      # 0x9915c
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f112(%rip), %r8      # 0x92188
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f120(%rip), %r8      # 0x921a5
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f25f(%rip), %r8      # 0x922f3
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f42f(%rip), %r8      # 0x924d2
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f3fa(%rip), %r8      # 0x924ac
jmp 0x33139
movl (%r14), %ecx
leaq 0x6604e(%rip), %r8      # 0x9910f
jmp 0x33139
movl (%r14), %ecx
leaq 0x660f8(%rip), %r8      # 0x991c5
jmp 0x33139
movl (%r14), %ecx
leaq 0x6609e(%rip), %r8      # 0x99177
jmp 0x33139
movl (%r14), %ecx
leaq 0x5f21f(%rip), %r8      # 0x92304
jmp 0x33139
movl (%r14), %ecx
leaq 0x660ba(%rip), %r8      # 0x991ab
jmp 0x33139
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x5f3a9(%rip), %r9      # 0x924aa
jmp 0x33111
movl (%r14), %ecx
movl 0x4(%r14), %r8d
leaq 0x60613(%rip), %r9      # 0x93724
movq %rbx, %rdi
movl %r15d, %esi
movl %ebp, %edx
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2fab8
movl (%r14), %ecx
leaq 0x5f43c(%rip), %r8      # 0x92575
movq %rbx, %rdi
movl %r15d, %esi
movl %ebp, %edx
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2f9ee
leaq 0x60613(%rip), %rsi     # 0x93771
leaq 0x54(%rsp), %rdx
movq %rbx, %rdi
callq 0x44482
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0x6140
movq %rax, %r14
leaq 0x60506(%rip), %rsi     # 0x93695
leaq 0xb8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x6100
movb $0x1, %bpl
leaq 0xb8(%rsp), %rsi
movq %r14, %rdi
callq 0x6f6e
xorl %ebp, %ebp
leaq 0xb3c03(%rip), %rsi     # 0xe6dc0
movq 0xb4e1c(%rip), %rdx     # 0xe7fe0
movq %r14, %rdi
callq 0x6490
jmp 0x3321d
pushq $0x10
popq %rdi
callq 0x6140
movq %rax, %r14
leaq 0x604f1(%rip), %rsi     # 0x936d1
leaq 0xb8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x6100
movb $0x1, %bpl
leaq 0xb8(%rsp), %rsi
movq %r14, %rdi
callq 0x6f6e
xorl %ebp, %ebp
leaq 0xb3bb2(%rip), %rsi     # 0xe6dc0
movq 0xb4dcb(%rip), %rdx     # 0xe7fe0
movq %r14, %rdi
callq 0x6490
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x6548
testb %bpl, %bpl
je 0x33348
jmp 0x33340
movq %rax, %rbx
jmp 0x33340
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x6548
jmp 0x33264
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x6548
jmp 0x33276
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x6548
jmp 0x33288
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x6548
jmp 0x33297
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x6548
jmp 0x332a6
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x6548
jmp 0x332b5
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6548
jmp 0x332c4
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6548
jmp 0x332d1
movq %rax, %rbx
jmp 0x332d1
jmp 0x332ce
jmp 0x33314
jmp 0x33314
jmp 0x332ce
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x33307
jmp 0x33314
jmp 0x33314
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6548
jmp 0x332fd
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6548
jmp 0x33302
movq %rax, %rbx
jmp 0x33302
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6548
jmp 0x33317
jmp 0x33314
jmp 0x33314
jmp 0x33314
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0xb51c
jmp 0x33348
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x6548
testb %bpl, %bpl
jne 0x33340
jmp 0x33348
movq %rax, %rbx
movq %r14, %rdi
callq 0x6200
movq %rbx, %rdi
callq 0x64b0