	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	4, 0x90                         ## -- Begin function parse_mesh
_parse_mesh:                            ## @parse_mesh
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$40, %rsp
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	movl	%edx, %r15d
	movq	%rsi, %r14
	movq	%rdi, %r12
	movq	$0, -48(%rbp)
	movq	(%rdi), %rax
	leaq	-68(%rbp), %rsi
	leaq	-80(%rbp), %rdx
	callq	*32(%rax)
	movl	%eax, %ebx
	movl	%eax, %edi
	callq	_FAILED
	testq	%rax, %rax
	jne	LBB0_7
## %bb.1:
	movq	_E_FAIL@GOTPCREL(%rip), %rax
	movl	(%rax), %ebx
	movslq	-68(%rbp), %rsi
	cmpq	$7, %rsi
	jbe	LBB0_3
## %bb.2:
	movq	-80(%rbp), %r11
	movslq	(%r11), %r8
	movl	%r8d, (%r14)
	leaq	8(,%r8,4), %rax
	cmpq	%rsi, %rax
	jbe	LBB0_8
LBB0_3:
	leaq	L_.str(%rip), %rdi
                                        ## kill: def $esi killed $esi killed $rsi
	xorl	%eax, %eax
	callq	_WARN
LBB0_4:
	movq	-48(%rbp), %rdi
	testq	%rdi, %rdi
	je	LBB0_6
## %bb.5:
	callq	_IUnknown_Release
LBB0_6:
	movq	(%r12), %rax
	movq	%r12, %rdi
	callq	*(%rax)
LBB0_7:
	movl	%ebx, %eax
	addq	$40, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
LBB0_8:
	movq	%r8, %rax
	shlq	$2, %rax
	movl	16(%r11,%rax,4), %r10d
	movl	%r10d, 4(%r14)
	movl	$0, 8(%r14)
	testl	%r10d, %r10d
	jle	LBB0_17
## %bb.9:
	leaq	(%r11,%rax,4), %rdi
	addq	$16, %rdi
	addq	$16, %rdi
	xorl	%r13d, %r13d
	xorl	%r9d, %r9d
LBB0_10:                                ## =>This Loop Header: Depth=1
                                        ##     Child Loop BB0_14 Depth 2
	movq	%rdi, %rax
	subq	%r11, %rax
	sarq	$2, %rax
	movq	%rsi, %rcx
	subq	%rax, %rcx
	cmpq	$3, %rcx
	jbe	LBB0_3
## %bb.11:                              ##   in Loop: Header=BB0_10 Depth=1
	movslq	(%rdi), %rdx
	addq	$16, %rdi
	movq	%rdi, %rax
	subq	%r11, %rax
	sarq	$2, %rax
	movq	%rsi, %rcx
	subq	%rax, %rcx
	leaq	(,%rdx,4), %rax
	cmpq	%rax, %rcx
	jb	LBB0_3
## %bb.12:                              ##   in Loop: Header=BB0_10 Depth=1
	cmpl	$3, %edx
	jl	LBB0_64
## %bb.13:                              ##   in Loop: Header=BB0_10 Depth=1
	xorl	%eax, %eax
	.p2align	4, 0x90
LBB0_14:                                ##   Parent Loop BB0_10 Depth=1
                                        ## =>  This Inner Loop Header: Depth=2
	movl	(%rdi), %ecx
	cmpl	%r8d, %ecx
	jge	LBB0_36
## %bb.15:                              ##   in Loop: Header=BB0_14 Depth=2
	addq	$16, %rdi
	incl	%eax
	cmpl	%eax, %edx
	jne	LBB0_14
## %bb.16:                              ##   in Loop: Header=BB0_10 Depth=1
	addl	%edx, %r13d
	addl	$-2, %r13d
	movl	%r13d, 8(%r14)
	incl	%r9d
	cmpl	%r10d, %r9d
	jne	LBB0_10
LBB0_17:
	movq	_D3DFVF_XYZ@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 56(%r14)
	xorl	%eax, %eax
	callq	_GetProcessHeap
	movl	(%r14), %edx
	movl	%eax, %edi
	xorl	%esi, %esi
	callq	_HeapAlloc
	movq	%rax, 48(%r14)
	xorl	%eax, %eax
	callq	_GetProcessHeap
	movl	4(%r14), %edx
	shll	$2, %edx
	movl	%eax, %edi
	xorl	%esi, %esi
	callq	_HeapAlloc
	movq	%rax, 16(%r14)
	xorl	%eax, %eax
	callq	_GetProcessHeap
	movl	4(%r14), %edx
	addl	%edx, %edx
	addl	8(%r14), %edx
	shll	$2, %edx
	movl	%eax, %edi
	xorl	%esi, %esi
	callq	_HeapAlloc
	movq	%rax, 24(%r14)
	movq	48(%r14), %rdi
	testq	%rdi, %rdi
	je	LBB0_37
## %bb.18:
	cmpq	$0, 16(%r14)
	je	LBB0_37
## %bb.19:
	testq	%rax, %rax
	je	LBB0_37
## %bb.20:
	movq	-80(%rbp), %rbx
	addq	$16, %rbx
	movl	(%r14), %edx
	shll	$2, %edx
	movq	%rbx, %rsi
	callq	_memcpy
	cmpl	$0, 4(%r14)
	jle	LBB0_39
