// File: rossy[P]crossc/SPIRV-Cross/spirv_glsl.cpp
// Function: spirv_cross::CompilerGLSL::bitcast_glsl_op[abi:cxx11](spirv_cross::SPIRType const&, spirv_cross::SPIRType const&)
string CompilerGLSL::bitcast_glsl_op(const SPIRType &out_type, const SPIRType &in_type)
{
	if (out_type.basetype == SPIRType::UInt && in_type.basetype == SPIRType::Int)
		return type_to_glsl(out_type);
	else if (out_type.basetype == SPIRType::UInt64 && in_type.basetype == SPIRType::Int64)
		return type_to_glsl(out_type);
	else if (out_type.basetype == SPIRType::UInt && in_type.basetype == SPIRType::Float)
		return "floatBitsToUint";
	else if (out_type.basetype == SPIRType::Int && in_type.basetype == SPIRType::UInt)
		return type_to_glsl(out_type);
	else if (out_type.basetype == SPIRType::Int64 && in_type.basetype == SPIRType::UInt64)
		return type_to_glsl(out_type);
	else if (out_type.basetype == SPIRType::Int && in_type.basetype == SPIRType::Float)
		return "floatBitsToInt";
	else if (out_type.basetype == SPIRType::Float && in_type.basetype == SPIRType::UInt)
		return "uintBitsToFloat";
	else if (out_type.basetype == SPIRType::Float && in_type.basetype == SPIRType::Int)
		return "intBitsToFloat";
	else if (out_type.basetype == SPIRType::Int64 && in_type.basetype == SPIRType::Double)
		return "doubleBitsToInt64";
	else if (out_type.basetype == SPIRType::UInt64 && in_type.basetype == SPIRType::Double)
		return "doubleBitsToUint64";
	else if (out_type.basetype == SPIRType::Double && in_type.basetype == SPIRType::Int64)
		return "int64BitsToDouble";
	else if (out_type.basetype == SPIRType::Double && in_type.basetype == SPIRType::UInt64)
		return "uint64BitsToDouble";
	else if (out_type.basetype == SPIRType::UInt64 && in_type.basetype == SPIRType::UInt && in_type.vecsize == 2)
		return "packUint2x32";
	else if (out_type.basetype == SPIRType::Half && in_type.basetype == SPIRType::UInt && in_type.vecsize == 1)
		return "unpackFloat2x16";
	else if (out_type.basetype == SPIRType::UInt && in_type.basetype == SPIRType::Half && in_type.vecsize == 2)
		return "packFloat2x16";
	else
		return "";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x58(%rbp)
movq %rdi, %rax
movq %rax, -0x50(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x5, 0xc(%rax)
jne 0x824be
movq -0x20(%rbp), %rax
cmpl $0x4, 0xc(%rax)
jne 0x824be
movq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq (%rsi), %rax
xorl %ecx, %ecx
callq *0x98(%rax)
jmp 0x829ea
movq -0x18(%rbp), %rax
cmpl $0x7, 0xc(%rax)
jne 0x824ee
movq -0x20(%rbp), %rax
cmpl $0x6, 0xc(%rax)
jne 0x824ee
movq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq (%rsi), %rax
xorl %ecx, %ecx
callq *0x98(%rax)
jmp 0x829ea
movq -0x18(%rbp), %rax
cmpl $0x5, 0xc(%rax)
jne 0x8254d
movq -0x20(%rbp), %rax
cmpl $0xa, 0xc(%rax)
jne 0x8254d
leaq -0x21(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rdx
leaq 0xbf309(%rip), %rsi     # 0x141827
callq 0x7520
jmp 0x82525
leaq -0x21(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x21(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0x4, 0xc(%rax)
jne 0x8257d
movq -0x20(%rbp), %rax
cmpl $0x5, 0xc(%rax)
jne 0x8257d
movq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq (%rsi), %rax
xorl %ecx, %ecx
callq *0x98(%rax)
jmp 0x829ea
movq -0x18(%rbp), %rax
cmpl $0x6, 0xc(%rax)
jne 0x825ad
movq -0x20(%rbp), %rax
cmpl $0x7, 0xc(%rax)
jne 0x825ad
movq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq (%rsi), %rax
xorl %ecx, %ecx
callq *0x98(%rax)
jmp 0x829ea
movq -0x18(%rbp), %rax
cmpl $0x4, 0xc(%rax)
jne 0x8260c
movq -0x20(%rbp), %rax
cmpl $0xa, 0xc(%rax)
jne 0x8260c
leaq -0x35(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0x68(%rbp), %rdx
leaq 0xbf23b(%rip), %rsi     # 0x141818
callq 0x7520
jmp 0x825e4
leaq -0x35(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x35(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0xa, 0xc(%rax)
jne 0x8266b
movq -0x20(%rbp), %rax
cmpl $0x5, 0xc(%rax)
jne 0x8266b
leaq -0x36(%rbp), %rdi
movq %rdi, -0x70(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0x70(%rbp), %rdx
leaq 0xbf5f8(%rip), %rsi     # 0x141c34
callq 0x7520
jmp 0x82643
leaq -0x36(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x36(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0xa, 0xc(%rax)
jne 0x826ca
movq -0x20(%rbp), %rax
cmpl $0x4, 0xc(%rax)
jne 0x826ca
leaq -0x37(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0x78(%rbp), %rdx
leaq 0xbf59a(%rip), %rsi     # 0x141c35
callq 0x7520
jmp 0x826a2
leaq -0x37(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x37(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0x6, 0xc(%rax)
jne 0x82729
movq -0x20(%rbp), %rax
cmpl $0xb, 0xc(%rax)
jne 0x82729
leaq -0x38(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0x80(%rbp), %rdx
leaq 0xc0d01(%rip), %rsi     # 0x1433fb
callq 0x7520
jmp 0x82701
leaq -0x38(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0x7, 0xc(%rax)
jne 0x8278e
movq -0x20(%rbp), %rax
cmpl $0xb, 0xc(%rax)
jne 0x8278e
leaq -0x39(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0x88(%rbp), %rdx
leaq 0xc0cae(%rip), %rsi     # 0x14340d
callq 0x7520
jmp 0x82766
leaq -0x39(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x39(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0xb, 0xc(%rax)
jne 0x827f3
movq -0x20(%rbp), %rax
cmpl $0x6, 0xc(%rax)
jne 0x827f3
leaq -0x3a(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0x90(%rbp), %rdx
leaq 0xc0c5d(%rip), %rsi     # 0x143421
callq 0x7520
jmp 0x827cb
leaq -0x3a(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x3a(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0xb, 0xc(%rax)
jne 0x82858
movq -0x20(%rbp), %rax
cmpl $0x7, 0xc(%rax)
jne 0x82858
leaq -0x3b(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0x98(%rbp), %rdx
leaq 0xc0bf7(%rip), %rsi     # 0x143420
callq 0x7520
jmp 0x82830
leaq -0x3b(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x3b(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0x7, 0xc(%rax)
jne 0x828c7
movq -0x20(%rbp), %rax
cmpl $0x5, 0xc(%rax)
jne 0x828c7
movq -0x20(%rbp), %rax
cmpl $0x2, 0x14(%rax)
jne 0x828c7
leaq -0x3c(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0xc0b9b(%rip), %rsi     # 0x143433
callq 0x7520
jmp 0x8289f
leaq -0x3c(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x3c(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0x9, 0xc(%rax)
jne 0x82936
movq -0x20(%rbp), %rax
cmpl $0x5, 0xc(%rax)
jne 0x82936
movq -0x20(%rbp), %rax
cmpl $0x1, 0x14(%rax)
jne 0x82936
leaq -0x3d(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0xc5ced(%rip), %rsi     # 0x1485f4
callq 0x7520
jmp 0x8290e
leaq -0x3d(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x3d(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x18(%rbp), %rax
cmpl $0x5, 0xc(%rax)
jne 0x8299f
movq -0x20(%rbp), %rax
cmpl $0x9, 0xc(%rax)
jne 0x8299f
movq -0x20(%rbp), %rax
cmpl $0x2, 0x14(%rax)
jne 0x8299f
leaq -0x3e(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0xb0(%rbp), %rdx
leaq 0xc5c9a(%rip), %rsi     # 0x148610
callq 0x7520
jmp 0x8297d
leaq -0x3e(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x3e(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
leaq -0x3f(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x7650
movq -0x58(%rbp), %rdi
movq -0xb8(%rbp), %rdx
leaq 0xbbedd(%rip), %rsi     # 0x13e89e
callq 0x7520
jmp 0x829c8
leaq -0x3f(%rbp), %rdi
callq 0x73d0
jmp 0x829ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x3f(%rbp), %rdi
callq 0x73d0
jmp 0x829f7
movq -0x50(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x7640