	.file	"extr_glsl_shader.c_shader_glsl_generate_ffp_vertex_shader.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"vec4"
.LC1:
	.string	".zyxw"
.LC2:
	.string	""
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC3:
	.string	"int(ffp_attrib_blendindices[%u] + 0.1)"
	.section	.rodata.str1.1
.LC4:
	.string	"%u"
.LC5:
	.string	"ffp_attrib_psize"
.LC6:
	.string	"ffp_point.size"
	.section	.rodata.str1.8
	.align 8
.LC7:
	.string	"#extension GL_ARB_explicit_attrib_location : enable\n"
	.section	.rodata.str1.1
.LC8:
	.string	"\n"
	.section	.rodata.str1.8
	.align 8
.LC9:
	.string	"uniform mat4 ffp_modelview_matrix[%u];\n"
	.align 8
.LC10:
	.string	"uniform mat3 ffp_normal_matrix[%u];\n"
	.align 8
.LC11:
	.string	"uniform mat4 ffp_projection_matrix;\n"
	.align 8
.LC12:
	.string	"uniform mat4 ffp_texture_matrix[%u];\n"
	.section	.rodata.str1.1
.LC13:
	.string	"uniform struct\n{\n"
.LC14:
	.string	"    vec4 emissive;\n"
.LC15:
	.string	"    vec4 ambient;\n"
.LC16:
	.string	"    vec4 diffuse;\n"
.LC17:
	.string	"    vec4 specular;\n"
.LC18:
	.string	"    float shininess;\n"
.LC19:
	.string	"} ffp_material;\n"
	.section	.rodata.str1.8
	.align 8
.LC20:
	.string	"uniform vec3 ffp_light_ambient;\n"
	.section	.rodata.str1.1
.LC21:
	.string	"    vec4 position;\n"
.LC22:
	.string	"    vec3 direction;\n"
.LC23:
	.string	"    float range;\n"
.LC24:
	.string	"    float falloff;\n"
.LC25:
	.string	"    float c_att;\n"
.LC26:
	.string	"    float l_att;\n"
.LC27:
	.string	"    float q_att;\n"
.LC28:
	.string	"    float cos_htheta;\n"
.LC29:
	.string	"    float cos_hphi;\n"
.LC30:
	.string	"} ffp_light[%u];\n"
.LC31:
	.string	"layout(location = %u) "
.LC32:
	.string	"%s %s vs_in%u;\n"
.LC33:
	.string	"    float size;\n"
.LC34:
	.string	"    float size_min;\n"
.LC35:
	.string	"    float size_max;\n"
.LC36:
	.string	"} ffp_point;\n"
.LC37:
	.string	"vec4 ffp_varying_diffuse;\n"
.LC38:
	.string	"vec4 ffp_varying_specular;\n"
	.section	.rodata.str1.8
	.align 8
.LC39:
	.string	"vec4 ffp_varying_texcoord[%u];\n"
	.section	.rodata.str1.1
.LC40:
	.string	"float ffp_varying_fogcoord;\n"
	.section	.rodata.str1.8
	.align 8
.LC41:
	.string	"uniform vec4 clip_planes[%u];\n"
	.section	.rodata.str1.1
.LC42:
	.string	"\nvoid main()\n{\n"
.LC43:
	.string	"float m;\n"
.LC44:
	.string	"vec3 r;\n"
.LC45:
	.string	"%s %s = vs_in%u%s;\n"
	.section	.rodata.str1.8
	.align 8
.LC46:
	.string	"ffp_attrib_blendweight[%u] = 1.0;\n"
	.align 8
.LC47:
	.string	"vec4 ec_pos = vec4(ffp_attrib_position.xyz, 1.0);\n"
	.align 8
.LC48:
	.string	"gl_Position = ffp_projection_matrix * ec_pos;\n"
	.align 8
.LC49:
	.string	"if (ffp_attrib_position.w != 0.0) gl_Position /= ffp_attrib_position.w;\n"
	.section	.rodata.str1.1
.LC50:
	.string	"vec4 ec_pos = vec4(0.0);\n"
	.section	.rodata.str1.8
	.align 8
.LC51:
	.string	"ffp_attrib_blendweight[%u] -= ffp_attrib_blendweight[%u];\n"
	.align 8
.LC52:
	.string	"ec_pos += ffp_attrib_blendweight[%u] * (ffp_modelview_matrix[%s] * ffp_attrib_position);\n"
	.align 8
.LC53:
	.string	"vec4 ec_pos = ffp_attrib_position;\n"
	.section	.rodata.str1.1
.LC54:
	.string	"gl_ClipVertex = ec_pos;\n"
	.section	.rodata.str1.8
	.align 8
.LC55:
	.string	"gl_ClipDistance[%u] = dot(ec_pos, clip_planes[%u]);\n"
	.section	.rodata.str1.1
.LC56:
	.string	"ec_pos /= ec_pos.w;\n"
.LC57:
	.string	"vec3 normal = vec3(0.0);\n"
	.section	.rodata.str1.8
	.align 8
.LC58:
	.string	"normal += ffp_attrib_blendweight[%u] * (ffp_normal_matrix[%s] * ffp_attrib_normal);\n"
	.section	.rodata.str1.1
.LC59:
	.string	"normal = ffp_attrib_normal;\n"
.LC60:
	.string	"normal = normalize(normal);\n"
	.section	.rodata.str1.8
	.align 8
.LC61:
	.string	"gl_FrontColor = ffp_varying_diffuse;\n"
	.align 8
.LC62:
	.string	"gl_FrontSecondaryColor = ffp_varying_specular;\n"
	.align 8
.LC63:
	.string	"ffp_varying_diffuse = clamp(ffp_varying_diffuse, 0.0, 1.0);\n"
	.align 8
.LC64:
	.string	"ffp_varying_specular = clamp(ffp_varying_specular, 0.0, 1.0);\n"
	.align 8
.LC65:
	.string	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] * ffp_attrib_texcoord%u;\n"
	.align 8
.LC66:
	.string	"ffp_varying_texcoord[%u] = vec4(0.0);\n"
	.align 8
.LC67:
	.string	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] * vec4(normal, 1.0);\n"
	.align 8
.LC68:
	.string	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] * ec_pos;\n"
	.align 8
.LC69:
	.string	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] * vec4(reflect(normalize(ec_pos.xyz), normal), 1.0);\n"
	.align 8
.LC70:
	.string	"r = reflect(normalize(ec_pos.xyz), normal);\n"
	.align 8
.LC71:
	.string	"m = 2.0 * length(vec3(r.x, r.y, r.z + 1.0));\n"
	.align 8
.LC72:
	.string	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] * vec4(r.x / m + 0.5, r.y / m + 0.5, 0.0, 1.0);\n"
	.section	.rodata.str1.1
.LC73:
	.string	"Unhandled texgen %#x.\n"
	.section	.rodata.str1.8
	.align 8
.LC74:
	.string	"gl_TexCoord[%u] = ffp_varying_texcoord[%u];\n"
	.align 8