## %bb.21:
	movq	16(%r14), %r9
	movq	24(%r14), %rsi
	movslq	(%r14), %rax
	shlq	$4, %rax
	leaq	(%rax,%rbx), %rdx
	addq	$16, %rdx
	xorl	%r11d, %r11d
	movl	$8, %r8d
	jmp	LBB0_23
	.p2align	4, 0x90
LBB0_22:                                ##   in Loop: Header=BB0_23 Depth=1
	incq	%r11
	movslq	4(%r14), %rax
	movq	%rbx, %rdx
	cmpq	%rax, %r11
	jge	LBB0_39
LBB0_23:                                ## =>This Loop Header: Depth=1
                                        ##     Child Loop BB0_28 Depth 2
                                        ##     Child Loop BB0_32 Depth 2
                                        ##     Child Loop BB0_35 Depth 2
	movl	(%rdx), %edi
	leal	-2(%rdi), %eax
	movl	%eax, (%r9,%r11,4)
	leaq	16(%rdx), %rbx
	testl	%edi, %edi
	je	LBB0_22
## %bb.24:                              ##   in Loop: Header=BB0_23 Depth=1
	leal	-1(%rdi), %eax
	cmpl	$8, %eax
	jb	LBB0_30
## %bb.25:                              ##   in Loop: Header=BB0_23 Depth=1
	movq	%rax, %rcx
	shlq	$4, %rcx
	addq	%rdx, %rcx
	addq	$20, %rcx
	cmpq	%rcx, %rsi
	jae	LBB0_27
## %bb.26:                              ##   in Loop: Header=BB0_23 Depth=1
	leaq	(%rsi,%rax,4), %rcx
	addq	$4, %rcx
	cmpq	%rcx, %rbx
	jb	LBB0_30
LBB0_27:                                ##   in Loop: Header=BB0_23 Depth=1
	incq	%rax
	movl	%eax, %ecx
	andl	$7, %ecx
	testq	%rcx, %rcx
	cmoveq	%r8, %rcx
	subq	%rcx, %rax
	movq	%rax, %rcx
	shlq	$4, %rcx
	addq	%rcx, %rbx
	subl	%eax, %edi
	leaq	(%rsi,%rax,4), %r10
	addq	$80, %rdx
	xorl	%ecx, %ecx
	.p2align	4, 0x90
LBB0_28:                                ##   Parent Loop BB0_23 Depth=1
                                        ## =>  This Inner Loop Header: Depth=2
	movups	-64(%rdx), %xmm0
	movups	-48(%rdx), %xmm1
	unpcklps	%xmm1, %xmm0                    ## xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
	movups	-32(%rdx), %xmm1
	movups	-16(%rdx), %xmm2
	unpcklps	%xmm2, %xmm1                    ## xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
	movlhps	%xmm1, %xmm0                    ## xmm0 = xmm0[0],xmm1[0]
	movups	16(%rdx), %xmm1
	movups	(%rdx), %xmm2
	unpcklps	%xmm1, %xmm2                    ## xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
	movups	48(%rdx), %xmm1
	movups	32(%rdx), %xmm3
	unpcklps	%xmm1, %xmm3                    ## xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
	movlhps	%xmm3, %xmm2                    ## xmm2 = xmm2[0],xmm3[0]
	movups	%xmm0, (%rsi,%rcx,4)
	movups	%xmm2, 16(%rsi,%rcx,4)
	addq	$8, %rcx
	subq	$-128, %rdx
	cmpq	%rcx, %rax
	jne	LBB0_28
## %bb.29:                              ##   in Loop: Header=BB0_23 Depth=1
	movq	%r10, %rsi
LBB0_30:                                ##   in Loop: Header=BB0_23 Depth=1
	leal	-1(%rdi), %r10d
	movl	%edi, %ecx
	andl	$7, %ecx
	je	LBB0_34
## %bb.31:                              ##   in Loop: Header=BB0_23 Depth=1
	xorl	%edx, %edx
	.p2align	4, 0x90
LBB0_32:                                ##   Parent Loop BB0_23 Depth=1
                                        ## =>  This Inner Loop Header: Depth=2
	movl	(%rbx), %eax
	movl	%eax, (%rsi)
	addq	$4, %rsi
	addq	$16, %rbx
	incl	%edx
	cmpl	%edx, %ecx
	jne	LBB0_32
## %bb.33:                              ##   in Loop: Header=BB0_23 Depth=1
	subl	%edx, %edi
LBB0_34:                                ##   in Loop: Header=BB0_23 Depth=1
	cmpl	$7, %r10d
	jb	LBB0_22
	.p2align	4, 0x90
LBB0_35:                                ##   Parent Loop BB0_23 Depth=1
                                        ## =>  This Inner Loop Header: Depth=2
	movl	(%rbx), %eax
	movl	%eax, (%rsi)
	movl	16(%rbx), %eax
	movl	%eax, 4(%rsi)
	movl	32(%rbx), %eax
	movl	%eax, 8(%rsi)
	movl	48(%rbx), %eax
	movl	%eax, 12(%rsi)
	movl	64(%rbx), %eax
	movl	%eax, 16(%rsi)
	movl	80(%rbx), %eax
	movl	%eax, 20(%rsi)
	movl	96(%rbx), %eax
	movl	%eax, 24(%rsi)
	movl	112(%rbx), %eax
	movl	%eax, 28(%rsi)
	addq	$32, %rsi
	addq	$128, %rbx
	addl	$-8, %edi
	jne	LBB0_35
	jmp	LBB0_22
LBB0_36:
	leaq	L_.str.2(%rip), %rdi
	movl	%r9d, %esi
	movl	%eax, %edx
                                        ## kill: def $r8d killed $r8d killed $r8
	xorl	%eax, %eax
	callq	_WARN
	jmp	LBB0_4
LBB0_37:
	movq	_E_OUTOFMEMORY@GOTPCREL(%rip), %rax
LBB0_38:
	movl	(%rax), %ebx
	jmp	LBB0_4
LBB0_39:
	movq	(%r12), %rax
	leaq	-56(%rbp), %rsi
	movq	%r12, %rdi
	callq	*24(%rax)
	movl	%eax, %ebx
	movl	%eax, %edi
	callq	_FAILED
	testq	%rax, %rax
	jne	LBB0_4
## %bb.40:
	cmpl	$0, -56(%rbp)
	jle	LBB0_65
## %bb.41:
	movl	$0, -52(%rbp)                   ## 4-byte Folded Spill
	xorl	%esi, %esi
LBB0_42:                                ## =>This Inner Loop Header: Depth=1
	movq	(%r12), %rax
	movq	%r12, %rdi
	movl	%esi, -64(%rbp)                 ## 4-byte Spill
	leaq	-48(%rbp), %rdx
	callq	*16(%rax)
	movl	%eax, %ebx
	movl	%eax, %edi
	callq	_FAILED
	testq	%rax, %rax
	jne	LBB0_4
## %bb.43:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	-48(%rbp), %rdi
	movq	(%rdi), %rax
	leaq	-60(%rbp), %r13
	movq	%r13, %rsi
	callq	*8(%rax)
	movl	%eax, %ebx
	movl	%eax, %edi
	callq	_FAILED
	testq	%rax, %rax
	jne	LBB0_4
## %bb.44:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	%r13, %rdi
	movq	_TID_D3DRMMeshNormals@GOTPCREL(%rip), %rsi
	callq	_IsEqualGUID
	testq	%rax, %rax
	je	LBB0_46
## %bb.45:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	-48(%rbp), %rdi
	movq	%r14, %rsi
	callq	_parse_normals
	jmp	LBB0_50
LBB0_46:                                ##   in Loop: Header=BB0_42 Depth=1
	movq	%r13, %rdi
	movq	_TID_D3DRMMeshVertexColors@GOTPCREL(%rip), %rsi
	callq	_IsEqualGUID
	testq	%rax, %rax
	je	LBB0_48
## %bb.47:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	-48(%rbp), %rdi
	movq	%r14, %rsi
	callq	_parse_vertex_colors
	jmp	LBB0_50
LBB0_48:                                ##   in Loop: Header=BB0_42 Depth=1
	movq	%r13, %rdi
	movq	_TID_D3DRMMeshTextureCoords@GOTPCREL(%rip), %rsi
	callq	_IsEqualGUID
	testq	%rax, %rax
	je	LBB0_53
## %bb.49:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	-48(%rbp), %rdi
	movq	%r14, %rsi
	callq	_parse_texture_coords
LBB0_50:                                ##   in Loop: Header=BB0_42 Depth=1
	movl	%eax, %ebx
LBB0_51:                                ##   in Loop: Header=BB0_42 Depth=1
	movl	%ebx, %edi
	callq	_FAILED
	testq	%rax, %rax
	jne	LBB0_4
## %bb.52:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	-48(%rbp), %rdi
	callq	_IUnknown_Release
	movq	$0, -48(%rbp)
	movl	-64(%rbp), %esi                 ## 4-byte Reload
	incl	%esi
	cmpl	-56(%rbp), %esi
	jl	LBB0_42
	jmp	LBB0_66
LBB0_53:                                ##   in Loop: Header=BB0_42 Depth=1
	movq	%r13, %rdi
	movq	_TID_D3DRMMeshMaterialList@GOTPCREL(%rip), %rsi
	callq	_IsEqualGUID
	testq	%rax, %rax
	je	LBB0_56
## %bb.54:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	_PROVIDE_MATERIALS@GOTPCREL(%rip), %rax
	testl	%r15d, (%rax)
	je	LBB0_56
## %bb.55:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	-48(%rbp), %rdi
	movq	%r14, %rsi
	callq	_parse_material_list
	jmp	LBB0_50
LBB0_56:                                ##   in Loop: Header=BB0_42 Depth=1
	movq	_PROVIDE_SKININFO@GOTPCREL(%rip), %rax
	testl	%r15d, (%rax)
	je	LBB0_51
## %bb.57:                              ##   in Loop: Header=BB0_42 Depth=1
	leaq	-60(%rbp), %rdi
	movq	_DXFILEOBJ_XSkinMeshHeader@GOTPCREL(%rip), %rsi
	callq	_IsEqualGUID
	testq	%rax, %rax
	je	LBB0_60
## %bb.58:                              ##   in Loop: Header=BB0_42 Depth=1
	cmpq	$0, 40(%r14)
	jne	LBB0_72