.LC75:
	.string	"ffp_varying_fogcoord = ffp_attrib_specular.w * 255.0;\n"
	.align 8
.LC76:
	.string	"ffp_varying_fogcoord = length(ec_pos.xyz);\n"
	.align 8
.LC77:
	.string	"ffp_varying_fogcoord = gl_Position.z;\n"
	.align 8
.LC78:
	.string	"ffp_varying_fogcoord = gl_Position.z * 0.5 + 0.5;\n"
	.align 8
.LC79:
	.string	"ffp_varying_fogcoord = ec_pos.z;\n"
	.align 8
.LC80:
	.string	"ffp_varying_fogcoord = abs(ec_pos.z);\n"
	.section	.rodata.str1.1
.LC81:
	.string	"Unhandled fog mode %#x.\n"
	.section	.rodata.str1.8
	.align 8
.LC82:
	.string	"gl_FogFragCoord = ffp_varying_fogcoord;\n"
	.align 8
.LC83:
	.string	"gl_PointSize = %s / sqrt(ffp_point.c_att + ffp_point.l_att * length(ec_pos.xyz) + ffp_point.q_att * dot(ec_pos.xyz, ec_pos.xyz));\n"
	.align 8
.LC84:
	.string	"gl_PointSize = clamp(gl_PointSize, ffp_point.size_min, ffp_point.size_max);\n"
	.section	.rodata.str1.1
.LC85:
	.string	"}\n"
	.text
	.p2align 4
	.type	shader_glsl_generate_ffp_vertex_shader, @function
shader_glsl_generate_ffp_vertex_shader:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	mov	r13, rdx
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12, rsi
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	mov	rbx, rdi
	lea	rbp, 8[rbx]
	sub	rsp, 120
	.cfi_def_cfa_offset 176
	mov	QWORD PTR 16[rsp], rdi
	mov	rdi, rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 104[rsp], rax
	xor	eax, eax
	call	needs_legacy_glsl_syntax@PLT
	mov	rdi, rbp
	mov	QWORD PTR 8[rsp], rax
	mov	rax, QWORD PTR [rbx]
	mov	QWORD PTR 24[rsp], rax
	call	string_buffer_clear@PLT
	mov	rdi, rbp
	mov	rsi, r13
	call	shader_glsl_add_version_declaration@PLT
	mov	rdi, r13
	call	shader_glsl_use_explicit_attrib_location@PLT
	test	rax, rax
	jne	.L109
.L2:
	mov	r9d, DWORD PTR WINED3D_FFP_ATTRIBS_COUNT[rip]
	xor	ebx, ebx
	lea	r15, .LC0[rip]
	test	r9d, r9d
	jne	.L3
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L7:
	mov	rdi, r13
	call	get_attribute_keyword@PLT
	mov	r8d, ebx
	mov	rcx, r14
	mov	rdi, rbp
	mov	edx, eax
	lea	rsi, .LC32[rip]
	xor	eax, eax
	add	ebx, 1
	call	shader_addline@PLT
	cmp	DWORD PTR WINED3D_FFP_ATTRIBS_COUNT[rip], ebx
	jbe	.L8
.L3:
	lea	rdi, attrib_info.2007[rip]
	mov	r14, r15
	call	ARRAY_SIZE@PLT
	cmp	eax, ebx
	jbe	.L6
	mov	edx, ebx
	mov	rax, rdx
	sal	rax, 4
	sub	rax, rdx
	lea	rdx, attrib_info.2007[rip]
	lea	r14, [rdx+rax*2]