## %bb.59:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	-48(%rbp), %rdi
	movq	%r14, %rsi
	xorl	%edx, %edx
	callq	_parse_skin_mesh_info
	movl	%eax, %ebx
	movl	%eax, %edi
	callq	_FAILED
	testq	%rax, %rax
	je	LBB0_51
	jmp	LBB0_4
LBB0_60:                                ##   in Loop: Header=BB0_42 Depth=1
	leaq	-60(%rbp), %rdi
	movq	_DXFILEOBJ_SkinWeights@GOTPCREL(%rip), %rsi
	callq	_IsEqualGUID
	testq	%rax, %rax
	je	LBB0_51
## %bb.61:                              ##   in Loop: Header=BB0_42 Depth=1
	cmpq	$0, 40(%r14)
	je	LBB0_73
## %bb.62:                              ##   in Loop: Header=BB0_42 Depth=1
	movq	-48(%rbp), %rdi
	movq	%r14, %rsi
	movl	-52(%rbp), %r13d                ## 4-byte Reload
	movl	%r13d, %edx
	callq	_parse_skin_mesh_info
	movl	%eax, %ebx
	movl	%eax, %edi
	callq	_FAILED
	testq	%rax, %rax
	jne	LBB0_4
## %bb.63:                              ##   in Loop: Header=BB0_42 Depth=1
	incl	%r13d
	movl	%r13d, -52(%rbp)                ## 4-byte Spill
	jmp	LBB0_51
LBB0_64:
	leaq	L_.str.1(%rip), %rdi
	movl	%r9d, %esi
                                        ## kill: def $edx killed $edx killed $rdx
	xorl	%eax, %eax
	callq	_WARN
	jmp	LBB0_4
LBB0_65:
	movl	$0, -52(%rbp)                   ## 4-byte Folded Spill
LBB0_66:
	cmpq	$0, 40(%r14)
	je	LBB0_69
## %bb.67:
	movl	32(%r14), %edx
	cmpl	%edx, -52(%rbp)                 ## 4-byte Folded Reload
	je	LBB0_71
## %bb.68:
	leaq	L_.str.5(%rip), %rdi
	movl	-52(%rbp), %esi                 ## 4-byte Reload
	xorl	%eax, %eax
	callq	_WARN
	movq	_E_FAIL@GOTPCREL(%rip), %rax
	jmp	LBB0_38
LBB0_69:
	movq	_PROVIDE_SKININFO@GOTPCREL(%rip), %rax
	testl	%r15d, (%rax)
	je	LBB0_71
## %bb.70:
	addq	$40, %r14
	movq	%r14, %rdi
	callq	_create_dummy_skin
	movl	%eax, %ebx
	movl	%eax, %edi
	callq	_FAILED
	testq	%rax, %rax
	jne	LBB0_4
LBB0_71:
	movq	_D3D_OK@GOTPCREL(%rip), %rax
	jmp	LBB0_38
LBB0_72:
	leaq	L_.str.3(%rip), %rdi
	jmp	LBB0_74
LBB0_73:
	leaq	L_.str.4(%rip), %rdi
LBB0_74:
	xorl	%eax, %eax
	callq	_WARN
	movq	_E_FAIL@GOTPCREL(%rip), %rax
	jmp	LBB0_38
	.cfi_endproc
                                        ## -- End function
	.comm	_E_FAIL,4,2                     ## @E_FAIL
	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"truncated data (%ld bytes)\n"

L_.str.1:                               ## @.str.1
	.asciz	"face %u has only %u vertices\n"

L_.str.2:                               ## @.str.2
	.asciz	"face %u, index %u: undefined vertex %u (only %u vertices)\n"

	.comm	_D3DFVF_XYZ,4,2                 ## @D3DFVF_XYZ
	.comm	_E_OUTOFMEMORY,4,2              ## @E_OUTOFMEMORY
	.comm	_TID_D3DRMMeshNormals,4,2       ## @TID_D3DRMMeshNormals
	.comm	_TID_D3DRMMeshVertexColors,4,2  ## @TID_D3DRMMeshVertexColors
	.comm	_TID_D3DRMMeshTextureCoords,4,2 ## @TID_D3DRMMeshTextureCoords
	.comm	_TID_D3DRMMeshMaterialList,4,2  ## @TID_D3DRMMeshMaterialList
	.comm	_PROVIDE_MATERIALS,4,2          ## @PROVIDE_MATERIALS
	.comm	_PROVIDE_SKININFO,4,2           ## @PROVIDE_SKININFO
	.comm	_DXFILEOBJ_XSkinMeshHeader,4,2  ## @DXFILEOBJ_XSkinMeshHeader
L_.str.3:                               ## @.str.3
	.asciz	"Skin mesh header already encountered\n"

	.comm	_DXFILEOBJ_SkinWeights,4,2      ## @DXFILEOBJ_SkinWeights
L_.str.4:                               ## @.str.4
	.asciz	"Skin weights found but skin mesh header not encountered yet\n"

L_.str.5:                               ## @.str.5
	.asciz	"Mismatch between nb skin weights info %u encountered and nb bones %u from skin mesh header\n"

	.comm	_D3D_OK,4,2                     ## @D3D_OK
	.no_dead_strip	_parse_mesh