.L6:
	mov	rdi, r13
	call	shader_glsl_use_explicit_attrib_location@PLT
	test	rax, rax
	je	.L7
	mov	edx, ebx
	lea	rsi, .LC31[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L7
	.p2align 4,,10
	.p2align 3
.L8:
	lea	rsi, .LC8[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	edx, DWORD PTR MAX_VERTEX_INDEX_BLENDS[rip]
	mov	rdi, rbp
	xor	eax, eax
	lea	rsi, .LC9[rip]
	call	shader_addline@PLT
	mov	edx, DWORD PTR MAX_VERTEX_INDEX_BLENDS[rip]
	mov	rdi, rbp
	xor	eax, eax
	lea	rsi, .LC10[rip]
	call	shader_addline@PLT
	lea	rsi, .LC11[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	edx, DWORD PTR MAX_TEXTURES[rip]
	mov	rdi, rbp
	xor	eax, eax
	lea	rsi, .LC12[rip]
	call	shader_addline@PLT
	lea	rsi, .LC13[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC14[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC15[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC16[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC17[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC18[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC19[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC20[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC13[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC16[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC17[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	xor	eax, eax
	lea	rsi, .LC15[rip]
	mov	rdi, rbp
	call	shader_addline@PLT
	lea	rsi, .LC21[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC22[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC23[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC24[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC25[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC26[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC27[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC28[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC29[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	edx, DWORD PTR MAX_ACTIVE_LIGHTS[rip]
	xor	eax, eax
	mov	rdi, rbp
	lea	rsi, .LC30[rip]
	call	shader_addline@PLT
	cmp	QWORD PTR 40[r12], 0
	jne	.L110
.L5:
	cmp	QWORD PTR 8[rsp], 0
	jne	.L111
	cmp	QWORD PTR 96[r12], 0
	jne	.L112
.L11:
	mov	rdx, QWORD PTR 104[r12]
	mov	rsi, rbp
	mov	rdi, r13
	xor	eax, eax
	lea	rcx, .LC37[rip]
	call	declare_out_varying@PLT
	mov	rdx, QWORD PTR 104[r12]
	mov	rsi, rbp
	mov	rdi, r13
	lea	rcx, .LC38[rip]
	xor	eax, eax
	call	declare_out_varying@PLT
	mov	rsi, rbp
	mov	rdi, r13
	xor	eax, eax
	mov	rdx, QWORD PTR FALSE[rip]
	mov	r8d, DWORD PTR MAX_TEXTURES[rip]
	lea	rcx, .LC39[rip]
	call	declare_out_varying@PLT
	mov	rsi, rbp
	mov	rdi, r13
	xor	eax, eax
	mov	rdx, QWORD PTR FALSE[rip]
	lea	rcx, .LC40[rip]
	call	declare_out_varying@PLT
.L10:
	lea	rsi, .LC42[rip]
	mov	rdi, rbp
	xor	eax, eax
	xor	r15d, r15d
	call	shader_addline@PLT
	lea	rsi, .LC43[rip]
	xor	eax, eax
	mov	rdi, rbp
	call	shader_addline@PLT
	lea	rsi, .LC44[rip]
	xor	eax, eax
	mov	rdi, rbp
	call	shader_addline@PLT
	lea	rbx, attrib_info.2007[rip+6]
	lea	r14, .LC2[rip]
	jmp	.L12
	.p2align 4,,10
	.p2align 3
.L15:
	cmp	BYTE PTR [rbx], 0
	je	.L13
	mov	eax, DWORD PTR [r12]
	mov	ecx, r15d
	lea	rdx, -6[rbx]
	mov	r8d, r15d
	lea	r9, .LC1[rip]
	lea	rsi, .LC45[rip]
	mov	rdi, rbp
	shr	eax, cl
	mov	rcx, rbx
	test	al, 1
	cmove	r9, r14
	xor	eax, eax
	call	shader_addline@PLT
.L13:
	add	r15d, 1
	add	rbx, 30
.L12:
	lea	rdi, attrib_info.2007[rip]
	call	ARRAY_SIZE@PLT
	cmp	eax, r15d
	ja	.L15
	mov	edx, DWORD PTR 20[r12]
	xor	eax, eax
	lea	rsi, .LC46[rip]
	mov	rdi, rbp
	call	shader_addline@PLT
	cmp	QWORD PTR 48[r12], 0
	jne	.L113
	mov	r8d, DWORD PTR 80[r12]
	test	r8d, r8d
	jne	.L18
	mov	edx, DWORD PTR 20[r12]
	xor	r14d, r14d
	lea	rbx, .LC51[rip]
	test	edx, edx
	je	.L22
	.p2align 4,,10
	.p2align 3
.L19:
	mov	ecx, r14d
	mov	rsi, rbx
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	edx, DWORD PTR 20[r12]
	add	r14d, 1
	cmp	edx, r14d
	ja	.L19
.L22:
	xor	eax, eax
	lea	rsi, .LC50[rip]
	mov	rdi, rbp
	xor	r14d, r14d
	call	shader_addline@PLT
	cmp	DWORD PTR 20[r12], -1
	lea	rbx, 32[rsp]
	lea	r15, .LC3[rip]
	je	.L23
	.p2align 4,,10
	.p2align 3
.L20:
	cmp	QWORD PTR 72[r12], 0
	lea	rsi, .LC4[rip]
	mov	edx, r14d
	mov	rdi, rbx
	cmovne	rsi, r15
	call	sprintf@PLT
	mov	edx, r14d
	mov	rcx, rbx
	mov	rdi, rbp
	lea	rsi, .LC52[rip]
	xor	eax, eax
	add	r14d, 1
	call	shader_addline@PLT
	mov	eax, DWORD PTR 20[r12]
	add	eax, 1
	cmp	eax, r14d
	ja	.L20
.L23:
	xor	eax, eax
	lea	rsi, .LC48[rip]
	mov	rdi, rbp
	call	shader_addline@PLT
	cmp	QWORD PTR 96[r12], 0
	je	.L26
	cmp	QWORD PTR 8[rsp], 0
	jne	.L27
	mov	edi, DWORD PTR 8[r13]
	xor	r14d, r14d
	lea	rbx, .LC55[rip]
	test	edi, edi
	je	.L26
	.p2align 4,,10
	.p2align 3
.L28:
	mov	ecx, r14d
	mov	edx, r14d
	mov	rsi, rbx
	mov	rdi, rbp
	xor	eax, eax
	add	r14d, 1
	call	shader_addline@PLT
	cmp	DWORD PTR 8[r13], r14d
	ja	.L28
.L26:
	lea	rsi, .LC56[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
.L17:
	xor	eax, eax
	lea	rsi, .LC57[rip]
	mov	rdi, rbp
	call	shader_addline@PLT
	cmp	QWORD PTR 88[r12], 0
	je	.L31
	mov	esi, DWORD PTR 80[r12]
	test	esi, esi
	jne	.L32
	xor	r14d, r14d
	cmp	DWORD PTR 20[r12], -1
	lea	rbx, 32[rsp]
	lea	r15, .LC3[rip]
	je	.L34
	.p2align 4,,10
	.p2align 3
.L33:
	cmp	QWORD PTR 72[r12], 0
	lea	rsi, .LC4[rip]
	mov	edx, r14d
	mov	rdi, rbx
	cmovne	rsi, r15
	call	sprintf@PLT
	mov	edx, r14d
	mov	rcx, rbx
	mov	rdi, rbp
	lea	rsi, .LC58[rip]
	xor	eax, eax
	add	r14d, 1
	call	shader_addline@PLT
	mov	eax, DWORD PTR 20[r12]
	add	eax, 1
	cmp	eax, r14d
	ja	.L33
.L34:
	cmp	QWORD PTR 64[r12], 0
	jne	.L114
.L31:
	mov	rdx, QWORD PTR 24[rsp]
	mov	rsi, r12
	mov	rdi, rbp
	call	shader_glsl_ffp_vertex_lighting@PLT
	cmp	QWORD PTR 8[rsp], 0
	je	.L38
	lea	rsi, .LC61[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC62[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
.L46:
	mov	ecx, DWORD PTR MAX_TEXTURES[rip]
	mov	r14, QWORD PTR 8[rsp]
	xor	r15d, r15d
	lea	rbx, .L49[rip]
	test	ecx, ecx
	je	.L58
	.p2align 4,,10
	.p2align 3
.L39:
	mov	rdx, QWORD PTR 8[r12]
	mov	eax, r15d
	mov	esi, DWORD PTR [rdx+rax*4]
	mov	eax, esi
	xor	ax, ax
	sub	eax, 132
	cmp	eax, 4
	ja	.L47
	movsx	rax, DWORD PTR [rbx+rax*4]
	add	rax, rbx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L49:
	.long	.L53-.L49
	.long	.L52-.L49
	.long	.L51-.L49
	.long	.L50-.L49
	.long	.L48-.L49
	.text
	.p2align 4,,10
	.p2align 3
.L112:
	mov	edx, DWORD PTR 8[r13]
	lea	rsi, .LC41[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L11
	.p2align 4,,10
	.p2align 3
.L18:
	lea	rsi, .LC53[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L50:
	mov	ecx, r15d
	mov	edx, r15d
	lea	rsi, .LC68[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	rax, r14
.L55:
	test	rax, rax
	jne	.L115
.L57:
	add	r15d, 1
	cmp	DWORD PTR MAX_TEXTURES[rip], r15d
	ja	.L39
.L58:
	mov	esi, DWORD PTR 24[r12]
	cmp	esi, 130
	je	.L40
	jg	.L41
	cmp	esi, 128
	je	.L42
	cmp	esi, 129
	jne	.L44
	mov	rax, QWORD PTR FALSE[rip]
	mov	QWORD PTR 8[rsp], rax
.L59:
	cmp	QWORD PTR 8[rsp], 0
	jne	.L116
.L63:
	cmp	QWORD PTR 40[r12], 0
	je	.L64
	cmp	QWORD PTR 32[r12], 0
	lea	rax, .LC6[rip]
	mov	rdi, rbp
	lea	rdx, .LC5[rip]
	lea	rsi, .LC83[rip]
	cmove	rdx, rax
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC84[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
.L64:
	lea	rsi, .LC85[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	edi, DWORD PTR GL_VERTEX_SHADER[rip]
	call	glCreateShader@PLT
	mov	edi, eax
	call	GL_EXTCALL@PLT
	mov	rdi, r13
	mov	r12d, eax
	mov	rax, QWORD PTR 16[rsp]
	mov	esi, r12d
	mov	edx, DWORD PTR 8[rax]
	call	shader_glsl_compile@PLT
	mov	rax, QWORD PTR 104[rsp]
	xor	rax, QWORD PTR fs:40
	jne	.L117
	add	rsp, 120
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	mov	eax, r12d
	pop	rbx
	.cfi_def_cfa_offset 48
	pop	rbp
	.cfi_def_cfa_offset 40
	pop	r12
	.cfi_def_cfa_offset 32
	pop	r13
	.cfi_def_cfa_offset 24
	pop	r14
	.cfi_def_cfa_offset 16
	pop	r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L51:
	.cfi_restore_state
	mov	ecx, r15d
	mov	edx, r15d
	lea	rsi, .LC69[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	rax, r14
	test	rax, rax
	je	.L57
	.p2align 4,,10
	.p2align 3
.L115:
	mov	ecx, r15d
	mov	edx, r15d
	lea	rsi, .LC74[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L57
	.p2align 4,,10
	.p2align 3
.L52:
	mov	eax, DWORD PTR 16[r12]
	bt	eax, r15d
	jnc	.L54
	mov	r8d, r15d
	mov	ecx, r15d
	mov	edx, r15d
	mov	rdi, rbp
	lea	rsi, .LC65[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rax, r14
	jmp	.L55
	.p2align 4,,10
	.p2align 3
.L53:
	lea	rsi, .LC70[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC71[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	ecx, r15d
	mov	edx, r15d
	mov	rdi, rbp
	lea	rsi, .LC72[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rax, r14
	jmp	.L55
	.p2align 4,,10
	.p2align 3
.L48:
	mov	ecx, r15d
	mov	edx, r15d
	lea	rsi, .LC67[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	rax, r14
	jmp	.L55
.L47:
	lea	rdi, .LC73[rip]
	call	ERR@PLT
	mov	rax, r14
	jmp	.L55
	.p2align 4,,10
	.p2align 3
.L41:
	cmp	esi, 131
	jne	.L44
	mov	edx, DWORD PTR 56[r12]
	test	edx, edx
	je	.L60
	mov	rax, QWORD PTR 0[r13]
	mov	rdx, QWORD PTR ARB_CLIP_CONTROL[rip]
	mov	eax, DWORD PTR [rax+rdx*4]
	test	eax, eax
	je	.L61
	lea	rsi, .LC77[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L54:
	mov	eax, DWORD PTR 12[r13]
	mov	rdi, r13
	mov	DWORD PTR 24[rsp], eax
	call	wined3d_max_compat_varyings@PLT
	mov	r9d, eax
	mov	rax, QWORD PTR FALSE[rip]
	cmp	DWORD PTR 24[rsp], r9d
	jl	.L55
	mov	edx, r15d
	lea	rsi, .LC66[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	mov	rax, r14
	jmp	.L55
	.p2align 4,,10
	.p2align 3
.L38:
	mov	rdi, rbp
	lea	rsi, .LC63[rip]
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC64[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L46
	.p2align 4,,10
	.p2align 3
.L116:
	lea	rsi, .LC82[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L63
	.p2align 4,,10
	.p2align 3
.L109:
	lea	rsi, .LC7[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L113:
	mov	rdi, rbp
	lea	rsi, .LC47[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rdi, rbp
	lea	rsi, .LC48[rip]
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC49[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L17
	.p2align 4,,10
	.p2align 3
.L111:
	mov	rdi, rbp
	lea	rsi, .LC37[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rdi, rbp
	lea	rsi, .LC38[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	edx, DWORD PTR MAX_TEXTURES[rip]
	mov	rdi, rbp
	xor	eax, eax
	lea	rsi, .LC39[rip]
	call	shader_addline@PLT
	lea	rsi, .LC40[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L10
	.p2align 4,,10
	.p2align 3
.L110:
	mov	rdi, rbp
	lea	rsi, .LC13[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rdi, rbp
	lea	rsi, .LC33[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rdi, rbp
	lea	rsi, .LC34[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rdi, rbp
	lea	rsi, .LC35[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rdi, rbp
	lea	rsi, .LC25[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rdi, rbp
	lea	rsi, .LC26[rip]
	xor	eax, eax
	call	shader_addline@PLT
	mov	rdi, rbp
	lea	rsi, .LC27[rip]
	xor	eax, eax
	call	shader_addline@PLT
	lea	rsi, .LC36[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L40:
	lea	rsi, .LC75[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L44:
	lea	rdi, .LC81[rip]
	call	ERR@PLT
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L42:
	lea	rsi, .LC76[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L60:
	cmp	QWORD PTR 48[r12], 0
	je	.L62
	lea	rsi, .LC79[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L114:
	lea	rsi, .LC60[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L31
	.p2align 4,,10
	.p2align 3
.L32:
	lea	rsi, .LC59[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L34
	.p2align 4,,10
	.p2align 3
.L27:
	lea	rsi, .LC54[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L26
.L62:
	lea	rsi, .LC80[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L59
.L61:
	lea	rsi, .LC78[rip]
	mov	rdi, rbp
	xor	eax, eax
	call	shader_addline@PLT
	jmp	.L59
.L117:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	shader_glsl_generate_ffp_vertex_shader, .-shader_glsl_generate_ffp_vertex_shader
	.section	.rodata
	.align 32
	.type	attrib_info.2007, @object
	.size	attrib_info.2007, 210
attrib_info.2007:
	.string	"vec4"
	.zero	1
	.string	"ffp_attrib_position"
	.zero	4
	.string	"vec4"
	.zero	1
	.string	"ffp_attrib_blendweight"
	.zero	1
	.string	"vec4"
	.zero	1
	.string	"ffp_attrib_blendindices"
	.string	"vec3"
	.zero	1
	.string	"ffp_attrib_normal"
	.zero	6
	.string	"float"
	.string	"ffp_attrib_psize"
	.zero	7
	.string	"vec4"
	.zero	1
	.string	"ffp_attrib_diffuse"
	.zero	5
	.string	"vec4"
	.zero	1
	.string	"ffp_attrib_specular"
	.zero	4
	.comm	WINED3D_FFP_TEXCOORD0,8,8
	.comm	WINED3D_FFP_ATTRIBS_COUNT,4,4
	.comm	MAX_VERTEX_INDEX_BLENDS,4,4
	.comm	MAX_TEXTURES,4,4
	.comm	MAX_ACTIVE_LIGHTS,4,4
	.comm	GL_VERTEX_SHADER,4,4
	.comm	FALSE,8,8
	.comm	ARB_CLIP_CONTROL,8,8
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"extr_glsl_shader.c_shader_glsl_generate_ffp_vertex_shader.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"vec4\000"
	.align	2
.LC1:
	.ascii	".zyxw\000"
	.align	2
.LC2:
	.ascii	"\000"
	.align	2
.LC3:
	.ascii	"int(ffp_attrib_blendindices[%u] + 0.1)\000"
	.align	2
.LC4:
	.ascii	"%u\000"
	.align	2
.LC5:
	.ascii	"ffp_attrib_psize\000"
	.align	2
.LC6:
	.ascii	"ffp_point.size\000"
	.align	2
.LC7:
	.ascii	"#extension GL_ARB_explicit_attrib_location : enable"
	.ascii	"\012\000"
	.align	2
.LC8:
	.ascii	"\012\000"
	.align	2
.LC9:
	.ascii	"uniform mat4 ffp_modelview_matrix[%u];\012\000"
	.align	2
.LC10:
	.ascii	"uniform mat3 ffp_normal_matrix[%u];\012\000"
	.align	2
.LC11:
	.ascii	"uniform mat4 ffp_projection_matrix;\012\000"
	.align	2
.LC12:
	.ascii	"uniform mat4 ffp_texture_matrix[%u];\012\000"
	.align	2
.LC13:
	.ascii	"uniform struct\012{\012\000"
	.align	2
.LC14:
	.ascii	"    vec4 emissive;\012\000"
	.align	2
.LC15:
	.ascii	"    vec4 ambient;\012\000"
	.align	2
.LC16:
	.ascii	"    vec4 diffuse;\012\000"
	.align	2
.LC17:
	.ascii	"    vec4 specular;\012\000"
	.align	2
.LC18:
	.ascii	"    float shininess;\012\000"
	.align	2
.LC19:
	.ascii	"} ffp_material;\012\000"
	.align	2
.LC20:
	.ascii	"uniform vec3 ffp_light_ambient;\012\000"
	.align	2
.LC21:
	.ascii	"    vec4 position;\012\000"
	.align	2
.LC22:
	.ascii	"    vec3 direction;\012\000"
	.align	2
.LC23:
	.ascii	"    float range;\012\000"
	.align	2
.LC24:
	.ascii	"    float falloff;\012\000"
	.align	2
.LC25:
	.ascii	"    float c_att;\012\000"
	.align	2
.LC26:
	.ascii	"    float l_att;\012\000"
	.align	2
.LC27:
	.ascii	"    float q_att;\012\000"
	.align	2
.LC28:
	.ascii	"    float cos_htheta;\012\000"
	.align	2
.LC29:
	.ascii	"    float cos_hphi;\012\000"
	.align	2
.LC30:
	.ascii	"} ffp_light[%u];\012\000"
	.align	2
.LC31:
	.ascii	"layout(location = %u) \000"
	.align	2
.LC32:
	.ascii	"%s %s vs_in%u;\012\000"
	.align	2
.LC33:
	.ascii	"    float size;\012\000"
	.align	2
.LC34:
	.ascii	"    float size_min;\012\000"
	.align	2
.LC35:
	.ascii	"    float size_max;\012\000"
	.align	2
.LC36:
	.ascii	"} ffp_point;\012\000"
	.align	2
.LC37:
	.ascii	"vec4 ffp_varying_diffuse;\012\000"
	.align	2
.LC38:
	.ascii	"vec4 ffp_varying_specular;\012\000"
	.align	2
.LC39:
	.ascii	"vec4 ffp_varying_texcoord[%u];\012\000"
	.align	2
.LC40:
	.ascii	"float ffp_varying_fogcoord;\012\000"
	.align	2
.LC41:
	.ascii	"uniform vec4 clip_planes[%u];\012\000"
	.align	2
.LC42:
	.ascii	"\012void main()\012{\012\000"
	.align	2
.LC43:
	.ascii	"float m;\012\000"
	.align	2
.LC44:
	.ascii	"vec3 r;\012\000"
	.align	2
.LC45:
	.ascii	"%s %s = vs_in%u%s;\012\000"
	.align	2
.LC46:
	.ascii	"ffp_attrib_blendweight[%u] = 1.0;\012\000"
	.align	2
.LC47:
	.ascii	"vec4 ec_pos = vec4(ffp_attrib_position.xyz, 1.0);\012"
	.ascii	"\000"
	.align	2
.LC48:
	.ascii	"gl_Position = ffp_projection_matrix * ec_pos;\012\000"
	.align	2
.LC49:
	.ascii	"if (ffp_attrib_position.w != 0.0) gl_Position /= ff"
	.ascii	"p_attrib_position.w;\012\000"
	.align	2
.LC50:
	.ascii	"vec4 ec_pos = vec4(0.0);\012\000"
	.align	2
.LC51:
	.ascii	"ffp_attrib_blendweight[%u] -= ffp_attrib_blendweigh"
	.ascii	"t[%u];\012\000"
	.align	2
.LC52:
	.ascii	"ec_pos += ffp_attrib_blendweight[%u] * (ffp_modelvi"
	.ascii	"ew_matrix[%s] * ffp_attrib_position);\012\000"
	.align	2
.LC53:
	.ascii	"vec4 ec_pos = ffp_attrib_position;\012\000"
	.align	2
.LC54:
	.ascii	"gl_ClipVertex = ec_pos;\012\000"
	.align	2
.LC55:
	.ascii	"gl_ClipDistance[%u] = dot(ec_pos, clip_planes[%u]);"
	.ascii	"\012\000"
	.align	2
.LC56:
	.ascii	"ec_pos /= ec_pos.w;\012\000"
	.align	2
.LC57:
	.ascii	"vec3 normal = vec3(0.0);\012\000"
	.align	2
.LC58:
	.ascii	"normal += ffp_attrib_blendweight[%u] * (ffp_normal_"
	.ascii	"matrix[%s] * ffp_attrib_normal);\012\000"
	.align	2
.LC59:
	.ascii	"normal = ffp_attrib_normal;\012\000"
	.align	2
.LC60:
	.ascii	"normal = normalize(normal);\012\000"
	.align	2
.LC61:
	.ascii	"gl_FrontColor = ffp_varying_diffuse;\012\000"
	.align	2
.LC62:
	.ascii	"gl_FrontSecondaryColor = ffp_varying_specular;\012\000"
	.align	2
.LC63:
	.ascii	"ffp_varying_diffuse = clamp(ffp_varying_diffuse, 0."
	.ascii	"0, 1.0);\012\000"
	.align	2
.LC64:
	.ascii	"ffp_varying_specular = clamp(ffp_varying_specular, "
	.ascii	"0.0, 1.0);\012\000"
	.align	2
.LC65:
	.ascii	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] *"
	.ascii	" ffp_attrib_texcoord%u;\012\000"
	.align	2
.LC66:
	.ascii	"ffp_varying_texcoord[%u] = vec4(0.0);\012\000"
	.align	2
.LC67:
	.ascii	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] *"
	.ascii	" vec4(normal, 1.0);\012\000"
	.align	2
.LC68:
	.ascii	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] *"
	.ascii	" ec_pos;\012\000"
	.align	2
.LC69:
	.ascii	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] *"
	.ascii	" vec4(reflect(normalize(ec_pos.xyz), normal), 1.0);"
	.ascii	"\012\000"
	.align	2
.LC70:
	.ascii	"r = reflect(normalize(ec_pos.xyz), normal);\012\000"
	.align	2
.LC71:
	.ascii	"m = 2.0 * length(vec3(r.x, r.y, r.z + 1.0));\012\000"
	.align	2
.LC72:
	.ascii	"ffp_varying_texcoord[%u] = ffp_texture_matrix[%u] *"
	.ascii	" vec4(r.x / m + 0.5, r.y / m + 0.5, 0.0, 1.0);\012\000"
	.align	2
.LC73:
	.ascii	"Unhandled texgen %#x.\012\000"
	.align	2
.LC74:
	.ascii	"gl_TexCoord[%u] = ffp_varying_texcoord[%u];\012\000"
	.align	2
.LC75:
	.ascii	"ffp_varying_fogcoord = ffp_attrib_specular.w * 255."
	.ascii	"0;\012\000"
	.align	2
.LC76:
	.ascii	"ffp_varying_fogcoord = length(ec_pos.xyz);\012\000"
	.align	2
.LC77:
	.ascii	"ffp_varying_fogcoord = gl_Position.z;\012\000"
	.align	2
.LC78:
	.ascii	"ffp_varying_fogcoord = gl_Position.z * 0.5 + 0.5;\012"
	.ascii	"\000"
	.align	2
.LC79:
	.ascii	"ffp_varying_fogcoord = ec_pos.z;\012\000"
	.align	2
.LC80:
	.ascii	"ffp_varying_fogcoord = abs(ec_pos.z);\012\000"
	.align	2
.LC81:
	.ascii	"Unhandled fog mode %#x.\012\000"
	.align	2
.LC82:
	.ascii	"gl_FogFragCoord = ffp_varying_fogcoord;\012\000"
	.align	2
.LC83:
	.ascii	"gl_PointSize = %s / sqrt(ffp_point.c_att + ffp_poin"
	.ascii	"t.l_att * length(ec_pos.xyz) + ffp_point.q_att * do"
	.ascii	"t(ec_pos.xyz, ec_pos.xyz));\012\000"
	.align	2
.LC84:
	.ascii	"gl_PointSize = clamp(gl_PointSize, ffp_point.size_m"
	.ascii	"in, ffp_point.size_max);\012\000"
	.align	2
.LC85:
	.ascii	"}\012\000"
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC86:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	shader_glsl_generate_ffp_vertex_shader, %function
shader_glsl_generate_ffp_vertex_shader:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	ldr	r3, .L120
	sub	sp, sp, #100
	mov	r4, r0
	str	r0, [sp, #16]
	mov	r0, r2
	mov	r9, r2
	mov	r5, r1
	ldr	r3, [r3]
	str	r3, [sp, #92]
	mov	r3,#0
	bl	needs_legacy_glsl_syntax
	ldr	r3, [r4], #4
	str	r0, [sp, #8]
	mov	r0, r4
	str	r3, [sp, #12]
	bl	string_buffer_clear
	mov	r1, r9
	mov	r0, r4
	bl	shader_glsl_add_version_declaration
	mov	r0, r9
	bl	shader_glsl_use_explicit_attrib_location
	cmp	r0, #0
	bne	.L110
.L2:
	ldr	r10, .L120+4
	ldr	r3, [r10]
	cmp	r3, #0
	beq	.L9
	ldr	r8, .L120+8
	mov	r6, #0
	mov	fp, r8
	b	.L8
.L7:
	mov	r0, r9
	bl	get_attribute_keyword
	mov	r3, r7
	mov	r2, r0
	str	r6, [sp]
	mov	r0, r4
	ldr	r1, .L120+12
	bl	shader_addline
	ldr	r3, [r10]
	add	r6, r6, #1
	cmp	r3, r6
	add	r8, r8, #30
	bls	.L9
.L8:
	mov	r0, fp
	bl	ARRAY_SIZE
	mov	r7, r0
	cmp	r7, r6
	ldr	r3, .L120+16
	movhi	r3, r8
	mov	r0, r9
	mov	r7, r3
	bl	shader_glsl_use_explicit_attrib_location
	cmp	r0, #0
	beq	.L7
	mov	r2, r6
	mov	r0, r4
	ldr	r1, .L120+20
	bl	shader_addline
	b	.L7
.L9:
	ldr	r6, .L120+24
	ldr	r1, .L120+28
	mov	r0, r4
	bl	shader_addline
	ldr	r2, [r6]
	ldr	r1, .L120+32
	mov	r0, r4
	bl	shader_addline
	ldr	fp, .L120+36
	ldr	r2, [r6]
	ldr	r1, .L120+40
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+44
	mov	r0, r4
	bl	shader_addline
	ldr	r2, [fp]
	ldr	r1, .L120+48
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+52
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+56
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+60
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+64
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+68
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+72
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+76
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+80
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+52
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+64
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+68
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+60
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+84
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+88
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+92
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+96
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+100
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+104
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+108
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+112
	mov	r0, r4
	bl	shader_addline
	ldr	r1, .L120+116
	mov	r0, r4
	bl	shader_addline
	ldr	r3, .L120+120
	mov	r0, r4
	ldr	r2, [r3]
	ldr	r1, .L120+124
	bl	shader_addline
	ldr	r3, [r5, #24]
	cmp	r3, #0
	bne	.L111
.L5:
	ldr	r3, [sp, #8]
	cmp	r3, #0
	bne	.L112
	ldr	r3, [r5, #52]
	cmp	r3, #0
	bne	.L113
.L12:
	mov	r1, r4
	ldr	r3, .L120+128
	ldr	r2, [r5, #56]
	mov	r0, r9
	bl	declare_out_varying
	mov	r1, r4
	ldr	r3, .L120+132
	ldr	r2, [r5, #56]
	mov	r0, r9
	bl	declare_out_varying
	ldr	r6, .L120+136
	ldr	r3, [fp]
	ldr	r2, [r6]
	mov	r1, r4
	str	r3, [sp]
	mov	r0, r9
	ldr	r3, .L120+140
	bl	declare_out_varying
	mov	r1, r4
	mov	r0, r9
	ldr	r2, [r6]
	ldr	r3, .L120+144
	bl	declare_out_varying
.L11:
	ldr	r1, .L120+148
	mov	r0, r4
	bl	shader_addline
	ldr	r10, .L120+8
	ldr	r1, .L120+152
	mov	r0, r4
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+156
	mov	r7, r10
	bl	shader_addline
	mov	r6, #0
	ldr	r8, .L120+160
	b	.L13
.L16:
	ldrb	r3, [r10, #6]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L14
	ldr	r3, [r5]
	ldr	r2, .L120+164
	lsr	r3, r3, r6
	tst	r3, #1
	ldr	r3, .L120+168
	mov	r1, r8
	movne	r2, r3
	mov	r0, r4
	str	r2, [sp, #4]
	str	r6, [sp]
	mov	r2, r10
	add	r3, r10, #6
	bl	shader_addline
.L14:
	add	r6, r6, #1
	add	r10, r10, #30
.L13:
	mov	r0, r7
	bl	ARRAY_SIZE
	cmp	r0, r6
	bhi	.L16
	mov	r0, r4
	ldr	r2, [r5, #12]
	ldr	r1, .L120+172
	bl	shader_addline
	ldr	r3, [r5, #28]
	cmp	r3, #0
	bne	.L114
	ldr	r6, [r5, #44]
	cmp	r6, #0
	bne	.L19
	ldr	r2, [r5, #12]
	cmp	r2, #0
	ldrne	r7, .L120+176
	beq	.L23
.L20:
	mov	r3, r6
	mov	r1, r7
	mov	r0, r4
	bl	shader_addline
	ldr	r2, [r5, #12]
	add	r6, r6, #1
	cmp	r2, r6
	bhi	.L20
.L23:
	mov	r0, r4
	ldr	r1, .L120+180
	bl	shader_addline
	ldr	r3, [r5, #12]
	cmn	r3, #1
	beq	.L24
	mov	r10, #0
	ldr	r8, .L120+184
	ldr	r7, .L120+188
	add	r6, sp, #28
.L21:
	ldr	r1, [r5, #40]
	ldr	r3, .L120+192
	cmp	r1, #0
	moveq	r3, r8
	mov	r2, r10
	mov	r1, r3
	mov	r0, r6
	bl	sprintf
	mov	r3, r6
	mov	r2, r10
	mov	r1, r7
	mov	r0, r4
	bl	shader_addline
	ldr	r3, [r5, #12]
	add	r10, r10, #1
	add	r3, r3, #1
	cmp	r3, r10
	bhi	.L21
.L24:
	mov	r0, r4
	ldr	r1, .L120+196
	bl	shader_addline
	ldr	r3, [r5, #52]
	cmp	r3, #0
	beq	.L27
	ldr	r3, [sp, #8]
	cmp	r3, #0
	bne	.L28
	ldr	r3, [r9, #4]
	cmp	r3, #0
	beq	.L27
	ldr	r6, [sp, #8]
	ldr	r7, .L120+200
.L29:
	mov	r3, r6
	mov	r2, r6
	mov	r1, r7
	mov	r0, r4
	bl	shader_addline
	ldr	r3, [r9, #4]
	add	r6, r6, #1
	cmp	r3, r6
	bhi	.L29
.L27:
	mov	r0, r4
	ldr	r1, .L120+204
	bl	shader_addline
.L18:
	mov	r0, r4
	ldr	r1, .L120+208
	bl	shader_addline
	ldr	r3, [r5, #48]
	cmp	r3, #0
	beq	.L32
	ldr	r10, [r5, #44]
	cmp	r10, #0
	bne	.L33
	ldr	r3, [r5, #12]
	cmn	r3, #1
	beq	.L35
	ldr	r8, .L120+184
	ldr	r7, .L120+212
	add	r6, sp, #28
.L34:
	ldr	r1, [r5, #40]
	ldr	r3, .L120+192
	cmp	r1, #0
	moveq	r3, r8
	mov	r2, r10
	mov	r1, r3
	mov	r0, r6
	bl	sprintf
	mov	r3, r6
	mov	r2, r10
	mov	r1, r7
	mov	r0, r4
	bl	shader_addline
	ldr	r3, [r5, #12]
	add	r10, r10, #1
	add	r3, r3, #1
	cmp	r3, r10
	bhi	.L34
.L35:
	ldr	r3, [r5, #36]
	cmp	r3, #0
	bne	.L115
.L32:
	mov	r1, r5
	mov	r0, r4
	ldr	r2, [sp, #12]
	bl	shader_glsl_ffp_vertex_lighting
	ldr	r3, [sp, #8]
	cmp	r3, #0
	beq	.L39
	ldr	r1, .L120+216
	mov	r0, r4
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+220
	bl	shader_addline
.L47:
	ldr	r3, [fp]
	cmp	r3, #0
	beq	.L59
	mov	r6, #0
	str	r9, [sp, #12]
	ldr	r8, .L120+224
	mov	r9, r6
	ldr	r7, .L120+228
	ldr	r10, .L120+232
	ldr	r6, [sp, #8]
.L40:
	ldr	r3, [r5, #4]
	ldr	r1, [r3, r9, lsl #2]
	lsr	r0, r1, #16
	lsl	r0, r0, #16
	sub	r0, r0, #132
	cmp	r0, #4
	ldrls	pc, [pc, r0, asl #2]
	b	.L48
.L50:
	.word	.L54
	.word	.L53
	.word	.L52
	.word	.L51
	.word	.L49
.L113:
	mov	r0, r4
	ldr	r2, [r9, #4]
	ldr	r1, .L120+236
	bl	shader_addline
	b	.L12
.L19:
	mov	r0, r4
	ldr	r1, .L120+240
	bl	shader_addline
	b	.L24
.L49:
	mov	r3, r9
	mov	r2, r9
	mov	r0, r4
	ldr	r1, .L120+244
	bl	shader_addline
	mov	r3, r6
.L56:
	cmp	r3, #0
	bne	.L116
.L58:
	ldr	r3, [fp]
	add	r9, r9, #1
	cmp	r3, r9
	bhi	.L40
	ldr	r9, [sp, #12]
.L59:
	ldr	r1, [r5, #16]
	sub	r3, r1, #128
	cmp	r3, #3
	ldrls	pc, [pc, r3, asl #2]
	b	.L41
.L43:
	.word	.L46
	.word	.L45
	.word	.L44
	.word	.L42
.L51:
	mov	r3, r9
	mov	r2, r9
	mov	r1, r10
	mov	r0, r4
	bl	shader_addline
	mov	r3, r6
	cmp	r3, #0
	beq	.L58
.L116:
	mov	r3, r9
	mov	r2, r9
	mov	r0, r4
	ldr	r1, .L120+248
	bl	shader_addline
	b	.L58
.L52:
	mov	r3, r9
	mov	r2, r9
	mov	r0, r4
	ldr	r1, .L120+252
	bl	shader_addline
	mov	r3, r6
	b	.L56
.L53:
	ldr	r3, [r5, #8]
	lsr	r3, r3, r9
	tst	r3, #1
	beq	.L55
	mov	r3, r9
	mov	r2, r9
	mov	r0, r4
	ldr	r1, .L120+256
	str	r9, [sp]
	bl	shader_addline
	mov	r3, r6
	b	.L56
.L54:
	mov	r1, r8
	mov	r0, r4
	bl	shader_addline
	mov	r1, r7
	mov	r0, r4
	bl	shader_addline
	mov	r3, r9
	mov	r2, r9
	mov	r0, r4
	ldr	r1, .L120+260
	bl	shader_addline
	mov	r3, r6
	b	.L56
.L42:
	ldr	r3, [r5, #32]
	cmp	r3, #0
	beq	.L61
	ldr	r2, .L120+264
	ldr	r3, [r9]
	ldr	r2, [r2]
	mov	r0, r4
	ldr	r3, [r3, r2, lsl #2]
	cmp	r3, #0
	ldrne	r1, .L120+268
	ldreq	r1, .L120+272
	bl	shader_addline
	ldr	r3, [sp, #8]
	cmp	r3, #0
	beq	.L64
.L117:
	mov	r0, r4
	ldr	r1, .L120+276
	bl	shader_addline
	b	.L64
.L44:
	mov	r0, r4
	ldr	r1, .L120+280
	bl	shader_addline
.L60:
	ldr	r3, [sp, #8]
	cmp	r3, #0
	bne	.L117
.L64:
	ldr	r3, [r5, #24]
	cmp	r3, #0
	beq	.L65
	ldr	r0, [r5, #20]
	ldr	r3, .L120+284
	cmp	r0, #0
	ldr	r2, .L120+288
	ldr	r1, .L120+292
	moveq	r2, r3
	mov	r0, r4
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+296
	bl	shader_addline
.L65:
	ldr	r1, .L120+300
	mov	r0, r4
	bl	shader_addline
	ldr	r3, .L120+304
	ldr	r0, [r3]
	bl	glCreateShader
	bl	GL_EXTCALL
	mov	r4, r0
	ldr	r3, [sp, #16]
	mov	r0, r9
	ldr	r2, [r3, #4]
	mov	r1, r4
	bl	shader_glsl_compile
	ldr	r3, .L120
	ldr	r2, [r3]
	ldr	r3, [sp, #92]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L118
	mov	r0, r4
	add	sp, sp, #100
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L45:
	ldr	r3, .L120+136
	ldr	r3, [r3]
	str	r3, [sp, #8]
	b	.L60
.L46:
	mov	r0, r4
	ldr	r1, .L120+308
	bl	shader_addline
	b	.L60
.L55:
	ldr	r3, [sp, #12]
	mov	r0, r3
	ldr	r3, [r3, #8]
	str	r3, [sp, #20]
	bl	wined3d_max_compat_varyings
	ldr	r3, [sp, #20]
	cmp	r3, r0
	bge	.L119
	ldr	r3, .L120+136
	ldr	r3, [r3]
	b	.L56
.L39:
	mov	r0, r4
	ldr	r1, .L120+312
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+316
	bl	shader_addline
	b	.L47
.L110:
	mov	r0, r4
	ldr	r1, .L120+320
	bl	shader_addline
	b	.L2
.L114:
	mov	r0, r4
	ldr	r1, .L120+324
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+196
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+328
	bl	shader_addline
	b	.L18
.L112:
	mov	r0, r4
	ldr	r1, .L120+128
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+132
	bl	shader_addline
	mov	r0, r4
	ldr	r2, [fp]
	ldr	r1, .L120+140
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+144
	bl	shader_addline
	b	.L11
.L111:
	mov	r0, r4
	ldr	r1, .L120+52
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+332
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+336
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+340
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+100
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+104
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+108
	bl	shader_addline
	mov	r0, r4
	ldr	r1, .L120+344
	bl	shader_addline
	b	.L5
.L119:
	mov	r2, r9
	mov	r0, r4
	ldr	r1, .L120+348
	bl	shader_addline
	mov	r3, r6
	b	.L56
.L61:
	ldr	r3, [r5, #28]
	mov	r0, r4
	cmp	r3, #0
	ldrne	r1, .L120+352
	ldreq	r1, .L120+356
	bl	shader_addline
	b	.L60
.L115:
	mov	r0, r4
	ldr	r1, .L120+360
	bl	shader_addline
	b	.L32
.L33:
	mov	r0, r4
	ldr	r1, .L120+364
	bl	shader_addline
	b	.L35
.L28:
	mov	r0, r4
	ldr	r1, .L120+368
	bl	shader_addline
	b	.L27
.L118:
	bl	__stack_chk_fail
.L48:
	ldr	r0, .L120+372
	bl	ERR
	mov	r3, r6
	b	.L56
.L41:
	ldr	r0, .L120+376
	bl	ERR
	b	.L60
.L121:
	.align	2
.L120:
	.word	.LC86
	.word	WINED3D_FFP_ATTRIBS_COUNT
	.word	.LANCHOR0
	.word	.LC32
	.word	.LC0
	.word	.LC31
	.word	MAX_VERTEX_INDEX_BLENDS
	.word	.LC8
	.word	.LC9
	.word	MAX_TEXTURES
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.word	.LC28
	.word	.LC29
	.word	MAX_ACTIVE_LIGHTS
	.word	.LC30
	.word	.LC37
	.word	.LC38
	.word	FALSE
	.word	.LC39
	.word	.LC40
	.word	.LC42
	.word	.LC43
	.word	.LC44
	.word	.LC45
	.word	.LC2
	.word	.LC1
	.word	.LC46
	.word	.LC51
	.word	.LC50
	.word	.LC4
	.word	.LC52
	.word	.LC3
	.word	.LC48
	.word	.LC55
	.word	.LC56
	.word	.LC57
	.word	.LC58
	.word	.LC61
	.word	.LC62
	.word	.LC70
	.word	.LC71
	.word	.LC68
	.word	.LC41
	.word	.LC53
	.word	.LC67
	.word	.LC74
	.word	.LC69
	.word	.LC65
	.word	.LC72
	.word	ARB_CLIP_CONTROL
	.word	.LC77
	.word	.LC78
	.word	.LC82
	.word	.LC75
	.word	.LC6
	.word	.LC5
	.word	.LC83
	.word	.LC84
	.word	.LC85
	.word	GL_VERTEX_SHADER
	.word	.LC76
	.word	.LC63
	.word	.LC64
	.word	.LC7
	.word	.LC47
	.word	.LC49
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC66
	.word	.LC79
	.word	.LC80
	.word	.LC60
	.word	.LC59
	.word	.LC54
	.word	.LC73
	.word	.LC81
	.size	shader_glsl_generate_ffp_vertex_shader, .-shader_glsl_generate_ffp_vertex_shader
	.comm	WINED3D_FFP_TEXCOORD0,4,4
	.comm	WINED3D_FFP_ATTRIBS_COUNT,4,4
	.comm	MAX_VERTEX_INDEX_BLENDS,4,4
	.comm	MAX_TEXTURES,4,4
	.comm	MAX_ACTIVE_LIGHTS,4,4
	.comm	GL_VERTEX_SHADER,4,4
	.comm	FALSE,4,4
	.comm	ARB_CLIP_CONTROL,4,4
	.section	.rodata
	.align	2
	.set	.LANCHOR0,. + 0
	.type	attrib_info.4291, %object
	.size	attrib_info.4291, 210
attrib_info.4291:
	.ascii	"vec4\000"
	.space	1
	.ascii	"ffp_attrib_position\000"
	.space	4
	.ascii	"vec4\000"
	.space	1
	.ascii	"ffp_attrib_blendweight\000"
	.space	1
	.ascii	"vec4\000"
	.space	1
	.ascii	"ffp_attrib_blendindices\000"
	.ascii	"vec3\000"
	.space	1
	.ascii	"ffp_attrib_normal\000"
	.space	6
	.ascii	"float\000"
	.ascii	"ffp_attrib_psize\000"
	.space	7
	.ascii	"vec4\000"
	.space	1
	.ascii	"ffp_attrib_diffuse\000"
	.space	5
	.ascii	"vec4\000"
	.space	1
	.ascii	"ffp_attrib_specular\000"
	.space	4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