.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	2                               ; -- Begin function parse_mesh
_parse_mesh:                            ; @parse_mesh
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #176
	.cfi_def_cfa_offset 176
	stp	x28, x27, [sp, #80]             ; 16-byte Folded Spill
	stp	x26, x25, [sp, #96]             ; 16-byte Folded Spill
	stp	x24, x23, [sp, #112]            ; 16-byte Folded Spill
	stp	x22, x21, [sp, #128]            ; 16-byte Folded Spill
	stp	x20, x19, [sp, #144]            ; 16-byte Folded Spill
	stp	x29, x30, [sp, #160]            ; 16-byte Folded Spill
	add	x29, sp, #160
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	.cfi_offset w19, -24
	.cfi_offset w20, -32
	.cfi_offset w21, -40
	.cfi_offset w22, -48
	.cfi_offset w23, -56
	.cfi_offset w24, -64
	.cfi_offset w25, -72
	.cfi_offset w26, -80
	.cfi_offset w27, -88
	.cfi_offset w28, -96
	mov	x20, x2
	mov	x21, x1
	mov	x19, x0
	str	xzr, [sp, #48]
	ldr	x8, [x0]
	ldr	x8, [x8, #32]
	add	x1, sp, #76
	add	x2, sp, #64
	blr	x8
	mov	x22, x0
	bl	_FAILED
	cbnz	x0, LBB0_8
; %bb.1:
Lloh0:
	adrp	x28, _E_FAIL@GOTPAGE
Lloh1:
	ldr	x28, [x28, _E_FAIL@GOTPAGEOFF]
	ldr	w22, [x28]
	ldrsw	x8, [sp, #76]
	cmp	w8, #7
	b.ls	LBB0_3
; %bb.2:
	ldr	x9, [sp, #64]
	ldrsw	x10, [x9]
	str	w10, [x21]
	lsl	x11, x10, #2
	add	x12, x11, #8
	cmp	x12, x8
	b.ls	LBB0_9
LBB0_3:
	str	x8, [sp]
Lloh2:
	adrp	x0, l_.str@PAGE
Lloh3:
	add	x0, x0, l_.str@PAGEOFF
LBB0_4:
	bl	_WARN
LBB0_5:
	ldr	x0, [sp, #48]
	cbz	x0, LBB0_7
; %bb.6:
	bl	_IUnknown_Release
LBB0_7:
	ldr	x8, [x19]
	ldr	x8, [x8]
	mov	x0, x19
	blr	x8
LBB0_8:
	mov	x0, x22
	ldp	x29, x30, [sp, #160]            ; 16-byte Folded Reload
	ldp	x20, x19, [sp, #144]            ; 16-byte Folded Reload
	ldp	x22, x21, [sp, #128]            ; 16-byte Folded Reload
	ldp	x24, x23, [sp, #112]            ; 16-byte Folded Reload
	ldp	x26, x25, [sp, #96]             ; 16-byte Folded Reload
	ldp	x28, x27, [sp, #80]             ; 16-byte Folded Reload
	add	sp, sp, #176
	ret
LBB0_9:
	add	x14, x9, x11, lsl #2
	ldr	w12, [x14, #16]!
	stp	w12, wzr, [x21, #4]
	cmp	w12, #1
	b.lt	LBB0_18
; %bb.10:
	mov	w13, #0
	mov	w11, #0
	add	x14, x14, #16
LBB0_11:                                ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB0_15 Depth 2
	sub	x15, x14, x9
	sub	x15, x8, x15, asr #2
	cmp	x15, #3
	b.ls	LBB0_3
; %bb.12:                               ;   in Loop: Header=BB0_11 Depth=1
	mov	x16, x14
	ldrsw	x15, [x16], #16
	sub	x17, x16, x9
	sub	x17, x8, x17, asr #2
	cmp	x17, x15, lsl #2
	b.lo	LBB0_3
; %bb.13:                               ;   in Loop: Header=BB0_11 Depth=1
	cmp	w15, #3
	b.lt	LBB0_59
; %bb.14:                               ;   in Loop: Header=BB0_11 Depth=1
	mov	w17, #0
	sub	w0, w15, #1
	add	x14, x14, w0, uxtw #4
	add	x14, x14, #32
LBB0_15:                                ;   Parent Loop BB0_11 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	ldr	w0, [x16]
	cmp	w0, w10
	b.ge	LBB0_31
; %bb.16:                               ;   in Loop: Header=BB0_15 Depth=2
	add	x16, x16, #16
	add	w17, w17, #1
	cmp	w15, w17
	b.ne	LBB0_15
; %bb.17:                               ;   in Loop: Header=BB0_11 Depth=1
	add	w13, w15, w13
	sub	w13, w13, #2
	str	w13, [x21, #8]
	add	w11, w11, #1
	cmp	w11, w12
	b.ne	LBB0_11
LBB0_18:
Lloh4:
	adrp	x8, _D3DFVF_XYZ@GOTPAGE
Lloh5:
	ldr	x8, [x8, _D3DFVF_XYZ@GOTPAGEOFF]
Lloh6:
	ldr	w8, [x8]
	str	w8, [x21, #56]
	bl	_GetProcessHeap
	ldr	w2, [x21]
	mov	w1, #0
	bl	_HeapAlloc
	str	x0, [x21, #48]
	bl	_GetProcessHeap
	ldr	w8, [x21, #4]
	lsl	w2, w8, #2
	mov	w1, #0
	bl	_HeapAlloc
	str	x0, [x21, #16]
	bl	_GetProcessHeap
	ldp	w9, w8, [x21, #4]
	add	w8, w8, w9, lsl #1
	lsl	w2, w8, #2
	mov	w1, #0
	bl	_HeapAlloc
	mov	x8, x0
	str	x0, [x21, #24]
	ldr	x0, [x21, #48]
	cbz	x0, LBB0_32
; %bb.19:
	ldr	x9, [x21, #16]
	cbz	x9, LBB0_32
; %bb.20:
	cbz	x8, LBB0_32
; %bb.21:
	ldr	x8, [sp, #64]
	add	x22, x8, #16
	ldr	w8, [x21]
	lsl	w2, w8, #2
	mov	x1, x22
	bl	_memcpy
	ldr	w8, [x21, #4]
	cmp	w8, #1
	b.lt	LBB0_34
; %bb.22:
	mov	x8, #0
	ldrsw	x9, [x21]
	add	x9, x22, x9, lsl #4
	add	x14, x9, #16
	ldp	x9, x13, [x21, #16]
	mov	w10, #16
	mov	x11, x14
	b	LBB0_24
LBB0_23:                                ;   in Loop: Header=BB0_24 Depth=1
	add	x8, x8, #1
	ldrsw	x12, [x21, #4]
	mov	x14, x11
	cmp	x8, x12
	b.ge	LBB0_34
LBB0_24:                                ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB0_28 Depth 2
                                        ;     Child Loop BB0_30 Depth 2
	ldr	w12, [x11], #16
	sub	w15, w12, #2
	str	w15, [x9, x8, lsl #2]
	cbz	w12, LBB0_23
; %bb.25:                               ;   in Loop: Header=BB0_24 Depth=1
	sub	w15, w12, #1
	cmp	w15, #16
	b.lo	LBB0_30
; %bb.26:                               ;   in Loop: Header=BB0_24 Depth=1
	add	x16, x13, w15, uxtw #2
	add	x16, x16, #4
	add	x17, x14, w15, uxtw #4
	add	x17, x17, #20
	cmp	x13, x17
	ccmp	x11, x16, #2, lo
	b.lo	LBB0_30
; %bb.27:                               ;   in Loop: Header=BB0_24 Depth=1
	add	x15, x15, #1
	ands	x16, x15, #0xf
	csel	x16, x10, x16, eq
	sub	x15, x15, x16
	sub	w12, w12, w15
	add	x11, x11, x15, lsl #4
	add	x16, x13, x15, lsl #2
	add	x14, x14, #144
	add	x13, x13, #32
LBB0_28:                                ;   Parent Loop BB0_24 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	sub	x17, x14, #128
	sub	x0, x14, #64
	ld4.4s	{ v0, v1, v2, v3 }, [x17]
	ld4.4s	{ v4, v5, v6, v7 }, [x0]
	add	x17, x14, #256
	ld4.4s	{ v16, v17, v18, v19 }, [x14], #64
	ld4.4s	{ v20, v21, v22, v23 }, [x14]
	stp	q0, q4, [x13, #-32]
	stp	q16, q20, [x13], #64
	mov	x14, x17
	subs	x15, x15, #16
	b.ne	LBB0_28
; %bb.29:                               ;   in Loop: Header=BB0_24 Depth=1
	mov	x13, x16
LBB0_30:                                ;   Parent Loop BB0_24 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	ldr	w14, [x11], #16
	str	w14, [x13], #4
	subs	w12, w12, #1
	b.ne	LBB0_30
	b	LBB0_23
LBB0_31:
                                        ; kill: def $w10 killed $w10 killed $x10 def $x10
	stp	x0, x10, [sp, #16]
                                        ; kill: def $w11 killed $w11 killed $x11 def $x11
	stp	x11, x17, [sp]
Lloh7:
	adrp	x0, l_.str.2@PAGE
Lloh8:
	add	x0, x0, l_.str.2@PAGEOFF
	b	LBB0_4
LBB0_32:
Lloh9:
	adrp	x8, _E_OUTOFMEMORY@GOTPAGE
Lloh10:
	ldr	x8, [x8, _E_OUTOFMEMORY@GOTPAGEOFF]
LBB0_33:
	ldr	w22, [x8]
	b	LBB0_5
LBB0_34:
	ldr	x8, [x19]
	ldr	x8, [x8, #24]
	add	x1, sp, #44
	mov	x0, x19
	blr	x8
	mov	x22, x0
	bl	_FAILED
	cbnz	x0, LBB0_5
; %bb.35:
	ldr	w8, [sp, #44]
	cmp	w8, #1
	b.lt	LBB0_60
; %bb.36:
	mov	w23, #0
	mov	w24, #0
Lloh11:
	adrp	x25, _TID_D3DRMMeshNormals@GOTPAGE
Lloh12:
	ldr	x25, [x25, _TID_D3DRMMeshNormals@GOTPAGEOFF]
Lloh13:
	adrp	x26, _TID_D3DRMMeshVertexColors@GOTPAGE
Lloh14:
	ldr	x26, [x26, _TID_D3DRMMeshVertexColors@GOTPAGEOFF]
Lloh15:
	adrp	x27, _TID_D3DRMMeshTextureCoords@GOTPAGE
Lloh16:
	ldr	x27, [x27, _TID_D3DRMMeshTextureCoords@GOTPAGEOFF]
LBB0_37:                                ; =>This Inner Loop Header: Depth=1
	ldr	x8, [x19]
	ldr	x8, [x8, #16]
	add	x2, sp, #48
	mov	x0, x19
	mov	x1, x24
	blr	x8
	mov	x22, x0
	bl	_FAILED
	cbnz	x0, LBB0_5
; %bb.38:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x0, [sp, #48]
	ldr	x8, [x0]
	ldr	x8, [x8, #8]
	add	x1, sp, #60
	blr	x8
	mov	x22, x0
	bl	_FAILED
	cbnz	x0, LBB0_5
; %bb.39:                               ;   in Loop: Header=BB0_37 Depth=1
	add	x0, sp, #60
	mov	x1, x25
	bl	_IsEqualGUID
	cbz	x0, LBB0_41
; %bb.40:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x0, [sp, #48]
	mov	x1, x21
	bl	_parse_normals
	b	LBB0_45
LBB0_41:                                ;   in Loop: Header=BB0_37 Depth=1
	add	x0, sp, #60
	mov	x1, x26
	bl	_IsEqualGUID
	cbz	x0, LBB0_43
; %bb.42:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x0, [sp, #48]
	mov	x1, x21
	bl	_parse_vertex_colors
	b	LBB0_45
LBB0_43:                                ;   in Loop: Header=BB0_37 Depth=1
	add	x0, sp, #60
	mov	x1, x27
	bl	_IsEqualGUID
	cbz	x0, LBB0_48
; %bb.44:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x0, [sp, #48]
	mov	x1, x21
	bl	_parse_texture_coords
LBB0_45:                                ;   in Loop: Header=BB0_37 Depth=1
	mov	x22, x0
LBB0_46:                                ;   in Loop: Header=BB0_37 Depth=1
	mov	x0, x22
	bl	_FAILED
	cbnz	x0, LBB0_5
; %bb.47:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x0, [sp, #48]
	bl	_IUnknown_Release
	str	xzr, [sp, #48]
	add	w24, w24, #1
	ldr	w8, [sp, #44]
	cmp	w24, w8
	b.lt	LBB0_37
	b	LBB0_61
LBB0_48:                                ;   in Loop: Header=BB0_37 Depth=1
	add	x0, sp, #60
Lloh17:
	adrp	x1, _TID_D3DRMMeshMaterialList@GOTPAGE
Lloh18:
	ldr	x1, [x1, _TID_D3DRMMeshMaterialList@GOTPAGEOFF]
	bl	_IsEqualGUID
	cbz	x0, LBB0_51
; %bb.49:                               ;   in Loop: Header=BB0_37 Depth=1
Lloh19:
	adrp	x8, _PROVIDE_MATERIALS@GOTPAGE
Lloh20:
	ldr	x8, [x8, _PROVIDE_MATERIALS@GOTPAGEOFF]
Lloh21:
	ldr	w8, [x8]
	tst	w8, w20
	b.eq	LBB0_51
; %bb.50:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x0, [sp, #48]
	mov	x1, x21
	bl	_parse_material_list
	b	LBB0_45
LBB0_51:                                ;   in Loop: Header=BB0_37 Depth=1
Lloh22:
	adrp	x8, _PROVIDE_SKININFO@GOTPAGE
Lloh23:
	ldr	x8, [x8, _PROVIDE_SKININFO@GOTPAGEOFF]
Lloh24:
	ldr	w8, [x8]
	tst	w8, w20
	b.eq	LBB0_46
; %bb.52:                               ;   in Loop: Header=BB0_37 Depth=1
	add	x0, sp, #60
Lloh25:
	adrp	x1, _DXFILEOBJ_XSkinMeshHeader@GOTPAGE
Lloh26:
	ldr	x1, [x1, _DXFILEOBJ_XSkinMeshHeader@GOTPAGEOFF]
	bl	_IsEqualGUID
	cbz	x0, LBB0_55
; %bb.53:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x8, [x21, #40]
	cbnz	x8, LBB0_68
; %bb.54:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x0, [sp, #48]
	mov	x1, x21
	mov	w2, #0
	bl	_parse_skin_mesh_info
	mov	x22, x0
	bl	_FAILED
	cbz	x0, LBB0_46
	b	LBB0_5
LBB0_55:                                ;   in Loop: Header=BB0_37 Depth=1
	add	x0, sp, #60
Lloh27:
	adrp	x1, _DXFILEOBJ_SkinWeights@GOTPAGE
Lloh28:
	ldr	x1, [x1, _DXFILEOBJ_SkinWeights@GOTPAGEOFF]
	bl	_IsEqualGUID
	cbz	x0, LBB0_46
; %bb.56:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x8, [x21, #40]
	cbz	x8, LBB0_69
; %bb.57:                               ;   in Loop: Header=BB0_37 Depth=1
	ldr	x0, [sp, #48]
	mov	x1, x21
	mov	x2, x23
	bl	_parse_skin_mesh_info
	mov	x22, x0
	bl	_FAILED
	cbnz	x0, LBB0_5
; %bb.58:                               ;   in Loop: Header=BB0_37 Depth=1
	add	w23, w23, #1
	b	LBB0_46
LBB0_59:
                                        ; kill: def $w15 killed $w15 killed $x15 def $x15
	stp	x11, x15, [sp]
Lloh29:
	adrp	x0, l_.str.1@PAGE
Lloh30:
	add	x0, x0, l_.str.1@PAGEOFF
	b	LBB0_4
LBB0_60:
	mov	w23, #0
LBB0_61:
	mov	x0, x21
	ldr	x8, [x0, #40]!
	cbz	x8, LBB0_65
; %bb.62:
	ldr	w8, [x21, #32]
	cmp	w23, w8
	b.eq	LBB0_67
; %bb.63:
	stp	x23, x8, [sp]
Lloh31:
	adrp	x0, l_.str.5@PAGE
Lloh32:
	add	x0, x0, l_.str.5@PAGEOFF
LBB0_64:
	bl	_WARN
	ldr	w22, [x28]
	b	LBB0_5
LBB0_65:
Lloh33:
	adrp	x8, _PROVIDE_SKININFO@GOTPAGE
Lloh34:
	ldr	x8, [x8, _PROVIDE_SKININFO@GOTPAGEOFF]
Lloh35:
	ldr	w8, [x8]
	tst	w8, w20
	b.eq	LBB0_67
; %bb.66:
	bl	_create_dummy_skin
	mov	x22, x0
	bl	_FAILED
	cbnz	x0, LBB0_5
LBB0_67:
Lloh36:
	adrp	x8, _D3D_OK@GOTPAGE
Lloh37:
	ldr	x8, [x8, _D3D_OK@GOTPAGEOFF]
	b	LBB0_33
LBB0_68:
Lloh38:
	adrp	x0, l_.str.3@PAGE
Lloh39:
	add	x0, x0, l_.str.3@PAGEOFF
	b	LBB0_64
LBB0_69:
Lloh40:
	adrp	x0, l_.str.4@PAGE
Lloh41:
	add	x0, x0, l_.str.4@PAGEOFF
	b	LBB0_64
	.loh AdrpLdrGot	Lloh0, Lloh1
	.loh AdrpAdd	Lloh2, Lloh3
	.loh AdrpLdrGotLdr	Lloh4, Lloh5, Lloh6
	.loh AdrpAdd	Lloh7, Lloh8
	.loh AdrpLdrGot	Lloh9, Lloh10
	.loh AdrpLdrGot	Lloh15, Lloh16
	.loh AdrpLdrGot	Lloh13, Lloh14
	.loh AdrpLdrGot	Lloh11, Lloh12
	.loh AdrpLdrGot	Lloh17, Lloh18
	.loh AdrpLdrGotLdr	Lloh19, Lloh20, Lloh21
	.loh AdrpLdrGotLdr	Lloh22, Lloh23, Lloh24
	.loh AdrpLdrGot	Lloh25, Lloh26
	.loh AdrpLdrGot	Lloh27, Lloh28
	.loh AdrpAdd	Lloh29, Lloh30
	.loh AdrpAdd	Lloh31, Lloh32
	.loh AdrpLdrGotLdr	Lloh33, Lloh34, Lloh35
	.loh AdrpLdrGot	Lloh36, Lloh37
	.loh AdrpAdd	Lloh38, Lloh39
	.loh AdrpAdd	Lloh40, Lloh41
	.cfi_endproc
                                        ; -- End function
	.comm	_E_FAIL,4,2                     ; @E_FAIL
	.section	__TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
	.asciz	"truncated data (%ld bytes)\n"

l_.str.1:                               ; @.str.1
	.asciz	"face %u has only %u vertices\n"

l_.str.2:                               ; @.str.2
	.asciz	"face %u, index %u: undefined vertex %u (only %u vertices)\n"

	.comm	_D3DFVF_XYZ,4,2                 ; @D3DFVF_XYZ
	.comm	_E_OUTOFMEMORY,4,2              ; @E_OUTOFMEMORY
	.comm	_TID_D3DRMMeshNormals,4,2       ; @TID_D3DRMMeshNormals
	.comm	_TID_D3DRMMeshVertexColors,4,2  ; @TID_D3DRMMeshVertexColors
	.comm	_TID_D3DRMMeshTextureCoords,4,2 ; @TID_D3DRMMeshTextureCoords
	.comm	_TID_D3DRMMeshMaterialList,4,2  ; @TID_D3DRMMeshMaterialList
	.comm	_PROVIDE_MATERIALS,4,2          ; @PROVIDE_MATERIALS
	.comm	_PROVIDE_SKININFO,4,2           ; @PROVIDE_SKININFO
	.comm	_DXFILEOBJ_XSkinMeshHeader,4,2  ; @DXFILEOBJ_XSkinMeshHeader
l_.str.3:                               ; @.str.3
	.asciz	"Skin mesh header already encountered\n"

	.comm	_DXFILEOBJ_SkinWeights,4,2      ; @DXFILEOBJ_SkinWeights
l_.str.4:                               ; @.str.4
	.asciz	"Skin weights found but skin mesh header not encountered yet\n"

l_.str.5:                               ; @.str.5
	.asciz	"Mismatch between nb skin weights info %u encountered and nb bones %u from skin mesh header\n"

	.comm	_D3D_OK,4,2                     ; @D3D_OK
	.no_dead_strip	_parse_mesh
.subsections_via_symbols
