	.file	"151883.c"
	.intel_syntax noprefix
	.text
	.local	failure_reason
	.comm	failure_reason,8,8
	.globl	stbi_failure_reason
	.type	stbi_failure_reason, @function
stbi_failure_reason:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR failure_reason[rip]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	stbi_failure_reason, .-stbi_failure_reason
	.type	e, @function
e:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR failure_reason[rip], rax
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	e, .-e
	.globl	stbi_image_free
	.type	stbi_image_free, @function
stbi_image_free:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	stbi_image_free, .-stbi_image_free
	.globl	loaders
	.bss
	.align 32
	.type	loaders, @object
	.size	loaders, 256
loaders:
	.zero	256
	.local	max_loaders
	.comm	max_loaders,4,4
	.text
	.globl	stbi_register_loader
	.type	stbi_register_loader, @function
stbi_register_loader:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L7
.L11:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, loaders[rip]
	mov	rax, QWORD PTR [rdx+rax]
	cmp	QWORD PTR -24[rbp], rax
	jne	.L8
	mov	eax, 1
	jmp	.L9
.L8:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, loaders[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	jne	.L10
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rdx, loaders[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	mov	eax, DWORD PTR -4[rbp]
	add	eax, 1
	mov	DWORD PTR max_loaders[rip], eax
	mov	eax, 1
	jmp	.L9
.L10:
	add	DWORD PTR -4[rbp], 1
.L7:
	cmp	DWORD PTR -4[rbp], 31
	jle	.L11
	mov	eax, 0
.L9:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	stbi_register_loader, .-stbi_register_loader
	.section	.rodata
.LC0:
	.string	"rb"
.LC1:
	.string	"can't fopen"
	.text
	.globl	stbi_load
	.type	stbi_load, @function
stbi_load:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L13
	lea	rdi, .LC1[rip]
	call	e
	mov	eax, 0
	jmp	.L14
.L13:
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_load_from_file
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	rax, QWORD PTR -8[rbp]
.L14:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	stbi_load, .-stbi_load
	.section	.rodata
.LC2:
	.string	"unknown image type"
	.text
	.globl	stbi_load_from_file
	.type	stbi_load_from_file, @function
stbi_load_from_file:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	stbi_jpeg_test_file
	test	eax, eax
	je	.L16
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_jpeg_load_from_file
	jmp	.L17
.L16:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	stbi_png_test_file
	test	eax, eax
	je	.L18
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_png_load_from_file
	jmp	.L17
.L18:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	stbi_bmp_test_file
	test	eax, eax
	je	.L19
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_bmp_load_from_file
	jmp	.L17
.L19:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	stbi_psd_test_file
	test	eax, eax
	je	.L20
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_psd_load_from_file
	jmp	.L17
.L20:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	stbi_hdr_test_file
	test	eax, eax
	je	.L21
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_hdr_load_from_file
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -52[rbp], 0
	jne	.L22
	mov	rax, QWORD PTR -48[rbp]
	mov	eax, DWORD PTR [rax]
	jmp	.L23
.L22:
	mov	eax, DWORD PTR -52[rbp]
.L23:
	mov	rdx, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR [rdx]
	mov	rcx, QWORD PTR -32[rbp]
	mov	esi, DWORD PTR [rcx]
	mov	rdi, QWORD PTR -8[rbp]
	mov	ecx, eax
	call	hdr_to_ldr
	jmp	.L17
.L21:
	mov	DWORD PTR -12[rbp], 0
	jmp	.L24
.L26:
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, loaders[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	rdx
	test	eax, eax
	je	.L25
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, loaders[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	r9, QWORD PTR 24[rax]
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	r9
	jmp	.L17
.L25:
	add	DWORD PTR -12[rbp], 1
.L24:
	mov	eax, DWORD PTR max_loaders[rip]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L26
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	stbi_tga_test_file
	test	eax, eax
	je	.L27
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_tga_load_from_file
	jmp	.L17
.L27:
	lea	rdi, .LC2[rip]
	call	e
	mov	eax, 0
.L17:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	stbi_load_from_file, .-stbi_load_from_file
	.globl	stbi_load_from_memory
	.type	stbi_load_from_memory, @function
stbi_load_from_memory:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	QWORD PTR -56[rbp], r8
	mov	DWORD PTR -32[rbp], r9d
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	stbi_jpeg_test_memory
	test	eax, eax
	je	.L29
	mov	r8d, DWORD PTR -32[rbp]
	mov	rdi, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, r8d
	mov	r8, rdi
	mov	rdi, rax
	call	stbi_jpeg_load_from_memory
	jmp	.L30
.L29:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	stbi_png_test_memory
	test	eax, eax
	je	.L31
	mov	r8d, DWORD PTR -32[rbp]
	mov	rdi, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, r8d
	mov	r8, rdi
	mov	rdi, rax
	call	stbi_png_load_from_memory
	jmp	.L30
.L31:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	stbi_bmp_test_memory
	test	eax, eax
	je	.L32
	mov	r8d, DWORD PTR -32[rbp]
	mov	rdi, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, r8d
	mov	r8, rdi
	mov	rdi, rax
	call	stbi_bmp_load_from_memory
	jmp	.L30
.L32:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	stbi_psd_test_memory
	test	eax, eax
	je	.L33
	mov	r8d, DWORD PTR -32[rbp]
	mov	rdi, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, r8d
	mov	r8, rdi
	mov	rdi, rax
	call	stbi_psd_load_from_memory
	jmp	.L30
.L33:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	stbi_hdr_test_memory
	test	eax, eax
	je	.L34
	mov	r8d, DWORD PTR -32[rbp]
	mov	rdi, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, r8d
	mov	r8, rdi
	mov	rdi, rax
	call	stbi_hdr_load_from_memory
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -32[rbp], 0
	jne	.L35
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR [rax]
	jmp	.L36
.L35:
	mov	eax, DWORD PTR -32[rbp]
.L36:
	mov	rdx, QWORD PTR -48[rbp]
	mov	edx, DWORD PTR [rdx]
	mov	rcx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR [rcx]
	mov	rdi, QWORD PTR -8[rbp]
	mov	ecx, eax
	call	hdr_to_ldr
	jmp	.L30
.L34:
	mov	DWORD PTR -12[rbp], 0
	jmp	.L37
.L39:
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, loaders[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rcx, QWORD PTR [rax]
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	rcx
	test	eax, eax
	je	.L38
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, loaders[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	r10, QWORD PTR 8[rax]
	mov	r8d, DWORD PTR -32[rbp]
	mov	rdi, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, r8d
	mov	r8, rdi
	mov	rdi, rax
	call	r10
	jmp	.L30
.L38:
	add	DWORD PTR -12[rbp], 1
.L37:
	mov	eax, DWORD PTR max_loaders[rip]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L39
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	stbi_tga_test_memory
	test	eax, eax
	je	.L40
	mov	r8d, DWORD PTR -32[rbp]
	mov	rdi, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, r8d
	mov	r8, rdi
	mov	rdi, rax
	call	stbi_tga_load_from_memory
	jmp	.L30
.L40:
	lea	rdi, .LC2[rip]
	call	e
	mov	eax, 0
.L30:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	stbi_load_from_memory, .-stbi_load_from_memory
	.globl	stbi_loadf
	.type	stbi_loadf, @function
stbi_loadf:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L42
	lea	rdi, .LC1[rip]
	call	e
	mov	eax, 0
	jmp	.L43
.L42:
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_loadf_from_file
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	rax, QWORD PTR -8[rbp]
.L43:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	stbi_loadf, .-stbi_loadf
	.globl	stbi_loadf_from_file
	.type	stbi_loadf_from_file, @function
stbi_loadf_from_file:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	stbi_hdr_test_file
	test	eax, eax
	je	.L45
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_hdr_load_from_file
	jmp	.L46
.L45:
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_load_from_file
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L47
	cmp	DWORD PTR -52[rbp], 0
	jne	.L48
	mov	rax, QWORD PTR -48[rbp]
	mov	eax, DWORD PTR [rax]
	jmp	.L49
.L48:
	mov	eax, DWORD PTR -52[rbp]
.L49:
	mov	rdx, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR [rdx]
	mov	rcx, QWORD PTR -32[rbp]
	mov	esi, DWORD PTR [rcx]
	mov	rdi, QWORD PTR -8[rbp]
	mov	ecx, eax
	call	ldr_to_hdr
	jmp	.L46
.L47:
	lea	rdi, .LC2[rip]
	call	e
	mov	eax, 0
.L46:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	stbi_loadf_from_file, .-stbi_loadf_from_file
	.globl	stbi_loadf_from_memory
	.type	stbi_loadf_from_memory, @function
stbi_loadf_from_memory:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	QWORD PTR -56[rbp], r8
	mov	DWORD PTR -32[rbp], r9d
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	stbi_hdr_test_memory
	test	eax, eax
	je	.L51
	mov	r8d, DWORD PTR -32[rbp]
	mov	rdi, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, r8d
	mov	r8, rdi
	mov	rdi, rax
	call	stbi_hdr_load_from_memory
	jmp	.L52
.L51:
	mov	r8d, DWORD PTR -32[rbp]
	mov	rdi, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, r8d
	mov	r8, rdi
	mov	rdi, rax
	call	stbi_load_from_memory
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L53
	cmp	DWORD PTR -32[rbp], 0
	jne	.L54
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR [rax]
	jmp	.L55
.L54:
	mov	eax, DWORD PTR -32[rbp]
.L55:
	mov	rdx, QWORD PTR -48[rbp]
	mov	edx, DWORD PTR [rdx]
	mov	rcx, QWORD PTR -40[rbp]
	mov	esi, DWORD PTR [rcx]
	mov	rdi, QWORD PTR -8[rbp]
	mov	ecx, eax
	call	ldr_to_hdr
	jmp	.L52
.L53:
	lea	rdi, .LC2[rip]
	call	e
	mov	eax, 0
.L52:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	stbi_loadf_from_memory, .-stbi_loadf_from_memory
	.globl	stbi_is_hdr_from_memory
	.type	stbi_is_hdr_from_memory, @function
stbi_is_hdr_from_memory:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	edx, DWORD PTR -12[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	stbi_hdr_test_memory
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	stbi_is_hdr_from_memory, .-stbi_is_hdr_from_memory
	.globl	stbi_is_hdr
	.type	stbi_is_hdr, @function
stbi_is_hdr:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -12[rbp], 0
	cmp	QWORD PTR -8[rbp], 0
	je	.L59
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	stbi_is_hdr_from_file
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	fclose@PLT
.L59:
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	stbi_is_hdr, .-stbi_is_hdr
	.globl	stbi_is_hdr_from_file
	.type	stbi_is_hdr_from_file, @function
stbi_is_hdr_from_file:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	stbi_hdr_test_file
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	stbi_is_hdr_from_file, .-stbi_is_hdr_from_file
	.data
	.align 4
	.type	h2l_gamma_i, @object
	.size	h2l_gamma_i, 4
h2l_gamma_i:
	.long	1055439406
	.align 4
	.type	h2l_scale_i, @object
	.size	h2l_scale_i, 4
h2l_scale_i:
	.long	1065353216
	.align 4
	.type	l2h_gamma, @object
	.size	l2h_gamma, 4
l2h_gamma:
	.long	1074580685
	.align 4
	.type	l2h_scale, @object
	.size	l2h_scale, 4
l2h_scale:
	.long	1065353216
	.text
	.globl	stbi_hdr_to_ldr_gamma
	.type	stbi_hdr_to_ldr_gamma, @function
stbi_hdr_to_ldr_gamma:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movss	DWORD PTR -4[rbp], xmm0
	movss	xmm0, DWORD PTR .LC3[rip]
	divss	xmm0, DWORD PTR -4[rbp]
	movss	DWORD PTR h2l_gamma_i[rip], xmm0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	stbi_hdr_to_ldr_gamma, .-stbi_hdr_to_ldr_gamma
	.globl	stbi_hdr_to_ldr_scale
	.type	stbi_hdr_to_ldr_scale, @function
stbi_hdr_to_ldr_scale:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movss	DWORD PTR -4[rbp], xmm0
	movss	xmm0, DWORD PTR .LC3[rip]
	divss	xmm0, DWORD PTR -4[rbp]
	movss	DWORD PTR h2l_scale_i[rip], xmm0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	stbi_hdr_to_ldr_scale, .-stbi_hdr_to_ldr_scale
	.globl	stbi_ldr_to_hdr_gamma
	.type	stbi_ldr_to_hdr_gamma, @function
stbi_ldr_to_hdr_gamma:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movss	DWORD PTR -4[rbp], xmm0
	movss	xmm0, DWORD PTR -4[rbp]
	movss	DWORD PTR l2h_gamma[rip], xmm0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	stbi_ldr_to_hdr_gamma, .-stbi_ldr_to_hdr_gamma
	.globl	stbi_ldr_to_hdr_scale
	.type	stbi_ldr_to_hdr_scale, @function
stbi_ldr_to_hdr_scale:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movss	DWORD PTR -4[rbp], xmm0
	movss	xmm0, DWORD PTR -4[rbp]
	movss	DWORD PTR l2h_scale[rip], xmm0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	stbi_ldr_to_hdr_scale, .-stbi_ldr_to_hdr_scale
	.type	start_file, @function
start_file:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 16[rax], rdx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	start_file, .-start_file
	.type	start_mem, @function
start_mem:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	DWORD PTR -20[rbp], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -16[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 32[rax], rdx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	start_mem, .-start_mem
	.type	get8, @function
get8:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	je	.L70
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], -1
	je	.L71
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L73
.L71:
	mov	eax, 0
	jmp	.L73
.L70:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 32[rax]
	cmp	rdx, rax
	jnb	.L74
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rcx, 1[rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 24[rdx], rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	jmp	.L73
.L74:
	mov	eax, 0
.L73:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	get8, .-get8
	.type	at_eof, @function
at_eof:
.LFB26:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	je	.L76
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rdi, rax
	call	feof@PLT
	jmp	.L77
.L76:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 32[rax]
	cmp	rdx, rax
	setnb	al
	movzx	eax, al
.L77:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	at_eof, .-at_eof
	.type	get8u, @function
get8u:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get8
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	get8u, .-get8u
	.type	skip, @function
skip:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	je	.L81
	mov	eax, DWORD PTR -12[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	jmp	.L83
.L81:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 24[rax], rdx
.L83:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	skip, .-skip
	.type	get16, @function
get16:
.LFB29:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 8
	mov	ebx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get8
	add	eax, ebx
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	get16, .-get16
	.type	get32, @function
get32:
.LFB30:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get16
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 16
	mov	ebx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get16
	add	eax, ebx
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	get32, .-get32
	.type	get16le, @function
get16le:
.LFB31:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	sal	eax, 8
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	get16le, .-get16le
	.type	get32le, @function
get32le:
.LFB32:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16le
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16le
	sal	eax, 16
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	get32le, .-get32le
	.type	getn, @function
getn:
.LFB33:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	DWORD PTR -20[rbp], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	je	.L93
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	fread@PLT
	jmp	.L92
.L93:
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 24[rax], rdx
.L92:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	getn, .-getn
	.type	compute_y, @function
compute_y:
.LFB34:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	mov	DWORD PTR -8[rbp], esi
	mov	DWORD PTR -12[rbp], edx
	mov	eax, DWORD PTR -4[rbp]
	imul	edx, eax, 77
	mov	eax, DWORD PTR -8[rbp]
	imul	eax, eax, 150
	add	edx, eax
	mov	eax, DWORD PTR -12[rbp]
	imul	eax, eax, 29
	add	eax, edx
	sar	eax, 8
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	compute_y, .-compute_y
	.section	.rodata
.LC4:
	.string	"the_stack_data/151883.c"
	.align 8
.LC5:
	.string	"req_comp >= 1 && req_comp <= 4"
.LC6:
	.string	"outofmem"
.LC7:
	.string	"0"
	.text
	.type	convert_format, @function
convert_format:
.LFB35:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -44[rbp], esi
	mov	DWORD PTR -48[rbp], edx
	mov	DWORD PTR -52[rbp], ecx
	mov	DWORD PTR -56[rbp], r8d
	mov	eax, DWORD PTR -48[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jne	.L98
	mov	rax, QWORD PTR -40[rbp]
	jmp	.L99
.L98:
	cmp	DWORD PTR -48[rbp], 0
	jle	.L100
	cmp	DWORD PTR -48[rbp], 4
	jle	.L145
.L100:
	lea	rcx, __PRETTY_FUNCTION__.14[rip]
	mov	edx, 751
	lea	rsi, .LC4[rip]
	lea	rdi, .LC5[rip]
	call	__assert_fail@PLT
.L145:
	mov	eax, DWORD PTR -48[rbp]
	imul	eax, DWORD PTR -52[rbp]
	imul	eax, DWORD PTR -56[rbp]
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L102
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	free@PLT
	lea	rdi, .LC6[rip]
	call	e
	mov	eax, 0
	jmp	.L99
.L102:
	mov	DWORD PTR -28[rbp], 0
	jmp	.L103
.L143:
	mov	eax, DWORD PTR -28[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -44[rbp]
	imul	eax, edx
	mov	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	QWORD PTR -24[rbp], rax
	mov	eax, DWORD PTR -28[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -48[rbp]
	imul	eax, edx
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	lea	edx, 0[0+rax*8]
	mov	eax, DWORD PTR -48[rbp]
	add	eax, edx
	sub	eax, 10
	cmp	eax, 25
	ja	.L144
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L106[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L106[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L106:
	.long	.L117-.L106
	.long	.L116-.L106
	.long	.L115-.L106
	.long	.L144-.L106
	.long	.L144-.L106
	.long	.L144-.L106
	.long	.L144-.L106
	.long	.L114-.L106
	.long	.L144-.L106
	.long	.L113-.L106
	.long	.L112-.L106
	.long	.L144-.L106
	.long	.L144-.L106
	.long	.L144-.L106
	.long	.L144-.L106
	.long	.L111-.L106
	.long	.L110-.L106
	.long	.L144-.L106
	.long	.L109-.L106
	.long	.L144-.L106
	.long	.L144-.L106
	.long	.L144-.L106
	.long	.L144-.L106
	.long	.L108-.L106
	.long	.L107-.L106
	.long	.L105-.L106
	.text
.L117:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L118
.L119:
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	mov	BYTE PTR [rax], -1
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 1
	add	QWORD PTR -16[rbp], 2
.L118:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L119
	jmp	.L120
.L116:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L121
.L122:
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 1
	add	QWORD PTR -16[rbp], 3
.L121:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L122
	jmp	.L120
.L115:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L123
.L124:
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 3
	mov	BYTE PTR [rax], -1
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 1
	add	QWORD PTR -16[rbp], 4
.L123:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L124
	jmp	.L120
.L114:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L125
.L126:
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 2
	add	QWORD PTR -16[rbp], 1
.L125:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L126
	jmp	.L120
.L113:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L127
.L128:
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 2
	add	QWORD PTR -16[rbp], 3
.L127:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L128
	jmp	.L120
.L112:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L129
.L130:
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 3[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 1[rax]
	mov	BYTE PTR [rdx], al
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 2
	add	QWORD PTR -16[rbp], 4
.L129:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L130
	jmp	.L120
.L109:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L131
.L132:
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 1[rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 2[rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 3
	mov	BYTE PTR [rax], -1
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 3
	add	QWORD PTR -16[rbp], 4
.L131:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L132
	jmp	.L120
.L111:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L133
.L134:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, ecx
	mov	edi, eax
	call	compute_y
	mov	rdx, QWORD PTR -16[rbp]
	mov	BYTE PTR [rdx], al
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 3
	add	QWORD PTR -16[rbp], 1
.L133:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L134
	jmp	.L120
.L110:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L135
.L136:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, ecx
	mov	edi, eax
	call	compute_y
	mov	rdx, QWORD PTR -16[rbp]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	mov	BYTE PTR [rax], -1
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 3
	add	QWORD PTR -16[rbp], 2
.L135:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L136
	jmp	.L120
.L108:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L137
.L138:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, ecx
	mov	edi, eax
	call	compute_y
	mov	rdx, QWORD PTR -16[rbp]
	mov	BYTE PTR [rdx], al
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 4
	add	QWORD PTR -16[rbp], 1
.L137:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L138
	jmp	.L120
.L107:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L139
.L140:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, ecx
	mov	edi, eax
	call	compute_y
	mov	rdx, QWORD PTR -16[rbp]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 3[rax]
	mov	BYTE PTR [rdx], al
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 4
	add	QWORD PTR -16[rbp], 2
.L139:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L140
	jmp	.L120
.L105:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -32[rbp], eax
	jmp	.L141
.L142:
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 1[rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 2[rax]
	mov	BYTE PTR [rdx], al
	sub	DWORD PTR -32[rbp], 1
	add	QWORD PTR -24[rbp], 4
	add	QWORD PTR -16[rbp], 3
.L141:
	cmp	DWORD PTR -32[rbp], 0
	jns	.L142
	jmp	.L120
.L144:
	lea	rcx, __PRETTY_FUNCTION__.14[rip]
	mov	edx, 780
	lea	rsi, .LC4[rip]
	lea	rdi, .LC7[rip]
	call	__assert_fail@PLT
.L120:
	add	DWORD PTR -28[rbp], 1
.L103:
	mov	eax, DWORD PTR -56[rbp]
	cmp	DWORD PTR -28[rbp], eax
	jl	.L143
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -8[rbp]
.L99:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	convert_format, .-convert_format
	.type	ldr_to_hdr, @function
ldr_to_hdr:
.LFB36:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -44[rbp], esi
	mov	DWORD PTR -48[rbp], edx
	mov	DWORD PTR -52[rbp], ecx
	mov	eax, DWORD PTR -44[rbp]
	imul	eax, DWORD PTR -48[rbp]
	imul	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L147
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	free@PLT
	lea	rdi, .LC6[rip]
	call	e
	mov	eax, 0
	jmp	.L148
.L147:
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 1
	test	eax, eax
	je	.L149
	mov	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -12[rbp], eax
	jmp	.L150
.L149:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -12[rbp], eax
.L150:
	mov	DWORD PTR -20[rbp], 0
	jmp	.L151
.L155:
	mov	DWORD PTR -16[rbp], 0
	jmp	.L152
.L153:
	movss	xmm0, DWORD PTR l2h_gamma[rip]
	pxor	xmm2, xmm2
	cvtss2sd	xmm2, xmm0
	mov	eax, DWORD PTR -20[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -16[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	movss	xmm1, DWORD PTR .LC8[rip]
	divss	xmm0, xmm1
	pxor	xmm3, xmm3
	cvtss2sd	xmm3, xmm0
	movq	rax, xmm3
	movapd	xmm1, xmm2
	movq	xmm0, rax
	call	pow@PLT
	pxor	xmm1, xmm1
	cvtsd2ss	xmm1, xmm0
	movss	xmm0, DWORD PTR l2h_scale[rip]
	mov	eax, DWORD PTR -20[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -16[rbp]
	add	eax, edx
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mulss	xmm0, xmm1
	movss	DWORD PTR [rax], xmm0
	add	DWORD PTR -16[rbp], 1
.L152:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -12[rbp]
	jl	.L153
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -52[rbp]
	jge	.L154
	mov	eax, DWORD PTR -20[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -16[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	eax, DWORD PTR -20[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -16[rbp]
	add	eax, edx
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movss	xmm1, DWORD PTR .LC8[rip]
	divss	xmm0, xmm1
	movss	DWORD PTR [rax], xmm0
.L154:
	add	DWORD PTR -20[rbp], 1
.L151:
	mov	eax, DWORD PTR -44[rbp]
	imul	eax, DWORD PTR -48[rbp]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L155
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -8[rbp]
.L148:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	ldr_to_hdr, .-ldr_to_hdr
	.type	hdr_to_ldr, @function
hdr_to_ldr:
.LFB37:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -44[rbp], esi
	mov	DWORD PTR -48[rbp], edx
	mov	DWORD PTR -52[rbp], ecx
	mov	eax, DWORD PTR -44[rbp]
	imul	eax, DWORD PTR -48[rbp]
	imul	eax, DWORD PTR -52[rbp]
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L157
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	free@PLT
	lea	rdi, .LC6[rip]
	call	e
	mov	eax, 0
	jmp	.L158
.L157:
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 1
	test	eax, eax
	je	.L159
	mov	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -20[rbp], eax
	jmp	.L160
.L159:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	DWORD PTR -20[rbp], eax
.L160:
	mov	DWORD PTR -28[rbp], 0
	jmp	.L161
.L173:
	mov	DWORD PTR -24[rbp], 0
	jmp	.L162
.L167:
	movss	xmm0, DWORD PTR h2l_gamma_i[rip]
	pxor	xmm2, xmm2
	cvtss2sd	xmm2, xmm0
	mov	eax, DWORD PTR -28[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -24[rbp]
	add	eax, edx
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movss	xmm1, DWORD PTR [rax]
	movss	xmm0, DWORD PTR h2l_scale_i[rip]
	mulss	xmm0, xmm1
	pxor	xmm3, xmm3
	cvtss2sd	xmm3, xmm0
	movq	rax, xmm3
	movapd	xmm1, xmm2
	movq	xmm0, rax
	call	pow@PLT
	pxor	xmm1, xmm1
	cvtsd2ss	xmm1, xmm0
	movss	xmm0, DWORD PTR .LC8[rip]
	mulss	xmm1, xmm0
	movss	xmm0, DWORD PTR .LC9[rip]
	addss	xmm0, xmm1
	movss	DWORD PTR -16[rbp], xmm0
	pxor	xmm0, xmm0
	comiss	xmm0, DWORD PTR -16[rbp]
	jbe	.L163
	pxor	xmm0, xmm0
	movss	DWORD PTR -16[rbp], xmm0
.L163:
	movss	xmm0, DWORD PTR -16[rbp]
	comiss	xmm0, DWORD PTR .LC8[rip]
	jbe	.L165
	movss	xmm0, DWORD PTR .LC8[rip]
	movss	DWORD PTR -16[rbp], xmm0
.L165:
	movss	xmm0, DWORD PTR -16[rbp]
	cvttss2si	edx, xmm0
	mov	eax, DWORD PTR -28[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	ecx, eax
	mov	eax, DWORD PTR -24[rbp]
	add	eax, ecx
	movsx	rcx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -24[rbp], 1
.L162:
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jl	.L167
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -52[rbp]
	jge	.L168
	mov	eax, DWORD PTR -28[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -24[rbp]
	add	eax, edx
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movss	xmm1, DWORD PTR [rax]
	movss	xmm0, DWORD PTR .LC8[rip]
	mulss	xmm1, xmm0
	movss	xmm0, DWORD PTR .LC9[rip]
	addss	xmm0, xmm1
	movss	DWORD PTR -12[rbp], xmm0
	pxor	xmm0, xmm0
	comiss	xmm0, DWORD PTR -12[rbp]
	jbe	.L169
	pxor	xmm0, xmm0
	movss	DWORD PTR -12[rbp], xmm0
.L169:
	movss	xmm0, DWORD PTR -12[rbp]
	comiss	xmm0, DWORD PTR .LC8[rip]
	jbe	.L171
	movss	xmm0, DWORD PTR .LC8[rip]
	movss	DWORD PTR -12[rbp], xmm0
.L171:
	movss	xmm0, DWORD PTR -12[rbp]
	cvttss2si	edx, xmm0
	mov	eax, DWORD PTR -28[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	ecx, eax
	mov	eax, DWORD PTR -24[rbp]
	add	eax, ecx
	movsx	rcx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
.L168:
	add	DWORD PTR -28[rbp], 1
.L161:
	mov	eax, DWORD PTR -44[rbp]
	imul	eax, DWORD PTR -48[rbp]
	cmp	DWORD PTR -28[rbp], eax
	jl	.L173
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -8[rbp]
.L158:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	hdr_to_ldr, .-hdr_to_ldr
	.section	.rodata
.LC11:
	.string	"bad code lengths"
	.text
	.type	build_huffman, @function
build_huffman:
.LFB38:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	DWORD PTR -20[rbp], 0
	mov	DWORD PTR -28[rbp], 0
	jmp	.L179
.L182:
	mov	DWORD PTR -24[rbp], 0
	jmp	.L180
.L181:
	mov	eax, DWORD PTR -28[rbp]
	mov	ecx, eax
	mov	eax, DWORD PTR -20[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -20[rbp], edx
	add	ecx, 1
	mov	rdx, QWORD PTR -40[rbp]
	cdqe
	mov	BYTE PTR 1280[rdx+rax], cl
	add	DWORD PTR -24[rbp], 1
.L180:
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -24[rbp], eax
	jl	.L181
	add	DWORD PTR -28[rbp], 1
.L179:
	cmp	DWORD PTR -28[rbp], 15
	jle	.L182
	mov	rdx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	mov	BYTE PTR 1280[rdx+rax], 0
	mov	DWORD PTR -16[rbp], 0
	mov	DWORD PTR -20[rbp], 0
	mov	DWORD PTR -24[rbp], 1
	jmp	.L183
.L188:
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, DWORD PTR -16[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, DWORD PTR -24[rbp]
	movsx	rcx, ecx
	add	rcx, 400
	mov	DWORD PTR 12[rax+rcx*4], edx
	mov	rdx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	movzx	eax, BYTE PTR 1280[rdx+rax]
	movzx	eax, al
	cmp	DWORD PTR -24[rbp], eax
	jne	.L184
	jmp	.L185
.L186:
	mov	edx, DWORD PTR -16[rbp]
	lea	eax, 1[rdx]
	mov	DWORD PTR -16[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	lea	ecx, 1[rax]
	mov	DWORD PTR -20[rbp], ecx
	mov	ecx, edx
	mov	rdx, QWORD PTR -40[rbp]
	cdqe
	add	rax, 256
	mov	WORD PTR [rdx+rax*2], cx
.L185:
	mov	rdx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	movzx	eax, BYTE PTR 1280[rdx+rax]
	movzx	eax, al
	cmp	DWORD PTR -24[rbp], eax
	je	.L186
	mov	eax, DWORD PTR -24[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	cmp	DWORD PTR -16[rbp], eax
	jle	.L184
	lea	rdi, .LC11[rip]
	call	e
	jmp	.L187
.L184:
	mov	eax, 16
	sub	eax, DWORD PTR -24[rbp]
	mov	edx, DWORD PTR -16[rbp]
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	mov	ecx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -24[rbp]
	movsx	rdx, edx
	add	rdx, 384
	mov	DWORD PTR 4[rax+rdx*4], ecx
	sal	DWORD PTR -16[rbp]
	add	DWORD PTR -24[rbp], 1
.L183:
	cmp	DWORD PTR -24[rbp], 16
	jle	.L188
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -24[rbp]
	movsx	rdx, edx
	add	rdx, 384
	mov	DWORD PTR 4[rax+rdx*4], -1
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 512
	mov	esi, 255
	mov	rdi, rax
	call	memset@PLT
	mov	DWORD PTR -28[rbp], 0
	jmp	.L189
.L193:
	mov	rdx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	movzx	eax, BYTE PTR 1280[rdx+rax]
	movzx	eax, al
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 9
	jg	.L190
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -28[rbp]
	movsx	rdx, edx
	add	rdx, 256
	movzx	eax, WORD PTR [rax+rdx*2]
	movzx	edx, ax
	mov	eax, 9
	sub	eax, DWORD PTR -12[rbp]
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	mov	DWORD PTR -8[rbp], eax
	mov	eax, 9
	sub	eax, DWORD PTR -12[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	DWORD PTR -24[rbp], 0
	jmp	.L191
.L192:
	mov	edx, DWORD PTR -8[rbp]
	mov	eax, DWORD PTR -24[rbp]
	add	eax, edx
	mov	edx, DWORD PTR -28[rbp]
	mov	ecx, edx
	mov	rdx, QWORD PTR -40[rbp]
	cdqe
	mov	BYTE PTR [rdx+rax], cl
	add	DWORD PTR -24[rbp], 1
.L191:
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jl	.L192
.L190:
	add	DWORD PTR -28[rbp], 1
.L189:
	mov	eax, DWORD PTR -28[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jl	.L193
	mov	eax, 1
.L187:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	build_huffman, .-build_huffman
	.type	grow_buffer_unsafe, @function
grow_buffer_unsafe:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
.L199:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14060[rax]
	test	eax, eax
	jne	.L195
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	jmp	.L196
.L195:
	mov	eax, 0
.L196:
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 255
	jne	.L197
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	je	.L197
	mov	eax, DWORD PTR -4[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 14056[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 14060[rax], 1
	jmp	.L194
.L197:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14048[rax]
	sal	eax, 8
	mov	edx, eax
	mov	eax, DWORD PTR -8[rbp]
	or	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 14048[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	lea	edx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 14052[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	cmp	eax, 24
	jle	.L199
.L194:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	grow_buffer_unsafe, .-grow_buffer_unsafe
	.data
	.align 32
	.type	bmask, @object
	.size	bmask, 68
bmask:
	.long	0
	.long	1
	.long	3
	.long	7
	.long	15
	.long	31
	.long	63
	.long	127
	.long	255
	.long	511
	.long	1023
	.long	2047
	.long	4095
	.long	8191
	.long	16383
	.long	32767
	.long	65535
	.section	.rodata
	.align 8
.LC12:
	.string	"(((j->code_buffer) >> (j->code_bits - h->size[c])) & bmask[h->size[c]]) == h->code[c]"
	.text
	.type	decode, @function
decode:
.LFB40:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	cmp	eax, 15
	jg	.L201
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	grow_buffer_unsafe
.L201:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 14048[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	sub	eax, 9
	mov	ecx, eax
	shr	edx, cl
	mov	eax, edx
	and	eax, 511
	mov	DWORD PTR -4[rbp], eax
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	movzx	eax, BYTE PTR [rdx+rax]
	movzx	eax, al
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 254
	jg	.L202
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	movzx	eax, BYTE PTR 1280[rdx+rax]
	movzx	edx, al
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	cmp	edx, eax
	jle	.L203
	mov	eax, -1
	jmp	.L204
.L203:
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, DWORD PTR 14052[rax]
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	movzx	eax, BYTE PTR 1280[rdx+rax]
	movzx	eax, al
	sub	ecx, eax
	mov	edx, ecx
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 14052[rax], edx
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	movzx	eax, BYTE PTR 1024[rdx+rax]
	movzx	eax, al
	jmp	.L204
.L202:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	cmp	eax, 15
	jg	.L205
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 14048[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, DWORD PTR 14052[rax]
	mov	eax, 16
	sub	eax, ecx
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	and	eax, 65535
	mov	DWORD PTR -12[rbp], eax
	jmp	.L206
.L205:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 14048[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	sub	eax, 16
	mov	ecx, eax
	shr	edx, cl
	mov	eax, edx
	and	eax, 65535
	mov	DWORD PTR -12[rbp], eax
.L206:
	mov	DWORD PTR -8[rbp], 10
.L209:
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -8[rbp]
	movsx	rdx, edx
	add	rdx, 384
	mov	eax, DWORD PTR 4[rax+rdx*4]
	cmp	DWORD PTR -12[rbp], eax
	jb	.L214
	add	DWORD PTR -8[rbp], 1
	jmp	.L209
.L214:
	nop
	cmp	DWORD PTR -8[rbp], 17
	jne	.L210
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	lea	edx, -16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 14052[rax], edx
	mov	eax, -1
	jmp	.L204
.L210:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	cmp	DWORD PTR -8[rbp], eax
	jle	.L211
	mov	eax, -1
	jmp	.L204
.L211:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 14048[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	sub	eax, DWORD PTR -8[rbp]
	mov	ecx, eax
	shr	edx, cl
	mov	ecx, edx
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, bmask[rip]
	mov	eax, DWORD PTR [rdx+rax]
	and	ecx, eax
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -8[rbp]
	movsx	rdx, edx
	add	rdx, 400
	mov	eax, DWORD PTR 12[rax+rdx*4]
	add	eax, ecx
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, DWORD PTR 14048[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, DWORD PTR 14052[rax]
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	movzx	eax, BYTE PTR 1280[rdx+rax]
	movzx	edx, al
	mov	eax, ecx
	sub	eax, edx
	mov	ecx, eax
	shr	esi, cl
	mov	ecx, esi
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	movzx	eax, BYTE PTR 1280[rdx+rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, bmask[rip]
	mov	eax, DWORD PTR [rdx+rax]
	and	ecx, eax
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	add	rdx, 256
	movzx	eax, WORD PTR [rax+rdx*2]
	movzx	eax, ax
	cmp	ecx, eax
	je	.L212
	lea	rcx, __PRETTY_FUNCTION__.13[rip]
	mov	edx, 1018
	lea	rsi, .LC4[rip]
	lea	rdi, .LC12[rip]
	call	__assert_fail@PLT
.L212:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	sub	eax, DWORD PTR -8[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 14052[rax], edx
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	movzx	eax, BYTE PTR 1024[rdx+rax]
	movzx	eax, al
.L204:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	decode, .-decode
	.type	extend_receive, @function
extend_receive:
.LFB41:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	eax, DWORD PTR -28[rbp]
	sub	eax, 1
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	cmp	DWORD PTR -28[rbp], eax
	jle	.L216
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	grow_buffer_unsafe
.L216:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 14048[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	sub	eax, DWORD PTR -28[rbp]
	mov	ecx, eax
	shr	edx, cl
	mov	ecx, edx
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, bmask[rip]
	mov	eax, DWORD PTR [rdx+rax]
	and	eax, ecx
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 14052[rax]
	sub	eax, DWORD PTR -28[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 14052[rax], edx
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jnb	.L217
	mov	eax, DWORD PTR -28[rbp]
	mov	edx, -1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	add	eax, 1
	jmp	.L218
.L217:
	mov	eax, DWORD PTR -4[rbp]
.L218:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	extend_receive, .-extend_receive
	.data
	.align 32
	.type	dezigzag, @object
	.size	dezigzag, 79
dezigzag:
	.string	""
	.ascii	"\001\b\020\t\002\003\n\021\030 \031\022\013\004\005\f\023\032"
	.ascii	"!(0)\"\033\024\r\006\007\016\025\034#*1892+$\035\026\017\027"
	.ascii	"\036%,3:;4-&\037'.5<=6/7>????????????????"
	.section	.rodata
.LC13:
	.string	"bad huffman code"
	.text
	.type	decode_block, @function
decode_block:
.LFB42:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	QWORD PTR -64[rbp], rcx
	mov	DWORD PTR -68[rbp], r8d
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	decode
	mov	DWORD PTR -24[rbp], eax
	cmp	DWORD PTR -24[rbp], 0
	jns	.L220
	lea	rdi, .LC13[rip]
	call	e
	jmp	.L221
.L220:
	mov	rax, QWORD PTR -48[rbp]
	mov	edx, 128
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	cmp	DWORD PTR -24[rbp], 0
	je	.L222
	mov	edx, DWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	extend_receive
	jmp	.L223
.L222:
	mov	eax, 0
.L223:
	mov	DWORD PTR -20[rbp], eax
	mov	rcx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -68[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13784
	mov	edx, DWORD PTR [rax]
	mov	eax, DWORD PTR -20[rbp]
	add	eax, edx
	mov	DWORD PTR -16[rbp], eax
	mov	rcx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -68[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	lea	rdx, 13784[rax]
	mov	eax, DWORD PTR -16[rbp]
	mov	DWORD PTR [rdx], eax
	mov	eax, DWORD PTR -16[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -48[rbp]
	mov	WORD PTR [rax], dx
	mov	DWORD PTR -28[rbp], 1
.L229:
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	decode
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 0
	jns	.L224
	lea	rdi, .LC13[rip]
	call	e
	jmp	.L221
.L224:
	mov	eax, DWORD PTR -12[rbp]
	and	eax, 15
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	sar	eax, 4
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -8[rbp], 0
	jne	.L225
	cmp	DWORD PTR -12[rbp], 240
	jne	.L230
	add	DWORD PTR -28[rbp], 16
	jmp	.L228
.L225:
	mov	eax, DWORD PTR -4[rbp]
	add	DWORD PTR -28[rbp], eax
	mov	edx, DWORD PTR -8[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	extend_receive
	mov	edx, eax
	mov	eax, DWORD PTR -28[rbp]
	lea	ecx, 1[rax]
	mov	DWORD PTR -28[rbp], ecx
	cdqe
	lea	rcx, dezigzag[rip]
	movzx	eax, BYTE PTR [rax+rcx]
	movzx	eax, al
	lea	rcx, [rax+rax]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rcx
	mov	WORD PTR [rax], dx
.L228:
	cmp	DWORD PTR -28[rbp], 63
	jle	.L229
	jmp	.L227
.L230:
	nop
.L227:
	mov	eax, 1
.L221:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	decode_block, .-decode_block
	.type	clamp, @function
clamp:
.LFB43:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	sub	DWORD PTR -4[rbp], -128
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, 255
	jbe	.L232
	cmp	DWORD PTR -4[rbp], 0
	jns	.L233
	mov	eax, 0
	jmp	.L234
.L233:
	cmp	DWORD PTR -4[rbp], 255
	jle	.L232
	mov	eax, -1
	jmp	.L234
.L232:
	mov	eax, DWORD PTR -4[rbp]
.L234:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	clamp, .-clamp
	.type	idct_block, @function
idct_block:
.LFB44:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 456
	.cfi_offset 3, -24
	mov	QWORD PTR -440[rbp], rdi
	mov	DWORD PTR -444[rbp], esi
	mov	QWORD PTR -456[rbp], rdx
	mov	QWORD PTR -464[rbp], rcx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	lea	rax, -288[rbp]
	mov	QWORD PTR -320[rbp], rax
	mov	rax, QWORD PTR -464[rbp]
	mov	QWORD PTR -304[rbp], rax
	mov	rax, QWORD PTR -456[rbp]
	mov	QWORD PTR -296[rbp], rax
	mov	DWORD PTR -432[rbp], 0
	jmp	.L236
.L239:
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 16
	movzx	eax, WORD PTR [rax]
	test	ax, ax
	jne	.L237
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 32
	movzx	eax, WORD PTR [rax]
	test	ax, ax
	jne	.L237
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 48
	movzx	eax, WORD PTR [rax]
	test	ax, ax
	jne	.L237
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 64
	movzx	eax, WORD PTR [rax]
	test	ax, ax
	jne	.L237
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 80
	movzx	eax, WORD PTR [rax]
	test	ax, ax
	jne	.L237
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 96
	movzx	eax, WORD PTR [rax]
	test	ax, ax
	jne	.L237
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 112
	movzx	eax, WORD PTR [rax]
	test	ax, ax
	jne	.L237
	mov	rax, QWORD PTR -296[rbp]
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	mov	rax, QWORD PTR -304[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	sal	eax, 2
	mov	DWORD PTR -376[rbp], eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 224
	mov	edx, DWORD PTR -376[rbp]
	mov	DWORD PTR [rax], edx
	mov	rdx, QWORD PTR -320[rbp]
	add	rdx, 192
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR [rdx], eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 160
	mov	edx, DWORD PTR [rdx]
	mov	DWORD PTR [rax], edx
	mov	rdx, QWORD PTR -320[rbp]
	sub	rdx, -128
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR [rdx], eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 96
	mov	edx, DWORD PTR [rdx]
	mov	DWORD PTR [rax], edx
	mov	rdx, QWORD PTR -320[rbp]
	add	rdx, 64
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR [rdx], eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 32
	mov	edx, DWORD PTR [rdx]
	mov	DWORD PTR [rax], edx
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -320[rbp]
	mov	DWORD PTR [rax], edx
	jmp	.L238
.L237:
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 32
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	mov	rax, QWORD PTR -304[rbp]
	add	rax, 16
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	mov	DWORD PTR -372[rbp], eax
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 96
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	mov	rax, QWORD PTR -304[rbp]
	add	rax, 48
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	mov	DWORD PTR -368[rbp], eax
	mov	edx, DWORD PTR -372[rbp]
	mov	eax, DWORD PTR -368[rbp]
	add	eax, edx
	imul	eax, eax, 2217
	mov	DWORD PTR -364[rbp], eax
	mov	eax, DWORD PTR -368[rbp]
	imul	edx, eax, -7567
	mov	eax, DWORD PTR -364[rbp]
	add	eax, edx
	mov	DWORD PTR -360[rbp], eax
	mov	eax, DWORD PTR -372[rbp]
	imul	edx, eax, 3135
	mov	eax, DWORD PTR -364[rbp]
	add	eax, edx
	mov	DWORD PTR -356[rbp], eax
	mov	rax, QWORD PTR -296[rbp]
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	mov	rax, QWORD PTR -304[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	mov	DWORD PTR -372[rbp], eax
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 64
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	mov	rax, QWORD PTR -304[rbp]
	add	rax, 32
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	mov	DWORD PTR -368[rbp], eax
	mov	edx, DWORD PTR -372[rbp]
	mov	eax, DWORD PTR -368[rbp]
	add	eax, edx
	sal	eax, 12
	mov	DWORD PTR -352[rbp], eax
	mov	eax, DWORD PTR -372[rbp]
	sub	eax, DWORD PTR -368[rbp]
	sal	eax, 12
	mov	DWORD PTR -348[rbp], eax
	mov	edx, DWORD PTR -352[rbp]
	mov	eax, DWORD PTR -356[rbp]
	add	eax, edx
	mov	DWORD PTR -344[rbp], eax
	mov	eax, DWORD PTR -352[rbp]
	sub	eax, DWORD PTR -356[rbp]
	mov	DWORD PTR -340[rbp], eax
	mov	edx, DWORD PTR -348[rbp]
	mov	eax, DWORD PTR -360[rbp]
	add	eax, edx
	mov	DWORD PTR -336[rbp], eax
	mov	eax, DWORD PTR -348[rbp]
	sub	eax, DWORD PTR -360[rbp]
	mov	DWORD PTR -332[rbp], eax
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 112
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	mov	rax, QWORD PTR -304[rbp]
	add	rax, 56
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	mov	DWORD PTR -352[rbp], eax
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 80
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	mov	rax, QWORD PTR -304[rbp]
	add	rax, 40
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	mov	DWORD PTR -348[rbp], eax
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 48
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	mov	rax, QWORD PTR -304[rbp]
	add	rax, 24
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	mov	DWORD PTR -360[rbp], eax
	mov	rax, QWORD PTR -296[rbp]
	add	rax, 16
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	mov	rax, QWORD PTR -304[rbp]
	add	rax, 8
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	mov	DWORD PTR -356[rbp], eax
	mov	edx, DWORD PTR -352[rbp]
	mov	eax, DWORD PTR -360[rbp]
	add	eax, edx
	mov	DWORD PTR -368[rbp], eax
	mov	edx, DWORD PTR -348[rbp]
	mov	eax, DWORD PTR -356[rbp]
	add	eax, edx
	mov	DWORD PTR -328[rbp], eax
	mov	edx, DWORD PTR -352[rbp]
	mov	eax, DWORD PTR -356[rbp]
	add	eax, edx
	mov	DWORD PTR -364[rbp], eax
	mov	edx, DWORD PTR -348[rbp]
	mov	eax, DWORD PTR -360[rbp]
	add	eax, edx
	mov	DWORD PTR -372[rbp], eax
	mov	edx, DWORD PTR -368[rbp]
	mov	eax, DWORD PTR -328[rbp]
	add	eax, edx
	imul	eax, eax, 4816
	mov	DWORD PTR -324[rbp], eax
	mov	eax, DWORD PTR -352[rbp]
	imul	eax, eax, 1223
	mov	DWORD PTR -352[rbp], eax
	mov	eax, DWORD PTR -348[rbp]
	imul	eax, eax, 8410
	mov	DWORD PTR -348[rbp], eax
	mov	eax, DWORD PTR -360[rbp]
	imul	eax, eax, 12586
	mov	DWORD PTR -360[rbp], eax
	mov	eax, DWORD PTR -356[rbp]
	imul	eax, eax, 6149
	mov	DWORD PTR -356[rbp], eax
	mov	eax, DWORD PTR -364[rbp]
	imul	edx, eax, -3685
	mov	eax, DWORD PTR -324[rbp]
	add	eax, edx
	mov	DWORD PTR -364[rbp], eax
	mov	eax, DWORD PTR -372[rbp]
	imul	edx, eax, -10497
	mov	eax, DWORD PTR -324[rbp]
	add	eax, edx
	mov	DWORD PTR -372[rbp], eax
	mov	eax, DWORD PTR -368[rbp]
	imul	eax, eax, -8034
	mov	DWORD PTR -368[rbp], eax
	mov	eax, DWORD PTR -328[rbp]
	imul	eax, eax, -1597
	mov	DWORD PTR -328[rbp], eax
	mov	edx, DWORD PTR -364[rbp]
	mov	eax, DWORD PTR -328[rbp]
	add	eax, edx
	add	DWORD PTR -356[rbp], eax
	mov	edx, DWORD PTR -372[rbp]
	mov	eax, DWORD PTR -368[rbp]
	add	eax, edx
	add	DWORD PTR -360[rbp], eax
	mov	edx, DWORD PTR -372[rbp]
	mov	eax, DWORD PTR -328[rbp]
	add	eax, edx
	add	DWORD PTR -348[rbp], eax
	mov	edx, DWORD PTR -364[rbp]
	mov	eax, DWORD PTR -368[rbp]
	add	eax, edx
	add	DWORD PTR -352[rbp], eax
	add	DWORD PTR -344[rbp], 512
	add	DWORD PTR -336[rbp], 512
	add	DWORD PTR -332[rbp], 512
	add	DWORD PTR -340[rbp], 512
	mov	edx, DWORD PTR -344[rbp]
	mov	eax, DWORD PTR -356[rbp]
	add	eax, edx
	sar	eax, 10
	mov	edx, eax
	mov	rax, QWORD PTR -320[rbp]
	mov	DWORD PTR [rax], edx
	mov	eax, DWORD PTR -344[rbp]
	sub	eax, DWORD PTR -356[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 224
	sar	edx, 10
	mov	DWORD PTR [rax], edx
	mov	edx, DWORD PTR -336[rbp]
	mov	eax, DWORD PTR -360[rbp]
	add	edx, eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 32
	sar	edx, 10
	mov	DWORD PTR [rax], edx
	mov	eax, DWORD PTR -336[rbp]
	sub	eax, DWORD PTR -360[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 192
	sar	edx, 10
	mov	DWORD PTR [rax], edx
	mov	edx, DWORD PTR -332[rbp]
	mov	eax, DWORD PTR -348[rbp]
	add	edx, eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 64
	sar	edx, 10
	mov	DWORD PTR [rax], edx
	mov	eax, DWORD PTR -332[rbp]
	sub	eax, DWORD PTR -348[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 160
	sar	edx, 10
	mov	DWORD PTR [rax], edx
	mov	edx, DWORD PTR -340[rbp]
	mov	eax, DWORD PTR -352[rbp]
	add	edx, eax
	mov	rax, QWORD PTR -320[rbp]
	add	rax, 96
	sar	edx, 10
	mov	DWORD PTR [rax], edx
	mov	eax, DWORD PTR -340[rbp]
	sub	eax, DWORD PTR -352[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -320[rbp]
	sub	rax, -128
	sar	edx, 10
	mov	DWORD PTR [rax], edx
.L238:
	add	DWORD PTR -432[rbp], 1
	add	QWORD PTR -296[rbp], 2
	add	QWORD PTR -304[rbp], 1
	add	QWORD PTR -320[rbp], 4
.L236:
	cmp	DWORD PTR -432[rbp], 7
	jle	.L239
	mov	DWORD PTR -432[rbp], 0
	lea	rax, -288[rbp]
	mov	QWORD PTR -320[rbp], rax
	mov	rax, QWORD PTR -440[rbp]
	mov	QWORD PTR -312[rbp], rax
	jmp	.L240
.L241:
	mov	rax, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR 8[rax]
	mov	DWORD PTR -428[rbp], eax
	mov	rax, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR 24[rax]
	mov	DWORD PTR -424[rbp], eax
	mov	edx, DWORD PTR -428[rbp]
	mov	eax, DWORD PTR -424[rbp]
	add	eax, edx
	imul	eax, eax, 2217
	mov	DWORD PTR -420[rbp], eax
	mov	eax, DWORD PTR -424[rbp]
	imul	edx, eax, -7567
	mov	eax, DWORD PTR -420[rbp]
	add	eax, edx
	mov	DWORD PTR -416[rbp], eax
	mov	eax, DWORD PTR -428[rbp]
	imul	edx, eax, 3135
	mov	eax, DWORD PTR -420[rbp]
	add	eax, edx
	mov	DWORD PTR -412[rbp], eax
	mov	rax, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -428[rbp], eax
	mov	rax, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	DWORD PTR -424[rbp], eax
	mov	edx, DWORD PTR -428[rbp]
	mov	eax, DWORD PTR -424[rbp]
	add	eax, edx
	sal	eax, 12
	mov	DWORD PTR -408[rbp], eax
	mov	eax, DWORD PTR -428[rbp]
	sub	eax, DWORD PTR -424[rbp]
	sal	eax, 12
	mov	DWORD PTR -404[rbp], eax
	mov	edx, DWORD PTR -408[rbp]
	mov	eax, DWORD PTR -412[rbp]
	add	eax, edx
	mov	DWORD PTR -400[rbp], eax
	mov	eax, DWORD PTR -408[rbp]
	sub	eax, DWORD PTR -412[rbp]
	mov	DWORD PTR -396[rbp], eax
	mov	edx, DWORD PTR -404[rbp]
	mov	eax, DWORD PTR -416[rbp]
	add	eax, edx
	mov	DWORD PTR -392[rbp], eax
	mov	eax, DWORD PTR -404[rbp]
	sub	eax, DWORD PTR -416[rbp]
	mov	DWORD PTR -388[rbp], eax
	mov	rax, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR 28[rax]
	mov	DWORD PTR -408[rbp], eax
	mov	rax, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	DWORD PTR -404[rbp], eax
	mov	rax, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR 12[rax]
	mov	DWORD PTR -416[rbp], eax
	mov	rax, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	DWORD PTR -412[rbp], eax
	mov	edx, DWORD PTR -408[rbp]
	mov	eax, DWORD PTR -416[rbp]
	add	eax, edx
	mov	DWORD PTR -424[rbp], eax
	mov	edx, DWORD PTR -404[rbp]
	mov	eax, DWORD PTR -412[rbp]
	add	eax, edx
	mov	DWORD PTR -384[rbp], eax
	mov	edx, DWORD PTR -408[rbp]
	mov	eax, DWORD PTR -412[rbp]
	add	eax, edx
	mov	DWORD PTR -420[rbp], eax
	mov	edx, DWORD PTR -404[rbp]
	mov	eax, DWORD PTR -416[rbp]
	add	eax, edx
	mov	DWORD PTR -428[rbp], eax
	mov	edx, DWORD PTR -424[rbp]
	mov	eax, DWORD PTR -384[rbp]
	add	eax, edx
	imul	eax, eax, 4816
	mov	DWORD PTR -380[rbp], eax
	mov	eax, DWORD PTR -408[rbp]
	imul	eax, eax, 1223
	mov	DWORD PTR -408[rbp], eax
	mov	eax, DWORD PTR -404[rbp]
	imul	eax, eax, 8410
	mov	DWORD PTR -404[rbp], eax
	mov	eax, DWORD PTR -416[rbp]
	imul	eax, eax, 12586
	mov	DWORD PTR -416[rbp], eax
	mov	eax, DWORD PTR -412[rbp]
	imul	eax, eax, 6149
	mov	DWORD PTR -412[rbp], eax
	mov	eax, DWORD PTR -420[rbp]
	imul	edx, eax, -3685
	mov	eax, DWORD PTR -380[rbp]
	add	eax, edx
	mov	DWORD PTR -420[rbp], eax
	mov	eax, DWORD PTR -428[rbp]
	imul	edx, eax, -10497
	mov	eax, DWORD PTR -380[rbp]
	add	eax, edx
	mov	DWORD PTR -428[rbp], eax
	mov	eax, DWORD PTR -424[rbp]
	imul	eax, eax, -8034
	mov	DWORD PTR -424[rbp], eax
	mov	eax, DWORD PTR -384[rbp]
	imul	eax, eax, -1597
	mov	DWORD PTR -384[rbp], eax
	mov	edx, DWORD PTR -420[rbp]
	mov	eax, DWORD PTR -384[rbp]
	add	eax, edx
	add	DWORD PTR -412[rbp], eax
	mov	edx, DWORD PTR -428[rbp]
	mov	eax, DWORD PTR -424[rbp]
	add	eax, edx
	add	DWORD PTR -416[rbp], eax
	mov	edx, DWORD PTR -428[rbp]
	mov	eax, DWORD PTR -384[rbp]
	add	eax, edx
	add	DWORD PTR -404[rbp], eax
	mov	edx, DWORD PTR -420[rbp]
	mov	eax, DWORD PTR -424[rbp]
	add	eax, edx
	add	DWORD PTR -408[rbp], eax
	add	DWORD PTR -400[rbp], 65536
	add	DWORD PTR -392[rbp], 65536
	add	DWORD PTR -388[rbp], 65536
	add	DWORD PTR -396[rbp], 65536
	mov	edx, DWORD PTR -400[rbp]
	mov	eax, DWORD PTR -412[rbp]
	add	eax, edx
	sar	eax, 17
	mov	edi, eax
	call	clamp
	mov	rdx, QWORD PTR -312[rbp]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -400[rbp]
	sub	eax, DWORD PTR -412[rbp]
	sar	eax, 17
	mov	rdx, QWORD PTR -312[rbp]
	lea	rbx, 7[rdx]
	mov	edi, eax
	call	clamp
	mov	BYTE PTR [rbx], al
	mov	edx, DWORD PTR -392[rbp]
	mov	eax, DWORD PTR -416[rbp]
	add	eax, edx
	sar	eax, 17
	mov	rdx, QWORD PTR -312[rbp]
	lea	rbx, 1[rdx]
	mov	edi, eax
	call	clamp
	mov	BYTE PTR [rbx], al
	mov	eax, DWORD PTR -392[rbp]
	sub	eax, DWORD PTR -416[rbp]
	sar	eax, 17
	mov	rdx, QWORD PTR -312[rbp]
	lea	rbx, 6[rdx]
	mov	edi, eax
	call	clamp
	mov	BYTE PTR [rbx], al
	mov	edx, DWORD PTR -388[rbp]
	mov	eax, DWORD PTR -404[rbp]
	add	eax, edx
	sar	eax, 17
	mov	rdx, QWORD PTR -312[rbp]
	lea	rbx, 2[rdx]
	mov	edi, eax
	call	clamp
	mov	BYTE PTR [rbx], al
	mov	eax, DWORD PTR -388[rbp]
	sub	eax, DWORD PTR -404[rbp]
	sar	eax, 17
	mov	rdx, QWORD PTR -312[rbp]
	lea	rbx, 5[rdx]
	mov	edi, eax
	call	clamp
	mov	BYTE PTR [rbx], al
	mov	edx, DWORD PTR -396[rbp]
	mov	eax, DWORD PTR -408[rbp]
	add	eax, edx
	sar	eax, 17
	mov	rdx, QWORD PTR -312[rbp]
	lea	rbx, 3[rdx]
	mov	edi, eax
	call	clamp
	mov	BYTE PTR [rbx], al
	mov	eax, DWORD PTR -396[rbp]
	sub	eax, DWORD PTR -408[rbp]
	sar	eax, 17
	mov	rdx, QWORD PTR -312[rbp]
	lea	rbx, 4[rdx]
	mov	edi, eax
	call	clamp
	mov	BYTE PTR [rbx], al
	add	DWORD PTR -432[rbp], 1
	add	QWORD PTR -320[rbp], 32
	mov	eax, DWORD PTR -444[rbp]
	cdqe
	add	QWORD PTR -312[rbp], rax
.L240:
	cmp	DWORD PTR -432[rbp], 7
	jle	.L241
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L242
	call	__stack_chk_fail@PLT
.L242:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	idct_block, .-idct_block
	.type	get_marker, @function
get_marker:
.LFB45:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 14056[rax]
	cmp	al, -1
	je	.L244
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 14056[rax]
	mov	BYTE PTR -1[rbp], al
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 14056[rax], -1
	movzx	eax, BYTE PTR -1[rbp]
	jmp	.L245
.L244:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8u
	mov	BYTE PTR -1[rbp], al
	cmp	BYTE PTR -1[rbp], -1
	je	.L247
	mov	eax, -1
	jmp	.L245
.L248:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8u
	mov	BYTE PTR -1[rbp], al
.L247:
	cmp	BYTE PTR -1[rbp], -1
	je	.L248
	movzx	eax, BYTE PTR -1[rbp]
.L245:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	get_marker, .-get_marker
	.type	reset, @function
reset:
.LFB46:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 14052[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 14048[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 14060[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 13928[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR 13928[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 13856[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR 13856[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 13784[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR 14056[rax], -1
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 14084[rax]
	test	eax, eax
	je	.L250
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 14084[rax]
	jmp	.L251
.L250:
	mov	eax, 2147483647
.L251:
	mov	rdx, QWORD PTR -8[rbp]
	mov	DWORD PTR 14088[rdx], eax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	reset, .-reset
	.type	parse_entropy_coded_data, @function
parse_entropy_coded_data:
.LFB47:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 224
	mov	QWORD PTR -216[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -216[rbp]
	mov	rdi, rax
	call	reset
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 14064[rax]
	cmp	eax, 1
	jne	.L253
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 14068[rax]
	mov	DWORD PTR -156[rbp], eax
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -156[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13788
	mov	eax, DWORD PTR [rax]
	add	eax, 7
	sar	eax, 3
	mov	DWORD PTR -152[rbp], eax
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -156[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13792
	mov	eax, DWORD PTR [rax]
	add	eax, 7
	sar	eax, 3
	mov	DWORD PTR -148[rbp], eax
	mov	DWORD PTR -192[rbp], 0
	jmp	.L254
.L263:
	mov	DWORD PTR -196[rbp], 0
	jmp	.L255
.L262:
	mov	rax, QWORD PTR -216[rbp]
	lea	rsi, 6760[rax]
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -156[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13780
	mov	eax, DWORD PTR [rax]
	cdqe
	imul	rax, rax, 1680
	lea	rcx, [rsi+rax]
	mov	rax, QWORD PTR -216[rbp]
	lea	rdi, 40[rax]
	mov	rsi, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -156[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13776
	mov	eax, DWORD PTR [rax]
	cdqe
	imul	rax, rax, 1680
	lea	rdx, [rdi+rax]
	mov	edi, DWORD PTR -156[rbp]
	lea	rsi, -144[rbp]
	mov	rax, QWORD PTR -216[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	decode_block
	test	eax, eax
	jne	.L256
	mov	eax, 0
	jmp	.L265
.L256:
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -156[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13772
	mov	eax, DWORD PTR [rax]
	cdqe
	sal	rax, 6
	lea	rdx, 13472[rax]
	mov	rax, QWORD PTR -216[rbp]
	add	rax, rdx
	lea	rdx, 8[rax]
	mov	rsi, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -156[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13796
	mov	esi, DWORD PTR [rax]
	mov	rdi, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -156[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rdi
	add	rax, 13808
	mov	rdi, QWORD PTR [rax]
	mov	r8, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -156[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, r8
	add	rax, 13796
	mov	eax, DWORD PTR [rax]
	imul	eax, DWORD PTR -192[rbp]
	sal	eax, 3
	movsx	rcx, eax
	mov	eax, DWORD PTR -196[rbp]
	sal	eax, 3
	cdqe
	add	rax, rcx
	add	rdi, rax
	lea	rax, -144[rbp]
	mov	rcx, rdx
	mov	rdx, rax
	call	idct_block
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 14088[rax]
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -216[rbp]
	mov	DWORD PTR 14088[rax], edx
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 14088[rax]
	test	eax, eax
	jg	.L258
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 14052[rax]
	cmp	eax, 23
	jg	.L259
	mov	rax, QWORD PTR -216[rbp]
	mov	rdi, rax
	call	grow_buffer_unsafe
.L259:
	mov	rax, QWORD PTR -216[rbp]
	movzx	eax, BYTE PTR 14056[rax]
	cmp	al, -49
	jbe	.L260
	mov	rax, QWORD PTR -216[rbp]
	movzx	eax, BYTE PTR 14056[rax]
	cmp	al, -41
	jbe	.L261
.L260:
	mov	eax, 1
	jmp	.L265
.L261:
	mov	rax, QWORD PTR -216[rbp]
	mov	rdi, rax
	call	reset
.L258:
	add	DWORD PTR -196[rbp], 1
.L255:
	mov	eax, DWORD PTR -196[rbp]
	cmp	eax, DWORD PTR -152[rbp]
	jl	.L262
	add	DWORD PTR -192[rbp], 1
.L254:
	mov	eax, DWORD PTR -192[rbp]
	cmp	eax, DWORD PTR -148[rbp]
	jl	.L263
	jmp	.L264
.L253:
	mov	DWORD PTR -184[rbp], 0
	jmp	.L266
.L281:
	mov	DWORD PTR -188[rbp], 0
	jmp	.L267
.L280:
	mov	DWORD PTR -180[rbp], 0
	jmp	.L268
.L275:
	mov	rax, QWORD PTR -216[rbp]
	mov	edx, DWORD PTR -180[rbp]
	movsx	rdx, edx
	add	rdx, 3516
	mov	eax, DWORD PTR 4[rax+rdx*4]
	mov	DWORD PTR -168[rbp], eax
	mov	DWORD PTR -172[rbp], 0
	jmp	.L269
.L274:
	mov	DWORD PTR -176[rbp], 0
	jmp	.L270
.L273:
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13764
	mov	eax, DWORD PTR [rax]
	imul	eax, DWORD PTR -188[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -176[rbp]
	add	eax, edx
	sal	eax, 3
	mov	DWORD PTR -164[rbp], eax
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13768
	mov	eax, DWORD PTR [rax]
	imul	eax, DWORD PTR -184[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -172[rbp]
	add	eax, edx
	sal	eax, 3
	mov	DWORD PTR -160[rbp], eax
	mov	rax, QWORD PTR -216[rbp]
	lea	rsi, 6760[rax]
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13780
	mov	eax, DWORD PTR [rax]
	cdqe
	imul	rax, rax, 1680
	lea	rcx, [rsi+rax]
	mov	rax, QWORD PTR -216[rbp]
	lea	rdi, 40[rax]
	mov	rsi, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13776
	mov	eax, DWORD PTR [rax]
	cdqe
	imul	rax, rax, 1680
	lea	rdx, [rdi+rax]
	mov	edi, DWORD PTR -168[rbp]
	lea	rsi, -144[rbp]
	mov	rax, QWORD PTR -216[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	decode_block
	test	eax, eax
	jne	.L271
	mov	eax, 0
	jmp	.L265
.L271:
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13772
	mov	eax, DWORD PTR [rax]
	cdqe
	sal	rax, 6
	lea	rdx, 13472[rax]
	mov	rax, QWORD PTR -216[rbp]
	add	rax, rdx
	lea	rdx, 8[rax]
	mov	rsi, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13796
	mov	esi, DWORD PTR [rax]
	mov	rdi, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rdi
	add	rax, 13808
	mov	rdi, QWORD PTR [rax]
	mov	r8, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, r8
	add	rax, 13796
	mov	eax, DWORD PTR [rax]
	imul	eax, DWORD PTR -160[rbp]
	movsx	rcx, eax
	mov	eax, DWORD PTR -164[rbp]
	cdqe
	add	rax, rcx
	add	rdi, rax
	lea	rax, -144[rbp]
	mov	rcx, rdx
	mov	rdx, rax
	call	idct_block
	add	DWORD PTR -176[rbp], 1
.L270:
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13764
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -176[rbp], eax
	jl	.L273
	add	DWORD PTR -172[rbp], 1
.L269:
	mov	rcx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -168[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13768
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -172[rbp], eax
	jl	.L274
	add	DWORD PTR -180[rbp], 1
.L268:
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 14064[rax]
	cmp	DWORD PTR -180[rbp], eax
	jl	.L275
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 14088[rax]
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -216[rbp]
	mov	DWORD PTR 14088[rax], edx
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 14088[rax]
	test	eax, eax
	jg	.L276
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 14052[rax]
	cmp	eax, 23
	jg	.L277
	mov	rax, QWORD PTR -216[rbp]
	mov	rdi, rax
	call	grow_buffer_unsafe
.L277:
	mov	rax, QWORD PTR -216[rbp]
	movzx	eax, BYTE PTR 14056[rax]
	cmp	al, -49
	jbe	.L278
	mov	rax, QWORD PTR -216[rbp]
	movzx	eax, BYTE PTR 14056[rax]
	cmp	al, -41
	jbe	.L279
.L278:
	mov	eax, 1
	jmp	.L265
.L279:
	mov	rax, QWORD PTR -216[rbp]
	mov	rdi, rax
	call	reset
.L276:
	add	DWORD PTR -188[rbp], 1
.L267:
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 13744[rax]
	cmp	DWORD PTR -188[rbp], eax
	jl	.L280
	add	DWORD PTR -184[rbp], 1
.L266:
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 13748[rax]
	cmp	DWORD PTR -184[rbp], eax
	jl	.L281
.L264:
	mov	eax, 1
.L265:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L282
	call	__stack_chk_fail@PLT
.L282:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	parse_entropy_coded_data, .-parse_entropy_coded_data
	.section	.rodata
.LC14:
	.string	"expected marker"
.LC15:
	.string	"progressive jpeg"
.LC16:
	.string	"bad DRI len"
.LC17:
	.string	"bad DQT type"
.LC18:
	.string	"bad DQT table"
.LC19:
	.string	"bad DHT header"
	.text
	.type	process_marker, @function
process_marker:
.LFB48:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 152
	.cfi_offset 3, -24
	mov	QWORD PTR -152[rbp], rdi
	mov	DWORD PTR -156[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	cmp	DWORD PTR -156[rbp], 255
	je	.L284
	cmp	DWORD PTR -156[rbp], 255
	jg	.L285
	cmp	DWORD PTR -156[rbp], 221
	je	.L286
	cmp	DWORD PTR -156[rbp], 221
	jg	.L285
	cmp	DWORD PTR -156[rbp], 219
	je	.L287
	cmp	DWORD PTR -156[rbp], 219
	jg	.L285
	cmp	DWORD PTR -156[rbp], 194
	je	.L288
	cmp	DWORD PTR -156[rbp], 196
	je	.L289
	jmp	.L285
.L284:
	lea	rdi, .LC14[rip]
	call	e
	jmp	.L290
.L288:
	lea	rdi, .LC15[rip]
	call	e
	jmp	.L290
.L286:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16
	cmp	eax, 4
	je	.L291
	lea	rdi, .LC16[rip]
	call	e
	jmp	.L290
.L291:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16
	mov	rdx, QWORD PTR -152[rbp]
	mov	DWORD PTR 14084[rdx], eax
	mov	eax, 1
	jmp	.L290
.L287:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16
	sub	eax, 2
	mov	DWORD PTR -144[rbp], eax
	jmp	.L292
.L297:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -128[rbp], eax
	mov	eax, DWORD PTR -128[rbp]
	sar	eax, 4
	mov	DWORD PTR -124[rbp], eax
	mov	eax, DWORD PTR -128[rbp]
	and	eax, 15
	mov	DWORD PTR -120[rbp], eax
	cmp	DWORD PTR -124[rbp], 0
	je	.L293
	lea	rdi, .LC17[rip]
	call	e
	jmp	.L290
.L293:
	cmp	DWORD PTR -120[rbp], 3
	jle	.L294
	lea	rdi, .LC18[rip]
	call	e
	jmp	.L290
.L294:
	mov	DWORD PTR -140[rbp], 0
	jmp	.L295
.L296:
	mov	rax, QWORD PTR -152[rbp]
	mov	edx, DWORD PTR -140[rbp]
	movsx	rdx, edx
	lea	rcx, dezigzag[rip]
	movzx	edx, BYTE PTR [rdx+rcx]
	movzx	ebx, dl
	mov	rdi, rax
	call	get8u
	mov	rsi, QWORD PTR -152[rbp]
	movsx	rcx, ebx
	mov	edx, DWORD PTR -120[rbp]
	movsx	rdx, edx
	sal	rdx, 6
	add	rdx, rsi
	add	rdx, rcx
	add	rdx, 13480
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -140[rbp], 1
.L295:
	cmp	DWORD PTR -140[rbp], 63
	jle	.L296
	sub	DWORD PTR -144[rbp], 65
.L292:
	cmp	DWORD PTR -144[rbp], 0
	jg	.L297
	cmp	DWORD PTR -144[rbp], 0
	sete	al
	movzx	eax, al
	jmp	.L290
.L289:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16
	sub	eax, 2
	mov	DWORD PTR -144[rbp], eax
	jmp	.L298
.L310:
	mov	DWORD PTR -132[rbp], 0
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -116[rbp], eax
	mov	eax, DWORD PTR -116[rbp]
	sar	eax, 4
	mov	DWORD PTR -112[rbp], eax
	mov	eax, DWORD PTR -116[rbp]
	and	eax, 15
	mov	DWORD PTR -108[rbp], eax
	cmp	DWORD PTR -112[rbp], 1
	jg	.L299
	cmp	DWORD PTR -108[rbp], 3
	jle	.L300
.L299:
	lea	rdi, .LC19[rip]
	call	e
	jmp	.L290
.L300:
	mov	DWORD PTR -136[rbp], 0
	jmp	.L302
.L303:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, DWORD PTR -136[rbp]
	movsx	rdx, edx
	mov	DWORD PTR -96[rbp+rdx*4], eax
	mov	eax, DWORD PTR -136[rbp]
	cdqe
	mov	eax, DWORD PTR -96[rbp+rax*4]
	add	DWORD PTR -132[rbp], eax
	add	DWORD PTR -136[rbp], 1
.L302:
	cmp	DWORD PTR -136[rbp], 15
	jle	.L303
	sub	DWORD PTR -144[rbp], 17
	cmp	DWORD PTR -112[rbp], 0
	jne	.L304
	mov	rax, QWORD PTR -152[rbp]
	lea	rdx, 40[rax]
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	imul	rax, rax, 1680
	add	rdx, rax
	lea	rax, -96[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	build_huffman
	test	eax, eax
	jne	.L305
	mov	eax, 0
	jmp	.L290
.L305:
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	imul	rax, rax, 1680
	lea	rdx, 1056[rax]
	mov	rax, QWORD PTR -152[rbp]
	add	rax, rdx
	add	rax, 8
	mov	QWORD PTR -104[rbp], rax
	jmp	.L306
.L304:
	mov	rax, QWORD PTR -152[rbp]
	lea	rdx, 6760[rax]
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	imul	rax, rax, 1680
	add	rdx, rax
	lea	rax, -96[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	build_huffman
	test	eax, eax
	jne	.L307
	mov	eax, 0
	jmp	.L290
.L307:
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	imul	rax, rax, 1680
	lea	rdx, 7776[rax]
	mov	rax, QWORD PTR -152[rbp]
	add	rax, rdx
	add	rax, 8
	mov	QWORD PTR -104[rbp], rax
.L306:
	mov	DWORD PTR -136[rbp], 0
	jmp	.L308
.L309:
	mov	rax, QWORD PTR -152[rbp]
	mov	edx, DWORD PTR -136[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -104[rbp]
	lea	rbx, [rcx+rdx]
	mov	rdi, rax
	call	get8u
	mov	BYTE PTR [rbx], al
	add	DWORD PTR -136[rbp], 1
.L308:
	mov	eax, DWORD PTR -136[rbp]
	cmp	eax, DWORD PTR -132[rbp]
	jl	.L309
	mov	eax, DWORD PTR -132[rbp]
	sub	DWORD PTR -144[rbp], eax
.L298:
	cmp	DWORD PTR -144[rbp], 0
	jg	.L310
	cmp	DWORD PTR -144[rbp], 0
	sete	al
	movzx	eax, al
	jmp	.L290
.L285:
	cmp	DWORD PTR -156[rbp], 223
	jle	.L311
	cmp	DWORD PTR -156[rbp], 239
	jle	.L312
.L311:
	cmp	DWORD PTR -156[rbp], 254
	jne	.L313
.L312:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16
	lea	edx, -2[rax]
	mov	rax, QWORD PTR -152[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	mov	eax, 1
	jmp	.L290
.L313:
	mov	eax, 0
.L290:
	mov	rbx, QWORD PTR -24[rbp]
	sub	rbx, QWORD PTR fs:40
	je	.L314
	call	__stack_chk_fail@PLT
.L314:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE48:
	.size	process_marker, .-process_marker
	.section	.rodata
.LC20:
	.string	"bad SOS component count"
.LC21:
	.string	"bad SOS len"
.LC22:
	.string	"bad DC huff"
.LC23:
	.string	"bad AC huff"
.LC24:
	.string	"bad SOS"
	.text
	.type	process_scan_header, @function
process_scan_header:
.LFB49:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get16
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get8
	mov	rdx, QWORD PTR -40[rbp]
	mov	DWORD PTR 14064[rdx], eax
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 14064[rax]
	test	eax, eax
	jle	.L316
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 14064[rax]
	cmp	eax, 4
	jg	.L316
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR 14064[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	edx, eax
	jle	.L317
.L316:
	lea	rdi, .LC20[rip]
	call	e
	jmp	.L318
.L317:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 14064[rax]
	add	eax, 3
	add	eax, eax
	cmp	DWORD PTR -12[rbp], eax
	je	.L319
	lea	rdi, .LC21[rip]
	call	e
	jmp	.L318
.L319:
	mov	DWORD PTR -20[rbp], 0
	jmp	.L320
.L328:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -4[rbp], eax
	mov	DWORD PTR -16[rbp], 0
	jmp	.L321
.L324:
	mov	rcx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13760
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	je	.L331
	add	DWORD PTR -16[rbp], 1
.L321:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -16[rbp], eax
	jl	.L324
	jmp	.L323
.L331:
	nop
.L323:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -16[rbp], eax
	jne	.L325
	mov	eax, 0
	jmp	.L318
.L325:
	mov	eax, DWORD PTR -4[rbp]
	sar	eax, 4
	mov	ecx, eax
	mov	rsi, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13776
	mov	DWORD PTR [rax], ecx
	mov	rcx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13776
	mov	eax, DWORD PTR [rax]
	cmp	eax, 3
	jle	.L326
	lea	rdi, .LC22[rip]
	call	e
	jmp	.L318
.L326:
	mov	eax, DWORD PTR -4[rbp]
	and	eax, 15
	mov	ecx, eax
	mov	rsi, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13780
	mov	DWORD PTR [rax], ecx
	mov	rcx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13780
	mov	eax, DWORD PTR [rax]
	cmp	eax, 3
	jle	.L327
	lea	rdi, .LC23[rip]
	call	e
	jmp	.L318
.L327:
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -20[rbp]
	movsx	rdx, edx
	lea	rcx, 3516[rdx]
	mov	edx, DWORD PTR -16[rbp]
	mov	DWORD PTR 4[rax+rcx*4], edx
	add	DWORD PTR -20[rbp], 1
.L320:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 14064[rax]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L328
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get8
	test	eax, eax
	je	.L329
	lea	rdi, .LC24[rip]
	call	e
	jmp	.L318
.L329:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get8
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get8
	test	eax, eax
	je	.L330
	lea	rdi, .LC24[rip]
	call	e
	jmp	.L318
.L330:
	mov	eax, 1
.L318:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE49:
	.size	process_scan_header, .-process_scan_header
	.section	.rodata
.LC25:
	.string	"bad SOF len"
.LC26:
	.string	"only 8-bit"
.LC27:
	.string	"no header height"
.LC28:
	.string	"0 width"
.LC29:
	.string	"bad component count"
.LC30:
	.string	"bad component ID"
.LC31:
	.string	"bad H"
.LC32:
	.string	"bad V"
.LC33:
	.string	"bad TQ"
.LC34:
	.string	"too large"
	.text
	.type	process_frame_header, @function
process_frame_header:
.LFB50:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -32[rbp], 1
	mov	DWORD PTR -28[rbp], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get16
	mov	DWORD PTR -24[rbp], eax
	cmp	DWORD PTR -24[rbp], 10
	jg	.L333
	lea	rdi, .LC25[rip]
	call	e
	jmp	.L334
.L333:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 8
	je	.L335
	lea	rdi, .LC26[rip]
	call	e
	jmp	.L334
.L335:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get16
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	test	eax, eax
	jne	.L336
	lea	rdi, .LC27[rip]
	call	e
	jmp	.L334
.L336:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get16
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	jne	.L337
	lea	rdi, .LC28[rip]
	call	e
	jmp	.L334
.L337:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -16[rbp], eax
	cmp	DWORD PTR -16[rbp], 3
	je	.L338
	cmp	DWORD PTR -16[rbp], 1
	je	.L338
	lea	rdi, .LC29[rip]
	call	e
	jmp	.L334
.L338:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -16[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	DWORD PTR -36[rbp], 0
	jmp	.L339
.L340:
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13808
	mov	QWORD PTR [rax], 0
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13824
	mov	QWORD PTR [rax], 0
	add	DWORD PTR -36[rbp], 1
.L339:
	mov	eax, DWORD PTR -36[rbp]
	cmp	eax, DWORD PTR -16[rbp]
	jl	.L340
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	add	eax, 8
	cmp	DWORD PTR -24[rbp], eax
	je	.L341
	lea	rdi, .LC25[rip]
	call	e
	jmp	.L334
.L341:
	mov	DWORD PTR -36[rbp], 0
	jmp	.L342
.L349:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13760
	mov	DWORD PTR [rax], edx
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13760
	mov	eax, DWORD PTR [rax]
	mov	edx, DWORD PTR -36[rbp]
	add	edx, 1
	cmp	eax, edx
	je	.L343
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13760
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -36[rbp], eax
	je	.L343
	lea	rdi, .LC30[rip]
	call	e
	jmp	.L334
.L343:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	sar	eax, 4
	mov	ecx, eax
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13764
	mov	DWORD PTR [rax], ecx
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13764
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	je	.L344
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13764
	mov	eax, DWORD PTR [rax]
	cmp	eax, 4
	jle	.L345
.L344:
	lea	rdi, .LC31[rip]
	call	e
	jmp	.L334
.L345:
	mov	eax, DWORD PTR -12[rbp]
	and	eax, 15
	mov	ecx, eax
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13768
	mov	DWORD PTR [rax], ecx
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13768
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	je	.L346
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13768
	mov	eax, DWORD PTR [rax]
	cmp	eax, 4
	jle	.L347
.L346:
	lea	rdi, .LC32[rip]
	call	e
	jmp	.L334
.L347:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13772
	mov	DWORD PTR [rax], edx
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13772
	mov	eax, DWORD PTR [rax]
	cmp	eax, 3
	jle	.L348
	lea	rdi, .LC33[rip]
	call	e
	jmp	.L334
.L348:
	add	DWORD PTR -36[rbp], 1
.L342:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -36[rbp], eax
	jl	.L349
	cmp	DWORD PTR -60[rbp], 0
	je	.L350
	mov	eax, 1
	jmp	.L334
.L350:
	mov	rax, QWORD PTR -8[rbp]
	mov	edi, DWORD PTR [rax]
	mov	eax, 1073741824
	mov	edx, 0
	div	edi
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
	mov	ecx, eax
	mov	eax, edx
	mov	edx, 0
	div	ecx
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	edx, eax
	jnb	.L351
	lea	rdi, .LC34[rip]
	call	e
	jmp	.L334
.L351:
	mov	DWORD PTR -36[rbp], 0
	jmp	.L352
.L355:
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13764
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -32[rbp], eax
	jge	.L353
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13764
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -32[rbp], eax
.L353:
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13768
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -28[rbp], eax
	jge	.L354
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13768
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -28[rbp], eax
.L354:
	add	DWORD PTR -36[rbp], 1
.L352:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -36[rbp], eax
	jl	.L355
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, DWORD PTR -32[rbp]
	mov	DWORD PTR 13736[rax], edx
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, DWORD PTR -28[rbp]
	mov	DWORD PTR 13740[rax], edx
	mov	eax, DWORD PTR -32[rbp]
	lea	edx, 0[0+rax*8]
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 13752[rax], edx
	mov	eax, DWORD PTR -28[rbp]
	lea	edx, 0[0+rax*8]
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 13756[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 13752[rax]
	add	eax, edx
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 13752[rax]
	mov	ecx, eax
	mov	eax, edx
	mov	edx, 0
	div	ecx
	mov	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 13744[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 13756[rax]
	add	eax, edx
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 13756[rax]
	mov	ecx, eax
	mov	eax, edx
	mov	edx, 0
	div	ecx
	mov	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 13748[rax], edx
	mov	DWORD PTR -36[rbp], 0
	jmp	.L356
.L360:
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, DWORD PTR [rax]
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13764
	mov	eax, DWORD PTR [rax]
	imul	ecx, eax
	mov	edx, ecx
	mov	eax, DWORD PTR -32[rbp]
	add	eax, edx
	sub	eax, 1
	mov	edi, DWORD PTR -32[rbp]
	mov	edx, 0
	div	edi
	mov	ecx, eax
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13788
	mov	DWORD PTR [rax], ecx
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, DWORD PTR 4[rax]
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13768
	mov	eax, DWORD PTR [rax]
	imul	ecx, eax
	mov	edx, ecx
	mov	eax, DWORD PTR -28[rbp]
	add	eax, edx
	sub	eax, 1
	mov	edi, DWORD PTR -28[rbp]
	mov	edx, 0
	div	edi
	mov	ecx, eax
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13792
	mov	DWORD PTR [rax], ecx
	mov	rax, QWORD PTR -56[rbp]
	mov	ecx, DWORD PTR 13744[rax]
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13764
	mov	eax, DWORD PTR [rax]
	imul	eax, ecx
	lea	ecx, 0[0+rax*8]
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13796
	mov	DWORD PTR [rax], ecx
	mov	rax, QWORD PTR -56[rbp]
	mov	ecx, DWORD PTR 13748[rax]
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13768
	mov	eax, DWORD PTR [rax]
	imul	eax, ecx
	lea	ecx, 0[0+rax*8]
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13800
	mov	DWORD PTR [rax], ecx
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13796
	mov	ecx, DWORD PTR [rax]
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13800
	mov	eax, DWORD PTR [rax]
	imul	eax, ecx
	add	eax, 15
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	rcx, rax
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13816
	mov	QWORD PTR [rax], rcx
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13816
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L357
	sub	DWORD PTR -36[rbp], 1
	jmp	.L358
.L359:
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13816
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13808
	mov	QWORD PTR [rax], 0
	sub	DWORD PTR -36[rbp], 1
.L358:
	cmp	DWORD PTR -36[rbp], 0
	jns	.L359
	lea	rdi, .LC6[rip]
	call	e
	jmp	.L334
.L357:
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13816
	mov	rax, QWORD PTR [rax]
	add	rax, 15
	and	rax, -16
	mov	rcx, rax
	mov	rsi, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13808
	mov	QWORD PTR [rax], rcx
	mov	rcx, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13824
	mov	QWORD PTR [rax], 0
	add	DWORD PTR -36[rbp], 1
.L356:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -36[rbp], eax
	jl	.L360
	mov	eax, 1
.L334:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE50:
	.size	process_frame_header, .-process_frame_header
	.section	.rodata
.LC35:
	.string	"no SOI"
.LC36:
	.string	"no SOF"
	.text
	.type	decode_jpeg_header, @function
decode_jpeg_header:
.LFB51:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 14056[rax], -1
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_marker
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 216
	je	.L362
	lea	rdi, .LC35[rip]
	call	e
	jmp	.L363
.L362:
	cmp	DWORD PTR -28[rbp], 1
	jne	.L364
	mov	eax, 1
	jmp	.L363
.L364:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_marker
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
	jmp	.L365
.L371:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	process_marker
	test	eax, eax
	jne	.L366
	mov	eax, 0
	jmp	.L363
.L366:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_marker
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
	jmp	.L367
.L369:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	at_eof
	test	eax, eax
	je	.L368
	lea	rdi, .LC36[rip]
	call	e
	jmp	.L363
.L368:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_marker
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
.L367:
	cmp	DWORD PTR -4[rbp], 255
	je	.L369
.L365:
	cmp	DWORD PTR -4[rbp], 192
	je	.L370
	cmp	DWORD PTR -4[rbp], 193
	jne	.L371
.L370:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	process_frame_header
	test	eax, eax
	jne	.L372
	mov	eax, 0
	jmp	.L363
.L372:
	mov	eax, 1
.L363:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE51:
	.size	decode_jpeg_header, .-decode_jpeg_header
	.type	decode_jpeg_image, @function
decode_jpeg_image:
.LFB52:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 14084[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	decode_jpeg_header
	test	eax, eax
	jne	.L374
	mov	eax, 0
	jmp	.L375
.L374:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_marker
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
	jmp	.L376
.L380:
	cmp	DWORD PTR -4[rbp], 218
	jne	.L377
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	process_scan_header
	test	eax, eax
	jne	.L378
	mov	eax, 0
	jmp	.L375
.L378:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	parse_entropy_coded_data
	test	eax, eax
	jne	.L379
	mov	eax, 0
	jmp	.L375
.L377:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	process_marker
	test	eax, eax
	jne	.L379
	mov	eax, 0
	jmp	.L375
.L379:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_marker
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
.L376:
	cmp	DWORD PTR -4[rbp], 217
	jne	.L380
	mov	eax, 1
.L375:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE52:
	.size	decode_jpeg_image, .-decode_jpeg_image
	.type	resample_row_1, @function
resample_row_1:
.LFB53:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	DWORD PTR -28[rbp], ecx
	mov	DWORD PTR -32[rbp], r8d
	mov	rax, QWORD PTR -16[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE53:
	.size	resample_row_1, .-resample_row_1
	.type	resample_row_v_2, @function
resample_row_v_2:
.LFB54:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	DWORD PTR -44[rbp], ecx
	mov	DWORD PTR -48[rbp], r8d
	mov	DWORD PTR -4[rbp], 0
	jmp	.L384
.L385:
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	add	eax, eax
	lea	ecx, [rax+rdx]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, ecx
	add	eax, 2
	sar	eax, 2
	mov	ecx, eax
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -4[rbp], 1
.L384:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L385
	mov	rax, QWORD PTR -24[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE54:
	.size	resample_row_v_2, .-resample_row_v_2
	.type	resample_row_h_2, @function
resample_row_h_2:
.LFB55:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	DWORD PTR -44[rbp], ecx
	mov	DWORD PTR -48[rbp], r8d
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -44[rbp], 1
	jne	.L388
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	mov	rdx, QWORD PTR -8[rbp]
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	jmp	.L389
.L388:
	mov	rax, QWORD PTR -8[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, edx
	add	eax, 2
	sar	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	mov	BYTE PTR [rax], dl
	mov	DWORD PTR -16[rbp], 1
	jmp	.L390
.L391:
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	add	eax, 2
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -12[rbp]
	add	eax, edx
	sar	eax, 2
	mov	ecx, eax
	mov	eax, DWORD PTR -16[rbp]
	add	eax, eax
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -12[rbp]
	add	eax, edx
	sar	eax, 2
	mov	edx, eax
	mov	eax, DWORD PTR -16[rbp]
	add	eax, eax
	cdqe
	lea	rcx, 1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -16[rbp], 1
.L390:
	mov	eax, DWORD PTR -44[rbp]
	sub	eax, 1
	cmp	DWORD PTR -16[rbp], eax
	jl	.L391
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, -2[rax]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rcx, -1[rax]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, edx
	add	eax, 2
	sar	eax, 2
	mov	ecx, eax
	mov	eax, DWORD PTR -16[rbp]
	add	eax, eax
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -16[rbp]
	add	edx, edx
	movsx	rdx, edx
	lea	rcx, 1[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -24[rbp]
.L389:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE55:
	.size	resample_row_h_2, .-resample_row_h_2
	.type	resample_row_hv_2, @function
resample_row_hv_2:
.LFB56:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	DWORD PTR -44[rbp], ecx
	mov	DWORD PTR -48[rbp], r8d
	cmp	DWORD PTR -44[rbp], 1
	jne	.L393
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, edx
	add	eax, 2
	sar	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	jmp	.L394
.L393:
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, edx
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	add	eax, 2
	sar	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR [rax], dl
	mov	DWORD PTR -12[rbp], 1
	jmp	.L395
.L396:
	mov	eax, DWORD PTR -8[rbp]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	add	eax, eax
	lea	ecx, [rax+rdx]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, ecx
	mov	DWORD PTR -8[rbp], eax
	mov	edx, DWORD PTR -4[rbp]
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	mov	eax, DWORD PTR -8[rbp]
	add	eax, edx
	add	eax, 8
	sar	eax, 4
	mov	edx, eax
	mov	eax, DWORD PTR -12[rbp]
	add	eax, eax
	cdqe
	lea	rcx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	mov	edx, DWORD PTR -8[rbp]
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	add	eax, 8
	sar	eax, 4
	mov	ecx, eax
	mov	eax, DWORD PTR -12[rbp]
	add	eax, eax
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -12[rbp], 1
.L395:
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L396
	mov	eax, DWORD PTR -8[rbp]
	add	eax, 2
	sar	eax, 2
	mov	edx, eax
	mov	eax, DWORD PTR -44[rbp]
	add	eax, eax
	cdqe
	lea	rcx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
.L394:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE56:
	.size	resample_row_hv_2, .-resample_row_hv_2
	.type	resample_row_generic, @function
resample_row_generic:
.LFB57:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	DWORD PTR -44[rbp], ecx
	mov	DWORD PTR -48[rbp], r8d
	mov	DWORD PTR -8[rbp], 0
	jmp	.L398
.L401:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L399
.L400:
	mov	eax, DWORD PTR -8[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	lea	rcx, [rdx+rax]
	mov	eax, DWORD PTR -8[rbp]
	imul	eax, DWORD PTR -48[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR [rcx]
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -4[rbp], 1
.L399:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -48[rbp]
	jl	.L400
	add	DWORD PTR -8[rbp], 1
.L398:
	mov	eax, DWORD PTR -8[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L401
	mov	rax, QWORD PTR -24[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE57:
	.size	resample_row_generic, .-resample_row_generic
	.type	YCbCr_to_RGB_row, @function
YCbCr_to_RGB_row:
.LFB58:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	QWORD PTR -64[rbp], rcx
	mov	DWORD PTR -68[rbp], r8d
	mov	DWORD PTR -72[rbp], r9d
	mov	DWORD PTR -28[rbp], 0
	jmp	.L404
.L411:
	mov	eax, DWORD PTR -28[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	add	eax, 32768
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -28[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, -128
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -28[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, -128
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	imul	edx, eax, 91881
	mov	eax, DWORD PTR -12[rbp]
	add	eax, edx
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	imul	edx, eax, -46802
	mov	eax, DWORD PTR -12[rbp]
	add	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	imul	eax, eax, -22554
	add	eax, edx
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	imul	edx, eax, 116130
	mov	eax, DWORD PTR -12[rbp]
	add	eax, edx
	mov	DWORD PTR -16[rbp], eax
	sar	DWORD PTR -24[rbp], 16
	sar	DWORD PTR -20[rbp], 16
	sar	DWORD PTR -16[rbp], 16
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, 255
	jbe	.L405
	cmp	DWORD PTR -24[rbp], 0
	jns	.L406
	mov	DWORD PTR -24[rbp], 0
	jmp	.L405
.L406:
	mov	DWORD PTR -24[rbp], 255
.L405:
	mov	eax, DWORD PTR -20[rbp]
	cmp	eax, 255
	jbe	.L407
	cmp	DWORD PTR -20[rbp], 0
	jns	.L408
	mov	DWORD PTR -20[rbp], 0
	jmp	.L407
.L408:
	mov	DWORD PTR -20[rbp], 255
.L407:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, 255
	jbe	.L409
	cmp	DWORD PTR -16[rbp], 0
	jns	.L410
	mov	DWORD PTR -16[rbp], 0
	jmp	.L409
.L410:
	mov	DWORD PTR -16[rbp], 255
.L409:
	mov	eax, DWORD PTR -24[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -40[rbp]
	add	rax, 1
	mov	edx, DWORD PTR -20[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -40[rbp]
	add	rax, 2
	mov	edx, DWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -40[rbp]
	add	rax, 3
	mov	BYTE PTR [rax], -1
	mov	eax, DWORD PTR -72[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	add	DWORD PTR -28[rbp], 1
.L404:
	mov	eax, DWORD PTR -28[rbp]
	cmp	eax, DWORD PTR -68[rbp]
	jl	.L411
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE58:
	.size	YCbCr_to_RGB_row, .-YCbCr_to_RGB_row
	.type	cleanup_jpeg, @function
cleanup_jpeg:
.LFB59:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L413
.L416:
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13808
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	je	.L414
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13816
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13808
	mov	QWORD PTR [rax], 0
.L414:
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13824
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	je	.L415
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13824
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13824
	mov	QWORD PTR [rax], 0
.L415:
	add	DWORD PTR -4[rbp], 1
.L413:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L416
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE59:
	.size	cleanup_jpeg, .-cleanup_jpeg
	.section	.rodata
.LC37:
	.string	"bad req_comp"
	.text
	.type	load_jpeg_image, @function
load_jpeg_image:
.LFB60:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 368
	mov	QWORD PTR -328[rbp], rdi
	mov	QWORD PTR -336[rbp], rsi
	mov	QWORD PTR -344[rbp], rdx
	mov	QWORD PTR -352[rbp], rcx
	mov	DWORD PTR -356[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	DWORD PTR -356[rbp], 0
	js	.L418
	cmp	DWORD PTR -356[rbp], 4
	jle	.L419
.L418:
	lea	rdi, .LC37[rip]
	call	e
	mov	eax, 0
	jmp	.L420
.L419:
	mov	rax, QWORD PTR -328[rbp]
	mov	DWORD PTR 8[rax], 0
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	decode_jpeg_image
	test	eax, eax
	jne	.L421
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	cleanup_jpeg
	mov	eax, 0
	jmp	.L420
.L421:
	cmp	DWORD PTR -356[rbp], 0
	jne	.L422
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR 8[rax]
	jmp	.L423
.L422:
	mov	eax, DWORD PTR -356[rbp]
.L423:
	mov	DWORD PTR -296[rbp], eax
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	eax, 3
	jne	.L424
	cmp	DWORD PTR -296[rbp], 2
	jg	.L424
	mov	DWORD PTR -312[rbp], 1
	jmp	.L425
.L424:
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR 8[rax]
	mov	DWORD PTR -312[rbp], eax
.L425:
	mov	DWORD PTR -308[rbp], 0
	jmp	.L426
.L434:
	lea	rcx, -208[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	QWORD PTR -248[rbp], rax
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR [rax]
	add	eax, 3
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	rcx, rax
	mov	rsi, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13824
	mov	QWORD PTR [rax], rcx
	mov	rcx, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13824
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L427
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	cleanup_jpeg
	lea	rdi, .LC6[rip]
	call	e
	mov	eax, 0
	jmp	.L420
.L427:
	mov	rax, QWORD PTR -328[rbp]
	mov	edx, DWORD PTR 13736[rax]
	mov	rsi, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13764
	mov	ecx, DWORD PTR [rax]
	mov	eax, edx
	cdq
	idiv	ecx
	mov	edx, eax
	mov	rax, QWORD PTR -248[rbp]
	mov	DWORD PTR 24[rax], edx
	mov	rax, QWORD PTR -328[rbp]
	mov	edx, DWORD PTR 13740[rax]
	mov	rsi, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13768
	mov	ecx, DWORD PTR [rax]
	mov	eax, edx
	cdq
	idiv	ecx
	mov	edx, eax
	mov	rax, QWORD PTR -248[rbp]
	mov	DWORD PTR 28[rax], edx
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 28[rax]
	sar	eax
	mov	edx, eax
	mov	rax, QWORD PTR -248[rbp]
	mov	DWORD PTR 36[rax], edx
	mov	rax, QWORD PTR -328[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 24[rax]
	add	eax, edx
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 24[rax]
	mov	ecx, eax
	mov	eax, edx
	mov	edx, 0
	div	ecx
	mov	edx, eax
	mov	rax, QWORD PTR -248[rbp]
	mov	DWORD PTR 32[rax], edx
	mov	rax, QWORD PTR -248[rbp]
	mov	DWORD PTR 40[rax], 0
	mov	rcx, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	add	rax, 13808
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -248[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -248[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -248[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 24[rax]
	cmp	eax, 1
	jne	.L429
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 28[rax]
	cmp	eax, 1
	jne	.L429
	mov	rax, QWORD PTR -248[rbp]
	lea	rdx, resample_row_1[rip]
	mov	QWORD PTR [rax], rdx
	jmp	.L430
.L429:
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 24[rax]
	cmp	eax, 1
	jne	.L431
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 28[rax]
	cmp	eax, 2
	jne	.L431
	mov	rax, QWORD PTR -248[rbp]
	lea	rdx, resample_row_v_2[rip]
	mov	QWORD PTR [rax], rdx
	jmp	.L430
.L431:
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 24[rax]
	cmp	eax, 2
	jne	.L432
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 28[rax]
	cmp	eax, 1
	jne	.L432
	mov	rax, QWORD PTR -248[rbp]
	lea	rdx, resample_row_h_2[rip]
	mov	QWORD PTR [rax], rdx
	jmp	.L430
.L432:
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 24[rax]
	cmp	eax, 2
	jne	.L433
	mov	rax, QWORD PTR -248[rbp]
	mov	eax, DWORD PTR 28[rax]
	cmp	eax, 2
	jne	.L433
	mov	rax, QWORD PTR -248[rbp]
	lea	rdx, resample_row_hv_2[rip]
	mov	QWORD PTR [rax], rdx
	jmp	.L430
.L433:
	mov	rax, QWORD PTR -248[rbp]
	lea	rdx, resample_row_generic[rip]
	mov	QWORD PTR [rax], rdx
.L430:
	add	DWORD PTR -308[rbp], 1
.L426:
	mov	eax, DWORD PTR -308[rbp]
	cmp	eax, DWORD PTR -312[rbp]
	jl	.L434
	mov	rax, QWORD PTR -328[rbp]
	mov	edx, DWORD PTR [rax]
	mov	eax, DWORD PTR -296[rbp]
	imul	edx, eax
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR 4[rax]
	imul	eax, edx
	add	eax, 1
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -280[rbp], rax
	cmp	QWORD PTR -280[rbp], 0
	jne	.L435
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	cleanup_jpeg
	lea	rdi, .LC6[rip]
	call	e
	mov	eax, 0
	jmp	.L420
.L435:
	mov	DWORD PTR -300[rbp], 0
	jmp	.L436
.L454:
	mov	rax, QWORD PTR -328[rbp]
	mov	edx, DWORD PTR [rax]
	mov	eax, DWORD PTR -296[rbp]
	imul	eax, edx
	imul	eax, DWORD PTR -300[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -280[rbp]
	add	rax, rdx
	mov	QWORD PTR -288[rbp], rax
	mov	DWORD PTR -308[rbp], 0
	jmp	.L437
.L443:
	lea	rcx, -208[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	QWORD PTR -256[rbp], rax
	mov	rax, QWORD PTR -256[rbp]
	mov	edx, DWORD PTR 36[rax]
	mov	rax, QWORD PTR -256[rbp]
	mov	eax, DWORD PTR 28[rax]
	sar	eax
	cmp	edx, eax
	setge	al
	movzx	eax, al
	mov	DWORD PTR -292[rbp], eax
	mov	rax, QWORD PTR -256[rbp]
	mov	r9, QWORD PTR [rax]
	mov	rax, QWORD PTR -256[rbp]
	mov	r8d, DWORD PTR 24[rax]
	mov	rax, QWORD PTR -256[rbp]
	mov	ecx, DWORD PTR 32[rax]
	cmp	DWORD PTR -292[rbp], 0
	je	.L438
	mov	rax, QWORD PTR -256[rbp]
	mov	rdx, QWORD PTR 8[rax]
	jmp	.L439
.L438:
	mov	rax, QWORD PTR -256[rbp]
	mov	rdx, QWORD PTR 16[rax]
.L439:
	cmp	DWORD PTR -292[rbp], 0
	je	.L440
	mov	rax, QWORD PTR -256[rbp]
	mov	rsi, QWORD PTR 16[rax]
	jmp	.L441
.L440:
	mov	rax, QWORD PTR -256[rbp]
	mov	rsi, QWORD PTR 8[rax]
.L441:
	mov	r10, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rdi, eax
	mov	rax, rdi
	sal	rax, 3
	add	rax, rdi
	sal	rax, 3
	add	rax, r10
	add	rax, 13824
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	r9
	mov	edx, DWORD PTR -308[rbp]
	movsx	rdx, edx
	mov	QWORD PTR -240[rbp+rdx*8], rax
	mov	rax, QWORD PTR -256[rbp]
	mov	eax, DWORD PTR 36[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -256[rbp]
	mov	DWORD PTR 36[rax], edx
	mov	rax, QWORD PTR -256[rbp]
	mov	edx, DWORD PTR 36[rax]
	mov	rax, QWORD PTR -256[rbp]
	mov	eax, DWORD PTR 28[rax]
	cmp	edx, eax
	jl	.L442
	mov	rax, QWORD PTR -256[rbp]
	mov	DWORD PTR 36[rax], 0
	mov	rax, QWORD PTR -256[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -256[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -256[rbp]
	mov	eax, DWORD PTR 40[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -256[rbp]
	mov	DWORD PTR 40[rax], edx
	mov	rax, QWORD PTR -256[rbp]
	mov	ecx, DWORD PTR 40[rax]
	mov	rsi, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13792
	mov	eax, DWORD PTR [rax]
	cmp	ecx, eax
	jge	.L442
	mov	rax, QWORD PTR -256[rbp]
	mov	rcx, QWORD PTR 16[rax]
	mov	rsi, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR -308[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rsi
	add	rax, 13796
	mov	eax, DWORD PTR [rax]
	cdqe
	lea	rdx, [rcx+rax]
	mov	rax, QWORD PTR -256[rbp]
	mov	QWORD PTR 16[rax], rdx
.L442:
	add	DWORD PTR -308[rbp], 1
.L437:
	mov	eax, DWORD PTR -308[rbp]
	cmp	eax, DWORD PTR -312[rbp]
	jl	.L443
	cmp	DWORD PTR -296[rbp], 2
	jle	.L444
	mov	rax, QWORD PTR -240[rbp]
	mov	QWORD PTR -264[rbp], rax
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	eax, 3
	jne	.L445
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR [rax]
	mov	r8d, eax
	mov	rcx, QWORD PTR -224[rbp]
	mov	rdx, QWORD PTR -232[rbp]
	mov	edi, DWORD PTR -296[rbp]
	mov	rsi, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -288[rbp]
	mov	r9d, edi
	mov	rdi, rax
	call	YCbCr_to_RGB_row
	jmp	.L446
.L445:
	mov	DWORD PTR -304[rbp], 0
	jmp	.L447
.L448:
	mov	edx, DWORD PTR -304[rbp]
	mov	rax, QWORD PTR -264[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR -288[rbp]
	add	rdx, 2
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -288[rbp]
	add	rax, 1
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -288[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -288[rbp]
	add	rax, 3
	mov	BYTE PTR [rax], -1
	mov	eax, DWORD PTR -296[rbp]
	cdqe
	add	QWORD PTR -288[rbp], rax
	add	DWORD PTR -304[rbp], 1
.L447:
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -304[rbp], eax
	jb	.L448
	jmp	.L446
.L444:
	mov	rax, QWORD PTR -240[rbp]
	mov	QWORD PTR -272[rbp], rax
	cmp	DWORD PTR -296[rbp], 1
	jne	.L449
	mov	DWORD PTR -304[rbp], 0
	jmp	.L450
.L451:
	mov	edx, DWORD PTR -304[rbp]
	mov	rax, QWORD PTR -272[rbp]
	add	rax, rdx
	mov	ecx, DWORD PTR -304[rbp]
	mov	rdx, QWORD PTR -288[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -304[rbp], 1
.L450:
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -304[rbp], eax
	jb	.L451
	jmp	.L446
.L449:
	mov	DWORD PTR -304[rbp], 0
	jmp	.L452
.L453:
	mov	edx, DWORD PTR -304[rbp]
	mov	rax, QWORD PTR -272[rbp]
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -288[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -288[rbp], rdx
	movzx	edx, BYTE PTR [rcx]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -288[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -288[rbp], rdx
	mov	BYTE PTR [rax], -1
	add	DWORD PTR -304[rbp], 1
.L452:
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -304[rbp], eax
	jb	.L453
.L446:
	add	DWORD PTR -300[rbp], 1
.L436:
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	DWORD PTR -300[rbp], eax
	jb	.L454
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	cleanup_jpeg
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edx, eax
	mov	rax, QWORD PTR -336[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -328[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edx, eax
	mov	rax, QWORD PTR -344[rbp]
	mov	DWORD PTR [rax], edx
	cmp	QWORD PTR -352[rbp], 0
	je	.L455
	mov	rax, QWORD PTR -328[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -352[rbp]
	mov	DWORD PTR [rax], edx
.L455:
	mov	rax, QWORD PTR -280[rbp]
.L420:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L456
	call	__stack_chk_fail@PLT
.L456:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE60:
	.size	load_jpeg_image, .-load_jpeg_image
	.globl	stbi_jpeg_load_from_file
	.type	stbi_jpeg_load_from_file, @function
stbi_jpeg_load_from_file:
.LFB61:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 1872
	mov	QWORD PTR -14120[rbp], rdi
	mov	QWORD PTR -14128[rbp], rsi
	mov	QWORD PTR -14136[rbp], rdx
	mov	QWORD PTR -14144[rbp], rcx
	mov	DWORD PTR -14148[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -14120[rbp]
	lea	rax, -14112[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	mov	edi, DWORD PTR -14148[rbp]
	mov	rcx, QWORD PTR -14144[rbp]
	mov	rdx, QWORD PTR -14136[rbp]
	mov	rsi, QWORD PTR -14128[rbp]
	lea	rax, -14112[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	load_jpeg_image
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L459
	call	__stack_chk_fail@PLT
.L459:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE61:
	.size	stbi_jpeg_load_from_file, .-stbi_jpeg_load_from_file
	.globl	stbi_jpeg_load
	.type	stbi_jpeg_load, @function
stbi_jpeg_load:
.LFB62:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L461
	mov	eax, 0
	jmp	.L462
.L461:
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_jpeg_load_from_file
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	rax, QWORD PTR -8[rbp]
.L462:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE62:
	.size	stbi_jpeg_load, .-stbi_jpeg_load
	.globl	stbi_jpeg_load_from_memory
	.type	stbi_jpeg_load_from_memory, @function
stbi_jpeg_load_from_memory:
.LFB63:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 1872
	mov	QWORD PTR -14120[rbp], rdi
	mov	DWORD PTR -14124[rbp], esi
	mov	QWORD PTR -14136[rbp], rdx
	mov	QWORD PTR -14144[rbp], rcx
	mov	QWORD PTR -14152[rbp], r8
	mov	DWORD PTR -14128[rbp], r9d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -14124[rbp]
	mov	rcx, QWORD PTR -14120[rbp]
	lea	rax, -14112[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	mov	edi, DWORD PTR -14128[rbp]
	mov	rcx, QWORD PTR -14152[rbp]
	mov	rdx, QWORD PTR -14144[rbp]
	mov	rsi, QWORD PTR -14136[rbp]
	lea	rax, -14112[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	load_jpeg_image
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L465
	call	__stack_chk_fail@PLT
.L465:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE63:
	.size	stbi_jpeg_load_from_memory, .-stbi_jpeg_load_from_memory
	.globl	stbi_jpeg_test_file
	.type	stbi_jpeg_test_file, @function
stbi_jpeg_test_file:
.LFB64:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 1856
	mov	QWORD PTR -14136[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -14136[rbp]
	mov	rdi, rax
	call	ftell@PLT
	mov	DWORD PTR -14120[rbp], eax
	mov	rdx, QWORD PTR -14136[rbp]
	lea	rax, -14112[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	lea	rax, -14112[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	decode_jpeg_header
	mov	DWORD PTR -14116[rbp], eax
	mov	eax, DWORD PTR -14120[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -14136[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	mov	eax, DWORD PTR -14116[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L468
	call	__stack_chk_fail@PLT
.L468:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE64:
	.size	stbi_jpeg_test_file, .-stbi_jpeg_test_file
	.globl	stbi_jpeg_test_memory
	.type	stbi_jpeg_test_memory, @function
stbi_jpeg_test_memory:
.LFB65:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 1840
	mov	QWORD PTR -14120[rbp], rdi
	mov	DWORD PTR -14124[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -14124[rbp]
	mov	rcx, QWORD PTR -14120[rbp]
	lea	rax, -14112[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	lea	rax, -14112[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	decode_jpeg_header
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L471
	call	__stack_chk_fail@PLT
.L471:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE65:
	.size	stbi_jpeg_test_memory, .-stbi_jpeg_test_memory
	.type	bitreverse16, @function
bitreverse16:
.LFB66:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	mov	eax, DWORD PTR -4[rbp]
	sar	eax
	and	eax, 21845
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	add	eax, eax
	and	eax, 43690
	or	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	sar	eax, 2
	and	eax, 13107
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	sal	eax, 2
	and	eax, 52428
	or	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	sar	eax, 4
	and	eax, 3855
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	sal	eax, 4
	and	eax, 61680
	or	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	sar	eax, 8
	movzx	edx, al
	mov	eax, DWORD PTR -4[rbp]
	sal	eax, 8
	movzx	eax, ax
	or	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE66:
	.size	bitreverse16, .-bitreverse16
	.section	.rodata
.LC38:
	.string	"bits <= 16"
	.text
	.type	bit_reverse, @function
bit_reverse:
.LFB67:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -4[rbp], edi
	mov	DWORD PTR -8[rbp], esi
	cmp	DWORD PTR -8[rbp], 16
	jle	.L475
	lea	rcx, __PRETTY_FUNCTION__.12[rip]
	mov	edx, 1908
	lea	rsi, .LC4[rip]
	lea	rdi, .LC38[rip]
	call	__assert_fail@PLT
.L475:
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	bitreverse16
	mov	edx, eax
	mov	eax, 16
	sub	eax, DWORD PTR -8[rbp]
	mov	ecx, eax
	sar	edx, cl
	mov	eax, edx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE67:
	.size	bit_reverse, .-bit_reverse
	.section	.rodata
.LC39:
	.string	"sizes[i] <= (1 << i)"
.LC40:
	.string	"bad codelengths"
	.text
	.type	zbuild_huffman, @function
zbuild_huffman:
.LFB68:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 208
	mov	QWORD PTR -184[rbp], rdi
	mov	QWORD PTR -192[rbp], rsi
	mov	DWORD PTR -196[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -164[rbp], 0
	lea	rax, -80[rbp]
	mov	edx, 68
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, 1024
	mov	esi, 255
	mov	rdi, rax
	call	memset@PLT
	mov	DWORD PTR -168[rbp], 0
	jmp	.L478
.L479:
	mov	eax, DWORD PTR -168[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -192[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movsx	rdx, eax
	mov	edx, DWORD PTR -80[rbp+rdx*4]
	add	edx, 1
	cdqe
	mov	DWORD PTR -80[rbp+rax*4], edx
	add	DWORD PTR -168[rbp], 1
.L478:
	mov	eax, DWORD PTR -168[rbp]
	cmp	eax, DWORD PTR -196[rbp]
	jl	.L479
	mov	DWORD PTR -80[rbp], 0
	mov	DWORD PTR -168[rbp], 1
	jmp	.L480
.L482:
	mov	eax, DWORD PTR -168[rbp]
	cdqe
	mov	edx, DWORD PTR -80[rbp+rax*4]
	mov	eax, DWORD PTR -168[rbp]
	mov	esi, 1
	mov	ecx, eax
	sal	esi, cl
	mov	eax, esi
	cmp	edx, eax
	jle	.L481
	lea	rcx, __PRETTY_FUNCTION__.11[rip]
	mov	edx, 1926
	lea	rsi, .LC4[rip]
	lea	rdi, .LC39[rip]
	call	__assert_fail@PLT
.L481:
	add	DWORD PTR -168[rbp], 1
.L480:
	cmp	DWORD PTR -168[rbp], 15
	jle	.L482
	mov	DWORD PTR -160[rbp], 0
	mov	DWORD PTR -168[rbp], 1
	jmp	.L483
.L486:
	mov	eax, DWORD PTR -168[rbp]
	cdqe
	mov	edx, DWORD PTR -160[rbp]
	mov	DWORD PTR -144[rbp+rax*4], edx
	mov	eax, DWORD PTR -160[rbp]
	mov	ecx, eax
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -168[rbp]
	movsx	rdx, edx
	add	rdx, 512
	mov	WORD PTR [rax+rdx*2], cx
	mov	eax, DWORD PTR -164[rbp]
	mov	ecx, eax
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -168[rbp]
	movsx	rdx, edx
	add	rdx, 560
	mov	WORD PTR 4[rax+rdx*2], cx
	mov	eax, DWORD PTR -168[rbp]
	cdqe
	mov	eax, DWORD PTR -80[rbp+rax*4]
	add	DWORD PTR -160[rbp], eax
	mov	eax, DWORD PTR -168[rbp]
	cdqe
	mov	eax, DWORD PTR -80[rbp+rax*4]
	test	eax, eax
	je	.L484
	mov	eax, DWORD PTR -168[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	cmp	DWORD PTR -160[rbp], eax
	jle	.L484
	lea	rdi, .LC40[rip]
	call	e
	jmp	.L493
.L484:
	mov	eax, 16
	sub	eax, DWORD PTR -168[rbp]
	mov	edx, DWORD PTR -160[rbp]
	mov	ecx, eax
	sal	edx, cl
	mov	ecx, edx
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -168[rbp]
	movsx	rdx, edx
	add	rdx, 264
	mov	DWORD PTR [rax+rdx*4], ecx
	sal	DWORD PTR -160[rbp]
	mov	eax, DWORD PTR -168[rbp]
	cdqe
	mov	eax, DWORD PTR -80[rbp+rax*4]
	add	DWORD PTR -164[rbp], eax
	add	DWORD PTR -168[rbp], 1
.L483:
	cmp	DWORD PTR -168[rbp], 15
	jle	.L486
	mov	rax, QWORD PTR -184[rbp]
	mov	DWORD PTR 1120[rax], 65536
	mov	DWORD PTR -168[rbp], 0
	jmp	.L487
.L492:
	mov	eax, DWORD PTR -168[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -192[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -152[rbp], eax
	cmp	DWORD PTR -152[rbp], 0
	je	.L488
	mov	eax, DWORD PTR -152[rbp]
	cdqe
	mov	edx, DWORD PTR -144[rbp+rax*4]
	mov	rax, QWORD PTR -184[rbp]
	mov	ecx, DWORD PTR -152[rbp]
	movsx	rcx, ecx
	add	rcx, 512
	movzx	eax, WORD PTR [rax+rcx*2]
	movzx	eax, ax
	mov	ecx, edx
	sub	ecx, eax
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -152[rbp]
	movsx	rdx, edx
	add	rdx, 560
	movzx	eax, WORD PTR 4[rax+rdx*2]
	movzx	eax, ax
	add	eax, ecx
	mov	DWORD PTR -148[rbp], eax
	mov	eax, DWORD PTR -152[rbp]
	mov	ecx, eax
	mov	rdx, QWORD PTR -184[rbp]
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	mov	BYTE PTR 1156[rdx+rax], cl
	mov	eax, DWORD PTR -168[rbp]
	mov	ecx, eax
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -148[rbp]
	movsx	rdx, edx
	add	rdx, 720
	mov	WORD PTR 4[rax+rdx*2], cx
	cmp	DWORD PTR -152[rbp], 9
	jg	.L489
	mov	eax, DWORD PTR -152[rbp]
	cdqe
	mov	eax, DWORD PTR -144[rbp+rax*4]
	mov	edx, DWORD PTR -152[rbp]
	mov	esi, edx
	mov	edi, eax
	call	bit_reverse
	mov	DWORD PTR -156[rbp], eax
	jmp	.L490
.L491:
	mov	eax, DWORD PTR -148[rbp]
	mov	ecx, eax
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -156[rbp]
	movsx	rdx, edx
	mov	WORD PTR [rax+rdx*2], cx
	mov	eax, DWORD PTR -152[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	add	DWORD PTR -156[rbp], eax
.L490:
	cmp	DWORD PTR -156[rbp], 511
	jle	.L491
.L489:
	mov	eax, DWORD PTR -152[rbp]
	cdqe
	mov	eax, DWORD PTR -144[rbp+rax*4]
	lea	edx, 1[rax]
	mov	eax, DWORD PTR -152[rbp]
	cdqe
	mov	DWORD PTR -144[rbp+rax*4], edx
.L488:
	add	DWORD PTR -168[rbp], 1
.L487:
	mov	eax, DWORD PTR -168[rbp]
	cmp	eax, DWORD PTR -196[rbp]
	jl	.L492
	mov	eax, 1
.L493:
	mov	rdi, QWORD PTR -8[rbp]
	sub	rdi, QWORD PTR fs:40
	je	.L494
	call	__stack_chk_fail@PLT
.L494:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE68:
	.size	zbuild_huffman, .-zbuild_huffman
	.type	zget8, @function
zget8:
.LFB69:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	rdx, rax
	jb	.L496
	mov	eax, 0
	jmp	.L497
.L496:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	lea	rcx, 1[rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rdx], rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
.L497:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE69:
	.size	zget8, .-zget8
	.section	.rodata
	.align 8
.LC41:
	.string	"z->code_buffer < (1U << z->num_bits)"
	.text
	.type	fill_bits, @function
fill_bits:
.LFB70:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
.L500:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR 20[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	ecx, eax
	shr	edx, cl
	mov	eax, edx
	test	eax, eax
	je	.L499
	lea	rcx, __PRETTY_FUNCTION__.10[rip]
	mov	edx, 1988
	lea	rsi, .LC4[rip]
	lea	rdi, .LC41[rip]
	call	__assert_fail@PLT
.L499:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	zget8
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	ecx, eax
	sal	edx, cl
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 20[rax]
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 20[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	lea	edx, 8[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 16[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	cmp	eax, 24
	jle	.L500
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE70:
	.size	fill_bits, .-fill_bits
	.type	zreceive, @function
zreceive:
.LFB71:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	cmp	DWORD PTR -28[rbp], eax
	jle	.L502
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	fill_bits
.L502:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 20[rax]
	mov	eax, DWORD PTR -28[rbp]
	mov	esi, 1
	mov	ecx, eax
	sal	esi, cl
	mov	eax, esi
	sub	eax, 1
	and	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 20[rax]
	mov	eax, DWORD PTR -28[rbp]
	mov	ecx, eax
	shr	edx, cl
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 20[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	sub	eax, DWORD PTR -28[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 16[rax], edx
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE71:
	.size	zreceive, .-zreceive
	.section	.rodata
.LC42:
	.string	"z->size[b] == s"
	.text
	.type	zhuffman_decode, @function
zhuffman_decode:
.LFB72:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	cmp	eax, 15
	jg	.L505
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	fill_bits
.L505:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 20[rax]
	and	eax, 511
	mov	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, edx
	movzx	eax, WORD PTR [rax+rdx*2]
	movzx	eax, ax
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 65534
	jg	.L506
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	movzx	eax, BYTE PTR 1156[rdx+rax]
	movzx	eax, al
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 20[rax]
	mov	eax, DWORD PTR -12[rbp]
	mov	ecx, eax
	shr	edx, cl
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 20[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	sub	eax, DWORD PTR -12[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 16[rax], edx
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -8[rbp]
	movsx	rdx, edx
	add	rdx, 720
	movzx	eax, WORD PTR 4[rax+rdx*2]
	movzx	eax, ax
	jmp	.L507
.L506:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	esi, 16
	mov	edi, eax
	call	bit_reverse
	mov	DWORD PTR -4[rbp], eax
	mov	DWORD PTR -12[rbp], 10
.L510:
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	add	rdx, 264
	mov	eax, DWORD PTR [rax+rdx*4]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L514
	add	DWORD PTR -12[rbp], 1
	jmp	.L510
.L514:
	nop
	cmp	DWORD PTR -12[rbp], 16
	jne	.L511
	mov	eax, -1
	jmp	.L507
.L511:
	mov	eax, 16
	sub	eax, DWORD PTR -12[rbp]
	mov	edx, DWORD PTR -4[rbp]
	mov	ecx, eax
	sar	edx, cl
	mov	ecx, edx
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	add	rdx, 512
	movzx	eax, WORD PTR [rax+rdx*2]
	movzx	eax, ax
	sub	ecx, eax
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	add	rdx, 560
	movzx	eax, WORD PTR 4[rax+rdx*2]
	movzx	eax, ax
	add	eax, ecx
	mov	DWORD PTR -8[rbp], eax
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	movzx	eax, BYTE PTR 1156[rdx+rax]
	movzx	eax, al
	cmp	DWORD PTR -12[rbp], eax
	je	.L512
	lea	rcx, __PRETTY_FUNCTION__.9[rip]
	mov	edx, 2025
	lea	rsi, .LC4[rip]
	lea	rdi, .LC42[rip]
	call	__assert_fail@PLT
.L512:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 20[rax]
	mov	eax, DWORD PTR -12[rbp]
	mov	ecx, eax
	shr	edx, cl
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 20[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	sub	eax, DWORD PTR -12[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 16[rax], edx
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -8[rbp]
	movsx	rdx, edx
	add	rdx, 720
	movzx	eax, WORD PTR 4[rax+rdx*2]
	movzx	eax, ax
.L507:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE72:
	.size	zhuffman_decode, .-zhuffman_decode
	.section	.rodata
.LC43:
	.string	"output buffer limit"
	.text
	.type	expand, @function
expand:
.LFB73:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 48[rax]
	test	eax, eax
	jne	.L516
	lea	rdi, .LC43[rip]
	call	e
	jmp	.L517
.L516:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR 32[rax]
	mov	rax, rdx
	sub	rax, rcx
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 40[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR 32[rax]
	mov	rax, rdx
	sub	rax, rcx
	mov	DWORD PTR -16[rbp], eax
	jmp	.L518
.L519:
	sal	DWORD PTR -16[rbp]
.L518:
	mov	edx, DWORD PTR -12[rbp]
	mov	eax, DWORD PTR -28[rbp]
	add	eax, edx
	cmp	DWORD PTR -16[rbp], eax
	jl	.L519
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 32[rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L520
	lea	rdi, .LC6[rip]
	call	e
	jmp	.L517
.L520:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 32[rax], rdx
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 40[rax], rdx
	mov	eax, 1
.L517:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE73:
	.size	expand, .-expand
	.data
	.align 32
	.type	length_base, @object
	.size	length_base, 124
length_base:
	.long	3
	.long	4
	.long	5
	.long	6
	.long	7
	.long	8
	.long	9
	.long	10
	.long	11
	.long	13
	.long	15
	.long	17
	.long	19
	.long	23
	.long	27
	.long	31
	.long	35
	.long	43
	.long	51
	.long	59
	.long	67
	.long	83
	.long	99
	.long	115
	.long	131
	.long	163
	.long	195
	.long	227
	.long	258
	.long	0
	.long	0
	.align 32
	.type	length_extra, @object
	.size	length_extra, 124
length_extra:
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	1
	.long	1
	.long	1
	.long	1
	.long	2
	.long	2
	.long	2
	.long	2
	.long	3
	.long	3
	.long	3
	.long	3
	.long	4
	.long	4
	.long	4
	.long	4
	.long	5
	.long	5
	.long	5
	.long	5
	.long	0
	.long	0
	.long	0
	.align 32
	.type	dist_base, @object
	.size	dist_base, 128
dist_base:
	.long	1
	.long	2
	.long	3
	.long	4
	.long	5
	.long	7
	.long	9
	.long	13
	.long	17
	.long	25
	.long	33
	.long	49
	.long	65
	.long	97
	.long	129
	.long	193
	.long	257
	.long	385
	.long	513
	.long	769
	.long	1025
	.long	1537
	.long	2049
	.long	3073
	.long	4097
	.long	6145
	.long	8193
	.long	12289
	.long	16385
	.long	24577
	.long	0
	.long	0
	.align 32
	.type	dist_extra, @object
	.size	dist_extra, 128
dist_extra:
	.long	0
	.long	0
	.long	0
	.long	0
	.long	1
	.long	1
	.long	2
	.long	2
	.long	3
	.long	3
	.long	4
	.long	4
	.long	5
	.long	5
	.long	6
	.long	6
	.long	7
	.long	7
	.long	8
	.long	8
	.long	9
	.long	9
	.long	10
	.long	10
	.long	11
	.long	11
	.long	12
	.long	12
	.long	13
	.long	13
	.zero	8
	.section	.rodata
.LC44:
	.string	"bad dist"
	.text
	.type	parse_huffman_block, @function
parse_huffman_block:
.LFB74:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
.L535:
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 52[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	zhuffman_decode
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 255
	jg	.L522
	cmp	DWORD PTR -12[rbp], 0
	jns	.L523
	lea	rdi, .LC13[rip]
	call	e
	jmp	.L524
.L523:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 40[rax]
	cmp	rdx, rax
	jb	.L525
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	expand
	test	eax, eax
	jne	.L525
	mov	eax, 0
	jmp	.L524
.L525:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rcx, 1[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR 24[rdx], rcx
	mov	edx, DWORD PTR -12[rbp]
	mov	BYTE PTR [rax], dl
	jmp	.L535
.L522:
	cmp	DWORD PTR -12[rbp], 256
	jne	.L527
	mov	eax, 1
	jmp	.L524
.L527:
	sub	DWORD PTR -12[rbp], 257
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, length_base[rip]
	mov	eax, DWORD PTR [rdx+rax]
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, length_extra[rip]
	mov	eax, DWORD PTR [rdx+rax]
	test	eax, eax
	je	.L528
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, length_extra[rip]
	mov	edx, DWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	zreceive
	mov	edx, DWORD PTR -20[rbp]
	add	eax, edx
	mov	DWORD PTR -20[rbp], eax
.L528:
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 2072[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	zhuffman_decode
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 0
	jns	.L529
	lea	rdi, .LC13[rip]
	call	e
	jmp	.L524
.L529:
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, dist_base[rip]
	mov	eax, DWORD PTR [rdx+rax]
	mov	DWORD PTR -16[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, dist_extra[rip]
	mov	eax, DWORD PTR [rdx+rax]
	test	eax, eax
	je	.L530
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, dist_extra[rip]
	mov	edx, DWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	zreceive
	mov	edx, DWORD PTR -16[rbp]
	add	eax, edx
	mov	DWORD PTR -16[rbp], eax
.L530:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 32[rax]
	sub	rdx, rax
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	cmp	rdx, rax
	jge	.L531
	lea	rdi, .LC44[rip]
	call	e
	jmp	.L524
.L531:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	add	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 40[rax]
	cmp	rdx, rax
	jbe	.L532
	mov	edx, DWORD PTR -20[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	expand
	test	eax, eax
	jne	.L532
	mov	eax, 0
	jmp	.L524
.L532:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	neg	rax
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	jmp	.L533
.L534:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	movzx	esi, BYTE PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rcx, 1[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR 24[rdx], rcx
	mov	edx, esi
	mov	BYTE PTR [rax], dl
.L533:
	mov	eax, DWORD PTR -20[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -20[rbp], edx
	test	eax, eax
	jne	.L534
	jmp	.L535
.L524:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE74:
	.size	parse_huffman_block, .-parse_huffman_block
	.section	.rodata
.LC45:
	.string	"c >= 0 && c < 19"
.LC46:
	.string	"c == 18"
	.text
	.type	compute_huffman_codes, @function
compute_huffman_codes:
.LFB75:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 2576
	mov	QWORD PTR -2568[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -2568[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	zreceive
	add	eax, 257
	mov	DWORD PTR -2548[rbp], eax
	mov	rax, QWORD PTR -2568[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	zreceive
	add	eax, 1
	mov	DWORD PTR -2544[rbp], eax
	mov	rax, QWORD PTR -2568[rbp]
	mov	esi, 4
	mov	rdi, rax
	call	zreceive
	add	eax, 4
	mov	DWORD PTR -2540[rbp], eax
	lea	rax, -496[rbp]
	mov	edx, 19
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	DWORD PTR -2556[rbp], 0
	jmp	.L537
.L538:
	mov	rax, QWORD PTR -2568[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	zreceive
	mov	DWORD PTR -2532[rbp], eax
	mov	eax, DWORD PTR -2556[rbp]
	cdqe
	lea	rdx, length_dezigzag.8[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	edx, DWORD PTR -2532[rbp]
	cdqe
	mov	BYTE PTR -496[rbp+rax], dl
	add	DWORD PTR -2556[rbp], 1
.L537:
	mov	eax, DWORD PTR -2556[rbp]
	cmp	eax, DWORD PTR -2540[rbp]
	jl	.L538
	lea	rcx, -496[rbp]
	lea	rax, -2528[rbp]
	mov	edx, 19
	mov	rsi, rcx
	mov	rdi, rax
	call	zbuild_huffman
	test	eax, eax
	jne	.L539
	mov	eax, 0
	jmp	.L552
.L539:
	mov	DWORD PTR -2552[rbp], 0
	jmp	.L541
.L548:
	lea	rdx, -2528[rbp]
	mov	rax, QWORD PTR -2568[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	zhuffman_decode
	mov	DWORD PTR -2536[rbp], eax
	cmp	DWORD PTR -2536[rbp], 0
	js	.L542
	cmp	DWORD PTR -2536[rbp], 18
	jle	.L554
.L542:
	lea	rcx, __PRETTY_FUNCTION__.7[rip]
	mov	edx, 2112
	lea	rsi, .LC4[rip]
	lea	rdi, .LC45[rip]
	call	__assert_fail@PLT
.L554:
	cmp	DWORD PTR -2536[rbp], 15
	jg	.L544
	mov	eax, DWORD PTR -2552[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -2552[rbp], edx
	mov	edx, DWORD PTR -2536[rbp]
	cdqe
	mov	BYTE PTR -464[rbp+rax], dl
	jmp	.L541
.L544:
	cmp	DWORD PTR -2536[rbp], 16
	jne	.L545
	mov	rax, QWORD PTR -2568[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	zreceive
	add	eax, 3
	mov	DWORD PTR -2536[rbp], eax
	mov	eax, DWORD PTR -2536[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -2552[rbp]
	sub	eax, 1
	cdqe
	movzx	eax, BYTE PTR -464[rbp+rax]
	movzx	eax, al
	mov	ecx, DWORD PTR -2552[rbp]
	movsx	rcx, ecx
	lea	rsi, -464[rbp]
	add	rcx, rsi
	mov	esi, eax
	mov	rdi, rcx
	call	memset@PLT
	mov	eax, DWORD PTR -2536[rbp]
	add	DWORD PTR -2552[rbp], eax
	jmp	.L541
.L545:
	cmp	DWORD PTR -2536[rbp], 17
	jne	.L546
	mov	rax, QWORD PTR -2568[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	zreceive
	add	eax, 3
	mov	DWORD PTR -2536[rbp], eax
	mov	eax, DWORD PTR -2536[rbp]
	cdqe
	mov	edx, DWORD PTR -2552[rbp]
	movsx	rdx, edx
	lea	rcx, -464[rbp]
	add	rcx, rdx
	mov	rdx, rax
	mov	esi, 0
	mov	rdi, rcx
	call	memset@PLT
	mov	eax, DWORD PTR -2536[rbp]
	add	DWORD PTR -2552[rbp], eax
	jmp	.L541
.L546:
	cmp	DWORD PTR -2536[rbp], 18
	je	.L547
	lea	rcx, __PRETTY_FUNCTION__.7[rip]
	mov	edx, 2124
	lea	rsi, .LC4[rip]
	lea	rdi, .LC46[rip]
	call	__assert_fail@PLT
.L547:
	mov	rax, QWORD PTR -2568[rbp]
	mov	esi, 7
	mov	rdi, rax
	call	zreceive
	add	eax, 11
	mov	DWORD PTR -2536[rbp], eax
	mov	eax, DWORD PTR -2536[rbp]
	cdqe
	mov	edx, DWORD PTR -2552[rbp]
	movsx	rdx, edx
	lea	rcx, -464[rbp]
	add	rcx, rdx
	mov	rdx, rax
	mov	esi, 0
	mov	rdi, rcx
	call	memset@PLT
	mov	eax, DWORD PTR -2536[rbp]
	add	DWORD PTR -2552[rbp], eax
.L541:
	mov	edx, DWORD PTR -2548[rbp]
	mov	eax, DWORD PTR -2544[rbp]
	add	eax, edx
	cmp	DWORD PTR -2552[rbp], eax
	jl	.L548
	mov	edx, DWORD PTR -2548[rbp]
	mov	eax, DWORD PTR -2544[rbp]
	add	eax, edx
	cmp	DWORD PTR -2552[rbp], eax
	je	.L549
	lea	rdi, .LC40[rip]
	call	e
	jmp	.L552
.L549:
	mov	rax, QWORD PTR -2568[rbp]
	lea	rcx, 52[rax]
	mov	edx, DWORD PTR -2548[rbp]
	lea	rax, -464[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	zbuild_huffman
	test	eax, eax
	jne	.L550
	mov	eax, 0
	jmp	.L552
.L550:
	mov	eax, DWORD PTR -2548[rbp]
	cdqe
	lea	rdx, -464[rbp]
	lea	rsi, [rdx+rax]
	mov	rax, QWORD PTR -2568[rbp]
	lea	rcx, 2072[rax]
	mov	eax, DWORD PTR -2544[rbp]
	mov	edx, eax
	mov	rdi, rcx
	call	zbuild_huffman
	test	eax, eax
	jne	.L551
	mov	eax, 0
	jmp	.L552
.L551:
	mov	eax, 1
.L552:
	mov	rdi, QWORD PTR -8[rbp]
	sub	rdi, QWORD PTR fs:40
	je	.L553
	call	__stack_chk_fail@PLT
.L553:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE75:
	.size	compute_huffman_codes, .-compute_huffman_codes
	.section	.rodata
.LC47:
	.string	"a->num_bits == 0"
.LC48:
	.string	"zlib corrupt"
.LC49:
	.string	"read past buffer"
	.text
	.type	parse_uncompressed_block, @function
parse_uncompressed_block:
.LFB76:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 16[rax]
	and	eax, 7
	test	eax, eax
	je	.L556
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 16[rax]
	and	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	zreceive
.L556:
	mov	DWORD PTR -24[rbp], 0
	jmp	.L557
.L558:
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, DWORD PTR 20[rax]
	mov	eax, DWORD PTR -24[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -24[rbp], edx
	mov	edx, ecx
	cdqe
	mov	BYTE PTR -12[rbp+rax], dl
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 20[rax]
	shr	eax, 8
	mov	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	DWORD PTR 20[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 16[rax]
	lea	edx, -8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	DWORD PTR 16[rax], edx
.L557:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 16[rax]
	test	eax, eax
	jg	.L558
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 16[rax]
	test	eax, eax
	je	.L560
	lea	rcx, __PRETTY_FUNCTION__.6[rip]
	mov	edx, 2149
	lea	rsi, .LC4[rip]
	lea	rdi, .LC47[rip]
	call	__assert_fail@PLT
.L561:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	zget8
	mov	ecx, eax
	mov	eax, DWORD PTR -24[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -24[rbp], edx
	mov	edx, ecx
	cdqe
	mov	BYTE PTR -12[rbp+rax], dl
.L560:
	cmp	DWORD PTR -24[rbp], 3
	jle	.L561
	movzx	eax, BYTE PTR -11[rbp]
	movzx	eax, al
	sal	eax, 8
	mov	edx, eax
	movzx	eax, BYTE PTR -12[rbp]
	movzx	eax, al
	add	eax, edx
	mov	DWORD PTR -20[rbp], eax
	movzx	eax, BYTE PTR -9[rbp]
	movzx	eax, al
	sal	eax, 8
	mov	edx, eax
	movzx	eax, BYTE PTR -10[rbp]
	movzx	eax, al
	add	eax, edx
	mov	DWORD PTR -16[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	xor	eax, 65535
	cmp	DWORD PTR -16[rbp], eax
	je	.L562
	lea	rdi, .LC48[rip]
	call	e
	jmp	.L566
.L562:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	add	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	rdx, rax
	jbe	.L564
	lea	rdi, .LC49[rip]
	call	e
	jmp	.L566
.L564:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	add	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 40[rax]
	cmp	rdx, rax
	jbe	.L565
	mov	edx, DWORD PTR -20[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	expand
	test	eax, eax
	jne	.L565
	mov	eax, 0
	jmp	.L566
.L565:
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	add	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	add	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	eax, 1
.L566:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L567
	call	__stack_chk_fail@PLT
.L567:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE76:
	.size	parse_uncompressed_block, .-parse_uncompressed_block
	.section	.rodata
.LC50:
	.string	"bad zlib header"
.LC51:
	.string	"no preset dict"
.LC52:
	.string	"bad compression"
	.text
	.type	parse_zlib_header, @function
parse_zlib_header:
.LFB77:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 24
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	zget8
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	and	eax, 15
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	zget8
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	sal	eax, 8
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	add	edx, eax
	movsx	rax, edx
	imul	rax, rax, -2078209981
	shr	rax, 32
	add	eax, edx
	sar	eax, 4
	mov	ecx, edx
	sar	ecx, 31
	sub	eax, ecx
	mov	ecx, eax
	sal	ecx, 5
	sub	ecx, eax
	mov	eax, edx
	sub	eax, ecx
	test	eax, eax
	je	.L569
	lea	rdi, .LC50[rip]
	call	e
	jmp	.L570
.L569:
	mov	eax, DWORD PTR -4[rbp]
	and	eax, 32
	test	eax, eax
	je	.L571
	lea	rdi, .LC51[rip]
	call	e
	jmp	.L570
.L571:
	cmp	DWORD PTR -8[rbp], 8
	je	.L572
	lea	rdi, .LC52[rip]
	call	e
	jmp	.L570
.L572:
	mov	eax, 1
.L570:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE77:
	.size	parse_zlib_header, .-parse_zlib_header
	.local	default_length
	.comm	default_length,288,32
	.local	default_distance
	.comm	default_distance,32,32
	.type	init_defaults, @function
init_defaults:
.LFB78:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], 0
	jmp	.L574
.L575:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, default_length[rip]
	mov	BYTE PTR [rax+rdx], 8
	add	DWORD PTR -4[rbp], 1
.L574:
	cmp	DWORD PTR -4[rbp], 143
	jle	.L575
	jmp	.L576
.L577:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, default_length[rip]
	mov	BYTE PTR [rax+rdx], 9
	add	DWORD PTR -4[rbp], 1
.L576:
	cmp	DWORD PTR -4[rbp], 255
	jle	.L577
	jmp	.L578
.L579:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, default_length[rip]
	mov	BYTE PTR [rax+rdx], 7
	add	DWORD PTR -4[rbp], 1
.L578:
	cmp	DWORD PTR -4[rbp], 279
	jle	.L579
	jmp	.L580
.L581:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, default_length[rip]
	mov	BYTE PTR [rax+rdx], 8
	add	DWORD PTR -4[rbp], 1
.L580:
	cmp	DWORD PTR -4[rbp], 287
	jle	.L581
	mov	DWORD PTR -4[rbp], 0
	jmp	.L582
.L583:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, default_distance[rip]
	mov	BYTE PTR [rax+rdx], 5
	add	DWORD PTR -4[rbp], 1
.L582:
	cmp	DWORD PTR -4[rbp], 31
	jle	.L583
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE78:
	.size	init_defaults, .-init_defaults
	.globl	stbi_png_partial
	.bss
	.align 4
	.type	stbi_png_partial, @object
	.size	stbi_png_partial, 4
stbi_png_partial:
	.zero	4
	.text
	.type	parse_zlib, @function
parse_zlib:
.LFB79:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	cmp	DWORD PTR -28[rbp], 0
	je	.L585
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	parse_zlib_header
	test	eax, eax
	jne	.L585
	mov	eax, 0
	jmp	.L586
.L585:
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 16[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 20[rax], 0
.L596:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	zreceive
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	zreceive
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jne	.L587
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	parse_uncompressed_block
	test	eax, eax
	jne	.L588
	mov	eax, 0
	jmp	.L586
.L587:
	cmp	DWORD PTR -4[rbp], 3
	jne	.L589
	mov	eax, 0
	jmp	.L586
.L589:
	cmp	DWORD PTR -4[rbp], 1
	jne	.L590
	movzx	eax, BYTE PTR default_distance[rip+31]
	test	al, al
	jne	.L591
	call	init_defaults
.L591:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 52
	mov	edx, 288
	lea	rsi, default_length[rip]
	mov	rdi, rax
	call	zbuild_huffman
	test	eax, eax
	jne	.L592
	mov	eax, 0
	jmp	.L586
.L592:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2072
	mov	edx, 32
	lea	rsi, default_distance[rip]
	mov	rdi, rax
	call	zbuild_huffman
	test	eax, eax
	jne	.L593
	mov	eax, 0
	jmp	.L586
.L590:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	compute_huffman_codes
	test	eax, eax
	jne	.L593
	mov	eax, 0
	jmp	.L586
.L593:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	parse_huffman_block
	test	eax, eax
	jne	.L588
	mov	eax, 0
	jmp	.L586
.L588:
	mov	eax, DWORD PTR stbi_png_partial[rip]
	test	eax, eax
	je	.L594
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR 32[rax]
	mov	rax, rdx
	sub	rax, rcx
	cmp	rax, 65536
	jg	.L597
.L594:
	cmp	DWORD PTR -8[rbp], 0
	je	.L596
	jmp	.L595
.L597:
	nop
.L595:
	mov	eax, 1
.L586:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE79:
	.size	parse_zlib, .-parse_zlib
	.type	do_zlib, @function
do_zlib:
.LFB80:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	DWORD PTR -20[rbp], edx
	mov	DWORD PTR -24[rbp], ecx
	mov	DWORD PTR -28[rbp], r8d
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 32[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -16[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 40[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -24[rbp]
	mov	DWORD PTR 48[rax], edx
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	parse_zlib
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE80:
	.size	do_zlib, .-do_zlib
	.globl	stbi_zlib_decode_malloc_guesssize
	.type	stbi_zlib_decode_malloc_guesssize, @function
stbi_zlib_decode_malloc_guesssize:
.LFB81:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 64
	mov	QWORD PTR -4136[rbp], rdi
	mov	DWORD PTR -4140[rbp], esi
	mov	DWORD PTR -4144[rbp], edx
	mov	QWORD PTR -4152[rbp], rcx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR -4144[rbp]
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -4120[rbp], rax
	cmp	QWORD PTR -4120[rbp], 0
	jne	.L601
	mov	eax, 0
	jmp	.L605
.L601:
	mov	rax, QWORD PTR -4136[rbp]
	mov	QWORD PTR -4112[rbp], rax
	mov	eax, DWORD PTR -4140[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -4136[rbp]
	add	rax, rdx
	mov	QWORD PTR -4104[rbp], rax
	mov	edx, DWORD PTR -4144[rbp]
	mov	rsi, QWORD PTR -4120[rbp]
	lea	rax, -4112[rbp]
	mov	r8d, 1
	mov	ecx, 1
	mov	rdi, rax
	call	do_zlib
	test	eax, eax
	je	.L603
	cmp	QWORD PTR -4152[rbp], 0
	je	.L604
	mov	rax, QWORD PTR -4088[rbp]
	mov	rdx, QWORD PTR -4080[rbp]
	sub	rax, rdx
	mov	edx, eax
	mov	rax, QWORD PTR -4152[rbp]
	mov	DWORD PTR [rax], edx
.L604:
	mov	rax, QWORD PTR -4080[rbp]
	jmp	.L605
.L603:
	mov	rax, QWORD PTR -4080[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
.L605:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L606
	call	__stack_chk_fail@PLT
.L606:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE81:
	.size	stbi_zlib_decode_malloc_guesssize, .-stbi_zlib_decode_malloc_guesssize
	.globl	stbi_zlib_decode_malloc
	.type	stbi_zlib_decode_malloc, @function
stbi_zlib_decode_malloc:
.LFB82:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdx, QWORD PTR -24[rbp]
	mov	esi, DWORD PTR -12[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, rdx
	mov	edx, 16384
	mov	rdi, rax
	call	stbi_zlib_decode_malloc_guesssize
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE82:
	.size	stbi_zlib_decode_malloc, .-stbi_zlib_decode_malloc
	.globl	stbi_zlib_decode_buffer
	.type	stbi_zlib_decode_buffer, @function
stbi_zlib_decode_buffer:
.LFB83:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 48
	mov	QWORD PTR -4120[rbp], rdi
	mov	DWORD PTR -4124[rbp], esi
	mov	QWORD PTR -4136[rbp], rdx
	mov	DWORD PTR -4128[rbp], ecx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -4136[rbp]
	mov	QWORD PTR -4112[rbp], rax
	mov	eax, DWORD PTR -4128[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -4136[rbp]
	add	rax, rdx
	mov	QWORD PTR -4104[rbp], rax
	mov	edx, DWORD PTR -4124[rbp]
	mov	rsi, QWORD PTR -4120[rbp]
	lea	rax, -4112[rbp]
	mov	r8d, 1
	mov	ecx, 0
	mov	rdi, rax
	call	do_zlib
	test	eax, eax
	je	.L610
	mov	rax, QWORD PTR -4088[rbp]
	mov	rdx, QWORD PTR -4080[rbp]
	sub	rax, rdx
	jmp	.L612
.L610:
	mov	eax, -1
.L612:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L613
	call	__stack_chk_fail@PLT
.L613:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE83:
	.size	stbi_zlib_decode_buffer, .-stbi_zlib_decode_buffer
	.globl	stbi_zlib_decode_noheader_malloc
	.type	stbi_zlib_decode_noheader_malloc, @function
stbi_zlib_decode_noheader_malloc:
.LFB84:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 64
	mov	QWORD PTR -4136[rbp], rdi
	mov	DWORD PTR -4140[rbp], esi
	mov	QWORD PTR -4152[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edi, 16384
	call	malloc@PLT
	mov	QWORD PTR -4120[rbp], rax
	cmp	QWORD PTR -4120[rbp], 0
	jne	.L615
	mov	eax, 0
	jmp	.L619
.L615:
	mov	rax, QWORD PTR -4136[rbp]
	mov	QWORD PTR -4112[rbp], rax
	mov	eax, DWORD PTR -4140[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -4136[rbp]
	add	rax, rdx
	mov	QWORD PTR -4104[rbp], rax
	mov	rsi, QWORD PTR -4120[rbp]
	lea	rax, -4112[rbp]
	mov	r8d, 0
	mov	ecx, 1
	mov	edx, 16384
	mov	rdi, rax
	call	do_zlib
	test	eax, eax
	je	.L617
	cmp	QWORD PTR -4152[rbp], 0
	je	.L618
	mov	rax, QWORD PTR -4088[rbp]
	mov	rdx, QWORD PTR -4080[rbp]
	sub	rax, rdx
	mov	edx, eax
	mov	rax, QWORD PTR -4152[rbp]
	mov	DWORD PTR [rax], edx
.L618:
	mov	rax, QWORD PTR -4080[rbp]
	jmp	.L619
.L617:
	mov	rax, QWORD PTR -4080[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
.L619:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L620
	call	__stack_chk_fail@PLT
.L620:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE84:
	.size	stbi_zlib_decode_noheader_malloc, .-stbi_zlib_decode_noheader_malloc
	.globl	stbi_zlib_decode_noheader_buffer
	.type	stbi_zlib_decode_noheader_buffer, @function
stbi_zlib_decode_noheader_buffer:
.LFB85:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 48
	mov	QWORD PTR -4120[rbp], rdi
	mov	DWORD PTR -4124[rbp], esi
	mov	QWORD PTR -4136[rbp], rdx
	mov	DWORD PTR -4128[rbp], ecx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -4136[rbp]
	mov	QWORD PTR -4112[rbp], rax
	mov	eax, DWORD PTR -4128[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -4136[rbp]
	add	rax, rdx
	mov	QWORD PTR -4104[rbp], rax
	mov	edx, DWORD PTR -4124[rbp]
	mov	rsi, QWORD PTR -4120[rbp]
	lea	rax, -4112[rbp]
	mov	r8d, 0
	mov	ecx, 0
	mov	rdi, rax
	call	do_zlib
	test	eax, eax
	je	.L622
	mov	rax, QWORD PTR -4088[rbp]
	mov	rdx, QWORD PTR -4080[rbp]
	sub	rax, rdx
	jmp	.L624
.L622:
	mov	eax, -1
.L624:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L625
	call	__stack_chk_fail@PLT
.L625:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE85:
	.size	stbi_zlib_decode_noheader_buffer, .-stbi_zlib_decode_noheader_buffer
	.type	get_chunk_header, @function
get_chunk_header:
.LFB86:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get32
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get32
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE86:
	.size	get_chunk_header, .-get_chunk_header
	.section	.rodata
.LC53:
	.string	"bad png sig"
	.text
	.type	check_png_header, @function
check_png_header:
.LFB87:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L629
.L632:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	lea	rcx, png_sig.5[rip]
	movzx	edx, BYTE PTR [rdx+rcx]
	movzx	edx, dl
	cmp	eax, edx
	je	.L630
	lea	rdi, .LC53[rip]
	call	e
	jmp	.L631
.L630:
	add	DWORD PTR -4[rbp], 1
.L629:
	cmp	DWORD PTR -4[rbp], 7
	jle	.L632
	mov	eax, 1
.L631:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE87:
	.size	check_png_header, .-check_png_header
	.data
	.type	first_row_filter, @object
	.size	first_row_filter, 5
first_row_filter:
	.string	""
	.string	"\001"
	.ascii	"\005\006"
	.text
	.type	paeth, @function
paeth:
.LFB88:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	DWORD PTR -28[rbp], edx
	mov	edx, DWORD PTR -20[rbp]
	mov	eax, DWORD PTR -24[rbp]
	add	eax, edx
	sub	eax, DWORD PTR -28[rbp]
	mov	DWORD PTR -16[rbp], eax
	mov	eax, DWORD PTR -16[rbp]
	sub	eax, DWORD PTR -20[rbp]
	cdq
	xor	eax, edx
	mov	DWORD PTR -12[rbp], eax
	sub	DWORD PTR -12[rbp], edx
	mov	eax, DWORD PTR -16[rbp]
	sub	eax, DWORD PTR -24[rbp]
	cdq
	xor	eax, edx
	mov	DWORD PTR -8[rbp], eax
	sub	DWORD PTR -8[rbp], edx
	mov	eax, DWORD PTR -16[rbp]
	sub	eax, DWORD PTR -28[rbp]
	cdq
	xor	eax, edx
	mov	DWORD PTR -4[rbp], eax
	sub	DWORD PTR -4[rbp], edx
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jg	.L634
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jg	.L634
	mov	eax, DWORD PTR -20[rbp]
	jmp	.L635
.L634:
	mov	eax, DWORD PTR -8[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jg	.L636
	mov	eax, DWORD PTR -24[rbp]
	jmp	.L635
.L636:
	mov	eax, DWORD PTR -28[rbp]
.L635:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE88:
	.size	paeth, .-paeth
	.section	.rodata
	.align 8
.LC54:
	.string	"out_n == s->img_n || out_n == s->img_n+1"
.LC55:
	.string	"not enough pixels"
.LC56:
	.string	"invalid filter"
.LC57:
	.string	"img_n+1 == out_n"
	.text
	.type	create_png_image_raw, @function
create_png_image_raw:
.LFB89:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 88
	.cfi_offset 3, -24
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	DWORD PTR -84[rbp], edx
	mov	DWORD PTR -88[rbp], ecx
	mov	DWORD PTR -92[rbp], r8d
	mov	DWORD PTR -96[rbp], r9d
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	mov	edx, DWORD PTR -92[rbp]
	imul	eax, edx
	mov	DWORD PTR -48[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 8[rax]
	mov	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -88[rbp], eax
	je	.L638
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 8[rax]
	add	eax, 1
	cmp	DWORD PTR -88[rbp], eax
	je	.L638
	lea	rcx, __PRETTY_FUNCTION__.4[rip]
	mov	edx, 2363
	lea	rsi, .LC4[rip]
	lea	rdi, .LC54[rip]
	call	__assert_fail@PLT
.L638:
	mov	eax, DWORD PTR stbi_png_partial[rip]
	test	eax, eax
	je	.L639
	mov	DWORD PTR -96[rbp], 1
.L639:
	mov	eax, DWORD PTR -92[rbp]
	imul	eax, DWORD PTR -96[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -88[rbp]
	imul	eax, edx
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR 56[rax], rdx
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR 56[rax]
	test	rax, rax
	jne	.L640
	lea	rdi, .LC6[rip]
	call	e
	jmp	.L641
.L640:
	mov	eax, DWORD PTR stbi_png_partial[rip]
	test	eax, eax
	jne	.L642
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -92[rbp], eax
	jne	.L642
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	DWORD PTR -96[rbp], eax
	jne	.L642
	mov	eax, DWORD PTR -44[rbp]
	imul	eax, DWORD PTR -92[rbp]
	add	eax, 1
	imul	eax, DWORD PTR -96[rbp]
	cmp	DWORD PTR -84[rbp], eax
	je	.L643
	lea	rdi, .LC55[rip]
	call	e
	jmp	.L641
.L643:
	mov	eax, DWORD PTR -44[rbp]
	imul	eax, DWORD PTR -92[rbp]
	add	eax, 1
	imul	eax, DWORD PTR -96[rbp]
	cmp	DWORD PTR -84[rbp], eax
	jnb	.L642
	lea	rdi, .LC55[rip]
	call	e
	jmp	.L641
.L642:
	mov	DWORD PTR -60[rbp], 0
	jmp	.L644
.L735:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdx, QWORD PTR 56[rax]
	mov	eax, DWORD PTR -48[rbp]
	imul	eax, DWORD PTR -60[rbp]
	mov	eax, eax
	add	rax, rdx
	mov	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -48[rbp]
	neg	rax
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -80[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	cmp	DWORD PTR -52[rbp], 4
	jle	.L645
	lea	rdi, .LC56[rip]
	call	e
	jmp	.L641
.L645:
	cmp	DWORD PTR -60[rbp], 0
	jne	.L646
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, first_row_filter[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
.L646:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L647
.L657:
	cmp	DWORD PTR -52[rbp], 6
	ja	.L648
	mov	eax, DWORD PTR -52[rbp]
	lea	rdx, 0[0+rax*4]
	lea	rax, .L650[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L650[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L650:
	.long	.L656-.L650
	.long	.L655-.L650
	.long	.L654-.L650
	.long	.L653-.L650
	.long	.L652-.L650
	.long	.L651-.L650
	.long	.L649-.L650
	.text
.L656:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -56[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	jmp	.L648
.L655:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -56[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	jmp	.L648
.L654:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	add	edx, ecx
	mov	BYTE PTR [rax], dl
	jmp	.L648
.L653:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	shr	al
	mov	esi, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rcx
	add	edx, esi
	mov	BYTE PTR [rax], dl
	jmp	.L648
.L652:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ebx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edx, 0
	mov	esi, eax
	mov	edi, 0
	call	paeth
	mov	ecx, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	lea	edx, [rbx+rcx]
	mov	BYTE PTR [rax], dl
	jmp	.L648
.L651:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -56[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	jmp	.L648
.L649:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -56[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	nop
.L648:
	add	DWORD PTR -56[rbp], 1
.L647:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L657
	mov	eax, DWORD PTR -44[rbp]
	cmp	eax, DWORD PTR -88[rbp]
	je	.L658
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
.L658:
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cmp	eax, DWORD PTR -88[rbp]
	jne	.L659
	cmp	DWORD PTR -52[rbp], 6
	ja	.L697
	mov	eax, DWORD PTR -52[rbp]
	lea	rdx, 0[0+rax*4]
	lea	rax, .L662[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L662[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L662:
	.long	.L668-.L662
	.long	.L667-.L662
	.long	.L666-.L662
	.long	.L665-.L662
	.long	.L664-.L662
	.long	.L663-.L662
	.long	.L661-.L662
	.text
.L668:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L669
.L672:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L670
.L671:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -56[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -56[rbp], 1
.L670:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L671
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L669:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L672
	jmp	.L697
.L667:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L673
.L676:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L674
.L675:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	add	edx, ecx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L674:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L675
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L673:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L676
	jmp	.L697
.L666:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L677
.L680:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L678
.L679:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	add	edx, ecx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L678:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L679
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L677:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L680
	jmp	.L697
.L665:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L681
.L684:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L682
.L683:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -44[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, ecx
	sar	eax
	mov	esi, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rcx
	add	edx, esi
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L682:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L683
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L681:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L684
	jmp	.L697
.L664:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L685
.L688:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L686
.L687:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ebx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -44[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, ecx
	mov	edi, eax
	call	paeth
	mov	ecx, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	lea	edx, [rbx+rcx]
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L686:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L687
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L685:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L688
	jmp	.L697
.L663:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L689
.L692:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L690
.L691:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -44[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	shr	al
	mov	esi, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rcx
	add	edx, esi
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L690:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L691
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L689:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L692
	jmp	.L697
.L661:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L693
.L696:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L694
.L695:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ebx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edx, 0
	mov	esi, 0
	mov	edi, eax
	call	paeth
	mov	ecx, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	lea	edx, [rbx+rcx]
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L694:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L695
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L693:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L696
	jmp	.L697
.L659:
	mov	eax, DWORD PTR -44[rbp]
	add	eax, 1
	cmp	DWORD PTR -88[rbp], eax
	je	.L698
	lea	rcx, __PRETTY_FUNCTION__.4[rip]
	mov	edx, 2413
	lea	rsi, .LC4[rip]
	lea	rdi, .LC57[rip]
	call	__assert_fail@PLT
.L698:
	cmp	DWORD PTR -52[rbp], 6
	ja	.L697
	mov	eax, DWORD PTR -52[rbp]
	lea	rdx, 0[0+rax*4]
	lea	rax, .L700[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L700[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L700:
	.long	.L706-.L700
	.long	.L705-.L700
	.long	.L704-.L700
	.long	.L703-.L700
	.long	.L702-.L700
	.long	.L701-.L700
	.long	.L699-.L700
	.text
.L706:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L707
.L710:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L708
.L709:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -56[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -56[rbp], 1
.L708:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L709
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L707:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L710
	jmp	.L697
.L705:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L711
.L714:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L712
.L713:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -88[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	add	edx, ecx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L712:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L713
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L711:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L714
	jmp	.L697
.L704:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L715
.L718:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L716
.L717:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	add	edx, ecx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L716:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L717
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L715:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L718
	jmp	.L697
.L703:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L719
.L722:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L720
.L721:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -88[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, ecx
	sar	eax
	mov	esi, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rcx
	add	edx, esi
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L720:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L721
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L719:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L722
	jmp	.L697
.L702:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L723
.L726:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L724
.L725:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ebx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -88[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -88[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, ecx
	mov	edi, eax
	call	paeth
	mov	ecx, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	lea	edx, [rbx+rcx]
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L724:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L725
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L723:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L726
	jmp	.L697
.L701:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L727
.L730:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L728
.L729:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -88[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	shr	al
	mov	esi, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rcx
	add	edx, esi
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L728:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L729
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L727:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L730
	jmp	.L697
.L699:
	mov	eax, DWORD PTR -92[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	jmp	.L731
.L734:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L732
.L733:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	ebx, BYTE PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	sub	eax, DWORD PTR -88[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edx, 0
	mov	esi, 0
	mov	edi, eax
	call	paeth
	mov	ecx, eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	lea	edx, [rbx+rcx]
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -56[rbp], 1
.L732:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L733
	sub	DWORD PTR -64[rbp], 1
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	add	QWORD PTR -32[rbp], rax
.L731:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L734
	nop
.L697:
	add	DWORD PTR -60[rbp], 1
.L644:
	mov	eax, DWORD PTR -60[rbp]
	cmp	eax, DWORD PTR -96[rbp]
	jb	.L735
	mov	eax, 1
.L641:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE89:
	.size	create_png_image_raw, .-create_png_image_raw
	.type	create_png_image, @function
create_png_image:
.LFB90:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 208
	mov	QWORD PTR -184[rbp], rdi
	mov	QWORD PTR -192[rbp], rsi
	mov	DWORD PTR -196[rbp], edx
	mov	DWORD PTR -200[rbp], ecx
	mov	DWORD PTR -204[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	DWORD PTR -204[rbp], 0
	jne	.L737
	mov	rax, QWORD PTR -184[rbp]
	mov	r8d, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -184[rbp]
	mov	edi, DWORD PTR [rax]
	mov	ecx, DWORD PTR -200[rbp]
	mov	edx, DWORD PTR -196[rbp]
	mov	rsi, QWORD PTR -192[rbp]
	mov	rax, QWORD PTR -184[rbp]
	mov	r9d, r8d
	mov	r8d, edi
	mov	rdi, rax
	call	create_png_image_raw
	jmp	.L738
.L737:
	mov	eax, DWORD PTR stbi_png_partial[rip]
	mov	DWORD PTR -164[rbp], eax
	mov	DWORD PTR stbi_png_partial[rip], 0
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -184[rbp]
	mov	eax, DWORD PTR 4[rax]
	imul	edx, eax
	mov	eax, DWORD PTR -200[rbp]
	imul	eax, edx
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -152[rbp], rax
	mov	DWORD PTR -176[rbp], 0
	jmp	.L739
.L746:
	mov	DWORD PTR -144[rbp], 0
	mov	DWORD PTR -140[rbp], 4
	mov	DWORD PTR -136[rbp], 0
	mov	DWORD PTR -132[rbp], 2
	mov	DWORD PTR -128[rbp], 0
	mov	DWORD PTR -124[rbp], 1
	mov	DWORD PTR -120[rbp], 0
	mov	DWORD PTR -112[rbp], 0
	mov	DWORD PTR -108[rbp], 0
	mov	DWORD PTR -104[rbp], 4
	mov	DWORD PTR -100[rbp], 0
	mov	DWORD PTR -96[rbp], 2
	mov	DWORD PTR -92[rbp], 0
	mov	DWORD PTR -88[rbp], 1
	mov	DWORD PTR -80[rbp], 8
	mov	DWORD PTR -76[rbp], 8
	mov	DWORD PTR -72[rbp], 4
	mov	DWORD PTR -68[rbp], 4
	mov	DWORD PTR -64[rbp], 2
	mov	DWORD PTR -60[rbp], 2
	mov	DWORD PTR -56[rbp], 1
	mov	DWORD PTR -48[rbp], 8
	mov	DWORD PTR -44[rbp], 8
	mov	DWORD PTR -40[rbp], 8
	mov	DWORD PTR -36[rbp], 4
	mov	DWORD PTR -32[rbp], 4
	mov	DWORD PTR -28[rbp], 2
	mov	DWORD PTR -24[rbp], 2
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR [rax]
	mov	eax, DWORD PTR -176[rbp]
	cdqe
	mov	eax, DWORD PTR -144[rbp+rax*4]
	sub	edx, eax
	mov	eax, DWORD PTR -176[rbp]
	cdqe
	mov	eax, DWORD PTR -80[rbp+rax*4]
	add	eax, edx
	lea	edx, -1[rax]
	mov	eax, DWORD PTR -176[rbp]
	cdqe
	mov	eax, DWORD PTR -80[rbp+rax*4]
	mov	ecx, eax
	mov	eax, edx
	mov	edx, 0
	div	ecx
	mov	DWORD PTR -160[rbp], eax
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR 4[rax]
	mov	eax, DWORD PTR -176[rbp]
	cdqe
	mov	eax, DWORD PTR -112[rbp+rax*4]
	sub	edx, eax
	mov	eax, DWORD PTR -176[rbp]
	cdqe
	mov	eax, DWORD PTR -48[rbp+rax*4]
	add	eax, edx
	lea	edx, -1[rax]
	mov	eax, DWORD PTR -176[rbp]
	cdqe
	mov	eax, DWORD PTR -48[rbp+rax*4]
	mov	ecx, eax
	mov	eax, edx
	mov	edx, 0
	div	ecx
	mov	DWORD PTR -156[rbp], eax
	cmp	DWORD PTR -160[rbp], 0
	je	.L740
	cmp	DWORD PTR -156[rbp], 0
	je	.L740
	mov	r8d, DWORD PTR -156[rbp]
	mov	edi, DWORD PTR -160[rbp]
	mov	ecx, DWORD PTR -200[rbp]
	mov	edx, DWORD PTR -196[rbp]
	mov	rsi, QWORD PTR -192[rbp]
	mov	rax, QWORD PTR -184[rbp]
	mov	r9d, r8d
	mov	r8d, edi
	mov	rdi, rax
	call	create_png_image_raw
	test	eax, eax
	jne	.L741
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
	jmp	.L738
.L741:
	mov	DWORD PTR -168[rbp], 0
	jmp	.L742
.L745:
	mov	DWORD PTR -172[rbp], 0
	jmp	.L743
.L744:
	mov	eax, DWORD PTR -200[rbp]
	cdqe
	mov	rdx, QWORD PTR -184[rbp]
	mov	rcx, QWORD PTR 56[rdx]
	mov	edx, DWORD PTR -168[rbp]
	mov	esi, edx
	imul	esi, DWORD PTR -160[rbp]
	mov	edx, DWORD PTR -172[rbp]
	add	edx, esi
	imul	edx, DWORD PTR -200[rbp]
	movsx	rdx, edx
	lea	rsi, [rcx+rdx]
	mov	edx, DWORD PTR -176[rbp]
	movsx	rdx, edx
	mov	edx, DWORD PTR -48[rbp+rdx*4]
	mov	ecx, edx
	imul	ecx, DWORD PTR -168[rbp]
	mov	edx, DWORD PTR -176[rbp]
	movsx	rdx, edx
	mov	edx, DWORD PTR -112[rbp+rdx*4]
	add	edx, ecx
	mov	ecx, edx
	mov	rdx, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR [rdx]
	imul	ecx, edx
	mov	edx, DWORD PTR -200[rbp]
	imul	edx, ecx
	mov	edi, edx
	mov	edx, DWORD PTR -176[rbp]
	movsx	rdx, edx
	mov	edx, DWORD PTR -80[rbp+rdx*4]
	mov	ecx, edx
	imul	ecx, DWORD PTR -172[rbp]
	mov	edx, DWORD PTR -176[rbp]
	movsx	rdx, edx
	mov	edx, DWORD PTR -144[rbp+rdx*4]
	add	edx, ecx
	imul	edx, DWORD PTR -200[rbp]
	movsx	rdx, edx
	lea	rcx, [rdi+rdx]
	mov	rdx, QWORD PTR -152[rbp]
	add	rcx, rdx
	mov	rdx, rax
	mov	rdi, rcx
	call	memcpy@PLT
	add	DWORD PTR -172[rbp], 1
.L743:
	mov	eax, DWORD PTR -172[rbp]
	cmp	eax, DWORD PTR -160[rbp]
	jl	.L744
	add	DWORD PTR -168[rbp], 1
.L742:
	mov	eax, DWORD PTR -168[rbp]
	cmp	eax, DWORD PTR -156[rbp]
	jl	.L745
	mov	rax, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR 56[rax]
	mov	rdi, rax
	call	free@PLT
	mov	eax, DWORD PTR -160[rbp]
	imul	eax, DWORD PTR -200[rbp]
	add	eax, 1
	imul	eax, DWORD PTR -156[rbp]
	cdqe
	add	QWORD PTR -192[rbp], rax
	mov	eax, DWORD PTR -160[rbp]
	imul	eax, DWORD PTR -200[rbp]
	add	eax, 1
	imul	eax, DWORD PTR -156[rbp]
	sub	DWORD PTR -196[rbp], eax
.L740:
	add	DWORD PTR -176[rbp], 1
.L739:
	cmp	DWORD PTR -176[rbp], 6
	jle	.L746
	mov	rax, QWORD PTR -184[rbp]
	mov	rdx, QWORD PTR -152[rbp]
	mov	QWORD PTR 56[rax], rdx
	mov	eax, DWORD PTR -164[rbp]
	mov	DWORD PTR stbi_png_partial[rip], eax
	mov	eax, 1
.L738:
	mov	rdi, QWORD PTR -8[rbp]
	sub	rdi, QWORD PTR fs:40
	je	.L747
	call	__stack_chk_fail@PLT
.L747:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE90:
	.size	create_png_image, .-create_png_image
	.section	.rodata
.LC58:
	.string	"out_n == 2 || out_n == 4"
	.text
	.type	compute_transparency, @function
compute_transparency:
.LFB91:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	DWORD PTR -52[rbp], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	imul	eax, edx
	mov	DWORD PTR -20[rbp], eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 56[rax]
	mov	QWORD PTR -16[rbp], rax
	cmp	DWORD PTR -52[rbp], 2
	je	.L749
	cmp	DWORD PTR -52[rbp], 4
	je	.L749
	lea	rcx, __PRETTY_FUNCTION__.3[rip]
	mov	edx, 2482
	lea	rsi, .LC4[rip]
	lea	rdi, .LC58[rip]
	call	__assert_fail@PLT
.L749:
	cmp	DWORD PTR -52[rbp], 2
	jne	.L750
	mov	DWORD PTR -24[rbp], 0
	jmp	.L751
.L754:
	mov	rax, QWORD PTR -16[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L752
	mov	edx, 0
	jmp	.L753
.L752:
	mov	edx, -1
.L753:
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -16[rbp], 2
	add	DWORD PTR -24[rbp], 1
.L751:
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jb	.L754
	jmp	.L755
.L750:
	mov	DWORD PTR -24[rbp], 0
	jmp	.L756
.L758:
	mov	rax, QWORD PTR -16[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L757
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L757
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 2
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L757
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 3
	mov	BYTE PTR [rax], 0
.L757:
	add	QWORD PTR -16[rbp], 4
	add	DWORD PTR -24[rbp], 1
.L756:
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jb	.L758
.L755:
	mov	eax, 1
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE91:
	.size	compute_transparency, .-compute_transparency
	.type	expand_palette, @function
expand_palette:
.LFB92:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	DWORD PTR -68[rbp], edx
	mov	DWORD PTR -72[rbp], ecx
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 4[rax]
	imul	eax, edx
	mov	DWORD PTR -36[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 56[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	eax, DWORD PTR -72[rbp]
	imul	eax, DWORD PTR -36[rbp]
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L761
	lea	rdi, .LC6[rip]
	call	e
	jmp	.L762
.L761:
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -72[rbp], 3
	jne	.L763
	mov	DWORD PTR -40[rbp], 0
	jmp	.L764
.L765:
	mov	edx, DWORD PTR -40[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 2
	mov	DWORD PTR -28[rbp], eax
	mov	eax, DWORD PTR -28[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, 1
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, 2
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	add	QWORD PTR -24[rbp], 3
	add	DWORD PTR -40[rbp], 1
.L764:
	mov	eax, DWORD PTR -40[rbp]
	cmp	eax, DWORD PTR -36[rbp]
	jb	.L765
	jmp	.L766
.L763:
	mov	DWORD PTR -40[rbp], 0
	jmp	.L767
.L768:
	mov	edx, DWORD PTR -40[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 2
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -32[rbp]
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, 1
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -32[rbp]
	cdqe
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, 2
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -32[rbp]
	cdqe
	lea	rdx, 3[rax]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, 3
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	add	QWORD PTR -24[rbp], 4
	add	DWORD PTR -40[rbp], 1
.L767:
	mov	eax, DWORD PTR -40[rbp]
	cmp	eax, DWORD PTR -36[rbp]
	jb	.L768
.L766:
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 56[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 56[rax], rdx
	mov	eax, 1
.L762:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE92:
	.size	expand_palette, .-expand_palette
	.section	.rodata
.LC59:
	.string	"first not IHDR"
.LC60:
	.string	"multiple IHDR"
.LC61:
	.string	"bad IHDR len"
.LC62:
	.string	"8bit only"
.LC63:
	.string	"bad ctype"
.LC64:
	.string	"bad comp method"
.LC65:
	.string	"bad filter method"
.LC66:
	.string	"bad interlace method"
.LC67:
	.string	"0-pixel image"
.LC68:
	.string	"invalid PLTE"
.LC69:
	.string	"tRNS after IDAT"
.LC70:
	.string	"tRNS before PLTE"
.LC71:
	.string	"bad tRNS len"
.LC72:
	.string	"tRNS with alpha"
.LC73:
	.string	"no PLTE"
.LC74:
	.string	"outofdata"
.LC75:
	.string	"no IDAT"
	.text
	.type	parse_png_file, @function
parse_png_file:
.LFB93:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 1160
	.cfi_offset 3, -24
	mov	QWORD PTR -1160[rbp], rdi
	mov	DWORD PTR -1164[rbp], esi
	mov	DWORD PTR -1168[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	BYTE PTR -1138[rbp], 0
	mov	BYTE PTR -1137[rbp], 0
	mov	DWORD PTR -1132[rbp], 0
	mov	DWORD PTR -1128[rbp], 0
	mov	DWORD PTR -1120[rbp], 0
	mov	DWORD PTR -1116[rbp], 1
	mov	DWORD PTR -1108[rbp], 0
	mov	rax, QWORD PTR -1160[rbp]
	mov	QWORD PTR -1088[rbp], rax
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	check_png_header
	test	eax, eax
	jne	.L770
	mov	eax, 0
	jmp	.L838
.L770:
	cmp	DWORD PTR -1164[rbp], 1
	jne	.L772
	mov	eax, 1
	jmp	.L838
.L772:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get_chunk_header
	mov	QWORD PTR -1068[rbp], rax
	cmp	DWORD PTR -1116[rbp], 0
	je	.L773
	mov	eax, DWORD PTR -1064[rbp]
	cmp	eax, 1229472850
	je	.L773
	lea	rdi, .LC59[rip]
	call	e
	jmp	.L838
.L773:
	mov	eax, DWORD PTR -1064[rbp]
	cmp	eax, 1951551059
	je	.L775
	cmp	eax, 1951551059
	ja	.L776
	cmp	eax, 1347179589
	je	.L777
	cmp	eax, 1347179589
	ja	.L776
	cmp	eax, 1229472850
	je	.L778
	cmp	eax, 1229472850
	ja	.L776
	cmp	eax, 1229209940
	je	.L779
	cmp	eax, 1229278788
	je	.L780
	jmp	.L776
.L778:
	cmp	DWORD PTR -1116[rbp], 0
	jne	.L781
	lea	rdi, .LC60[rip]
	call	e
	jmp	.L838
.L781:
	mov	eax, DWORD PTR -1068[rbp]
	cmp	eax, 13
	je	.L782
	lea	rdi, .LC61[rip]
	call	e
	jmp	.L838
.L782:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get32
	mov	rdx, QWORD PTR -1088[rbp]
	mov	DWORD PTR [rdx], eax
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	eax, 16777216
	jbe	.L783
	lea	rdi, .LC34[rip]
	call	e
	jmp	.L838
.L783:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get32
	mov	rdx, QWORD PTR -1088[rbp]
	mov	DWORD PTR 4[rdx], eax
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	eax, 16777216
	jbe	.L784
	lea	rdi, .LC34[rip]
	call	e
	jmp	.L838
.L784:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -1104[rbp], eax
	cmp	DWORD PTR -1104[rbp], 8
	je	.L785
	lea	rdi, .LC62[rip]
	call	e
	jmp	.L838
.L785:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -1100[rbp], eax
	cmp	DWORD PTR -1100[rbp], 6
	jle	.L786
	lea	rdi, .LC63[rip]
	call	e
	jmp	.L838
.L786:
	cmp	DWORD PTR -1100[rbp], 3
	jne	.L787
	mov	BYTE PTR -1138[rbp], 3
	jmp	.L788
.L787:
	mov	eax, DWORD PTR -1100[rbp]
	and	eax, 1
	test	eax, eax
	je	.L788
	lea	rdi, .LC63[rip]
	call	e
	jmp	.L838
.L788:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -1096[rbp], eax
	cmp	DWORD PTR -1096[rbp], 0
	je	.L789
	lea	rdi, .LC64[rip]
	call	e
	jmp	.L838
.L789:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -1092[rbp], eax
	cmp	DWORD PTR -1092[rbp], 0
	je	.L790
	lea	rdi, .LC65[rip]
	call	e
	jmp	.L838
.L790:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -1108[rbp], eax
	cmp	DWORD PTR -1108[rbp], 1
	jle	.L791
	lea	rdi, .LC66[rip]
	call	e
	jmp	.L838
.L791:
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	je	.L792
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 4[rax]
	test	eax, eax
	jne	.L793
.L792:
	lea	rdi, .LC67[rip]
	call	e
	jmp	.L838
.L793:
	cmp	BYTE PTR -1138[rbp], 0
	jne	.L794
	mov	eax, DWORD PTR -1100[rbp]
	and	eax, 2
	test	eax, eax
	je	.L795
	mov	edx, 3
	jmp	.L796
.L795:
	mov	edx, 1
.L796:
	mov	eax, DWORD PTR -1100[rbp]
	sar	eax, 2
	and	eax, 1
	add	edx, eax
	mov	rax, QWORD PTR -1088[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -1088[rbp]
	mov	ebx, DWORD PTR [rax]
	mov	eax, 1073741824
	mov	edx, 0
	div	ebx
	mov	edx, eax
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 8[rax]
	mov	ecx, eax
	mov	eax, edx
	mov	edx, 0
	div	ecx
	mov	edx, eax
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	edx, eax
	jnb	.L797
	lea	rdi, .LC34[rip]
	call	e
	jmp	.L838
.L797:
	cmp	DWORD PTR -1164[rbp], 2
	jne	.L840
	mov	eax, 1
	jmp	.L838
.L794:
	mov	rax, QWORD PTR -1088[rbp]
	mov	DWORD PTR 8[rax], 1
	mov	rax, QWORD PTR -1088[rbp]
	mov	ebx, DWORD PTR [rax]
	mov	eax, 268435456
	mov	edx, 0
	div	ebx
	mov	edx, eax
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	edx, eax
	jnb	.L840
	lea	rdi, .LC34[rip]
	call	e
	jmp	.L838
.L777:
	mov	eax, DWORD PTR -1068[rbp]
	cmp	eax, 768
	jbe	.L800
	lea	rdi, .LC68[rip]
	call	e
	jmp	.L838
.L800:
	mov	eax, DWORD PTR -1068[rbp]
	mov	edx, eax
	mov	eax, 2863311531
	imul	rax, rdx
	shr	rax, 32
	shr	eax
	mov	DWORD PTR -1120[rbp], eax
	mov	edx, DWORD PTR -1120[rbp]
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	mov	eax, DWORD PTR -1068[rbp]
	cmp	edx, eax
	je	.L801
	lea	rdi, .LC68[rip]
	call	e
	jmp	.L838
.L801:
	mov	DWORD PTR -1124[rbp], 0
	jmp	.L802
.L803:
	mov	eax, DWORD PTR -1124[rbp]
	lea	ebx, 0[0+rax*4]
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get8u
	mov	edx, ebx
	mov	BYTE PTR -1056[rbp+rdx], al
	mov	eax, DWORD PTR -1124[rbp]
	sal	eax, 2
	lea	ebx, 1[rax]
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get8u
	mov	edx, ebx
	mov	BYTE PTR -1056[rbp+rdx], al
	mov	eax, DWORD PTR -1124[rbp]
	sal	eax, 2
	lea	ebx, 2[rax]
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get8u
	mov	edx, ebx
	mov	BYTE PTR -1056[rbp+rdx], al
	mov	eax, DWORD PTR -1124[rbp]
	sal	eax, 2
	add	eax, 3
	mov	eax, eax
	mov	BYTE PTR -1056[rbp+rax], -1
	add	DWORD PTR -1124[rbp], 1
.L802:
	mov	eax, DWORD PTR -1124[rbp]
	cmp	eax, DWORD PTR -1120[rbp]
	jb	.L803
	jmp	.L799
.L775:
	mov	rax, QWORD PTR -1160[rbp]
	mov	rax, QWORD PTR 40[rax]
	test	rax, rax
	je	.L804
	lea	rdi, .LC69[rip]
	call	e
	jmp	.L838
.L804:
	cmp	BYTE PTR -1138[rbp], 0
	je	.L805
	cmp	DWORD PTR -1164[rbp], 2
	jne	.L806
	mov	rax, QWORD PTR -1088[rbp]
	mov	DWORD PTR 8[rax], 4
	mov	eax, 1
	jmp	.L838
.L806:
	cmp	DWORD PTR -1120[rbp], 0
	jne	.L807
	lea	rdi, .LC70[rip]
	call	e
	jmp	.L838
.L807:
	mov	eax, DWORD PTR -1068[rbp]
	cmp	DWORD PTR -1120[rbp], eax
	jnb	.L808
	lea	rdi, .LC71[rip]
	call	e
	jmp	.L838
.L808:
	mov	BYTE PTR -1138[rbp], 4
	mov	DWORD PTR -1124[rbp], 0
	jmp	.L809
.L810:
	mov	eax, DWORD PTR -1124[rbp]
	sal	eax, 2
	lea	ebx, 3[rax]
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get8u
	mov	edx, ebx
	mov	BYTE PTR -1056[rbp+rdx], al
	add	DWORD PTR -1124[rbp], 1
.L809:
	mov	eax, DWORD PTR -1068[rbp]
	cmp	DWORD PTR -1124[rbp], eax
	jb	.L810
	jmp	.L799
.L805:
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 8[rax]
	and	eax, 1
	test	eax, eax
	jne	.L812
	lea	rdi, .LC72[rip]
	call	e
	jmp	.L838
.L812:
	mov	edx, DWORD PTR -1068[rbp]
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 8[rax]
	add	eax, eax
	cmp	edx, eax
	je	.L813
	lea	rdi, .LC71[rip]
	call	e
	jmp	.L838
.L813:
	mov	BYTE PTR -1137[rbp], 1
	mov	DWORD PTR -1112[rbp], 0
	jmp	.L814
.L815:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get16
	mov	edx, eax
	mov	eax, DWORD PTR -1112[rbp]
	cdqe
	mov	BYTE PTR -1059[rbp+rax], dl
	add	DWORD PTR -1112[rbp], 1
.L814:
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -1112[rbp], eax
	jl	.L815
	jmp	.L799
.L779:
	cmp	BYTE PTR -1138[rbp], 0
	je	.L816
	cmp	DWORD PTR -1120[rbp], 0
	jne	.L816
	lea	rdi, .LC73[rip]
	call	e
	jmp	.L838
.L816:
	cmp	DWORD PTR -1164[rbp], 2
	jne	.L817
	movzx	edx, BYTE PTR -1138[rbp]
	mov	rax, QWORD PTR -1088[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	eax, 1
	jmp	.L838
.L817:
	mov	edx, DWORD PTR -1068[rbp]
	mov	eax, DWORD PTR -1132[rbp]
	add	eax, edx
	cmp	DWORD PTR -1128[rbp], eax
	jnb	.L818
	cmp	DWORD PTR -1128[rbp], 0
	jne	.L820
	mov	eax, DWORD PTR -1068[rbp]
	mov	edx, 4096
	cmp	eax, 4096
	cmovb	eax, edx
	mov	DWORD PTR -1128[rbp], eax
	jmp	.L820
.L821:
	sal	DWORD PTR -1128[rbp]
.L820:
	mov	edx, DWORD PTR -1068[rbp]
	mov	eax, DWORD PTR -1132[rbp]
	add	eax, edx
	cmp	DWORD PTR -1128[rbp], eax
	jb	.L821
	mov	edx, DWORD PTR -1128[rbp]
	mov	rax, QWORD PTR -1160[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR -1080[rbp], rax
	cmp	QWORD PTR -1080[rbp], 0
	jne	.L822
	lea	rdi, .LC6[rip]
	call	e
	jmp	.L838
.L822:
	mov	rax, QWORD PTR -1160[rbp]
	mov	rdx, QWORD PTR -1080[rbp]
	mov	QWORD PTR 40[rax], rdx
.L818:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	je	.L823
	mov	rax, QWORD PTR -1088[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	edx, DWORD PTR -1068[rbp]
	mov	esi, edx
	mov	rdx, QWORD PTR -1160[rbp]
	mov	rcx, QWORD PTR 40[rdx]
	mov	edx, DWORD PTR -1132[rbp]
	lea	rdi, [rcx+rdx]
	mov	rcx, rax
	mov	rdx, rsi
	mov	esi, 1
	call	fread@PLT
	mov	edx, DWORD PTR -1068[rbp]
	mov	edx, edx
	cmp	rax, rdx
	je	.L824
	lea	rdi, .LC74[rip]
	call	e
	jmp	.L838
.L823:
	mov	eax, DWORD PTR -1068[rbp]
	mov	esi, eax
	mov	rax, QWORD PTR -1088[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdx, QWORD PTR -1160[rbp]
	mov	rcx, QWORD PTR 40[rdx]
	mov	edx, DWORD PTR -1132[rbp]
	add	rcx, rdx
	mov	rdx, rsi
	mov	rsi, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -1088[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	edx, DWORD PTR -1068[rbp]
	mov	edx, edx
	add	rdx, rax
	mov	rax, QWORD PTR -1088[rbp]
	mov	QWORD PTR 24[rax], rdx
.L824:
	mov	eax, DWORD PTR -1068[rbp]
	add	DWORD PTR -1132[rbp], eax
	jmp	.L799
.L780:
	cmp	DWORD PTR -1164[rbp], 0
	je	.L825
	mov	eax, 1
	jmp	.L838
.L825:
	mov	rax, QWORD PTR -1160[rbp]
	mov	rax, QWORD PTR 40[rax]
	test	rax, rax
	jne	.L827
	lea	rdi, .LC75[rip]
	call	e
	jmp	.L838
.L827:
	mov	ecx, DWORD PTR -1132[rbp]
	mov	rax, QWORD PTR -1160[rbp]
	mov	rax, QWORD PTR 40[rax]
	lea	rdx, -1136[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	stbi_zlib_decode_malloc
	mov	rdx, QWORD PTR -1160[rbp]
	mov	QWORD PTR 48[rdx], rax
	mov	rax, QWORD PTR -1160[rbp]
	mov	rax, QWORD PTR 48[rax]
	test	rax, rax
	jne	.L828
	mov	eax, 0
	jmp	.L838
.L828:
	mov	rax, QWORD PTR -1160[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -1160[rbp]
	mov	QWORD PTR 40[rax], 0
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 8[rax]
	add	eax, 1
	cmp	DWORD PTR -1168[rbp], eax
	jne	.L829
	cmp	DWORD PTR -1168[rbp], 3
	je	.L829
	cmp	BYTE PTR -1138[rbp], 0
	je	.L830
.L829:
	cmp	BYTE PTR -1137[rbp], 0
	je	.L831
.L830:
	mov	rax, QWORD PTR -1088[rbp]
	mov	eax, DWORD PTR 8[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -1088[rbp]
	mov	DWORD PTR 12[rax], edx
	jmp	.L832
.L831:
	mov	rax, QWORD PTR -1088[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -1088[rbp]
	mov	DWORD PTR 12[rax], edx
.L832:
	mov	rax, QWORD PTR -1088[rbp]
	mov	ecx, DWORD PTR 12[rax]
	mov	edx, DWORD PTR -1136[rbp]
	mov	rax, QWORD PTR -1160[rbp]
	mov	rsi, QWORD PTR 48[rax]
	mov	edi, DWORD PTR -1108[rbp]
	mov	rax, QWORD PTR -1160[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	create_png_image
	test	eax, eax
	jne	.L833
	mov	eax, 0
	jmp	.L838
.L833:
	cmp	BYTE PTR -1137[rbp], 0
	je	.L834
	mov	rax, QWORD PTR -1088[rbp]
	mov	edx, DWORD PTR 12[rax]
	lea	rcx, -1059[rbp]
	mov	rax, QWORD PTR -1160[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	compute_transparency
	test	eax, eax
	jne	.L834
	mov	eax, 0
	jmp	.L838
.L834:
	cmp	BYTE PTR -1138[rbp], 0
	je	.L835
	movzx	edx, BYTE PTR -1138[rbp]
	mov	rax, QWORD PTR -1088[rbp]
	mov	DWORD PTR 8[rax], edx
	movzx	edx, BYTE PTR -1138[rbp]
	mov	rax, QWORD PTR -1088[rbp]
	mov	DWORD PTR 12[rax], edx
	cmp	DWORD PTR -1168[rbp], 2
	jle	.L836
	mov	rax, QWORD PTR -1088[rbp]
	mov	edx, DWORD PTR -1168[rbp]
	mov	DWORD PTR 12[rax], edx
.L836:
	mov	rax, QWORD PTR -1088[rbp]
	mov	ecx, DWORD PTR 12[rax]
	mov	edx, DWORD PTR -1120[rbp]
	lea	rsi, -1056[rbp]
	mov	rax, QWORD PTR -1160[rbp]
	mov	rdi, rax
	call	expand_palette
	test	eax, eax
	jne	.L835
	mov	eax, 0
	jmp	.L838
.L835:
	mov	rax, QWORD PTR -1160[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -1160[rbp]
	mov	QWORD PTR 48[rax], 0
	mov	eax, 1
	jmp	.L838
.L776:
	mov	eax, DWORD PTR -1064[rbp]
	and	eax, 536870912
	test	eax, eax
	jne	.L837
	mov	eax, DWORD PTR -1064[rbp]
	shr	eax, 24
	mov	BYTE PTR invalid_chunk.2[rip], al
	mov	eax, DWORD PTR -1064[rbp]
	shr	eax, 16
	mov	BYTE PTR invalid_chunk.2[rip+1], al
	mov	eax, DWORD PTR -1064[rbp]
	shr	eax, 8
	mov	BYTE PTR invalid_chunk.2[rip+2], al
	mov	eax, DWORD PTR -1064[rbp]
	mov	BYTE PTR invalid_chunk.2[rip+3], al
	lea	rdi, invalid_chunk.2[rip]
	call	e
	jmp	.L838
.L837:
	mov	eax, DWORD PTR -1068[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -1088[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	jmp	.L799
.L840:
	nop
.L799:
	mov	rax, QWORD PTR -1088[rbp]
	mov	rdi, rax
	call	get32
	mov	DWORD PTR -1116[rbp], 0
	jmp	.L772
.L838:
	mov	rbx, QWORD PTR -24[rbp]
	sub	rbx, QWORD PTR fs:40
	je	.L839
	call	__stack_chk_fail@PLT
.L839:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE93:
	.size	parse_png_file, .-parse_png_file
	.type	do_png, @function
do_png:
.LFB94:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	QWORD PTR -8[rbp], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 48[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 40[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 56[rax], 0
	cmp	DWORD PTR -52[rbp], 0
	js	.L842
	cmp	DWORD PTR -52[rbp], 4
	jle	.L843
.L842:
	lea	rdi, .LC37[rip]
	call	e
	mov	eax, 0
	jmp	.L844
.L843:
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	parse_png_file
	test	eax, eax
	je	.L845
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 56[rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 56[rax], 0
	cmp	DWORD PTR -52[rbp], 0
	je	.L846
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 12[rax]
	cmp	DWORD PTR -52[rbp], eax
	je	.L846
	mov	rax, QWORD PTR -24[rbp]
	mov	edi, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, DWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, DWORD PTR 12[rax]
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	convert_format
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR -52[rbp]
	mov	DWORD PTR 12[rax], edx
	cmp	QWORD PTR -8[rbp], 0
	jne	.L846
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L844
.L846:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	DWORD PTR [rax], edx
	cmp	QWORD PTR -48[rbp], 0
	je	.L845
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -48[rbp]
	mov	DWORD PTR [rax], edx
.L845:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 56[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 56[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 48[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 40[rax], 0
	mov	rax, QWORD PTR -8[rbp]
.L844:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE94:
	.size	do_png, .-do_png
	.globl	stbi_png_load_from_file
	.type	stbi_png_load_from_file, @function
stbi_png_load_from_file:
.LFB95:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	add	rsp, -128
	mov	QWORD PTR -88[rbp], rdi
	mov	QWORD PTR -96[rbp], rsi
	mov	QWORD PTR -104[rbp], rdx
	mov	QWORD PTR -112[rbp], rcx
	mov	DWORD PTR -116[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -88[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	mov	edi, DWORD PTR -116[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rdx, QWORD PTR -104[rbp]
	mov	rsi, QWORD PTR -96[rbp]
	lea	rax, -80[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	do_png
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L849
	call	__stack_chk_fail@PLT
.L849:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE95:
	.size	stbi_png_load_from_file, .-stbi_png_load_from_file
	.globl	stbi_png_load
	.type	stbi_png_load, @function
stbi_png_load:
.LFB96:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L851
	mov	eax, 0
	jmp	.L852
.L851:
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_png_load_from_file
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	rax, QWORD PTR -8[rbp]
.L852:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE96:
	.size	stbi_png_load, .-stbi_png_load
	.globl	stbi_png_load_from_memory
	.type	stbi_png_load_from_memory, @function
stbi_png_load_from_memory:
.LFB97:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	add	rsp, -128
	mov	QWORD PTR -88[rbp], rdi
	mov	DWORD PTR -92[rbp], esi
	mov	QWORD PTR -104[rbp], rdx
	mov	QWORD PTR -112[rbp], rcx
	mov	QWORD PTR -120[rbp], r8
	mov	DWORD PTR -96[rbp], r9d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -92[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	mov	edi, DWORD PTR -96[rbp]
	mov	rcx, QWORD PTR -120[rbp]
	mov	rdx, QWORD PTR -112[rbp]
	mov	rsi, QWORD PTR -104[rbp]
	lea	rax, -80[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	do_png
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L855
	call	__stack_chk_fail@PLT
.L855:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE97:
	.size	stbi_png_load_from_memory, .-stbi_png_load_from_memory
	.globl	stbi_png_test_file
	.type	stbi_png_test_file, @function
stbi_png_test_file:
.LFB98:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	QWORD PTR -104[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	call	ftell@PLT
	mov	DWORD PTR -88[rbp], eax
	mov	rdx, QWORD PTR -104[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	lea	rax, -80[rbp]
	mov	edx, 0
	mov	esi, 1
	mov	rdi, rax
	call	parse_png_file
	mov	DWORD PTR -84[rbp], eax
	mov	eax, DWORD PTR -88[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	mov	eax, DWORD PTR -84[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L858
	call	__stack_chk_fail@PLT
.L858:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE98:
	.size	stbi_png_test_file, .-stbi_png_test_file
	.globl	stbi_png_test_memory
	.type	stbi_png_test_memory, @function
stbi_png_test_memory:
.LFB99:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -88[rbp], rdi
	mov	DWORD PTR -92[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -92[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	lea	rax, -80[rbp]
	mov	edx, 0
	mov	esi, 1
	mov	rdi, rax
	call	parse_png_file
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L861
	call	__stack_chk_fail@PLT
.L861:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE99:
	.size	stbi_png_test_memory, .-stbi_png_test_memory
	.globl	stbi_png_info
	.type	stbi_png_info, @function
stbi_png_info:
.LFB100:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	add	rsp, -128
	mov	QWORD PTR -104[rbp], rdi
	mov	QWORD PTR -112[rbp], rsi
	mov	QWORD PTR -120[rbp], rdx
	mov	QWORD PTR -128[rbp], rcx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -104[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -88[rbp], rax
	cmp	QWORD PTR -88[rbp], 0
	jne	.L863
	mov	eax, 0
	jmp	.L869
.L863:
	mov	rdx, QWORD PTR -88[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	lea	rax, -80[rbp]
	mov	edx, 0
	mov	esi, 2
	mov	rdi, rax
	call	parse_png_file
	test	eax, eax
	je	.L865
	cmp	QWORD PTR -112[rbp], 0
	je	.L866
	mov	eax, DWORD PTR -80[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -112[rbp]
	mov	DWORD PTR [rax], edx
.L866:
	cmp	QWORD PTR -120[rbp], 0
	je	.L867
	mov	eax, DWORD PTR -76[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -120[rbp]
	mov	DWORD PTR [rax], edx
.L867:
	cmp	QWORD PTR -128[rbp], 0
	je	.L868
	mov	edx, DWORD PTR -72[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	DWORD PTR [rax], edx
.L868:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	eax, 1
	jmp	.L869
.L865:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	eax, 0
.L869:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L870
	call	__stack_chk_fail@PLT
.L870:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE100:
	.size	stbi_png_info, .-stbi_png_info
	.type	bmp_test, @function
bmp_test:
.LFB101:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	cmp	eax, 66
	je	.L872
	mov	eax, 0
	jmp	.L873
.L872:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	cmp	eax, 77
	je	.L874
	mov	eax, 0
	jmp	.L873
.L874:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16le
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16le
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 12
	je	.L875
	cmp	DWORD PTR -4[rbp], 40
	je	.L875
	cmp	DWORD PTR -4[rbp], 56
	je	.L875
	cmp	DWORD PTR -4[rbp], 108
	jne	.L876
.L875:
	mov	eax, 1
	jmp	.L873
.L876:
	mov	eax, 0
.L873:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE101:
	.size	bmp_test, .-bmp_test
	.globl	stbi_bmp_test_file
	.type	stbi_bmp_test_file, @function
stbi_bmp_test_file:
.LFB102:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	ftell@PLT
	mov	DWORD PTR -56[rbp], eax
	mov	rdx, QWORD PTR -72[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	bmp_test
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	mov	eax, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L879
	call	__stack_chk_fail@PLT
.L879:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE102:
	.size	stbi_bmp_test_file, .-stbi_bmp_test_file
	.globl	stbi_bmp_test_memory
	.type	stbi_bmp_test_memory, @function
stbi_bmp_test_memory:
.LFB103:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -60[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	bmp_test
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L882
	call	__stack_chk_fail@PLT
.L882:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE103:
	.size	stbi_bmp_test_memory, .-stbi_bmp_test_memory
	.type	high_bit, @function
high_bit:
.LFB104:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -4[rbp], 0
	cmp	DWORD PTR -20[rbp], 0
	jne	.L884
	mov	eax, -1
	jmp	.L885
.L884:
	cmp	DWORD PTR -20[rbp], 65535
	jbe	.L886
	add	DWORD PTR -4[rbp], 16
	shr	DWORD PTR -20[rbp], 16
.L886:
	cmp	DWORD PTR -20[rbp], 255
	jbe	.L887
	add	DWORD PTR -4[rbp], 8
	shr	DWORD PTR -20[rbp], 8
.L887:
	cmp	DWORD PTR -20[rbp], 15
	jbe	.L888
	add	DWORD PTR -4[rbp], 4
	shr	DWORD PTR -20[rbp], 4
.L888:
	cmp	DWORD PTR -20[rbp], 3
	jbe	.L889
	add	DWORD PTR -4[rbp], 2
	shr	DWORD PTR -20[rbp], 2
.L889:
	cmp	DWORD PTR -20[rbp], 1
	jbe	.L890
	add	DWORD PTR -4[rbp], 1
	shr	DWORD PTR -20[rbp]
.L890:
	mov	eax, DWORD PTR -4[rbp]
.L885:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE104:
	.size	high_bit, .-high_bit
	.type	bitcount, @function
bitcount:
.LFB105:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	mov	eax, DWORD PTR -4[rbp]
	and	eax, 1431655765
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	shr	eax
	and	eax, 1431655765
	add	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	and	eax, 858993459
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	shr	eax, 2
	and	eax, 858993459
	add	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	shr	eax, 4
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	and	eax, 252645135
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	shr	eax, 8
	add	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	shr	eax, 16
	add	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	movzx	eax, al
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE105:
	.size	bitcount, .-bitcount
	.type	shiftsigned, @function
shiftsigned:
.LFB106:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	DWORD PTR -28[rbp], edx
	mov	DWORD PTR -4[rbp], 0
	cmp	DWORD PTR -24[rbp], 0
	jns	.L894
	mov	eax, DWORD PTR -24[rbp]
	neg	eax
	mov	ecx, eax
	sal	DWORD PTR -20[rbp], cl
	jmp	.L895
.L894:
	mov	eax, DWORD PTR -24[rbp]
	mov	ecx, eax
	sar	DWORD PTR -20[rbp], cl
.L895:
	mov	eax, DWORD PTR -20[rbp]
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -28[rbp]
	mov	DWORD PTR -4[rbp], eax
	jmp	.L896
.L897:
	mov	eax, DWORD PTR -4[rbp]
	mov	edx, DWORD PTR -20[rbp]
	mov	ecx, eax
	sar	edx, cl
	mov	eax, edx
	add	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -28[rbp]
	add	DWORD PTR -4[rbp], eax
.L896:
	cmp	DWORD PTR -4[rbp], 7
	jle	.L897
	mov	eax, DWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE106:
	.size	shiftsigned, .-shiftsigned
	.section	.rodata
.LC76:
	.string	"not BMP"
.LC77:
	.string	"unknown BMP"
.LC78:
	.string	"bad BMP"
.LC79:
	.string	"monochrome"
.LC80:
	.string	"BMP RLE"
.LC81:
	.string	"hsz == 108"
.LC82:
	.string	"invalid"
.LC83:
	.string	"bad bpp"
.LC84:
	.string	"bad masks"
	.text
	.type	bmp_load, @function
bmp_load:
.LFB107:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1248
	mov	QWORD PTR -1208[rbp], rdi
	mov	QWORD PTR -1216[rbp], rsi
	mov	QWORD PTR -1224[rbp], rdx
	mov	QWORD PTR -1232[rbp], rcx
	mov	DWORD PTR -1236[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -1192[rbp], 0
	mov	DWORD PTR -1188[rbp], 0
	mov	DWORD PTR -1184[rbp], 0
	mov	DWORD PTR -1180[rbp], 0
	mov	DWORD PTR -1104[rbp], 0
	mov	DWORD PTR -1176[rbp], 0
	mov	DWORD PTR -1100[rbp], 0
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	cmp	eax, 66
	jne	.L900
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	cmp	eax, 77
	je	.L901
.L900:
	lea	rdi, .LC76[rip]
	call	e
	mov	eax, 0
	jmp	.L983
.L901:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get16le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get16le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1096[rbp], eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1092[rbp], eax
	cmp	DWORD PTR -1092[rbp], 12
	je	.L903
	cmp	DWORD PTR -1092[rbp], 40
	je	.L903
	cmp	DWORD PTR -1092[rbp], 56
	je	.L903
	cmp	DWORD PTR -1092[rbp], 108
	je	.L903
	lea	rdi, .LC77[rip]
	call	e
	mov	eax, 0
	jmp	.L983
.L903:
	lea	rax, .LC78[rip]
	mov	QWORD PTR failure_reason[rip], rax
	cmp	DWORD PTR -1092[rbp], 12
	jne	.L904
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get16le
	mov	edx, eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get16le
	mov	edx, eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	DWORD PTR 4[rax], edx
	jmp	.L905
.L904:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rdx, QWORD PTR -1208[rbp]
	mov	DWORD PTR [rdx], eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rdx, QWORD PTR -1208[rbp]
	mov	DWORD PTR 4[rdx], eax
.L905:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get16le
	cmp	eax, 1
	je	.L906
	mov	eax, 0
	jmp	.L983
.L906:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get16le
	mov	DWORD PTR -1088[rbp], eax
	cmp	DWORD PTR -1088[rbp], 1
	jne	.L907
	lea	rdi, .LC79[rip]
	call	e
	mov	eax, 0
	jmp	.L983
.L907:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR 4[rax]
	test	eax, eax
	setg	al
	movzx	eax, al
	mov	DWORD PTR -1084[rbp], eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR 4[rax]
	cdq
	xor	eax, edx
	sub	eax, edx
	mov	edx, eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	DWORD PTR 4[rax], edx
	cmp	DWORD PTR -1092[rbp], 12
	jne	.L908
	cmp	DWORD PTR -1088[rbp], 23
	jg	.L909
	mov	eax, DWORD PTR -1096[rbp]
	sub	eax, 38
	movsx	rdx, eax
	imul	rdx, rdx, 1431655766
	shr	rdx, 32
	sar	eax, 31
	mov	ecx, eax
	mov	eax, edx
	sub	eax, ecx
	mov	DWORD PTR -1176[rbp], eax
	jmp	.L909
.L908:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1100[rbp], eax
	cmp	DWORD PTR -1100[rbp], 1
	je	.L910
	cmp	DWORD PTR -1100[rbp], 2
	jne	.L911
.L910:
	lea	rdi, .LC80[rip]
	call	e
	mov	eax, 0
	jmp	.L983
.L911:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	cmp	DWORD PTR -1092[rbp], 40
	je	.L912
	cmp	DWORD PTR -1092[rbp], 56
	jne	.L913
.L912:
	cmp	DWORD PTR -1092[rbp], 56
	jne	.L914
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
.L914:
	cmp	DWORD PTR -1088[rbp], 16
	je	.L915
	cmp	DWORD PTR -1088[rbp], 32
	jne	.L985
.L915:
	mov	DWORD PTR -1184[rbp], 0
	mov	eax, DWORD PTR -1184[rbp]
	mov	DWORD PTR -1188[rbp], eax
	mov	eax, DWORD PTR -1188[rbp]
	mov	DWORD PTR -1192[rbp], eax
	cmp	DWORD PTR -1100[rbp], 0
	jne	.L917
	cmp	DWORD PTR -1088[rbp], 32
	jne	.L918
	mov	DWORD PTR -1192[rbp], 16711680
	mov	DWORD PTR -1188[rbp], 65280
	mov	DWORD PTR -1184[rbp], 255
	mov	DWORD PTR -1180[rbp], -16777216
	mov	DWORD PTR -1104[rbp], 1
	jmp	.L985
.L918:
	mov	DWORD PTR -1192[rbp], 31744
	mov	DWORD PTR -1188[rbp], 992
	mov	DWORD PTR -1184[rbp], 31
	jmp	.L985
.L917:
	cmp	DWORD PTR -1100[rbp], 3
	jne	.L919
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1192[rbp], eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1188[rbp], eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1184[rbp], eax
	mov	eax, DWORD PTR -1192[rbp]
	cmp	eax, DWORD PTR -1188[rbp]
	jne	.L985
	mov	eax, DWORD PTR -1188[rbp]
	cmp	eax, DWORD PTR -1184[rbp]
	jne	.L985
	mov	eax, 0
	jmp	.L983
.L919:
	mov	eax, 0
	jmp	.L983
.L913:
	cmp	DWORD PTR -1092[rbp], 108
	je	.L921
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 2924
	lea	rsi, .LC4[rip]
	lea	rdi, .LC81[rip]
	call	__assert_fail@PLT
.L921:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1192[rbp], eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1188[rbp], eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1184[rbp], eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1180[rbp], eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	mov	DWORD PTR -1172[rbp], 0
	jmp	.L922
.L923:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
	add	DWORD PTR -1172[rbp], 1
.L922:
	cmp	DWORD PTR -1172[rbp], 11
	jle	.L923
	jmp	.L920
.L985:
	nop
.L920:
	cmp	DWORD PTR -1088[rbp], 15
	jg	.L909
	mov	eax, DWORD PTR -1096[rbp]
	sub	eax, 14
	sub	eax, DWORD PTR -1092[rbp]
	sar	eax, 2
	mov	DWORD PTR -1176[rbp], eax
.L909:
	cmp	DWORD PTR -1180[rbp], 0
	je	.L924
	mov	edx, 4
	jmp	.L925
.L924:
	mov	edx, 3
.L925:
	mov	rax, QWORD PTR -1208[rbp]
	mov	DWORD PTR 8[rax], edx
	cmp	DWORD PTR -1236[rbp], 0
	je	.L926
	cmp	DWORD PTR -1236[rbp], 2
	jle	.L926
	mov	eax, DWORD PTR -1236[rbp]
	mov	DWORD PTR -1160[rbp], eax
	jmp	.L927
.L926:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR 8[rax]
	mov	DWORD PTR -1160[rbp], eax
.L927:
	mov	rax, QWORD PTR -1208[rbp]
	mov	edx, DWORD PTR [rax]
	mov	eax, DWORD PTR -1160[rbp]
	imul	edx, eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR 4[rax]
	imul	eax, edx
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -1064[rbp], rax
	cmp	QWORD PTR -1064[rbp], 0
	jne	.L928
	lea	rdi, .LC6[rip]
	call	e
	mov	eax, 0
	jmp	.L983
.L928:
	cmp	DWORD PTR -1088[rbp], 15
	jg	.L929
	mov	DWORD PTR -1156[rbp], 0
	cmp	DWORD PTR -1176[rbp], 0
	je	.L930
	cmp	DWORD PTR -1176[rbp], 256
	jle	.L931
.L930:
	mov	rax, QWORD PTR -1064[rbp]
	mov	rdi, rax
	call	free@PLT
	lea	rdi, .LC82[rip]
	call	e
	mov	eax, 0
	jmp	.L983
.L931:
	mov	DWORD PTR -1172[rbp], 0
	jmp	.L932
.L934:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	eax, DWORD PTR -1172[rbp]
	cdqe
	mov	BYTE PTR -1038[rbp+rax*4], dl
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	eax, DWORD PTR -1172[rbp]
	cdqe
	mov	BYTE PTR -1039[rbp+rax*4], dl
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	eax, DWORD PTR -1172[rbp]
	cdqe
	mov	BYTE PTR -1040[rbp+rax*4], dl
	cmp	DWORD PTR -1092[rbp], 12
	je	.L933
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
.L933:
	mov	eax, DWORD PTR -1172[rbp]
	cdqe
	mov	BYTE PTR -1037[rbp+rax*4], -1
	add	DWORD PTR -1172[rbp], 1
.L932:
	mov	eax, DWORD PTR -1172[rbp]
	cmp	eax, DWORD PTR -1176[rbp]
	jl	.L934
	mov	eax, DWORD PTR -1096[rbp]
	sub	eax, 14
	sub	eax, DWORD PTR -1092[rbp]
	cmp	DWORD PTR -1092[rbp], 12
	jne	.L935
	mov	edx, 3
	jmp	.L936
.L935:
	mov	edx, 4
.L936:
	mov	ecx, edx
	imul	ecx, DWORD PTR -1176[rbp]
	sub	eax, ecx
	mov	edx, eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	cmp	DWORD PTR -1088[rbp], 4
	jne	.L937
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	add	eax, 1
	shr	eax
	mov	DWORD PTR -1164[rbp], eax
	jmp	.L938
.L937:
	cmp	DWORD PTR -1088[rbp], 8
	jne	.L939
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -1164[rbp], eax
	jmp	.L938
.L939:
	mov	rax, QWORD PTR -1064[rbp]
	mov	rdi, rax
	call	free@PLT
	lea	rdi, .LC83[rip]
	call	e
	mov	eax, 0
	jmp	.L983
.L938:
	mov	eax, DWORD PTR -1164[rbp]
	neg	eax
	and	eax, 3
	mov	DWORD PTR -1080[rbp], eax
	mov	DWORD PTR -1168[rbp], 0
	jmp	.L940
.L950:
	mov	DWORD PTR -1172[rbp], 0
	jmp	.L941
.L949:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -1152[rbp], eax
	mov	DWORD PTR -1148[rbp], 0
	cmp	DWORD PTR -1088[rbp], 4
	jne	.L942
	mov	eax, DWORD PTR -1152[rbp]
	and	eax, 15
	mov	DWORD PTR -1148[rbp], eax
	sar	DWORD PTR -1152[rbp], 4
.L942:
	mov	eax, DWORD PTR -1156[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1156[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rdx, rax
	mov	eax, DWORD PTR -1152[rbp]
	cdqe
	movzx	eax, BYTE PTR -1040[rbp+rax*4]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -1156[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1156[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rdx, rax
	mov	eax, DWORD PTR -1152[rbp]
	cdqe
	movzx	eax, BYTE PTR -1039[rbp+rax*4]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -1156[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1156[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rdx, rax
	mov	eax, DWORD PTR -1152[rbp]
	cdqe
	movzx	eax, BYTE PTR -1038[rbp+rax*4]
	mov	BYTE PTR [rdx], al
	cmp	DWORD PTR -1160[rbp], 4
	jne	.L943
	mov	eax, DWORD PTR -1156[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1156[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
.L943:
	mov	eax, DWORD PTR -1172[rbp]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	je	.L986
	cmp	DWORD PTR -1088[rbp], 8
	jne	.L946
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	jmp	.L947
.L946:
	mov	eax, DWORD PTR -1148[rbp]
.L947:
	mov	DWORD PTR -1152[rbp], eax
	mov	eax, DWORD PTR -1156[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1156[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rdx, rax
	mov	eax, DWORD PTR -1152[rbp]
	cdqe
	movzx	eax, BYTE PTR -1040[rbp+rax*4]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -1156[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1156[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rdx, rax
	mov	eax, DWORD PTR -1152[rbp]
	cdqe
	movzx	eax, BYTE PTR -1039[rbp+rax*4]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -1156[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1156[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rdx, rax
	mov	eax, DWORD PTR -1152[rbp]
	cdqe
	movzx	eax, BYTE PTR -1038[rbp+rax*4]
	mov	BYTE PTR [rdx], al
	cmp	DWORD PTR -1160[rbp], 4
	jne	.L948
	mov	eax, DWORD PTR -1156[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1156[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], -1
.L948:
	add	DWORD PTR -1172[rbp], 2
.L941:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -1172[rbp], eax
	jl	.L949
	jmp	.L945
.L986:
	nop
.L945:
	mov	edx, DWORD PTR -1080[rbp]
	mov	rax, QWORD PTR -1208[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	add	DWORD PTR -1168[rbp], 1
.L940:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	DWORD PTR -1168[rbp], eax
	jl	.L950
	jmp	.L951
.L929:
	mov	DWORD PTR -1144[rbp], 0
	mov	DWORD PTR -1140[rbp], 0
	mov	DWORD PTR -1136[rbp], 0
	mov	DWORD PTR -1132[rbp], 0
	mov	DWORD PTR -1128[rbp], 0
	mov	DWORD PTR -1124[rbp], 0
	mov	DWORD PTR -1120[rbp], 0
	mov	DWORD PTR -1116[rbp], 0
	mov	DWORD PTR -1112[rbp], 0
	mov	DWORD PTR -1108[rbp], 0
	mov	eax, DWORD PTR -1096[rbp]
	sub	eax, 14
	sub	eax, DWORD PTR -1092[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -1208[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	cmp	DWORD PTR -1088[rbp], 24
	jne	.L952
	mov	rax, QWORD PTR -1208[rbp]
	mov	edx, DWORD PTR [rax]
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	DWORD PTR -1164[rbp], eax
	jmp	.L953
.L952:
	cmp	DWORD PTR -1088[rbp], 16
	jne	.L954
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	add	eax, eax
	mov	DWORD PTR -1164[rbp], eax
	jmp	.L953
.L954:
	mov	DWORD PTR -1164[rbp], 0
.L953:
	mov	eax, DWORD PTR -1164[rbp]
	neg	eax
	and	eax, 3
	mov	DWORD PTR -1080[rbp], eax
	cmp	DWORD PTR -1088[rbp], 24
	jne	.L955
	mov	DWORD PTR -1108[rbp], 1
	jmp	.L956
.L955:
	cmp	DWORD PTR -1088[rbp], 32
	jne	.L956
	cmp	DWORD PTR -1184[rbp], 255
	jne	.L956
	cmp	DWORD PTR -1188[rbp], 65280
	jne	.L956
	cmp	DWORD PTR -1192[rbp], -16777216
	jne	.L956
	cmp	DWORD PTR -1180[rbp], -16777216
	jne	.L956
	mov	DWORD PTR -1108[rbp], 2
.L956:
	cmp	DWORD PTR -1108[rbp], 0
	jne	.L957
	cmp	DWORD PTR -1192[rbp], 0
	je	.L958
	cmp	DWORD PTR -1188[rbp], 0
	je	.L958
	cmp	DWORD PTR -1184[rbp], 0
	jne	.L959
.L958:
	lea	rdi, .LC84[rip]
	call	e
	mov	eax, 0
	jmp	.L983
.L959:
	mov	eax, DWORD PTR -1192[rbp]
	mov	edi, eax
	call	high_bit
	sub	eax, 7
	mov	DWORD PTR -1144[rbp], eax
	mov	eax, DWORD PTR -1192[rbp]
	mov	edi, eax
	call	bitcount
	mov	DWORD PTR -1128[rbp], eax
	mov	eax, DWORD PTR -1188[rbp]
	mov	edi, eax
	call	high_bit
	sub	eax, 7
	mov	DWORD PTR -1140[rbp], eax
	mov	eax, DWORD PTR -1192[rbp]
	mov	edi, eax
	call	bitcount
	mov	DWORD PTR -1124[rbp], eax
	mov	eax, DWORD PTR -1184[rbp]
	mov	edi, eax
	call	high_bit
	sub	eax, 7
	mov	DWORD PTR -1136[rbp], eax
	mov	eax, DWORD PTR -1192[rbp]
	mov	edi, eax
	call	bitcount
	mov	DWORD PTR -1120[rbp], eax
	mov	eax, DWORD PTR -1180[rbp]
	mov	edi, eax
	call	high_bit
	sub	eax, 7
	mov	DWORD PTR -1132[rbp], eax
	mov	eax, DWORD PTR -1192[rbp]
	mov	edi, eax
	call	bitcount
	mov	DWORD PTR -1116[rbp], eax
.L957:
	mov	DWORD PTR -1168[rbp], 0
	jmp	.L960
.L975:
	cmp	DWORD PTR -1108[rbp], 0
	je	.L961
	mov	DWORD PTR -1172[rbp], 0
	jmp	.L962
.L966:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	eax, DWORD PTR -1112[rbp]
	cdqe
	lea	rcx, 2[rax]
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	eax, DWORD PTR -1112[rbp]
	cdqe
	lea	rcx, 1[rax]
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	eax, DWORD PTR -1112[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -1112[rbp], 3
	cmp	DWORD PTR -1108[rbp], 2
	jne	.L963
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get8
	jmp	.L964
.L963:
	mov	eax, 255
.L964:
	mov	DWORD PTR -1068[rbp], eax
	cmp	DWORD PTR -1160[rbp], 4
	jne	.L965
	mov	eax, DWORD PTR -1112[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1112[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -1068[rbp]
	mov	BYTE PTR [rax], dl
.L965:
	add	DWORD PTR -1172[rbp], 1
.L962:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -1172[rbp], eax
	jl	.L966
	jmp	.L967
.L961:
	mov	DWORD PTR -1172[rbp], 0
	jmp	.L968
.L974:
	cmp	DWORD PTR -1088[rbp], 16
	jne	.L969
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get16le
	jmp	.L970
.L969:
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	get32le
.L970:
	mov	DWORD PTR -1076[rbp], eax
	mov	eax, DWORD PTR -1076[rbp]
	and	eax, DWORD PTR -1192[rbp]
	mov	ecx, eax
	mov	edx, DWORD PTR -1128[rbp]
	mov	eax, DWORD PTR -1144[rbp]
	mov	esi, eax
	mov	edi, ecx
	call	shiftsigned
	mov	ecx, eax
	mov	eax, DWORD PTR -1112[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1112[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -1076[rbp]
	and	eax, DWORD PTR -1188[rbp]
	mov	ecx, eax
	mov	edx, DWORD PTR -1124[rbp]
	mov	eax, DWORD PTR -1140[rbp]
	mov	esi, eax
	mov	edi, ecx
	call	shiftsigned
	mov	ecx, eax
	mov	eax, DWORD PTR -1112[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1112[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -1076[rbp]
	and	eax, DWORD PTR -1184[rbp]
	mov	ecx, eax
	mov	edx, DWORD PTR -1120[rbp]
	mov	eax, DWORD PTR -1136[rbp]
	mov	esi, eax
	mov	edi, ecx
	call	shiftsigned
	mov	ecx, eax
	mov	eax, DWORD PTR -1112[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1112[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	cmp	DWORD PTR -1180[rbp], 0
	je	.L971
	mov	eax, DWORD PTR -1076[rbp]
	and	eax, DWORD PTR -1180[rbp]
	mov	ecx, eax
	mov	edx, DWORD PTR -1116[rbp]
	mov	eax, DWORD PTR -1132[rbp]
	mov	esi, eax
	mov	edi, ecx
	call	shiftsigned
	jmp	.L972
.L971:
	mov	eax, 255
.L972:
	mov	DWORD PTR -1072[rbp], eax
	cmp	DWORD PTR -1160[rbp], 4
	jne	.L973
	mov	eax, DWORD PTR -1112[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1112[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -1072[rbp]
	mov	BYTE PTR [rax], dl
.L973:
	add	DWORD PTR -1172[rbp], 1
.L968:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -1172[rbp], eax
	jl	.L974
.L967:
	mov	edx, DWORD PTR -1080[rbp]
	mov	rax, QWORD PTR -1208[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	add	DWORD PTR -1168[rbp], 1
.L960:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	DWORD PTR -1168[rbp], eax
	jl	.L975
.L951:
	cmp	DWORD PTR -1084[rbp], 0
	je	.L976
	mov	DWORD PTR -1168[rbp], 0
	jmp	.L977
.L980:
	mov	rax, QWORD PTR -1208[rbp]
	mov	edx, DWORD PTR [rax]
	mov	eax, DWORD PTR -1168[rbp]
	imul	edx, eax
	mov	eax, DWORD PTR -1160[rbp]
	imul	eax, edx
	mov	edx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	QWORD PTR -1056[rbp], rax
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edx, DWORD PTR -1168[rbp]
	sub	eax, edx
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	imul	edx, eax
	mov	eax, DWORD PTR -1160[rbp]
	imul	eax, edx
	mov	edx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	QWORD PTR -1048[rbp], rax
	mov	DWORD PTR -1172[rbp], 0
	jmp	.L978
.L979:
	mov	eax, DWORD PTR -1172[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -1056[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -1193[rbp], al
	mov	eax, DWORD PTR -1172[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -1048[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -1172[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -1056[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -1172[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -1048[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -1193[rbp]
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -1172[rbp], 1
.L978:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	imul	eax, DWORD PTR -1160[rbp]
	cmp	DWORD PTR -1172[rbp], eax
	jl	.L979
	add	DWORD PTR -1168[rbp], 1
.L977:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR 4[rax]
	sar	eax
	cmp	DWORD PTR -1168[rbp], eax
	jl	.L980
.L976:
	cmp	DWORD PTR -1236[rbp], 0
	je	.L981
	mov	eax, DWORD PTR -1236[rbp]
	cmp	eax, DWORD PTR -1160[rbp]
	je	.L981
	mov	rax, QWORD PTR -1208[rbp]
	mov	edi, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -1208[rbp]
	mov	ecx, DWORD PTR [rax]
	mov	edx, DWORD PTR -1236[rbp]
	mov	esi, DWORD PTR -1160[rbp]
	mov	rax, QWORD PTR -1064[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	convert_format
	mov	QWORD PTR -1064[rbp], rax
	cmp	QWORD PTR -1064[rbp], 0
	jne	.L981
	mov	rax, QWORD PTR -1064[rbp]
	jmp	.L983
.L981:
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edx, eax
	mov	rax, QWORD PTR -1216[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edx, eax
	mov	rax, QWORD PTR -1224[rbp]
	mov	DWORD PTR [rax], edx
	cmp	QWORD PTR -1232[rbp], 0
	je	.L982
	mov	rax, QWORD PTR -1232[rbp]
	mov	edx, DWORD PTR -1160[rbp]
	mov	DWORD PTR [rax], edx
.L982:
	mov	rax, QWORD PTR -1064[rbp]
.L983:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L984
	call	__stack_chk_fail@PLT
.L984:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE107:
	.size	bmp_load, .-bmp_load
	.globl	stbi_bmp_load
	.type	stbi_bmp_load, @function
stbi_bmp_load:
.LFB108:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L988
	mov	eax, 0
	jmp	.L989
.L988:
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_bmp_load_from_file
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	rax, QWORD PTR -8[rbp]
.L989:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE108:
	.size	stbi_bmp_load, .-stbi_bmp_load
	.globl	stbi_bmp_load_from_file
	.type	stbi_bmp_load_from_file, @function
stbi_bmp_load_from_file:
.LFB109:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	DWORD PTR -84[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	mov	edi, DWORD PTR -84[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rdx, QWORD PTR -72[rbp]
	mov	rsi, QWORD PTR -64[rbp]
	lea	rax, -48[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	bmp_load
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L992
	call	__stack_chk_fail@PLT
.L992:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE109:
	.size	stbi_bmp_load_from_file, .-stbi_bmp_load_from_file
	.globl	stbi_bmp_load_from_memory
	.type	stbi_bmp_load_from_memory, @function
stbi_bmp_load_from_memory:
.LFB110:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	QWORD PTR -88[rbp], r8
	mov	DWORD PTR -64[rbp], r9d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -60[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	mov	edi, DWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR -80[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	lea	rax, -48[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	bmp_load
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L995
	call	__stack_chk_fail@PLT
.L995:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE110:
	.size	stbi_bmp_load_from_memory, .-stbi_bmp_load_from_memory
	.type	tga_test, @function
tga_test:
.LFB111:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8u
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 1
	jle	.L997
	mov	eax, 0
	jmp	.L998
.L997:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 1
	je	.L999
	cmp	DWORD PTR -4[rbp], 2
	je	.L999
	cmp	DWORD PTR -4[rbp], 3
	je	.L999
	cmp	DWORD PTR -4[rbp], 9
	je	.L999
	cmp	DWORD PTR -4[rbp], 10
	je	.L999
	cmp	DWORD PTR -4[rbp], 11
	je	.L999
	mov	eax, 0
	jmp	.L998
.L999:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16
	test	eax, eax
	jg	.L1000
	mov	eax, 0
	jmp	.L998
.L1000:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get16
	test	eax, eax
	jg	.L1001
	mov	eax, 0
	jmp	.L998
.L1001:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 8
	je	.L1002
	cmp	DWORD PTR -4[rbp], 16
	je	.L1002
	cmp	DWORD PTR -4[rbp], 24
	je	.L1002
	cmp	DWORD PTR -4[rbp], 32
	je	.L1002
	mov	eax, 0
	jmp	.L998
.L1002:
	mov	eax, 1
.L998:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE111:
	.size	tga_test, .-tga_test
	.globl	stbi_tga_test_file
	.type	stbi_tga_test_file, @function
stbi_tga_test_file:
.LFB112:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	ftell@PLT
	mov	DWORD PTR -56[rbp], eax
	mov	rdx, QWORD PTR -72[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	tga_test
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	mov	eax, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1005
	call	__stack_chk_fail@PLT
.L1005:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE112:
	.size	stbi_tga_test_file, .-stbi_tga_test_file
	.globl	stbi_tga_test_memory
	.type	stbi_tga_test_memory, @function
stbi_tga_test_memory:
.LFB113:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -60[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	tga_test
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1008
	call	__stack_chk_fail@PLT
.L1008:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE113:
	.size	stbi_tga_test_memory, .-stbi_tga_test_memory
	.type	tga_load, @function
tga_load:
.LFB114:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 184
	.cfi_offset 3, -24
	mov	QWORD PTR -152[rbp], rdi
	mov	QWORD PTR -160[rbp], rsi
	mov	QWORD PTR -168[rbp], rdx
	mov	QWORD PTR -176[rbp], rcx
	mov	DWORD PTR -180[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -92[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -88[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -136[rbp], eax
	mov	DWORD PTR -132[rbp], 0
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16le
	mov	DWORD PTR -84[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16le
	mov	DWORD PTR -80[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -76[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16le
	mov	DWORD PTR -72[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16le
	mov	DWORD PTR -68[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16le
	mov	DWORD PTR -64[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get16le
	mov	DWORD PTR -60[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -128[rbp], eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -56[rbp], eax
	mov	QWORD PTR -48[rbp], 0
	mov	DWORD PTR -116[rbp], 0
	mov	DWORD PTR -112[rbp], 0
	mov	DWORD PTR -108[rbp], 1
	cmp	DWORD PTR -136[rbp], 7
	jle	.L1010
	sub	DWORD PTR -136[rbp], 8
	mov	DWORD PTR -132[rbp], 1
.L1010:
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 32
	test	eax, eax
	sete	al
	movzx	eax, al
	mov	DWORD PTR -56[rbp], eax
	cmp	DWORD PTR -64[rbp], 0
	jle	.L1011
	cmp	DWORD PTR -60[rbp], 0
	jle	.L1011
	cmp	DWORD PTR -136[rbp], 0
	jle	.L1011
	cmp	DWORD PTR -136[rbp], 3
	jg	.L1011
	cmp	DWORD PTR -128[rbp], 8
	je	.L1012
	cmp	DWORD PTR -128[rbp], 16
	je	.L1012
	cmp	DWORD PTR -128[rbp], 24
	je	.L1012
	cmp	DWORD PTR -128[rbp], 32
	je	.L1012
.L1011:
	mov	eax, 0
	jmp	.L1048
.L1012:
	cmp	DWORD PTR -88[rbp], 0
	je	.L1014
	mov	eax, DWORD PTR -76[rbp]
	mov	DWORD PTR -128[rbp], eax
.L1014:
	mov	rax, QWORD PTR -160[rbp]
	mov	edx, DWORD PTR -64[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, DWORD PTR -60[rbp]
	mov	DWORD PTR [rax], edx
	cmp	DWORD PTR -180[rbp], 0
	jle	.L1015
	cmp	DWORD PTR -180[rbp], 4
	jle	.L1016
.L1015:
	mov	eax, DWORD PTR -128[rbp]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	mov	DWORD PTR -180[rbp], eax
	mov	rax, QWORD PTR -176[rbp]
	mov	edx, DWORD PTR -180[rbp]
	mov	DWORD PTR [rax], edx
	jmp	.L1017
.L1016:
	mov	eax, DWORD PTR -128[rbp]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	mov	edx, eax
	mov	rax, QWORD PTR -176[rbp]
	mov	DWORD PTR [rax], edx
.L1017:
	mov	eax, DWORD PTR -64[rbp]
	imul	eax, DWORD PTR -60[rbp]
	imul	eax, DWORD PTR -180[rbp]
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	edx, DWORD PTR -92[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	cmp	DWORD PTR -88[rbp], 0
	je	.L1018
	mov	edx, DWORD PTR -84[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	mov	eax, DWORD PTR -80[rbp]
	imul	eax, DWORD PTR -76[rbp]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	eax, DWORD PTR -80[rbp]
	imul	eax, DWORD PTR -76[rbp]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	mov	edx, eax
	mov	rcx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	getn
.L1018:
	mov	DWORD PTR -124[rbp], 0
	jmp	.L1019
.L1041:
	cmp	DWORD PTR -132[rbp], 0
	je	.L1020
	cmp	DWORD PTR -116[rbp], 0
	jne	.L1021
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 127
	add	eax, 1
	mov	DWORD PTR -116[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	sar	eax, 7
	mov	DWORD PTR -112[rbp], eax
	mov	DWORD PTR -108[rbp], 1
	jmp	.L1022
.L1021:
	cmp	DWORD PTR -112[rbp], 0
	jne	.L1022
	mov	DWORD PTR -108[rbp], 1
	jmp	.L1022
.L1020:
	mov	DWORD PTR -108[rbp], 1
.L1022:
	cmp	DWORD PTR -108[rbp], 0
	je	.L1023
	cmp	DWORD PTR -88[rbp], 0
	je	.L1024
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8u
	movzx	eax, al
	mov	DWORD PTR -104[rbp], eax
	mov	eax, DWORD PTR -104[rbp]
	cmp	eax, DWORD PTR -80[rbp]
	jl	.L1025
	mov	DWORD PTR -104[rbp], 0
.L1025:
	mov	eax, DWORD PTR -128[rbp]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	mov	edx, eax
	mov	eax, DWORD PTR -104[rbp]
	imul	eax, edx
	mov	DWORD PTR -104[rbp], eax
	mov	DWORD PTR -120[rbp], 0
	jmp	.L1026
.L1027:
	mov	edx, DWORD PTR -104[rbp]
	mov	eax, DWORD PTR -120[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -120[rbp]
	cdqe
	mov	BYTE PTR -32[rbp+rax], dl
	add	DWORD PTR -120[rbp], 1
.L1026:
	mov	eax, DWORD PTR -120[rbp]
	sal	eax, 3
	cmp	DWORD PTR -128[rbp], eax
	jg	.L1027
	jmp	.L1028
.L1024:
	mov	DWORD PTR -120[rbp], 0
	jmp	.L1029
.L1030:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	get8u
	mov	edx, DWORD PTR -120[rbp]
	movsx	rdx, edx
	mov	BYTE PTR -32[rbp+rdx], al
	add	DWORD PTR -120[rbp], 1
.L1029:
	mov	eax, DWORD PTR -120[rbp]
	sal	eax, 3
	cmp	DWORD PTR -128[rbp], eax
	jg	.L1030
.L1028:
	cmp	DWORD PTR -128[rbp], 32
	je	.L1031
	cmp	DWORD PTR -128[rbp], 32
	jg	.L1032
	cmp	DWORD PTR -128[rbp], 24
	je	.L1033
	cmp	DWORD PTR -128[rbp], 24
	jg	.L1032
	cmp	DWORD PTR -128[rbp], 8
	je	.L1034
	cmp	DWORD PTR -128[rbp], 16
	je	.L1035
	jmp	.L1032
.L1034:
	movzx	eax, BYTE PTR -32[rbp]
	mov	BYTE PTR -28[rbp], al
	movzx	eax, BYTE PTR -32[rbp]
	mov	BYTE PTR -27[rbp], al
	movzx	eax, BYTE PTR -32[rbp]
	mov	BYTE PTR -26[rbp], al
	mov	BYTE PTR -25[rbp], -1
	jmp	.L1032
.L1035:
	movzx	eax, BYTE PTR -32[rbp]
	mov	BYTE PTR -28[rbp], al
	movzx	eax, BYTE PTR -32[rbp]
	mov	BYTE PTR -27[rbp], al
	movzx	eax, BYTE PTR -32[rbp]
	mov	BYTE PTR -26[rbp], al
	movzx	eax, BYTE PTR -31[rbp]
	mov	BYTE PTR -25[rbp], al
	jmp	.L1032
.L1033:
	movzx	eax, BYTE PTR -30[rbp]
	mov	BYTE PTR -28[rbp], al
	movzx	eax, BYTE PTR -31[rbp]
	mov	BYTE PTR -27[rbp], al
	movzx	eax, BYTE PTR -32[rbp]
	mov	BYTE PTR -26[rbp], al
	mov	BYTE PTR -25[rbp], -1
	jmp	.L1032
.L1031:
	movzx	eax, BYTE PTR -30[rbp]
	mov	BYTE PTR -28[rbp], al
	movzx	eax, BYTE PTR -31[rbp]
	mov	BYTE PTR -27[rbp], al
	movzx	eax, BYTE PTR -32[rbp]
	mov	BYTE PTR -26[rbp], al
	movzx	eax, BYTE PTR -29[rbp]
	mov	BYTE PTR -25[rbp], al
	nop
.L1032:
	mov	DWORD PTR -108[rbp], 0
.L1023:
	cmp	DWORD PTR -180[rbp], 4
	je	.L1036
	cmp	DWORD PTR -180[rbp], 4
	jg	.L1037
	cmp	DWORD PTR -180[rbp], 3
	je	.L1038
	cmp	DWORD PTR -180[rbp], 3
	jg	.L1037
	cmp	DWORD PTR -180[rbp], 1
	je	.L1039
	cmp	DWORD PTR -180[rbp], 2
	je	.L1040
	jmp	.L1037
.L1039:
	movzx	eax, BYTE PTR -26[rbp]
	movzx	edx, al
	movzx	eax, BYTE PTR -27[rbp]
	movzx	ecx, al
	movzx	eax, BYTE PTR -28[rbp]
	movzx	eax, al
	mov	esi, DWORD PTR -124[rbp]
	imul	esi, DWORD PTR -180[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -40[rbp]
	lea	rbx, [rdi+rsi]
	mov	esi, ecx
	mov	edi, eax
	call	compute_y
	mov	BYTE PTR [rbx], al
	jmp	.L1037
.L1040:
	movzx	eax, BYTE PTR -26[rbp]
	movzx	edx, al
	movzx	eax, BYTE PTR -27[rbp]
	movzx	ecx, al
	movzx	eax, BYTE PTR -28[rbp]
	movzx	eax, al
	mov	esi, DWORD PTR -124[rbp]
	imul	esi, DWORD PTR -180[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -40[rbp]
	lea	rbx, [rdi+rsi]
	mov	esi, ecx
	mov	edi, eax
	call	compute_y
	mov	BYTE PTR [rbx], al
	mov	eax, DWORD PTR -124[rbp]
	imul	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	jmp	.L1037
.L1038:
	mov	eax, DWORD PTR -124[rbp]
	imul	eax, DWORD PTR -180[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -28[rbp]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -124[rbp]
	imul	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -27[rbp]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -124[rbp]
	imul	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -26[rbp]
	mov	BYTE PTR [rdx], al
	jmp	.L1037
.L1036:
	mov	eax, DWORD PTR -124[rbp]
	imul	eax, DWORD PTR -180[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -28[rbp]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -124[rbp]
	imul	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -27[rbp]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -124[rbp]
	imul	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -26[rbp]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -124[rbp]
	imul	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 3[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	nop
.L1037:
	sub	DWORD PTR -116[rbp], 1
	add	DWORD PTR -124[rbp], 1
.L1019:
	mov	eax, DWORD PTR -64[rbp]
	imul	eax, DWORD PTR -60[rbp]
	cmp	DWORD PTR -124[rbp], eax
	jl	.L1041
	cmp	DWORD PTR -56[rbp], 0
	je	.L1042
	mov	DWORD PTR -120[rbp], 0
	jmp	.L1043
.L1046:
	mov	eax, DWORD PTR -120[rbp]
	imul	eax, DWORD PTR -64[rbp]
	mov	edx, DWORD PTR -180[rbp]
	imul	eax, edx
	mov	DWORD PTR -100[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	sub	eax, 1
	sub	eax, DWORD PTR -120[rbp]
	imul	eax, DWORD PTR -64[rbp]
	mov	edx, DWORD PTR -180[rbp]
	imul	eax, edx
	mov	DWORD PTR -96[rbp], eax
	mov	eax, DWORD PTR -64[rbp]
	imul	eax, DWORD PTR -180[rbp]
	mov	DWORD PTR -124[rbp], eax
	jmp	.L1044
.L1045:
	mov	eax, DWORD PTR -100[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -137[rbp], al
	mov	eax, DWORD PTR -96[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -100[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	eax, DWORD PTR -96[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -137[rbp]
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -100[rbp], 1
	add	DWORD PTR -96[rbp], 1
	sub	DWORD PTR -124[rbp], 1
.L1044:
	cmp	DWORD PTR -124[rbp], 0
	jg	.L1045
	add	DWORD PTR -120[rbp], 1
.L1043:
	mov	eax, DWORD PTR -120[rbp]
	add	eax, eax
	cmp	DWORD PTR -60[rbp], eax
	jg	.L1046
.L1042:
	cmp	QWORD PTR -48[rbp], 0
	je	.L1047
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	free@PLT
.L1047:
	mov	DWORD PTR -68[rbp], 0
	mov	eax, DWORD PTR -68[rbp]
	mov	DWORD PTR -72[rbp], eax
	mov	eax, DWORD PTR -72[rbp]
	mov	DWORD PTR -76[rbp], eax
	mov	eax, DWORD PTR -76[rbp]
	mov	DWORD PTR -80[rbp], eax
	mov	eax, DWORD PTR -80[rbp]
	mov	DWORD PTR -84[rbp], eax
	mov	rax, QWORD PTR -40[rbp]
.L1048:
	mov	rbx, QWORD PTR -24[rbp]
	sub	rbx, QWORD PTR fs:40
	je	.L1049
	call	__stack_chk_fail@PLT
.L1049:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE114:
	.size	tga_load, .-tga_load
	.globl	stbi_tga_load
	.type	stbi_tga_load, @function
stbi_tga_load:
.LFB115:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L1051
	mov	eax, 0
	jmp	.L1052
.L1051:
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_tga_load_from_file
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	rax, QWORD PTR -8[rbp]
.L1052:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE115:
	.size	stbi_tga_load, .-stbi_tga_load
	.globl	stbi_tga_load_from_file
	.type	stbi_tga_load_from_file, @function
stbi_tga_load_from_file:
.LFB116:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	DWORD PTR -84[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	mov	edi, DWORD PTR -84[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rdx, QWORD PTR -72[rbp]
	mov	rsi, QWORD PTR -64[rbp]
	lea	rax, -48[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	tga_load
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1055
	call	__stack_chk_fail@PLT
.L1055:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE116:
	.size	stbi_tga_load_from_file, .-stbi_tga_load_from_file
	.globl	stbi_tga_load_from_memory
	.type	stbi_tga_load_from_memory, @function
stbi_tga_load_from_memory:
.LFB117:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	QWORD PTR -88[rbp], r8
	mov	DWORD PTR -64[rbp], r9d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -60[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	mov	edi, DWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR -80[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	lea	rax, -48[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	tga_load
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L1058
	call	__stack_chk_fail@PLT
.L1058:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE117:
	.size	stbi_tga_load_from_memory, .-stbi_tga_load_from_memory
	.type	psd_test, @function
psd_test:
.LFB118:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get32
	cmp	eax, 943870035
	je	.L1060
	mov	eax, 0
	jmp	.L1061
.L1060:
	mov	eax, 1
.L1061:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE118:
	.size	psd_test, .-psd_test
	.globl	stbi_psd_test_file
	.type	stbi_psd_test_file, @function
stbi_psd_test_file:
.LFB119:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	ftell@PLT
	mov	DWORD PTR -56[rbp], eax
	mov	rdx, QWORD PTR -72[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	psd_test
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	mov	eax, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1064
	call	__stack_chk_fail@PLT
.L1064:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE119:
	.size	stbi_psd_test_file, .-stbi_psd_test_file
	.globl	stbi_psd_test_memory
	.type	stbi_psd_test_memory, @function
stbi_psd_test_memory:
.LFB120:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -60[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	psd_test
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1067
	call	__stack_chk_fail@PLT
.L1067:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE120:
	.size	stbi_psd_test_memory, .-stbi_psd_test_memory
	.section	.rodata
.LC85:
	.string	"not PSD"
.LC86:
	.string	"wrong version"
.LC87:
	.string	"wrong channel count"
.LC88:
	.string	"unsupported bit depth"
.LC89:
	.string	"wrong color format"
	.text
	.type	psd_load, @function
psd_load:
.LFB121:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	QWORD PTR -88[rbp], rdx
	mov	QWORD PTR -96[rbp], rcx
	mov	DWORD PTR -100[rbp], r8d
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get32
	cmp	eax, 943870035
	je	.L1069
	lea	rdi, .LC85[rip]
	call	e
	mov	eax, 0
	jmp	.L1070
.L1069:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get16
	cmp	eax, 1
	je	.L1071
	lea	rdi, .LC86[rip]
	call	e
	mov	eax, 0
	jmp	.L1070
.L1071:
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, 6
	mov	rdi, rax
	call	skip
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get16
	mov	DWORD PTR -48[rbp], eax
	cmp	DWORD PTR -48[rbp], 0
	js	.L1072
	cmp	DWORD PTR -48[rbp], 16
	jle	.L1073
.L1072:
	lea	rdi, .LC87[rip]
	call	e
	mov	eax, 0
	jmp	.L1070
.L1073:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get32
	mov	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get32
	mov	DWORD PTR -40[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get16
	cmp	eax, 8
	je	.L1074
	lea	rdi, .LC88[rip]
	call	e
	mov	eax, 0
	jmp	.L1070
.L1074:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get16
	cmp	eax, 3
	je	.L1075
	lea	rdi, .LC89[rip]
	call	e
	mov	eax, 0
	jmp	.L1070
.L1075:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get32
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get32
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get32
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get16
	mov	DWORD PTR -36[rbp], eax
	cmp	DWORD PTR -36[rbp], 1
	jle	.L1076
	lea	rdi, .LC52[rip]
	call	e
	mov	eax, 0
	jmp	.L1070
.L1076:
	mov	eax, DWORD PTR -40[rbp]
	imul	eax, DWORD PTR -44[rbp]
	sal	eax, 2
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L1077
	lea	rdi, .LC6[rip]
	call	e
	mov	eax, 0
	jmp	.L1070
.L1077:
	mov	eax, DWORD PTR -40[rbp]
	imul	eax, DWORD PTR -44[rbp]
	mov	DWORD PTR -32[rbp], eax
	cmp	DWORD PTR -36[rbp], 0
	je	.L1078
	mov	eax, DWORD PTR -44[rbp]
	imul	eax, DWORD PTR -48[rbp]
	lea	edx, [rax+rax]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	skip
	mov	DWORD PTR -64[rbp], 0
	jmp	.L1079
.L1093:
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	eax, DWORD PTR -64[rbp]
	cmp	eax, DWORD PTR -48[rbp]
	jl	.L1080
	mov	DWORD PTR -60[rbp], 0
	jmp	.L1081
.L1084:
	cmp	DWORD PTR -64[rbp], 3
	jne	.L1082
	mov	edx, -1
	jmp	.L1083
.L1082:
	mov	edx, 0
.L1083:
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -16[rbp], 4
	add	DWORD PTR -60[rbp], 1
.L1081:
	mov	eax, DWORD PTR -60[rbp]
	cmp	eax, DWORD PTR -32[rbp]
	jl	.L1084
	jmp	.L1085
.L1080:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L1086
.L1092:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -52[rbp], eax
	cmp	DWORD PTR -52[rbp], 128
	je	.L1086
	cmp	DWORD PTR -52[rbp], 127
	jg	.L1087
	add	DWORD PTR -52[rbp], 1
	mov	eax, DWORD PTR -52[rbp]
	add	DWORD PTR -56[rbp], eax
	jmp	.L1088
.L1089:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -16[rbp], 4
	sub	DWORD PTR -52[rbp], 1
.L1088:
	cmp	DWORD PTR -52[rbp], 0
	jne	.L1089
	jmp	.L1086
.L1087:
	cmp	DWORD PTR -52[rbp], 128
	jle	.L1086
	xor	DWORD PTR -52[rbp], 255
	add	DWORD PTR -52[rbp], 2
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -28[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	add	DWORD PTR -56[rbp], eax
	jmp	.L1090
.L1091:
	mov	eax, DWORD PTR -28[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -16[rbp], 4
	sub	DWORD PTR -52[rbp], 1
.L1090:
	cmp	DWORD PTR -52[rbp], 0
	jne	.L1091
.L1086:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -32[rbp]
	jl	.L1092
.L1085:
	add	DWORD PTR -64[rbp], 1
.L1079:
	cmp	DWORD PTR -64[rbp], 3
	jle	.L1093
	jmp	.L1094
.L1078:
	mov	DWORD PTR -64[rbp], 0
	jmp	.L1095
.L1104:
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	eax, DWORD PTR -64[rbp]
	cmp	eax, DWORD PTR -48[rbp]
	jle	.L1096
	mov	DWORD PTR -60[rbp], 0
	jmp	.L1097
.L1100:
	cmp	DWORD PTR -64[rbp], 3
	jne	.L1098
	mov	edx, -1
	jmp	.L1099
.L1098:
	mov	edx, 0
.L1099:
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -8[rbp], 4
	add	DWORD PTR -60[rbp], 1
.L1097:
	mov	eax, DWORD PTR -60[rbp]
	cmp	eax, DWORD PTR -32[rbp]
	jl	.L1100
	jmp	.L1101
.L1096:
	mov	DWORD PTR -56[rbp], 0
	mov	DWORD PTR -60[rbp], 0
	jmp	.L1102
.L1103:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -8[rbp], 4
	add	DWORD PTR -60[rbp], 1
.L1102:
	mov	eax, DWORD PTR -60[rbp]
	cmp	eax, DWORD PTR -32[rbp]
	jl	.L1103
.L1101:
	add	DWORD PTR -64[rbp], 1
.L1095:
	cmp	DWORD PTR -64[rbp], 3
	jle	.L1104
.L1094:
	cmp	DWORD PTR -100[rbp], 0
	je	.L1105
	cmp	DWORD PTR -100[rbp], 4
	je	.L1105
	mov	esi, DWORD PTR -44[rbp]
	mov	ecx, DWORD PTR -40[rbp]
	mov	edx, DWORD PTR -100[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, esi
	mov	esi, 4
	mov	rdi, rax
	call	convert_format
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L1105
	mov	rax, QWORD PTR -24[rbp]
	jmp	.L1070
.L1105:
	cmp	QWORD PTR -96[rbp], 0
	je	.L1106
	mov	rax, QWORD PTR -96[rbp]
	mov	edx, DWORD PTR -48[rbp]
	mov	DWORD PTR [rax], edx
.L1106:
	mov	rax, QWORD PTR -88[rbp]
	mov	edx, DWORD PTR -44[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -80[rbp]
	mov	edx, DWORD PTR -40[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -24[rbp]
.L1070:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE121:
	.size	psd_load, .-psd_load
	.globl	stbi_psd_load
	.type	stbi_psd_load, @function
stbi_psd_load:
.LFB122:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L1108
	mov	eax, 0
	jmp	.L1109
.L1108:
	mov	edi, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	stbi_psd_load_from_file
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	rax, QWORD PTR -8[rbp]
.L1109:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE122:
	.size	stbi_psd_load, .-stbi_psd_load
	.globl	stbi_psd_load_from_file
	.type	stbi_psd_load_from_file, @function
stbi_psd_load_from_file:
.LFB123:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	DWORD PTR -84[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	mov	edi, DWORD PTR -84[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rdx, QWORD PTR -72[rbp]
	mov	rsi, QWORD PTR -64[rbp]
	lea	rax, -48[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	psd_load
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1112
	call	__stack_chk_fail@PLT
.L1112:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE123:
	.size	stbi_psd_load_from_file, .-stbi_psd_load_from_file
	.globl	stbi_psd_load_from_memory
	.type	stbi_psd_load_from_memory, @function
stbi_psd_load_from_memory:
.LFB124:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	QWORD PTR -88[rbp], r8
	mov	DWORD PTR -64[rbp], r9d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -60[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	mov	edi, DWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR -80[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	lea	rax, -48[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	psd_load
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L1115
	call	__stack_chk_fail@PLT
.L1115:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE124:
	.size	stbi_psd_load_from_memory, .-stbi_psd_load_from_memory
	.section	.rodata
.LC90:
	.string	"#?RADIANCE\n"
	.text
	.type	hdr_test, @function
hdr_test:
.LFB125:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	lea	rax, .LC90[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -12[rbp], 0
	jmp	.L1117
.L1120:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	mov	edx, DWORD PTR -12[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -8[rbp]
	add	rdx, rcx
	movzx	edx, BYTE PTR [rdx]
	movsx	edx, dl
	cmp	eax, edx
	je	.L1118
	mov	eax, 0
	jmp	.L1119
.L1118:
	add	DWORD PTR -12[rbp], 1
.L1117:
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L1120
	mov	eax, 1
.L1119:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE125:
	.size	hdr_test, .-hdr_test
	.globl	stbi_hdr_test_memory
	.type	stbi_hdr_test_memory, @function
stbi_hdr_test_memory:
.LFB126:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -60[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	hdr_test
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1123
	call	__stack_chk_fail@PLT
.L1123:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE126:
	.size	stbi_hdr_test_memory, .-stbi_hdr_test_memory
	.globl	stbi_hdr_test_file
	.type	stbi_hdr_test_file, @function
stbi_hdr_test_file:
.LFB127:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	ftell@PLT
	mov	DWORD PTR -56[rbp], eax
	mov	rdx, QWORD PTR -72[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	hdr_test
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	mov	eax, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1126
	call	__stack_chk_fail@PLT
.L1126:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE127:
	.size	stbi_hdr_test_file, .-stbi_hdr_test_file
	.type	hdr_gettoken, @function
hdr_gettoken:
.LFB128:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -12[rbp], 0
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	BYTE PTR -13[rbp], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	mov	BYTE PTR -13[rbp], al
	jmp	.L1128
.L1133:
	mov	eax, DWORD PTR -12[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -12[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -13[rbp]
	mov	BYTE PTR [rdx], al
	cmp	DWORD PTR -12[rbp], 1023
	jne	.L1129
	nop
.L1131:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	at_eof
	test	eax, eax
	jne	.L1135
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	cmp	eax, 10
	jne	.L1131
	jmp	.L1135
.L1129:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get8
	mov	BYTE PTR -13[rbp], al
.L1128:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	at_eof
	test	eax, eax
	jne	.L1132
	cmp	BYTE PTR -13[rbp], 10
	jne	.L1133
	jmp	.L1132
.L1135:
	nop
.L1132:
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -32[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE128:
	.size	hdr_gettoken, .-hdr_gettoken
	.type	hdr_convert, @function
hdr_convert:
.LFB129:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L1137
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	lea	edx, -136[rax]
	mov	rax, QWORD PTR .LC91[rip]
	mov	edi, edx
	movq	xmm0, rax
	call	ldexp@PLT
	cvtsd2ss	xmm0, xmm0
	movss	DWORD PTR -4[rbp], xmm0
	cmp	DWORD PTR -36[rbp], 2
	jg	.L1138
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, edx
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mulss	xmm0, DWORD PTR -4[rbp]
	movss	xmm1, DWORD PTR .LC92[rip]
	divss	xmm0, xmm1
	mov	rax, QWORD PTR -24[rbp]
	movss	DWORD PTR [rax], xmm0
	jmp	.L1139
.L1138:
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mulss	xmm0, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	movss	DWORD PTR [rax], xmm0
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 4
	mulss	xmm0, DWORD PTR -4[rbp]
	movss	DWORD PTR [rax], xmm0
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 8
	mulss	xmm0, DWORD PTR -4[rbp]
	movss	DWORD PTR [rax], xmm0
.L1139:
	cmp	DWORD PTR -36[rbp], 2
	jne	.L1140
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 4
	movss	xmm0, DWORD PTR .LC3[rip]
	movss	DWORD PTR [rax], xmm0
.L1140:
	cmp	DWORD PTR -36[rbp], 4
	jne	.L1146
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 12
	movss	xmm0, DWORD PTR .LC3[rip]
	movss	DWORD PTR [rax], xmm0
	jmp	.L1146
.L1137:
	cmp	DWORD PTR -36[rbp], 4
	je	.L1142
	cmp	DWORD PTR -36[rbp], 4
	jg	.L1146
	cmp	DWORD PTR -36[rbp], 3
	je	.L1143
	cmp	DWORD PTR -36[rbp], 3
	jg	.L1146
	cmp	DWORD PTR -36[rbp], 1
	je	.L1144
	cmp	DWORD PTR -36[rbp], 2
	je	.L1145
	jmp	.L1146
.L1142:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 12
	movss	xmm0, DWORD PTR .LC3[rip]
	movss	DWORD PTR [rax], xmm0
.L1143:
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 8[rax]
	pxor	xmm0, xmm0
	movss	DWORD PTR [rdx], xmm0
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 4
	movss	xmm0, DWORD PTR [rdx]
	movss	DWORD PTR [rax], xmm0
	movss	xmm0, DWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	movss	DWORD PTR [rax], xmm0
	jmp	.L1141
.L1145:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 4
	movss	xmm0, DWORD PTR .LC3[rip]
	movss	DWORD PTR [rax], xmm0
.L1144:
	mov	rax, QWORD PTR -24[rbp]
	pxor	xmm0, xmm0
	movss	DWORD PTR [rax], xmm0
	nop
.L1141:
.L1146:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE129:
	.size	hdr_convert, .-hdr_convert
	.section	.rodata
.LC93:
	.string	"#?RADIANCE"
.LC94:
	.string	"not HDR"
.LC95:
	.string	"FORMAT=32-bit_rle_rgbe"
.LC96:
	.string	"unsupported format"
.LC97:
	.string	"-Y "
.LC98:
	.string	"unsupported data layout"
.LC99:
	.string	"+X "
	.align 8
.LC100:
	.string	"invalid decoded scanline length"
	.text
	.type	hdr_load, @function
hdr_load:
.LFB130:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1168
	mov	QWORD PTR -1128[rbp], rdi
	mov	QWORD PTR -1136[rbp], rsi
	mov	QWORD PTR -1144[rbp], rdx
	mov	QWORD PTR -1152[rbp], rcx
	mov	DWORD PTR -1156[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -1112[rbp], 0
	lea	rdx, -1040[rbp]
	mov	rax, QWORD PTR -1128[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	hdr_gettoken
	lea	rsi, .LC93[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	je	.L1148
	lea	rdi, .LC94[rip]
	call	e
	mov	eax, 0
	jmp	.L1183
.L1148:
	lea	rdx, -1040[rbp]
	mov	rax, QWORD PTR -1128[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	hdr_gettoken
	mov	QWORD PTR -1072[rbp], rax
	mov	rax, QWORD PTR -1072[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L1186
	mov	rax, QWORD PTR -1072[rbp]
	lea	rsi, .LC95[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L1148
	mov	DWORD PTR -1112[rbp], 1
	jmp	.L1148
.L1186:
	nop
	cmp	DWORD PTR -1112[rbp], 0
	jne	.L1153
	lea	rdi, .LC96[rip]
	call	e
	mov	eax, 0
	jmp	.L1183
.L1153:
	lea	rdx, -1040[rbp]
	mov	rax, QWORD PTR -1128[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	hdr_gettoken
	mov	QWORD PTR -1072[rbp], rax
	mov	rax, QWORD PTR -1072[rbp]
	mov	edx, 3
	lea	rsi, .LC97[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L1154
	lea	rdi, .LC98[rip]
	call	e
	mov	eax, 0
	jmp	.L1183
.L1154:
	mov	rax, QWORD PTR -1072[rbp]
	add	rax, 3
	mov	QWORD PTR -1072[rbp], rax
	mov	rax, QWORD PTR -1072[rbp]
	lea	rcx, -1072[rbp]
	mov	edx, 10
	mov	rsi, rcx
	mov	rdi, rax
	call	strtol@PLT
	mov	DWORD PTR -1092[rbp], eax
	jmp	.L1155
.L1156:
	mov	rax, QWORD PTR -1072[rbp]
	add	rax, 1
	mov	QWORD PTR -1072[rbp], rax
.L1155:
	mov	rax, QWORD PTR -1072[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 32
	je	.L1156
	mov	rax, QWORD PTR -1072[rbp]
	mov	edx, 3
	lea	rsi, .LC99[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L1157
	lea	rdi, .LC98[rip]
	call	e
	mov	eax, 0
	jmp	.L1183
.L1157:
	mov	rax, QWORD PTR -1072[rbp]
	add	rax, 3
	mov	QWORD PTR -1072[rbp], rax
	mov	rax, QWORD PTR -1072[rbp]
	mov	edx, 10
	mov	esi, 0
	mov	rdi, rax
	call	strtol@PLT
	mov	DWORD PTR -1088[rbp], eax
	mov	rax, QWORD PTR -1136[rbp]
	mov	edx, DWORD PTR -1088[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -1144[rbp]
	mov	edx, DWORD PTR -1092[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -1152[rbp]
	mov	DWORD PTR [rax], 3
	cmp	DWORD PTR -1156[rbp], 0
	jne	.L1158
	mov	DWORD PTR -1156[rbp], 3
.L1158:
	mov	eax, DWORD PTR -1092[rbp]
	imul	eax, DWORD PTR -1088[rbp]
	imul	eax, DWORD PTR -1156[rbp]
	cdqe
	sal	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -1056[rbp], rax
	cmp	DWORD PTR -1088[rbp], 7
	jle	.L1159
	cmp	DWORD PTR -1088[rbp], 32767
	jle	.L1160
.L1159:
	mov	DWORD PTR -1104[rbp], 0
	jmp	.L1161
.L1164:
	mov	DWORD PTR -1108[rbp], 0
	jmp	.L1162
.L1187:
	nop
.L1163:
	lea	rcx, -1044[rbp]
	mov	rax, QWORD PTR -1128[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	getn
	mov	eax, DWORD PTR -1104[rbp]
	imul	eax, DWORD PTR -1088[rbp]
	imul	eax, DWORD PTR -1156[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -1108[rbp]
	imul	eax, DWORD PTR -1156[rbp]
	cdqe
	add	rax, rdx
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -1056[rbp]
	lea	rcx, [rdx+rax]
	mov	edx, DWORD PTR -1156[rbp]
	lea	rax, -1044[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	hdr_convert
	add	DWORD PTR -1108[rbp], 1
.L1162:
	mov	eax, DWORD PTR -1108[rbp]
	cmp	eax, DWORD PTR -1088[rbp]
	jl	.L1187
	add	DWORD PTR -1104[rbp], 1
.L1161:
	mov	eax, DWORD PTR -1104[rbp]
	cmp	eax, DWORD PTR -1092[rbp]
	jl	.L1164
	jmp	.L1165
.L1160:
	mov	QWORD PTR -1064[rbp], 0
	mov	DWORD PTR -1104[rbp], 0
	jmp	.L1166
.L1182:
	mov	rax, QWORD PTR -1128[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -1084[rbp], eax
	mov	rax, QWORD PTR -1128[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -1080[rbp], eax
	mov	rax, QWORD PTR -1128[rbp]
	mov	rdi, rax
	call	get8
	mov	DWORD PTR -1076[rbp], eax
	cmp	DWORD PTR -1084[rbp], 2
	jne	.L1167
	cmp	DWORD PTR -1080[rbp], 2
	jne	.L1167
	mov	eax, DWORD PTR -1076[rbp]
	and	eax, 128
	test	eax, eax
	je	.L1168
.L1167:
	mov	eax, DWORD PTR -1084[rbp]
	mov	BYTE PTR -1044[rbp], al
	mov	eax, DWORD PTR -1080[rbp]
	mov	BYTE PTR -1043[rbp], al
	mov	eax, DWORD PTR -1076[rbp]
	mov	BYTE PTR -1042[rbp], al
	mov	rax, QWORD PTR -1128[rbp]
	mov	rdi, rax
	call	get8
	mov	BYTE PTR -1041[rbp], al
	mov	edx, DWORD PTR -1156[rbp]
	lea	rcx, -1044[rbp]
	mov	rax, QWORD PTR -1056[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	hdr_convert
	mov	DWORD PTR -1108[rbp], 1
	mov	DWORD PTR -1104[rbp], 0
	mov	rax, QWORD PTR -1064[rbp]
	mov	rdi, rax
	call	free@PLT
	jmp	.L1163
.L1168:
	sal	DWORD PTR -1076[rbp], 8
	mov	rax, QWORD PTR -1128[rbp]
	mov	rdi, rax
	call	get8
	or	DWORD PTR -1076[rbp], eax
	mov	eax, DWORD PTR -1076[rbp]
	cmp	eax, DWORD PTR -1088[rbp]
	je	.L1169
	mov	rax, QWORD PTR -1056[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -1064[rbp]
	mov	rdi, rax
	call	free@PLT
	lea	rdi, .LC100[rip]
	call	e
	mov	eax, 0
	jmp	.L1183
.L1169:
	cmp	QWORD PTR -1064[rbp], 0
	jne	.L1170
	mov	eax, DWORD PTR -1088[rbp]
	sal	eax, 2
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -1064[rbp], rax
.L1170:
	mov	DWORD PTR -1100[rbp], 0
	jmp	.L1171
.L1179:
	mov	DWORD PTR -1108[rbp], 0
	jmp	.L1172
.L1178:
	mov	rax, QWORD PTR -1128[rbp]
	mov	rdi, rax
	call	get8
	mov	BYTE PTR -1114[rbp], al
	cmp	BYTE PTR -1114[rbp], -128
	jbe	.L1173
	mov	rax, QWORD PTR -1128[rbp]
	mov	rdi, rax
	call	get8
	mov	BYTE PTR -1113[rbp], al
	add	BYTE PTR -1114[rbp], -128
	mov	DWORD PTR -1096[rbp], 0
	jmp	.L1174
.L1175:
	mov	eax, DWORD PTR -1108[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1108[rbp], edx
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -1100[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -1113[rbp]
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -1096[rbp], 1
.L1174:
	movzx	eax, BYTE PTR -1114[rbp]
	cmp	DWORD PTR -1096[rbp], eax
	jl	.L1175
	jmp	.L1172
.L1173:
	mov	DWORD PTR -1096[rbp], 0
	jmp	.L1176
.L1177:
	mov	rax, QWORD PTR -1128[rbp]
	mov	rdi, rax
	call	get8
	mov	ecx, eax
	mov	eax, DWORD PTR -1108[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -1108[rbp], edx
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -1100[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -1096[rbp], 1
.L1176:
	movzx	eax, BYTE PTR -1114[rbp]
	cmp	DWORD PTR -1096[rbp], eax
	jl	.L1177
.L1172:
	mov	eax, DWORD PTR -1108[rbp]
	cmp	eax, DWORD PTR -1088[rbp]
	jl	.L1178
	add	DWORD PTR -1100[rbp], 1
.L1171:
	cmp	DWORD PTR -1100[rbp], 3
	jle	.L1179
	mov	DWORD PTR -1108[rbp], 0
	jmp	.L1180
.L1181:
	mov	eax, DWORD PTR -1108[rbp]
	sal	eax, 2
	movsx	rdx, eax
	mov	rax, QWORD PTR -1064[rbp]
	lea	rsi, [rdx+rax]
	mov	eax, DWORD PTR -1104[rbp]
	imul	eax, DWORD PTR -1088[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -1108[rbp]
	add	eax, edx
	imul	eax, DWORD PTR -1156[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -1056[rbp]
	lea	rcx, [rdx+rax]
	mov	eax, DWORD PTR -1156[rbp]
	mov	edx, eax
	mov	rdi, rcx
	call	hdr_convert
	add	DWORD PTR -1108[rbp], 1
.L1180:
	mov	eax, DWORD PTR -1108[rbp]
	cmp	eax, DWORD PTR -1088[rbp]
	jl	.L1181
	add	DWORD PTR -1104[rbp], 1
.L1166:
	mov	eax, DWORD PTR -1104[rbp]
	cmp	eax, DWORD PTR -1092[rbp]
	jl	.L1182
	mov	rax, QWORD PTR -1064[rbp]
	mov	rdi, rax
	call	free@PLT
.L1165:
	mov	rax, QWORD PTR -1056[rbp]
.L1183:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1184
	call	__stack_chk_fail@PLT
.L1184:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE130:
	.size	hdr_load, .-hdr_load
	.globl	stbi_hdr_load_from_file
	.type	stbi_hdr_load_from_file, @function
stbi_hdr_load_from_file:
.LFB131:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	DWORD PTR -84[rbp], r8d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	start_file
	mov	edi, DWORD PTR -84[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rdx, QWORD PTR -72[rbp]
	mov	rsi, QWORD PTR -64[rbp]
	lea	rax, -48[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	hdr_load
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1190
	call	__stack_chk_fail@PLT
.L1190:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE131:
	.size	stbi_hdr_load_from_file, .-stbi_hdr_load_from_file
	.globl	stbi_hdr_load_from_memory
	.type	stbi_hdr_load_from_memory, @function
stbi_hdr_load_from_memory:
.LFB132:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	QWORD PTR -88[rbp], r8
	mov	DWORD PTR -64[rbp], r9d
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -60[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	lea	rax, -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	start_mem
	mov	edi, DWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR -80[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	lea	rax, -48[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	hdr_load
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L1193
	call	__stack_chk_fail@PLT
.L1193:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE132:
	.size	stbi_hdr_load_from_memory, .-stbi_hdr_load_from_memory
	.type	write8, @function
write8:
.LFB133:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR -28[rbp]
	mov	BYTE PTR -9[rbp], al
	mov	rdx, QWORD PTR -24[rbp]
	lea	rax, -9[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	esi, 1
	mov	rdi, rax
	call	fwrite@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L1195
	call	__stack_chk_fail@PLT
.L1195:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE133:
	.size	write8, .-write8
	.type	writefv, @function
writefv:
.LFB134:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	jmp	.L1197
.L1209:
	mov	rax, QWORD PTR -32[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -32[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	cmp	eax, 52
	je	.L1198
	cmp	eax, 52
	jg	.L1199
	cmp	eax, 50
	je	.L1200
	cmp	eax, 50
	jg	.L1199
	cmp	eax, 32
	je	.L1197
	cmp	eax, 49
	je	.L1202
	jmp	.L1199
.L1202:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	eax, 47
	ja	.L1203
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	mov	eax, eax
	add	rax, rdx
	mov	rdx, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR [rdx]
	lea	ecx, 8[rdx]
	mov	rdx, QWORD PTR -40[rbp]
	mov	DWORD PTR [rdx], ecx
	jmp	.L1204
.L1203:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	lea	rcx, 8[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR 8[rdx], rcx
.L1204:
	mov	eax, DWORD PTR [rax]
	mov	BYTE PTR -7[rbp], al
	movzx	edx, BYTE PTR -7[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	write8
	jmp	.L1197
.L1200:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	eax, 47
	ja	.L1205
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	mov	eax, eax
	add	rax, rdx
	mov	rdx, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR [rdx]
	lea	ecx, 8[rdx]
	mov	rdx, QWORD PTR -40[rbp]
	mov	DWORD PTR [rdx], ecx
	jmp	.L1206
.L1205:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	lea	rcx, 8[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR 8[rdx], rcx
.L1206:
	mov	eax, DWORD PTR [rax]
	mov	WORD PTR -6[rbp], ax
	movsx	edx, WORD PTR -6[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	write8
	movzx	eax, WORD PTR -6[rbp]
	sar	ax, 8
	movsx	edx, ax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	write8
	jmp	.L1197
.L1198:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	eax, 47
	ja	.L1207
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	mov	eax, eax
	add	rax, rdx
	mov	rdx, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR [rdx]
	lea	ecx, 8[rdx]
	mov	rdx, QWORD PTR -40[rbp]
	mov	DWORD PTR [rdx], ecx
	jmp	.L1208
.L1207:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	lea	rcx, 8[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR 8[rdx], rcx
.L1208:
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -4[rbp], eax
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	write8
	mov	eax, DWORD PTR -4[rbp]
	sar	eax, 8
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	write8
	mov	eax, DWORD PTR -4[rbp]
	sar	eax, 16
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	write8
	mov	eax, DWORD PTR -4[rbp]
	sar	eax, 24
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	write8
	jmp	.L1197
.L1199:
	lea	rcx, __PRETTY_FUNCTION__.0[rip]
	mov	edx, 3799
	lea	rsi, .LC4[rip]
	lea	rdi, .LC7[rip]
	call	__assert_fail@PLT
.L1197:
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L1209
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE134:
	.size	writefv, .-writefv
	.type	writef, @function
writef:
.LFB135:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 224
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -224[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L1212
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L1212:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -208[rbp], 16
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	lea	rdx, -208[rbp]
	mov	rcx, QWORD PTR -224[rbp]
	mov	rax, QWORD PTR -216[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	writefv
	nop
	mov	rax, QWORD PTR -184[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L1213
	call	__stack_chk_fail@PLT
.L1213:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE135:
	.size	writef, .-writef
	.section	.rodata
.LC101:
	.string	"111"
	.text
	.type	write_pixels, @function
write_pixels:
.LFB136:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	DWORD PTR -60[rbp], esi
	mov	DWORD PTR -64[rbp], edx
	mov	DWORD PTR -68[rbp], ecx
	mov	DWORD PTR -72[rbp], r8d
	mov	DWORD PTR -76[rbp], r9d
	mov	rax, QWORD PTR 16[rbp]
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	WORD PTR -14[rbp], 255
	mov	BYTE PTR -12[rbp], -1
	mov	DWORD PTR -44[rbp], 0
	cmp	DWORD PTR -64[rbp], 0
	jns	.L1215
	mov	DWORD PTR -28[rbp], -1
	mov	eax, DWORD PTR -72[rbp]
	sub	eax, 1
	mov	DWORD PTR -36[rbp], eax
	jmp	.L1217
.L1215:
	mov	eax, DWORD PTR -72[rbp]
	mov	DWORD PTR -28[rbp], eax
	mov	DWORD PTR -36[rbp], 0
	jmp	.L1217
.L1229:
	mov	DWORD PTR -40[rbp], 0
	jmp	.L1218
.L1228:
	mov	eax, DWORD PTR -36[rbp]
	imul	eax, DWORD PTR -68[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	add	eax, edx
	imul	eax, DWORD PTR -76[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	mov	QWORD PTR -24[rbp], rax
	cmp	DWORD PTR 24[rbp], 0
	jns	.L1219
	mov	eax, DWORD PTR -76[rbp]
	cdqe
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	lea	rdi, [rdx+rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	rcx, rax
	mov	edx, 1
	mov	esi, 1
	call	fwrite@PLT
.L1219:
	cmp	DWORD PTR -76[rbp], 4
	je	.L1220
	cmp	DWORD PTR -76[rbp], 4
	jg	.L1221
	cmp	DWORD PTR -76[rbp], 2
	jg	.L1222
	cmp	DWORD PTR -76[rbp], 0
	jg	.L1223
	jmp	.L1221
.L1222:
	cmp	DWORD PTR -76[rbp], 3
	je	.L1224
	jmp	.L1221
.L1223:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	esi, al
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -56[rbp]
	mov	r8d, esi
	lea	rsi, .LC101[rip]
	mov	rdi, rax
	mov	eax, 0
	call	writef
	jmp	.L1221
.L1220:
	cmp	DWORD PTR 24[rbp], 0
	jne	.L1224
	mov	DWORD PTR -32[rbp], 0
	jmp	.L1225
.L1226:
	mov	eax, DWORD PTR -32[rbp]
	cdqe
	movzx	ecx, BYTE PTR -14[rbp+rax]
	mov	eax, DWORD PTR -32[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -32[rbp]
	cdqe
	movzx	eax, BYTE PTR -14[rbp+rax]
	movzx	eax, al
	sub	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, edx
	movsx	rdx, eax
	imul	rdx, rdx, -2139062143
	shr	rdx, 32
	add	edx, eax
	sar	edx, 7
	sar	eax, 31
	mov	esi, eax
	mov	eax, edx
	sub	eax, esi
	lea	edx, [rcx+rax]
	mov	eax, DWORD PTR -32[rbp]
	cdqe
	mov	BYTE PTR -11[rbp+rax], dl
	add	DWORD PTR -32[rbp], 1
.L1225:
	cmp	DWORD PTR -32[rbp], 2
	jle	.L1226
	mov	eax, DWORD PTR -60[rbp]
	add	eax, 1
	cdqe
	movzx	eax, BYTE PTR -11[rbp+rax]
	movzx	esi, al
	movzx	eax, BYTE PTR -10[rbp]
	movzx	ecx, al
	mov	eax, 1
	sub	eax, DWORD PTR -60[rbp]
	cdqe
	movzx	eax, BYTE PTR -11[rbp+rax]
	movzx	edx, al
	mov	rax, QWORD PTR -56[rbp]
	mov	r8d, esi
	lea	rsi, .LC101[rip]
	mov	rdi, rax
	mov	eax, 0
	call	writef
	jmp	.L1221
.L1224:
	mov	eax, DWORD PTR -60[rbp]
	add	eax, 1
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	esi, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	eax, 1
	sub	eax, DWORD PTR -60[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -56[rbp]
	mov	r8d, esi
	lea	rsi, .LC101[rip]
	mov	rdi, rax
	mov	eax, 0
	call	writef
	nop
.L1221:
	cmp	DWORD PTR 24[rbp], 0
	jle	.L1227
	mov	eax, DWORD PTR -76[rbp]
	cdqe
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	lea	rdi, [rdx+rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	rcx, rax
	mov	edx, 1
	mov	esi, 1
	call	fwrite@PLT
.L1227:
	add	DWORD PTR -40[rbp], 1
.L1218:
	mov	eax, DWORD PTR -40[rbp]
	cmp	eax, DWORD PTR -68[rbp]
	jl	.L1228
	mov	eax, DWORD PTR 32[rbp]
	movsx	rsi, eax
	mov	rdx, QWORD PTR -56[rbp]
	lea	rax, -44[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	fwrite@PLT
	mov	eax, DWORD PTR -64[rbp]
	add	DWORD PTR -36[rbp], eax
.L1217:
	mov	eax, DWORD PTR -36[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jne	.L1229
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L1230
	call	__stack_chk_fail@PLT
.L1230:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE136:
	.size	write_pixels, .-write_pixels
	.section	.rodata
.LC102:
	.string	"wb"
	.text
	.type	outfile, @function
outfile:
.LFB137:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 272
	mov	QWORD PTR -232[rbp], rdi
	mov	DWORD PTR -236[rbp], esi
	mov	DWORD PTR -240[rbp], edx
	mov	DWORD PTR -244[rbp], ecx
	mov	DWORD PTR -248[rbp], r8d
	mov	DWORD PTR -252[rbp], r9d
	test	al, al
	je	.L1232
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L1232:
	mov	rax, QWORD PTR 16[rbp]
	mov	QWORD PTR -264[rbp], rax
	mov	rax, QWORD PTR 40[rbp]
	mov	QWORD PTR -272[rbp], rax
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -232[rbp]
	lea	rsi, .LC102[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -216[rbp], rax
	cmp	QWORD PTR -216[rbp], 0
	je	.L1233
	mov	DWORD PTR -208[rbp], 48
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 48[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	lea	rdx, -208[rbp]
	mov	rcx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -216[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	writefv
	mov	r9d, DWORD PTR -252[rbp]
	mov	r8d, DWORD PTR -248[rbp]
	mov	ecx, DWORD PTR -244[rbp]
	mov	edx, DWORD PTR -240[rbp]
	mov	esi, DWORD PTR -236[rbp]
	mov	rax, QWORD PTR -216[rbp]
	sub	rsp, 8
	mov	edi, DWORD PTR 32[rbp]
	push	rdi
	mov	edi, DWORD PTR 24[rbp]
	push	rdi
	push	QWORD PTR -264[rbp]
	mov	rdi, rax
	call	write_pixels
	add	rsp, 32
	mov	rax, QWORD PTR -216[rbp]
	mov	rdi, rax
	call	fclose@PLT
.L1233:
	cmp	QWORD PTR -216[rbp], 0
	setne	al
	movzx	eax, al
	mov	rcx, QWORD PTR -184[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L1235
	call	__stack_chk_fail@PLT
.L1235:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE137:
	.size	outfile, .-outfile
	.section	.rodata
.LC103:
	.string	"11 4 22 44 44 22 444444"
	.text
	.globl	stbi_write_bmp
	.type	stbi_write_bmp, @function
stbi_write_bmp:
.LFB138:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	DWORD PTR -32[rbp], edx
	mov	DWORD PTR -36[rbp], ecx
	mov	QWORD PTR -48[rbp], r8
	mov	eax, DWORD PTR -28[rbp]
	mov	ecx, eax
	lea	edx, 0[0+rax*4]
	mov	eax, ecx
	sub	eax, edx
	and	eax, 3
	mov	DWORD PTR -4[rbp], eax
	mov	edx, DWORD PTR -28[rbp]
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	imul	eax, DWORD PTR -32[rbp]
	lea	esi, 54[rax]
	mov	r8d, DWORD PTR -36[rbp]
	mov	edi, DWORD PTR -32[rbp]
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	sub	rsp, 8
	push	0
	push	0
	push	0
	push	0
	push	0
	push	0
	push	24
	push	1
	mov	ecx, DWORD PTR -32[rbp]
	push	rcx
	mov	ecx, DWORD PTR -28[rbp]
	push	rcx
	push	40
	push	54
	push	0
	push	0
	push	rsi
	push	77
	push	66
	lea	rcx, .LC103[rip]
	push	rcx
	mov	ecx, DWORD PTR -4[rbp]
	push	rcx
	push	0
	push	QWORD PTR -48[rbp]
	mov	r9d, r8d
	mov	r8d, edi
	mov	ecx, edx
	mov	edx, -1
	mov	esi, -1
	mov	rdi, rax
	mov	eax, 0
	call	outfile
	add	rsp, 176
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE138:
	.size	stbi_write_bmp, .-stbi_write_bmp
	.section	.rodata
.LC104:
	.string	"111 221 2222 11"
	.text
	.globl	stbi_write_tga
	.type	stbi_write_tga, @function
stbi_write_tga:
.LFB139:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	DWORD PTR -32[rbp], edx
	mov	DWORD PTR -36[rbp], ecx
	mov	QWORD PTR -48[rbp], r8
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 1
	test	eax, eax
	sete	al
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	lea	esi, 0[0+rax*8]
	mov	eax, DWORD PTR -4[rbp]
	add	eax, 3
	lea	ecx, 0[0+rax*8]
	mov	r8d, DWORD PTR -36[rbp]
	mov	edi, DWORD PTR -32[rbp]
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	push	rsi
	push	rcx
	mov	ecx, DWORD PTR -32[rbp]
	push	rcx
	mov	ecx, DWORD PTR -28[rbp]
	push	rcx
	push	0
	push	0
	push	0
	push	0
	push	0
	push	2
	push	0
	push	0
	lea	rcx, .LC104[rip]
	push	rcx
	push	0
	mov	ecx, DWORD PTR -4[rbp]
	push	rcx
	push	QWORD PTR -48[rbp]
	mov	r9d, r8d
	mov	r8d, edi
	mov	ecx, edx
	mov	edx, -1
	mov	esi, -1
	mov	rdi, rax
	mov	eax, 0
	call	outfile
	sub	rsp, -128
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE139:
	.size	stbi_write_tga, .-stbi_write_tga
	.section	.rodata
	.align 8
	.type	__PRETTY_FUNCTION__.14, @object
	.size	__PRETTY_FUNCTION__.14, 15
__PRETTY_FUNCTION__.14:
	.string	"convert_format"
	.type	__PRETTY_FUNCTION__.13, @object
	.size	__PRETTY_FUNCTION__.13, 7
__PRETTY_FUNCTION__.13:
	.string	"decode"
	.align 8
	.type	__PRETTY_FUNCTION__.12, @object
	.size	__PRETTY_FUNCTION__.12, 12
__PRETTY_FUNCTION__.12:
	.string	"bit_reverse"
	.align 8
	.type	__PRETTY_FUNCTION__.11, @object
	.size	__PRETTY_FUNCTION__.11, 15
__PRETTY_FUNCTION__.11:
	.string	"zbuild_huffman"
	.align 8
	.type	__PRETTY_FUNCTION__.10, @object
	.size	__PRETTY_FUNCTION__.10, 10
__PRETTY_FUNCTION__.10:
	.string	"fill_bits"
	.align 16
	.type	__PRETTY_FUNCTION__.9, @object
	.size	__PRETTY_FUNCTION__.9, 16
__PRETTY_FUNCTION__.9:
	.string	"zhuffman_decode"
	.data
	.align 16
	.type	length_dezigzag.8, @object
	.size	length_dezigzag.8, 19
length_dezigzag.8:
	.string	"\020\021\022"
	.ascii	"\b\007\t\006\n\005\013\004\f\003\r\002\016\001\017"
	.section	.rodata
	.align 16
	.type	__PRETTY_FUNCTION__.7, @object
	.size	__PRETTY_FUNCTION__.7, 22
__PRETTY_FUNCTION__.7:
	.string	"compute_huffman_codes"
	.align 16
	.type	__PRETTY_FUNCTION__.6, @object
	.size	__PRETTY_FUNCTION__.6, 25
__PRETTY_FUNCTION__.6:
	.string	"parse_uncompressed_block"
	.data
	.align 8
	.type	png_sig.5, @object
	.size	png_sig.5, 8
png_sig.5:
	.ascii	"\211PNG\r\n\032\n"
	.section	.rodata
	.align 16
	.type	__PRETTY_FUNCTION__.4, @object
	.size	__PRETTY_FUNCTION__.4, 21
__PRETTY_FUNCTION__.4:
	.string	"create_png_image_raw"
	.align 16
	.type	__PRETTY_FUNCTION__.3, @object
	.size	__PRETTY_FUNCTION__.3, 21
__PRETTY_FUNCTION__.3:
	.string	"compute_transparency"
	.data
	.align 16
	.type	invalid_chunk.2, @object
	.size	invalid_chunk.2, 21
invalid_chunk.2:
	.string	"XXXX chunk not known"
	.section	.rodata
	.align 8
	.type	__PRETTY_FUNCTION__.1, @object
	.size	__PRETTY_FUNCTION__.1, 9
__PRETTY_FUNCTION__.1:
	.string	"bmp_load"
	.align 8
	.type	__PRETTY_FUNCTION__.0, @object
	.size	__PRETTY_FUNCTION__.0, 8
__PRETTY_FUNCTION__.0:
	.string	"writefv"
	.align 4
.LC3:
	.long	1065353216
	.align 4
.LC8:
	.long	1132396544
	.align 4
.LC9:
	.long	1056964608
	.align 8
.LC91:
	.long	0
	.long	1072693248
	.align 4
.LC92:
	.long	1077936128
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.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, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"151883.c"
	.text
	.local	failure_reason
	.comm	failure_reason,4,4
	.align	2
	.global	stbi_failure_reason
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_failure_reason, %function
stbi_failure_reason:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L3
	ldr	r3, [r3]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L4:
	.align	2
.L3:
	.word	failure_reason
	.size	stbi_failure_reason, .-stbi_failure_reason
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	e, %function
e:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r2, .L7
	ldr	r3, [fp, #-8]
	str	r3, [r2]
	mov	r3, #0
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L8:
	.align	2
.L7:
	.word	failure_reason
	.size	e, .-e
	.align	2
	.global	stbi_image_free
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_image_free, %function
stbi_image_free:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	stbi_image_free, .-stbi_image_free
	.comm	loaders,128,4
	.local	max_loaders
	.comm	max_loaders,4,4
	.align	2
	.global	stbi_register_loader
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_register_loader, %function
stbi_register_loader:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L11
.L15:
	ldr	r2, .L16
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	bne	.L12
	mov	r3, #1
	b	.L13
.L12:
	ldr	r2, .L16
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #0
	bne	.L14
	ldr	r1, .L16
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r1, r3, lsl #2]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	ldr	r2, .L16+4
	str	r3, [r2]
	mov	r3, #1
	b	.L13
.L14:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L11:
	ldr	r3, [fp, #-8]
	cmp	r3, #31
	ble	.L15
	mov	r3, #0
.L13:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L17:
	.align	2
.L16:
	.word	loaders
	.word	max_loaders
	.size	stbi_register_loader, .-stbi_register_loader
	.section	.rodata
	.align	2
.LC4:
	.ascii	"rb\000"
	.align	2
.LC5:
	.ascii	"can't fopen\000"
	.text
	.align	2
	.global	stbi_load
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_load, %function
stbi_load:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r1, .L21
	ldr	r0, [fp, #-16]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L19
	ldr	r0, .L21+4
	bl	e
	mov	r3, #0
	b	.L20
.L19:
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-12]
	bl	stbi_load_from_file
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	fclose
	ldr	r3, [fp, #-8]
.L20:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L22:
	.align	2
.L21:
	.word	.LC4
	.word	.LC5
	.size	stbi_load, .-stbi_load
	.section	.rodata
	.align	2
.LC6:
	.ascii	"unknown image type\000"
	.text
	.align	2
	.global	stbi_load_from_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_load_from_file, %function
stbi_load_from_file:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #36
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	str	r3, [fp, #-36]
	ldr	r0, [fp, #-24]
	bl	stbi_jpeg_test_file
	mov	r3, r0
	cmp	r3, #0
	beq	.L24
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_jpeg_load_from_file
	mov	r3, r0
	b	.L25
.L24:
	ldr	r0, [fp, #-24]
	bl	stbi_png_test_file
	mov	r3, r0
	cmp	r3, #0
	beq	.L26
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_png_load_from_file
	mov	r3, r0
	b	.L25
.L26:
	ldr	r0, [fp, #-24]
	bl	stbi_bmp_test_file
	mov	r3, r0
	cmp	r3, #0
	beq	.L27
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_bmp_load_from_file
	mov	r3, r0
	b	.L25
.L27:
	ldr	r0, [fp, #-24]
	bl	stbi_psd_test_file
	mov	r3, r0
	cmp	r3, #0
	beq	.L28
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_psd_load_from_file
	mov	r3, r0
	b	.L25
.L28:
	ldr	r0, [fp, #-24]
	bl	stbi_hdr_test_file
	mov	r3, r0
	cmp	r3, #0
	beq	.L29
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_hdr_load_from_file
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-28]
	ldr	r1, [r3]
	ldr	r3, [fp, #-32]
	ldr	r2, [r3]
	ldr	r3, [fp, #4]
	cmp	r3, #0
	bne	.L30
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	b	.L31
.L30:
	ldr	r3, [fp, #4]
.L31:
	ldr	r0, [fp, #-16]
	bl	hdr_to_ldr
	mov	r3, r0
	b	.L25
.L29:
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L32
.L34:
	ldr	r2, .L36
	ldr	r3, [fp, #-20]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r3, [r3, #8]
	ldr	r0, [fp, #-24]
	blx	r3
	mov	r3, r0
	cmp	r3, #0
	beq	.L33
	ldr	r2, .L36
	ldr	r3, [fp, #-20]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r4, [r3, #12]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	blx	r4
	mov	r3, r0
	b	.L25
.L33:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L32:
	ldr	r3, .L36+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L34
	ldr	r0, [fp, #-24]
	bl	stbi_tga_test_file
	mov	r3, r0
	cmp	r3, #0
	beq	.L35
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_tga_load_from_file
	mov	r3, r0
	b	.L25
.L35:
	ldr	r0, .L36+8
	bl	e
	mov	r3, #0
.L25:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L37:
	.align	2
.L36:
	.word	loaders
	.word	max_loaders
	.word	.LC6
	.size	stbi_load_from_file, .-stbi_load_from_file
	.align	2
	.global	stbi_load_from_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_load_from_memory, %function
stbi_load_from_memory:
	@ args = 8, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #36
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	str	r3, [fp, #-36]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_jpeg_test_memory
	mov	r3, r0
	cmp	r3, #0
	beq	.L39
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_jpeg_load_from_memory
	mov	r3, r0
	b	.L40
.L39:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_png_test_memory
	mov	r3, r0
	cmp	r3, #0
	beq	.L41
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_png_load_from_memory
	mov	r3, r0
	b	.L40
.L41:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_bmp_test_memory
	mov	r3, r0
	cmp	r3, #0
	beq	.L42
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_bmp_load_from_memory
	mov	r3, r0
	b	.L40
.L42:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_psd_test_memory
	mov	r3, r0
	cmp	r3, #0
	beq	.L43
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_psd_load_from_memory
	mov	r3, r0
	b	.L40
.L43:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_hdr_test_memory
	mov	r3, r0
	cmp	r3, #0
	beq	.L44
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_hdr_load_from_memory
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-32]
	ldr	r1, [r3]
	ldr	r3, [fp, #-36]
	ldr	r2, [r3]
	ldr	r3, [fp, #8]
	cmp	r3, #0
	bne	.L45
	ldr	r3, [fp, #4]
	ldr	r3, [r3]
	b	.L46
.L45:
	ldr	r3, [fp, #8]
.L46:
	ldr	r0, [fp, #-16]
	bl	hdr_to_ldr
	mov	r3, r0
	b	.L40
.L44:
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L47
.L49:
	ldr	r2, .L51
	ldr	r3, [fp, #-20]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r3, [r3]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	blx	r3
	mov	r3, r0
	cmp	r3, #0
	beq	.L48
	ldr	r2, .L51
	ldr	r3, [fp, #-20]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r4, [r3, #4]
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	blx	r4
	mov	r3, r0
	b	.L40
.L48:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L47:
	ldr	r3, .L51+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L49
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_tga_test_memory
	mov	r3, r0
	cmp	r3, #0
	beq	.L50
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	stbi_tga_load_from_memory
	mov	r3, r0
	b	.L40
.L50:
	ldr	r0, .L51+8
	bl	e
	mov	r3, #0
.L40:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L52:
	.align	2
.L51:
	.word	loaders
	.word	max_loaders
	.word	.LC6
	.size	stbi_load_from_memory, .-stbi_load_from_memory
	.align	2
	.global	stbi_loadf
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_loadf, %function
stbi_loadf:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r1, .L56
	ldr	r0, [fp, #-16]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L54
	ldr	r0, .L56+4
	bl	e
	mov	r3, #0
	b	.L55
.L54:
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-12]
	bl	stbi_loadf_from_file
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	fclose
	ldr	r3, [fp, #-8]
.L55:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L57:
	.align	2
.L56:
	.word	.LC4
	.word	.LC5
	.size	stbi_loadf, .-stbi_loadf
	.align	2
	.global	stbi_loadf_from_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_loadf_from_file, %function
stbi_loadf_from_file:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r0, [fp, #-16]
	bl	stbi_hdr_test_file
	mov	r3, r0
	cmp	r3, #0
	beq	.L59
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	stbi_hdr_load_from_file
	mov	r3, r0
	b	.L60
.L59:
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	stbi_load_from_file
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L61
	ldr	r3, [fp, #-20]
	ldr	r1, [r3]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, [fp, #4]
	cmp	r3, #0
	bne	.L62
	ldr	r3, [fp, #-28]
	ldr	r3, [r3]
	b	.L63
.L62:
	ldr	r3, [fp, #4]
.L63:
	ldr	r0, [fp, #-8]
	bl	ldr_to_hdr
	mov	r3, r0
	b	.L60
.L61:
	ldr	r0, .L64
	bl	e
	mov	r3, #0
.L60:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L65:
	.align	2
.L64:
	.word	.LC6
	.size	stbi_loadf_from_file, .-stbi_loadf_from_file
	.align	2
	.global	stbi_loadf_from_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_loadf_from_memory, %function
stbi_loadf_from_memory:
	@ args = 8, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	stbi_hdr_test_memory
	mov	r3, r0
	cmp	r3, #0
	beq	.L67
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	stbi_hdr_load_from_memory
	mov	r3, r0
	b	.L68
.L67:
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	stbi_load_from_memory
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L69
	ldr	r3, [fp, #-24]
	ldr	r1, [r3]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3]
	ldr	r3, [fp, #8]
	cmp	r3, #0
	bne	.L70
	ldr	r3, [fp, #4]
	ldr	r3, [r3]
	b	.L71
.L70:
	ldr	r3, [fp, #8]
.L71:
	ldr	r0, [fp, #-8]
	bl	ldr_to_hdr
	mov	r3, r0
	b	.L68
.L69:
	ldr	r0, .L72
	bl	e
	mov	r3, #0
.L68:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L73:
	.align	2
.L72:
	.word	.LC6
	.size	stbi_loadf_from_memory, .-stbi_loadf_from_memory
	.align	2
	.global	stbi_is_hdr_from_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_is_hdr_from_memory, %function
stbi_is_hdr_from_memory:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	stbi_hdr_test_memory
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	stbi_is_hdr_from_memory, .-stbi_is_hdr_from_memory
	.align	2
	.global	stbi_is_hdr
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_is_hdr, %function
stbi_is_hdr:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r1, .L79
	ldr	r0, [fp, #-16]
	bl	fopen
	str	r0, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L77
	ldr	r0, [fp, #-8]
	bl	stbi_is_hdr_from_file
	str	r0, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	fclose
.L77:
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L80:
	.align	2
.L79:
	.word	.LC4
	.size	stbi_is_hdr, .-stbi_is_hdr
	.align	2
	.global	stbi_is_hdr_from_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_is_hdr_from_file, %function
stbi_is_hdr_from_file:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	stbi_hdr_test_file
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	stbi_is_hdr_from_file, .-stbi_is_hdr_from_file
	.data
	.align	2
	.type	h2l_gamma_i, %object
	.size	h2l_gamma_i, 4
h2l_gamma_i:
	.word	1055439406
	.align	2
	.type	h2l_scale_i, %object
	.size	h2l_scale_i, 4
h2l_scale_i:
	.word	1065353216
	.align	2
	.type	l2h_gamma, %object
	.size	l2h_gamma, 4
l2h_gamma:
	.word	1074580685
	.align	2
	.type	l2h_scale, %object
	.size	l2h_scale, 4
l2h_scale:
	.word	1065353216
	.global	__aeabi_fdiv
	.text
	.align	2
	.global	stbi_hdr_to_ldr_gamma
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_hdr_to_ldr_gamma, %function
stbi_hdr_to_ldr_gamma:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]	@ float
	ldr	r1, [fp, #-8]	@ float
	mov	r0, #1065353216
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L84
	str	r2, [r3]	@ float
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L85:
	.align	2
.L84:
	.word	h2l_gamma_i
	.size	stbi_hdr_to_ldr_gamma, .-stbi_hdr_to_ldr_gamma
	.align	2
	.global	stbi_hdr_to_ldr_scale
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_hdr_to_ldr_scale, %function
stbi_hdr_to_ldr_scale:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]	@ float
	ldr	r1, [fp, #-8]	@ float
	mov	r0, #1065353216
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L87
	str	r2, [r3]	@ float
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L88:
	.align	2
.L87:
	.word	h2l_scale_i
	.size	stbi_hdr_to_ldr_scale, .-stbi_hdr_to_ldr_scale
	.align	2
	.global	stbi_ldr_to_hdr_gamma
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_ldr_to_hdr_gamma, %function
stbi_ldr_to_hdr_gamma:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]	@ float
	ldr	r2, .L90
	ldr	r3, [fp, #-8]	@ float
	str	r3, [r2]	@ float
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L91:
	.align	2
.L90:
	.word	l2h_gamma
	.size	stbi_ldr_to_hdr_gamma, .-stbi_ldr_to_hdr_gamma
	.align	2
	.global	stbi_ldr_to_hdr_scale
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_ldr_to_hdr_scale, %function
stbi_ldr_to_hdr_scale:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]	@ float
	ldr	r2, .L93
	ldr	r3, [fp, #-8]	@ float
	str	r3, [r2]	@ float
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L94:
	.align	2
.L93:
	.word	l2h_scale
	.size	stbi_ldr_to_hdr_scale, .-stbi_ldr_to_hdr_scale
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	start_file, %function
start_file:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #16]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	start_file, .-start_file
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	start_mem, %function
start_mem:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #24]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	start_mem, .-start_mem
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get8, %function
get8:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #16]
	cmp	r3, #0
	beq	.L98
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #16]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	beq	.L99
	ldr	r3, [fp, #-8]
	b	.L101
.L99:
	mov	r3, #0
	b	.L101
.L98:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #24]
	cmp	r2, r3
	bcs	.L102
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #20]
	add	r1, r3, #1
	ldr	r2, [fp, #-16]
	str	r1, [r2, #20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	b	.L101
.L102:
	mov	r3, #0
.L101:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get8, .-get8
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	at_eof, %function
at_eof:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	cmp	r3, #0
	beq	.L104
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r0, r3
	bl	feof
	mov	r3, r0
	b	.L105
.L104:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #24]
	cmp	r2, r3
	movcs	r3, #1
	movcc	r3, #0
	and	r3, r3, #255
.L105:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	at_eof, .-at_eof
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get8u, %function
get8u:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	get8
	mov	r3, r0
	and	r3, r3, #255
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get8u, .-get8u
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	skip, %function
skip:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	cmp	r3, #0
	beq	.L109
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r2, #1
	ldr	r1, [fp, #-12]
	mov	r0, r3
	bl	fseek
	b	.L111
.L109:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-12]
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #20]
.L111:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	skip, .-skip
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get16, %function
get16:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-24]
	bl	get8
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	lsl	r4, r3, #8
	ldr	r0, [fp, #-24]
	bl	get8
	mov	r3, r0
	add	r3, r4, r3
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
	.size	get16, .-get16
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get32, %function
get32:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-24]
	bl	get16
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	lsl	r4, r3, #16
	ldr	r0, [fp, #-24]
	bl	get16
	mov	r3, r0
	add	r3, r4, r3
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
	.size	get32, .-get32
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get16le, %function
get16le:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	get8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	get8
	mov	r3, r0
	lsl	r2, r3, #8
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get16le, .-get16le
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get32le, %function
get32le:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	get16le
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	get16le
	mov	r3, r0
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get32le, .-get32le
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	getn, %function
getn:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	cmp	r3, #0
	beq	.L121
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, #1
	ldr	r0, [fp, #-12]
	bl	fread
	b	.L120
.L121:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #20]
	ldr	r2, [fp, #-16]
	mov	r1, r3
	ldr	r0, [fp, #-12]
	bl	memcpy
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-16]
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #20]
.L120:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	getn, .-getn
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	compute_y, %function
compute_y:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	sub	r1, r2, r3
	ldr	r2, [fp, #-12]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #1
	mov	r2, r3
	mov	r3, r2
	add	r1, r1, r3
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	asr	r3, r3, #8
	and	r3, r3, #255
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	compute_y, .-compute_y
	.section	.rodata
	.align	2
.LC7:
	.ascii	"the_stack_data/151883.c\000"
	.align	2
.LC8:
	.ascii	"req_comp >= 1 && req_comp <= 4\000"
	.align	2
.LC9:
	.ascii	"outofmem\000"
	.align	2
.LC10:
	.ascii	"0\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	convert_format, %function
convert_format:
	@ args = 4, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	str	r3, [fp, #-44]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-36]
	cmp	r2, r3
	bne	.L126
	ldr	r3, [fp, #-32]
	b	.L127
.L126:
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	ble	.L128
	ldr	r3, [fp, #-40]
	cmp	r3, #4
	ble	.L173
.L128:
	ldr	r3, .L174
	ldr	r2, .L174+4
	ldr	r1, .L174+8
	ldr	r0, .L174+12
	bl	__assert_fail
.L173:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-44]
	mul	r3, r2, r3
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L130
	ldr	r0, [fp, #-32]
	bl	free
	ldr	r0, .L174+16
	bl	e
	mov	r3, #0
	b	.L127
.L130:
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L131
.L171:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-44]
	mul	r3, r2, r3
	ldr	r2, [fp, #-36]
	mul	r3, r2, r3
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-44]
	mul	r3, r2, r3
	ldr	r2, [fp, #-40]
	mul	r3, r2, r3
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #3
	ldr	r3, [fp, #-40]
	add	r3, r2, r3
	sub	r3, r3, #10
	cmp	r3, #25
	ldrls	pc, [pc, r3, asl #2]
	b	.L172
.L134:
	.word	.L145
	.word	.L144
	.word	.L143
	.word	.L172
	.word	.L172
	.word	.L172
	.word	.L172
	.word	.L142
	.word	.L172
	.word	.L141
	.word	.L140
	.word	.L172
	.word	.L172
	.word	.L172
	.word	.L172
	.word	.L139
	.word	.L138
	.word	.L172
	.word	.L137
	.word	.L172
	.word	.L172
	.word	.L172
	.word	.L172
	.word	.L136
	.word	.L135
	.word	.L133
.L145:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L146
.L147:
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	str	r3, [fp, #-12]
.L146:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L147
	b	.L148
.L144:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L149
.L150:
	ldr	r3, [fp, #-12]
	add	r2, r3, #2
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #3
	str	r3, [fp, #-12]
.L149:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L150
	b	.L148
.L143:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L151
.L152:
	ldr	r3, [fp, #-12]
	add	r2, r3, #2
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #4
	str	r3, [fp, #-12]
.L151:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L152
	b	.L148
.L142:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L153
.L154:
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L153:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L154
	b	.L148
.L141:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L155
.L156:
	ldr	r3, [fp, #-12]
	add	r2, r3, #2
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #3
	str	r3, [fp, #-12]
.L155:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L156
	b	.L148
.L140:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L157
.L158:
	ldr	r3, [fp, #-12]
	add	r2, r3, #2
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #3
	ldr	r2, [fp, #-16]
	ldrb	r2, [r2, #1]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #4
	str	r3, [fp, #-12]
.L157:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L158
	b	.L148
.L137:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L159
.L160:
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	ldr	r2, [fp, #-16]
	ldrb	r2, [r2, #1]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	ldr	r2, [fp, #-16]
	ldrb	r2, [r2, #2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #4
	str	r3, [fp, #-12]
.L159:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L160
	b	.L148
.L139:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L161
.L162:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	bl	compute_y
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L161:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L162
	b	.L148
.L138:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L163
.L164:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	bl	compute_y
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	str	r3, [fp, #-12]
.L163:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L164
	b	.L148
.L136:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L165
.L166:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	bl	compute_y
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #4
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L165:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L166
	b	.L148
.L135:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L167
.L168:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	bl	compute_y
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	ldr	r2, [fp, #-16]
	ldrb	r2, [r2, #3]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #4
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	str	r3, [fp, #-12]
.L167:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L168
	b	.L148
.L133:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L169
.L170:
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	ldr	r2, [fp, #-16]
	ldrb	r2, [r2, #1]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	ldr	r2, [fp, #-16]
	ldrb	r2, [r2, #2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r3, #4
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #3
	str	r3, [fp, #-12]
.L169:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L170
	b	.L148
.L172:
	ldr	r3, .L174
	mov	r2, #780
	ldr	r1, .L174+8
	ldr	r0, .L174+20
	bl	__assert_fail
.L148:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L131:
	ldr	r3, [fp, #4]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L171
	ldr	r0, [fp, #-32]
	bl	free
	ldr	r3, [fp, #-8]
.L127:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L175:
	.align	2
.L174:
	.word	__PRETTY_FUNCTION__.6885
	.word	751
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.size	convert_format, .-convert_format
	.global	__aeabi_i2f
	.global	__aeabi_f2d
	.global	__aeabi_d2f
	.global	__aeabi_fmul
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	ldr_to_hdr, %function
ldr_to_hdr:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-40]
	mul	r3, r2, r3
	ldr	r2, [fp, #-44]
	mul	r3, r2, r3
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L177
	ldr	r0, [fp, #-32]
	bl	free
	ldr	r0, .L186
	bl	e
	mov	r3, #0
	b	.L178
.L177:
	ldr	r3, [fp, #-44]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L179
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-20]
	b	.L180
.L179:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-20]
.L180:
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L181
.L185:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L182
.L183:
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-44]
	mul	r2, r3, r2
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r3, r0
	ldr	r1, .L186+4
	mov	r0, r3
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r4, r0
	mov	r5, r1
	ldr	r3, .L186+8
	ldr	r3, [r3]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	pow
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2f
	ldr	r3, .L186+12
	ldr	r1, [r3]	@ float
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-44]
	mul	r2, r3, r2
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-16]
	add	r4, r2, r3
	bl	__aeabi_fmul
	mov	r3, r0
	str	r3, [r4]	@ float
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L182:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L183
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-44]
	cmp	r2, r3
	bge	.L184
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-44]
	mul	r2, r3, r2
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	__aeabi_i2f
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-44]
	mul	r2, r3, r2
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-16]
	add	r4, r2, r3
	ldr	r1, .L186+4
	bl	__aeabi_fdiv
	mov	r3, r0
	str	r3, [r4]	@ float
.L184:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L181:
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-40]
	mul	r3, r2, r3
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	blt	.L185
	ldr	r0, [fp, #-32]
	bl	free
	ldr	r3, [fp, #-16]
.L178:
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L187:
	.align	2
.L186:
	.word	.LC9
	.word	1132396544
	.word	l2h_gamma
	.word	l2h_scale
	.size	ldr_to_hdr, .-ldr_to_hdr
	.global	__aeabi_fadd
	.global	__aeabi_fcmplt
	.global	__aeabi_fcmpgt
	.global	__aeabi_f2iz
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	hdr_to_ldr, %function
hdr_to_ldr:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	ldr	r2, [fp, #-48]
	mul	r3, r2, r3
	ldr	r2, [fp, #-52]
	mul	r3, r2, r3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L189
	ldr	r0, [fp, #-40]
	bl	free
	ldr	r0, .L210
	bl	e
	mov	r3, #0
	b	.L190
.L189:
	ldr	r3, [fp, #-52]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L191
	ldr	r3, [fp, #-52]
	str	r3, [fp, #-28]
	b	.L192
.L191:
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-28]
.L192:
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L193
.L205:
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L194
.L199:
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-52]
	mul	r2, r3, r2
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	ldr	r3, [r3]	@ float
	ldr	r2, .L210+4
	ldr	r2, [r2]	@ float
	mov	r1, r2
	mov	r0, r3
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r4, r0
	mov	r5, r1
	ldr	r3, .L210+8
	ldr	r3, [r3]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	pow
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2f
	mov	r3, r0
	ldr	r1, .L210+12
	mov	r0, r3
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r1, #1056964608
	mov	r0, r3
	bl	__aeabi_fadd
	mov	r3, r0
	str	r3, [fp, #-24]	@ float
	mov	r1, #0
	ldr	r0, [fp, #-24]	@ float
	bl	__aeabi_fcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L195
	mov	r3, #0
	str	r3, [fp, #-24]	@ float
.L195:
	ldr	r1, .L210+12
	ldr	r0, [fp, #-24]	@ float
	bl	__aeabi_fcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L197
	ldr	r3, .L210+12
	str	r3, [fp, #-24]	@ float
.L197:
	ldr	r0, [fp, #-24]	@ float
	bl	__aeabi_f2iz
	mov	r1, r0
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-52]
	mul	r2, r3, r2
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L194:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	blt	.L199
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-52]
	cmp	r2, r3
	bge	.L200
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-52]
	mul	r2, r3, r2
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	ldr	r3, [r3]	@ float
	ldr	r1, .L210+12
	mov	r0, r3
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r1, #1056964608
	mov	r0, r3
	bl	__aeabi_fadd
	mov	r3, r0
	str	r3, [fp, #-20]	@ float
	mov	r1, #0
	ldr	r0, [fp, #-20]	@ float
	bl	__aeabi_fcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L201
	mov	r3, #0
	str	r3, [fp, #-20]	@ float
.L201:
	ldr	r1, .L210+12
	ldr	r0, [fp, #-20]	@ float
	bl	__aeabi_fcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L203
	ldr	r3, .L210+12
	str	r3, [fp, #-20]	@ float
.L203:
	ldr	r0, [fp, #-20]	@ float
	bl	__aeabi_f2iz
	mov	r1, r0
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-52]
	mul	r2, r3, r2
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	and	r2, r1, #255
	strb	r2, [r3]
.L200:
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L193:
	ldr	r3, [fp, #-44]
	ldr	r2, [fp, #-48]
	mul	r3, r2, r3
	ldr	r2, [fp, #-36]
	cmp	r2, r3
	blt	.L205
	ldr	r0, [fp, #-40]
	bl	free
	ldr	r3, [fp, #-16]
.L190:
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L211:
	.align	2
.L210:
	.word	.LC9
	.word	h2l_scale_i
	.word	h2l_gamma_i
	.word	1132396544
	.size	hdr_to_ldr, .-hdr_to_ldr
	.section	.rodata
	.align	2
.LC11:
	.ascii	"bad code lengths\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	build_huffman, %function
build_huffman:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L213
.L216:
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L214
.L215:
	ldr	r3, [fp, #-32]
	and	r2, r3, #255
	ldr	r3, [fp, #-24]
	add	r1, r3, #1
	str	r1, [fp, #-24]
	add	r2, r2, #1
	and	r1, r2, #255
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3, #1280]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L214:
	ldr	r3, [fp, #-32]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	blt	.L215
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L213:
	ldr	r3, [fp, #-32]
	cmp	r3, #15
	ble	.L216
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	add	r3, r3, #1280
	mov	r2, #0
	strb	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L217
.L222:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-20]
	sub	r2, r2, r3
	ldr	r1, [fp, #-40]
	ldr	r3, [fp, #-28]
	add	r3, r3, #400
	add	r3, r3, #2
	lsl	r3, r3, #2
	add	r3, r1, r3
	str	r2, [r3, #4]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	add	r3, r3, #1280
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-28]
	cmp	r3, r2
	bne	.L218
	b	.L219
.L220:
	ldr	r2, [fp, #-20]
	add	r3, r2, #1
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-24]
	add	r1, r3, #1
	str	r1, [fp, #-24]
	lsl	r2, r2, #16
	lsr	r2, r2, #16
	ldr	r1, [fp, #-40]
	add	r3, r3, #256
	lsl	r3, r3, #1
	add	r3, r1, r3
	strh	r2, [r3]	@ movhi
.L219:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	add	r3, r3, #1280
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-28]
	cmp	r3, r2
	beq	.L220
	mov	r2, #1
	ldr	r3, [fp, #-28]
	lsl	r3, r2, r3
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	ble	.L218
	ldr	r0, .L228
	bl	e
	mov	r3, r0
	b	.L221
.L218:
	ldr	r3, [fp, #-28]
	rsb	r3, r3, #16
	ldr	r2, [fp, #-20]
	lsl	r3, r2, r3
	mov	r1, r3
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-28]
	add	r3, r3, #384
	lsl	r3, r3, #2
	add	r3, r2, r3
	str	r1, [r3, #4]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #1
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L217:
	ldr	r3, [fp, #-28]
	cmp	r3, #16
	ble	.L222
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-28]
	add	r3, r3, #384
	lsl	r3, r3, #2
	add	r3, r2, r3
	mvn	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-40]
	mov	r2, #512
	mov	r1, #255
	mov	r0, r3
	bl	memset
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L223
.L227:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	add	r3, r3, #1280
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #9
	bgt	.L224
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-32]
	add	r3, r3, #256
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	rsb	r3, r3, #9
	lsl	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	rsb	r3, r3, #9
	mov	r2, #1
	lsl	r3, r2, r3
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L225
.L226:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	ldr	r2, [fp, #-32]
	and	r1, r2, #255
	ldr	r2, [fp, #-40]
	strb	r1, [r2, r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L225:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	blt	.L226
.L224:
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L223:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	blt	.L227
	mov	r3, #1
.L221:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L229:
	.align	2
.L228:
	.word	.LC11
	.size	build_huffman, .-build_huffman
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	grow_buffer_unsafe, %function
grow_buffer_unsafe:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
.L235:
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldr	r3, [r3, #1696]
	cmp	r3, #0
	bne	.L231
	ldr	r3, [fp, #-16]
	mov	r0, r3
	bl	get8
	mov	r3, r0
	b	.L232
.L231:
	mov	r3, #0
.L232:
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #255
	bne	.L233
	ldr	r3, [fp, #-16]
	mov	r0, r3
	bl	get8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L233
	ldr	r3, [fp, #-8]
	and	r2, r3, #255
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	strb	r2, [r3, #1692]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	mov	r2, r3
	mov	r3, #1
	str	r3, [r2, #1696]
	b	.L230
.L233:
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldr	r3, [r3, #1684]
	lsl	r2, r3, #8
	ldr	r3, [fp, #-12]
	orr	r3, r2, r3
	ldr	r2, [fp, #-16]
	add	r2, r2, #12288
	str	r3, [r2, #1684]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	add	r3, r3, #8
	ldr	r2, [fp, #-16]
	add	r2, r2, #12288
	str	r3, [r2, #1688]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	cmp	r3, #24
	ble	.L235
.L230:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	grow_buffer_unsafe, .-grow_buffer_unsafe
	.data
	.align	2
	.type	bmask, %object
	.size	bmask, 68
bmask:
	.word	0
	.word	1
	.word	3
	.word	7
	.word	15
	.word	31
	.word	63
	.word	127
	.word	255
	.word	511
	.word	1023
	.word	2047
	.word	4095
	.word	8191
	.word	16383
	.word	32767
	.word	65535
	.section	.rodata
	.align	2
.LC12:
	.ascii	"(((j->code_buffer) >> (j->code_bits - h->size[c])) "
	.ascii	"& bmask[h->size[c]]) == h->code[c]\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode, %function
decode:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	cmp	r3, #15
	bgt	.L237
	ldr	r0, [fp, #-24]
	bl	grow_buffer_unsafe
.L237:
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r2, [r3, #1684]
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	sub	r3, r3, #9
	lsr	r3, r2, r3
	lsl	r3, r3, #23
	lsr	r3, r3, #23
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #254
	bgt	.L238
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	add	r3, r3, #1280
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	cmp	r2, r3
	ble	.L239
	mvn	r3, #0
	b	.L240
.L239:
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	ldr	r1, [fp, #-28]
	ldr	r2, [fp, #-12]
	add	r2, r1, r2
	add	r2, r2, #1280
	ldrb	r2, [r2]	@ zero_extendqisi2
	sub	r3, r3, r2
	ldr	r2, [fp, #-24]
	add	r2, r2, #12288
	str	r3, [r2, #1688]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	add	r3, r3, #1024
	ldrb	r3, [r3]	@ zero_extendqisi2
	b	.L240
.L238:
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	cmp	r3, #15
	bgt	.L241
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r2, [r3, #1684]
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	rsb	r3, r3, #16
	lsl	r3, r2, r3
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	str	r3, [fp, #-16]
	b	.L242
.L241:
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r2, [r3, #1684]
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	sub	r3, r3, #16
	lsr	r3, r2, r3
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	str	r3, [fp, #-16]
.L242:
	mov	r3, #10
	str	r3, [fp, #-12]
.L245:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-12]
	add	r3, r3, #384
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	bcc	.L250
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	b	.L245
.L250:
	nop
	ldr	r3, [fp, #-12]
	cmp	r3, #17
	bne	.L246
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	sub	r3, r3, #16
	ldr	r2, [fp, #-24]
	add	r2, r2, #12288
	str	r3, [r2, #1688]
	mvn	r3, #0
	b	.L240
.L246:
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	ble	.L247
	mvn	r3, #0
	b	.L240
.L247:
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r2, [r3, #1684]
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r1, [r3, #1688]
	ldr	r3, [fp, #-12]
	sub	r3, r1, r3
	lsr	r2, r2, r3
	ldr	r1, .L251
	ldr	r3, [fp, #-12]
	ldr	r3, [r1, r3, lsl #2]
	and	r2, r2, r3
	ldr	r1, [fp, #-28]
	ldr	r3, [fp, #-12]
	add	r3, r3, #400
	add	r3, r3, #2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #4]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r2, [r3, #1684]
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	ldr	r0, [fp, #-28]
	ldr	r1, [fp, #-8]
	add	r1, r0, r1
	add	r1, r1, #1280
	ldrb	r1, [r1]	@ zero_extendqisi2
	sub	r3, r3, r1
	lsr	r2, r2, r3
	ldr	r1, [fp, #-28]
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	add	r3, r3, #1280
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, .L251
	ldr	r3, [r3, r1, lsl #2]
	and	r3, r3, r2
	ldr	r1, [fp, #-28]
	ldr	r2, [fp, #-8]
	add	r2, r2, #256
	lsl	r2, r2, #1
	add	r2, r1, r2
	ldrh	r2, [r2]
	cmp	r3, r2
	beq	.L248
	ldr	r3, .L251+4
	ldr	r2, .L251+8
	ldr	r1, .L251+12
	ldr	r0, .L251+16
	bl	__assert_fail
.L248:
	ldr	r3, [fp, #-24]
	add	r3, r3, #12288
	ldr	r2, [r3, #1688]
	ldr	r3, [fp, #-12]
	sub	r3, r2, r3
	ldr	r2, [fp, #-24]
	add	r2, r2, #12288
	str	r3, [r2, #1688]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #1024
	ldrb	r3, [r3]	@ zero_extendqisi2
.L240:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L252:
	.align	2
.L251:
	.word	bmask
	.word	__PRETTY_FUNCTION__.7065
	.word	1018
	.word	.LC7
	.word	.LC12
	.size	decode, .-decode
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	extend_receive, %function
extend_receive:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-20]
	sub	r3, r3, #1
	mov	r2, #1
	lsl	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	ble	.L254
	ldr	r0, [fp, #-16]
	bl	grow_buffer_unsafe
.L254:
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldr	r2, [r3, #1684]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldr	r1, [r3, #1688]
	ldr	r3, [fp, #-20]
	sub	r3, r1, r3
	lsr	r2, r2, r3
	ldr	r1, .L257
	ldr	r3, [fp, #-20]
	ldr	r3, [r1, r3, lsl #2]
	and	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldr	r2, [r3, #1688]
	ldr	r3, [fp, #-20]
	sub	r3, r2, r3
	ldr	r2, [fp, #-16]
	add	r2, r2, #12288
	str	r3, [r2, #1688]
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	bcs	.L255
	mvn	r2, #0
	ldr	r3, [fp, #-20]
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #1
	b	.L256
.L255:
	ldr	r3, [fp, #-8]
.L256:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L258:
	.align	2
.L257:
	.word	bmask
	.size	extend_receive, .-extend_receive
	.data
	.align	2
	.type	dezigzag, %object
	.size	dezigzag, 79
dezigzag:
	.ascii	"\000\001\010\020\011\002\003\012\021\030 \031\022\013"
	.ascii	"\004\005\014\023\032!(0)\"\033\024\015\006\007\016\025"
	.ascii	"\034#*1892+$\035\026\017\027\036%,3:;4-&\037'.5<=6/"
	.ascii	"7>????????????????"
	.section	.rodata
	.align	2
.LC13:
	.ascii	"bad huffman code\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_block, %function
decode_block:
	@ args = 4, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-40]
	bl	decode
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bge	.L260
	ldr	r0, .L271
	bl	e
	mov	r3, r0
	b	.L261
.L260:
	mov	r2, #128
	mov	r1, #0
	ldr	r0, [fp, #-44]
	bl	memset
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L262
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-40]
	bl	extend_receive
	mov	r3, r0
	b	.L263
.L262:
	mov	r3, #0
.L263:
	str	r3, [fp, #-24]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #4]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #12
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #4]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #12
	ldr	r2, [fp, #-20]
	str	r2, [r3]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #16
	asr	r2, r3, #16
	ldr	r3, [fp, #-44]
	strh	r2, [r3]	@ movhi
	mov	r3, #1
	str	r3, [fp, #-32]
.L269:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-40]
	bl	decode
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bge	.L264
	ldr	r0, .L271
	bl	e
	mov	r3, r0
	b	.L261
.L264:
	ldr	r3, [fp, #-16]
	and	r3, r3, #15
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	asr	r3, r3, #4
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L265
	ldr	r3, [fp, #-16]
	cmp	r3, #240
	bne	.L270
	ldr	r3, [fp, #-32]
	add	r3, r3, #16
	str	r3, [fp, #-32]
	b	.L268
.L265:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-40]
	bl	extend_receive
	mov	r1, r0
	ldr	r3, [fp, #-32]
	add	r2, r3, #1
	str	r2, [fp, #-32]
	ldr	r2, .L271+4
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	lsl	r2, r1, #16
	asr	r2, r2, #16
	strh	r2, [r3]	@ movhi
.L268:
	ldr	r3, [fp, #-32]
	cmp	r3, #63
	ble	.L269
	b	.L267
.L270:
	nop
.L267:
	mov	r3, #1
.L261:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L272:
	.align	2
.L271:
	.word	.LC13
	.word	dezigzag
	.size	decode_block, .-decode_block
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	clamp, %function
clamp:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #128
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #255
	bls	.L274
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L275
	mov	r3, #0
	b	.L276
.L275:
	ldr	r3, [fp, #-8]
	cmp	r3, #255
	ble	.L274
	mov	r3, #255
	b	.L276
.L274:
	ldr	r3, [fp, #-8]
	and	r3, r3, #255
.L276:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	clamp, .-clamp
	.section	.rodata
	.align	2
.LC14:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	idct_block, %function
idct_block:
	@ args = 0, pretend = 0, frame = 408
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #412
	str	r0, [fp, #-408]
	str	r1, [fp, #-412]
	str	r2, [fp, #-416]
	str	r3, [fp, #-420]
	ldr	r3, .L285
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	sub	r3, fp, #272
	str	r3, [fp, #-396]
	ldr	r3, [fp, #-420]
	str	r3, [fp, #-388]
	ldr	r3, [fp, #-416]
	str	r3, [fp, #-384]
	mov	r3, #0
	str	r3, [fp, #-400]
	b	.L278
.L281:
	ldr	r3, [fp, #-384]
	add	r3, r3, #16
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L279
	ldr	r3, [fp, #-384]
	add	r3, r3, #32
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L279
	ldr	r3, [fp, #-384]
	add	r3, r3, #48
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L279
	ldr	r3, [fp, #-384]
	add	r3, r3, #64
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L279
	ldr	r3, [fp, #-384]
	add	r3, r3, #80
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L279
	ldr	r3, [fp, #-384]
	add	r3, r3, #96
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L279
	ldr	r3, [fp, #-384]
	add	r3, r3, #112
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L279
	ldr	r3, [fp, #-384]
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-388]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mul	r3, r2, r3
	lsl	r3, r3, #2
	str	r3, [fp, #-328]
	ldr	r3, [fp, #-396]
	add	r3, r3, #224
	ldr	r2, [fp, #-328]
	str	r2, [r3]
	ldr	r2, [fp, #-396]
	add	r2, r2, #192
	ldr	r3, [r3]
	str	r3, [r2]
	ldr	r3, [fp, #-396]
	add	r3, r3, #160
	ldr	r2, [r2]
	str	r2, [r3]
	ldr	r2, [fp, #-396]
	add	r2, r2, #128
	ldr	r3, [r3]
	str	r3, [r2]
	ldr	r3, [fp, #-396]
	add	r3, r3, #96
	ldr	r2, [r2]
	str	r2, [r3]
	ldr	r2, [fp, #-396]
	add	r2, r2, #64
	ldr	r3, [r3]
	str	r3, [r2]
	ldr	r3, [fp, #-396]
	add	r3, r3, #32
	ldr	r2, [r2]
	str	r2, [r3]
	ldr	r2, [r3]
	ldr	r3, [fp, #-396]
	str	r2, [r3]
	b	.L280
.L279:
	ldr	r3, [fp, #-384]
	add	r3, r3, #32
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-388]
	add	r3, r3, #16
	ldrb	r3, [r3]	@ zero_extendqisi2
	mul	r3, r2, r3
	str	r3, [fp, #-324]
	ldr	r3, [fp, #-384]
	add	r3, r3, #96
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-388]
	add	r3, r3, #48
	ldrb	r3, [r3]	@ zero_extendqisi2
	mul	r3, r2, r3
	str	r3, [fp, #-320]
	ldr	r2, [fp, #-324]
	ldr	r3, [fp, #-320]
	add	r2, r2, r3
	mov	r3, r2
	lsl	r3, r3, #4
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r2
	str	r3, [fp, #-316]
	ldr	r3, [fp, #-320]
	ldr	r2, .L285+4
	mul	r3, r2, r3
	ldr	r2, [fp, #-316]
	add	r3, r2, r3
	str	r3, [fp, #-312]
	ldr	r2, [fp, #-324]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #5
	sub	r3, r3, r2
	lsl	r2, r3, #5
	add	r3, r3, r2
	ldr	r2, [fp, #-316]
	add	r3, r2, r3
	str	r3, [fp, #-308]
	ldr	r3, [fp, #-384]
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-388]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mul	r3, r2, r3
	str	r3, [fp, #-324]
	ldr	r3, [fp, #-384]
	add	r3, r3, #64
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-388]
	add	r3, r3, #32
	ldrb	r3, [r3]	@ zero_extendqisi2
	mul	r3, r2, r3
	str	r3, [fp, #-320]
	ldr	r2, [fp, #-324]
	ldr	r3, [fp, #-320]
	add	r3, r2, r3
	lsl	r3, r3, #12
	str	r3, [fp, #-304]
	ldr	r2, [fp, #-324]
	ldr	r3, [fp, #-320]
	sub	r3, r2, r3
	lsl	r3, r3, #12
	str	r3, [fp, #-300]
	ldr	r2, [fp, #-304]
	ldr	r3, [fp, #-308]
	add	r3, r2, r3
	str	r3, [fp, #-296]
	ldr	r2, [fp, #-304]
	ldr	r3, [fp, #-308]
	sub	r3, r2, r3
	str	r3, [fp, #-292]
	ldr	r2, [fp, #-300]
	ldr	r3, [fp, #-312]
	add	r3, r2, r3
	str	r3, [fp, #-288]
	ldr	r2, [fp, #-300]
	ldr	r3, [fp, #-312]
	sub	r3, r2, r3
	str	r3, [fp, #-284]
	ldr	r3, [fp, #-384]
	add	r3, r3, #112
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-388]
	add	r3, r3, #56
	ldrb	r3, [r3]	@ zero_extendqisi2
	mul	r3, r2, r3
	str	r3, [fp, #-304]
	ldr	r3, [fp, #-384]
	add	r3, r3, #80
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-388]
	add	r3, r3, #40
	ldrb	r3, [r3]	@ zero_extendqisi2
	mul	r3, r2, r3
	str	r3, [fp, #-300]
	ldr	r3, [fp, #-384]
	add	r3, r3, #48
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-388]
	add	r3, r3, #24
	ldrb	r3, [r3]	@ zero_extendqisi2
	mul	r3, r2, r3
	str	r3, [fp, #-312]
	ldr	r3, [fp, #-384]
	add	r3, r3, #16
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-388]
	add	r3, r3, #8
	ldrb	r3, [r3]	@ zero_extendqisi2
	mul	r3, r2, r3
	str	r3, [fp, #-308]
	ldr	r2, [fp, #-304]
	ldr	r3, [fp, #-312]
	add	r3, r2, r3
	str	r3, [fp, #-320]
	ldr	r2, [fp, #-300]
	ldr	r3, [fp, #-308]
	add	r3, r2, r3
	str	r3, [fp, #-280]
	ldr	r2, [fp, #-304]
	ldr	r3, [fp, #-308]
	add	r3, r2, r3
	str	r3, [fp, #-316]
	ldr	r2, [fp, #-300]
	ldr	r3, [fp, #-312]
	add	r3, r2, r3
	str	r3, [fp, #-324]
	ldr	r2, [fp, #-320]
	ldr	r3, [fp, #-280]
	add	r1, r2, r3
	mov	r2, r1
	lsl	r2, r2, #2
	add	r2, r2, r1
	lsl	r3, r2, #4
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r1
	lsl	r3, r3, #4
	str	r3, [fp, #-276]
	ldr	r2, [fp, #-304]
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r2
	lsl	r1, r3, #4
	add	r3, r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r2
	str	r3, [fp, #-304]
	ldr	r3, [fp, #-300]
	ldr	r2, .L285+8
	mul	r3, r2, r3
	str	r3, [fp, #-300]
	ldr	r3, [fp, #-312]
	ldr	r2, .L285+12
	mul	r3, r2, r3
	str	r3, [fp, #-312]
	ldr	r2, [fp, #-308]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #9
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	str	r3, [fp, #-308]
	ldr	r3, [fp, #-316]
	ldr	r2, .L285+16
	mul	r3, r2, r3
	ldr	r2, [fp, #-276]
	add	r3, r2, r3
	str	r3, [fp, #-316]
	ldr	r3, [fp, #-324]
	mvn	r2, #10496
	mul	r3, r2, r3
	ldr	r2, [fp, #-276]
	add	r3, r2, r3
	str	r3, [fp, #-324]
	ldr	r3, [fp, #-320]
	ldr	r2, .L285+20
	mul	r3, r2, r3
	str	r3, [fp, #-320]
	ldr	r3, [fp, #-280]
	ldr	r2, .L285+24
	mul	r3, r2, r3
	str	r3, [fp, #-280]
	ldr	r2, [fp, #-316]
	ldr	r3, [fp, #-280]
	add	r3, r2, r3
	ldr	r2, [fp, #-308]
	add	r3, r2, r3
	str	r3, [fp, #-308]
	ldr	r2, [fp, #-324]
	ldr	r3, [fp, #-320]
	add	r3, r2, r3
	ldr	r2, [fp, #-312]
	add	r3, r2, r3
	str	r3, [fp, #-312]
	ldr	r2, [fp, #-324]
	ldr	r3, [fp, #-280]
	add	r3, r2, r3
	ldr	r2, [fp, #-300]
	add	r3, r2, r3
	str	r3, [fp, #-300]
	ldr	r2, [fp, #-316]
	ldr	r3, [fp, #-320]
	add	r3, r2, r3
	ldr	r2, [fp, #-304]
	add	r3, r2, r3
	str	r3, [fp, #-304]
	ldr	r3, [fp, #-296]
	add	r3, r3, #512
	str	r3, [fp, #-296]
	ldr	r3, [fp, #-288]
	add	r3, r3, #512
	str	r3, [fp, #-288]
	ldr	r3, [fp, #-284]
	add	r3, r3, #512
	str	r3, [fp, #-284]
	ldr	r3, [fp, #-292]
	add	r3, r3, #512
	str	r3, [fp, #-292]
	ldr	r2, [fp, #-296]
	ldr	r3, [fp, #-308]
	add	r3, r2, r3
	asr	r2, r3, #10
	ldr	r3, [fp, #-396]
	str	r2, [r3]
	ldr	r2, [fp, #-296]
	ldr	r3, [fp, #-308]
	sub	r2, r2, r3
	ldr	r3, [fp, #-396]
	add	r3, r3, #224
	asr	r2, r2, #10
	str	r2, [r3]
	ldr	r2, [fp, #-288]
	ldr	r3, [fp, #-312]
	add	r2, r2, r3
	ldr	r3, [fp, #-396]
	add	r3, r3, #32
	asr	r2, r2, #10
	str	r2, [r3]
	ldr	r2, [fp, #-288]
	ldr	r3, [fp, #-312]
	sub	r2, r2, r3
	ldr	r3, [fp, #-396]
	add	r3, r3, #192
	asr	r2, r2, #10
	str	r2, [r3]
	ldr	r2, [fp, #-284]
	ldr	r3, [fp, #-300]
	add	r2, r2, r3
	ldr	r3, [fp, #-396]
	add	r3, r3, #64
	asr	r2, r2, #10
	str	r2, [r3]
	ldr	r2, [fp, #-284]
	ldr	r3, [fp, #-300]
	sub	r2, r2, r3
	ldr	r3, [fp, #-396]
	add	r3, r3, #160
	asr	r2, r2, #10
	str	r2, [r3]
	ldr	r2, [fp, #-292]
	ldr	r3, [fp, #-304]
	add	r2, r2, r3
	ldr	r3, [fp, #-396]
	add	r3, r3, #96
	asr	r2, r2, #10
	str	r2, [r3]
	ldr	r2, [fp, #-292]
	ldr	r3, [fp, #-304]
	sub	r2, r2, r3
	ldr	r3, [fp, #-396]
	add	r3, r3, #128
	asr	r2, r2, #10
	str	r2, [r3]
.L280:
	ldr	r3, [fp, #-400]
	add	r3, r3, #1
	str	r3, [fp, #-400]
	ldr	r3, [fp, #-384]
	add	r3, r3, #2
	str	r3, [fp, #-384]
	ldr	r3, [fp, #-388]
	add	r3, r3, #1
	str	r3, [fp, #-388]
	ldr	r3, [fp, #-396]
	add	r3, r3, #4
	str	r3, [fp, #-396]
.L278:
	ldr	r3, [fp, #-400]
	cmp	r3, #7
	ble	.L281
	mov	r3, #0
	str	r3, [fp, #-400]
	sub	r3, fp, #272
	str	r3, [fp, #-396]
	ldr	r3, [fp, #-408]
	str	r3, [fp, #-392]
	b	.L282
.L283:
	ldr	r3, [fp, #-396]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-380]
	ldr	r3, [fp, #-396]
	ldr	r3, [r3, #24]
	str	r3, [fp, #-376]
	ldr	r2, [fp, #-380]
	ldr	r3, [fp, #-376]
	add	r2, r2, r3
	mov	r3, r2
	lsl	r3, r3, #4
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r2
	str	r3, [fp, #-372]
	ldr	r3, [fp, #-376]
	ldr	r2, .L285+4
	mul	r3, r2, r3
	ldr	r2, [fp, #-372]
	add	r3, r2, r3
	str	r3, [fp, #-368]
	ldr	r2, [fp, #-380]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #5
	sub	r3, r3, r2
	lsl	r2, r3, #5
	add	r3, r3, r2
	ldr	r2, [fp, #-372]
	add	r3, r2, r3
	str	r3, [fp, #-364]
	ldr	r3, [fp, #-396]
	ldr	r3, [r3]
	str	r3, [fp, #-380]
	ldr	r3, [fp, #-396]
	ldr	r3, [r3, #16]
	str	r3, [fp, #-376]
	ldr	r2, [fp, #-380]
	ldr	r3, [fp, #-376]
	add	r3, r2, r3
	lsl	r3, r3, #12
	str	r3, [fp, #-360]
	ldr	r2, [fp, #-380]
	ldr	r3, [fp, #-376]
	sub	r3, r2, r3
	lsl	r3, r3, #12
	str	r3, [fp, #-356]
	ldr	r2, [fp, #-360]
	ldr	r3, [fp, #-364]
	add	r3, r2, r3
	str	r3, [fp, #-352]
	ldr	r2, [fp, #-360]
	ldr	r3, [fp, #-364]
	sub	r3, r2, r3
	str	r3, [fp, #-348]
	ldr	r2, [fp, #-356]
	ldr	r3, [fp, #-368]
	add	r3, r2, r3
	str	r3, [fp, #-344]
	ldr	r2, [fp, #-356]
	ldr	r3, [fp, #-368]
	sub	r3, r2, r3
	str	r3, [fp, #-340]
	ldr	r3, [fp, #-396]
	ldr	r3, [r3, #28]
	str	r3, [fp, #-360]
	ldr	r3, [fp, #-396]
	ldr	r3, [r3, #20]
	str	r3, [fp, #-356]
	ldr	r3, [fp, #-396]
	ldr	r3, [r3, #12]
	str	r3, [fp, #-368]
	ldr	r3, [fp, #-396]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-364]
	ldr	r2, [fp, #-360]
	ldr	r3, [fp, #-368]
	add	r3, r2, r3
	str	r3, [fp, #-376]
	ldr	r2, [fp, #-356]
	ldr	r3, [fp, #-364]
	add	r3, r2, r3
	str	r3, [fp, #-336]
	ldr	r2, [fp, #-360]
	ldr	r3, [fp, #-364]
	add	r3, r2, r3
	str	r3, [fp, #-372]
	ldr	r2, [fp, #-356]
	ldr	r3, [fp, #-368]
	add	r3, r2, r3
	str	r3, [fp, #-380]
	ldr	r2, [fp, #-376]
	ldr	r3, [fp, #-336]
	add	r1, r2, r3
	mov	r2, r1
	lsl	r2, r2, #2
	add	r2, r2, r1
	lsl	r3, r2, #4
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r1
	lsl	r3, r3, #4
	str	r3, [fp, #-332]
	ldr	r2, [fp, #-360]
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r2
	lsl	r1, r3, #4
	add	r3, r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r2
	str	r3, [fp, #-360]
	ldr	r3, [fp, #-356]
	ldr	r2, .L285+8
	mul	r3, r2, r3
	str	r3, [fp, #-356]
	ldr	r3, [fp, #-368]
	ldr	r2, .L285+12
	mul	r3, r2, r3
	str	r3, [fp, #-368]
	ldr	r2, [fp, #-364]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #9
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	str	r3, [fp, #-364]
	ldr	r3, [fp, #-372]
	ldr	r2, .L285+16
	mul	r3, r2, r3
	ldr	r2, [fp, #-332]
	add	r3, r2, r3
	str	r3, [fp, #-372]
	ldr	r3, [fp, #-380]
	mvn	r2, #10496
	mul	r3, r2, r3
	ldr	r2, [fp, #-332]
	add	r3, r2, r3
	str	r3, [fp, #-380]
	ldr	r3, [fp, #-376]
	ldr	r2, .L285+20
	mul	r3, r2, r3
	str	r3, [fp, #-376]
	ldr	r3, [fp, #-336]
	ldr	r2, .L285+24
	mul	r3, r2, r3
	str	r3, [fp, #-336]
	ldr	r2, [fp, #-372]
	ldr	r3, [fp, #-336]
	add	r3, r2, r3
	ldr	r2, [fp, #-364]
	add	r3, r2, r3
	str	r3, [fp, #-364]
	ldr	r2, [fp, #-380]
	ldr	r3, [fp, #-376]
	add	r3, r2, r3
	ldr	r2, [fp, #-368]
	add	r3, r2, r3
	str	r3, [fp, #-368]
	ldr	r2, [fp, #-380]
	ldr	r3, [fp, #-336]
	add	r3, r2, r3
	ldr	r2, [fp, #-356]
	add	r3, r2, r3
	str	r3, [fp, #-356]
	ldr	r2, [fp, #-372]
	ldr	r3, [fp, #-376]
	add	r3, r2, r3
	ldr	r2, [fp, #-360]
	add	r3, r2, r3
	str	r3, [fp, #-360]
	ldr	r3, [fp, #-352]
	add	r3, r3, #65536
	str	r3, [fp, #-352]
	ldr	r3, [fp, #-344]
	add	r3, r3, #65536
	str	r3, [fp, #-344]
	ldr	r3, [fp, #-340]
	add	r3, r3, #65536
	str	r3, [fp, #-340]
	ldr	r3, [fp, #-348]
	add	r3, r3, #65536
	str	r3, [fp, #-348]
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-364]
	add	r3, r2, r3
	asr	r3, r3, #17
	mov	r0, r3
	bl	clamp
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-392]
	strb	r2, [r3]
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-364]
	sub	r3, r2, r3
	asr	r2, r3, #17
	ldr	r3, [fp, #-392]
	add	r4, r3, #7
	mov	r0, r2
	bl	clamp
	mov	r3, r0
	strb	r3, [r4]
	ldr	r2, [fp, #-344]
	ldr	r3, [fp, #-368]
	add	r3, r2, r3
	asr	r2, r3, #17
	ldr	r3, [fp, #-392]
	add	r4, r3, #1
	mov	r0, r2
	bl	clamp
	mov	r3, r0
	strb	r3, [r4]
	ldr	r2, [fp, #-344]
	ldr	r3, [fp, #-368]
	sub	r3, r2, r3
	asr	r2, r3, #17
	ldr	r3, [fp, #-392]
	add	r4, r3, #6
	mov	r0, r2
	bl	clamp
	mov	r3, r0
	strb	r3, [r4]
	ldr	r2, [fp, #-340]
	ldr	r3, [fp, #-356]
	add	r3, r2, r3
	asr	r2, r3, #17
	ldr	r3, [fp, #-392]
	add	r4, r3, #2
	mov	r0, r2
	bl	clamp
	mov	r3, r0
	strb	r3, [r4]
	ldr	r2, [fp, #-340]
	ldr	r3, [fp, #-356]
	sub	r3, r2, r3
	asr	r2, r3, #17
	ldr	r3, [fp, #-392]
	add	r4, r3, #5
	mov	r0, r2
	bl	clamp
	mov	r3, r0
	strb	r3, [r4]
	ldr	r2, [fp, #-348]
	ldr	r3, [fp, #-360]
	add	r3, r2, r3
	asr	r2, r3, #17
	ldr	r3, [fp, #-392]
	add	r4, r3, #3
	mov	r0, r2
	bl	clamp
	mov	r3, r0
	strb	r3, [r4]
	ldr	r2, [fp, #-348]
	ldr	r3, [fp, #-360]
	sub	r3, r2, r3
	asr	r2, r3, #17
	ldr	r3, [fp, #-392]
	add	r4, r3, #4
	mov	r0, r2
	bl	clamp
	mov	r3, r0
	strb	r3, [r4]
	ldr	r3, [fp, #-400]
	add	r3, r3, #1
	str	r3, [fp, #-400]
	ldr	r3, [fp, #-396]
	add	r3, r3, #32
	str	r3, [fp, #-396]
	ldr	r3, [fp, #-412]
	ldr	r2, [fp, #-392]
	add	r3, r2, r3
	str	r3, [fp, #-392]
.L282:
	ldr	r3, [fp, #-400]
	cmp	r3, #7
	ble	.L283
	nop
	ldr	r3, .L285
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L284
	bl	__stack_chk_fail
.L284:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L286:
	.align	2
.L285:
	.word	.LC14
	.word	-7567
	.word	8410
	.word	12586
	.word	-3685
	.word	-8034
	.word	-1597
	.size	idct_block, .-idct_block
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_marker, %function
get_marker:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldrb	r3, [r3, #1692]	@ zero_extendqisi2
	cmp	r3, #255
	beq	.L288
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	ldrb	r3, [r3, #1692]
	strb	r3, [fp, #-5]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	mvn	r2, #0
	strb	r2, [r3, #1692]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	b	.L289
.L288:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	bl	get8u
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #255
	beq	.L291
	mov	r3, #255
	b	.L289
.L292:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	bl	get8u
	mov	r3, r0
	strb	r3, [fp, #-5]
.L291:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #255
	beq	.L292
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
.L289:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_marker, .-get_marker
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset, %function
reset:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #12288
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #1688]
	ldr	r3, [fp, #-8]
	add	r3, r3, #12288
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #1684]
	ldr	r3, [fp, #-8]
	add	r3, r3, #12288
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #1696]
	ldr	r3, [fp, #-8]
	add	r3, r3, #12288
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #1596]
	ldr	r3, [fp, #-8]
	add	r3, r3, #12288
	ldr	r3, [r3, #1596]
	ldr	r2, [fp, #-8]
	add	r2, r2, #12288
	str	r3, [r2, #1540]
	ldr	r3, [fp, #-8]
	add	r3, r3, #12288
	ldr	r3, [r3, #1540]
	ldr	r2, [fp, #-8]
	add	r2, r2, #12288
	str	r3, [r2, #1484]
	ldr	r3, [fp, #-8]
	add	r3, r3, #12288
	mvn	r2, #0
	strb	r2, [r3, #1692]
	ldr	r3, [fp, #-8]
	add	r3, r3, #12288
	ldr	r3, [r3, #1720]
	cmp	r3, #0
	beq	.L294
	ldr	r3, [fp, #-8]
	add	r3, r3, #12288
	ldr	r3, [r3, #1720]
	b	.L295
.L294:
	mvn	r3, #-2147483648
.L295:
	ldr	r2, [fp, #-8]
	add	r2, r2, #12288
	str	r3, [r2, #1724]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	reset, .-reset
	.section	.rodata
	.align	2
.LC15:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_entropy_coded_data, %function
parse_entropy_coded_data:
	@ args = 0, pretend = 0, frame = 192
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #200
	str	r0, [fp, #-192]
	ldr	r3, .L327
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, [fp, #-192]
	bl	reset
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1700]
	cmp	r3, #1
	bne	.L297
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1704]
	str	r3, [fp, #-148]
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-148]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #16
	ldr	r3, [r3]
	add	r3, r3, #7
	asr	r3, r3, #3
	str	r3, [fp, #-144]
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-148]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #20
	ldr	r3, [r3]
	add	r3, r3, #7
	asr	r3, r3, #3
	str	r3, [fp, #-140]
	mov	r3, #0
	str	r3, [fp, #-184]
	b	.L298
.L307:
	mov	r3, #0
	str	r3, [fp, #-188]
	b	.L299
.L306:
	ldr	r3, [fp, #-192]
	add	r1, r3, #28
	ldr	r0, [fp, #-192]
	ldr	r2, [fp, #-148]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #4
	mov	r2, r3
	mov	r3, r2
	add	ip, r1, r3
	ldr	r3, [fp, #-192]
	add	r1, r3, #6720
	add	r1, r1, #28
	ldr	r0, [fp, #-192]
	ldr	r2, [fp, #-148]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #8
	ldr	r3, [r3]
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #4
	mov	r2, r3
	mov	r3, r2
	add	r2, r1, r3
	sub	r1, fp, #136
	ldr	r3, [fp, #-148]
	str	r3, [sp]
	mov	r3, r2
	mov	r2, ip
	ldr	r0, [fp, #-192]
	bl	decode_block
	mov	r3, r0
	cmp	r3, #0
	bne	.L300
	mov	r3, #0
	b	.L309
.L300:
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-148]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #32
	ldr	r1, [r3]
	ldr	r0, [fp, #-192]
	ldr	r2, [fp, #-148]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #24
	ldr	r3, [r3]
	ldr	r2, [fp, #-184]
	mul	r3, r2, r3
	lsl	r3, r3, #3
	mov	r2, r3
	ldr	r3, [fp, #-188]
	lsl	r3, r3, #3
	add	r3, r2, r3
	add	r0, r1, r3
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-148]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #24
	ldr	ip, [r3]
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-148]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	ldr	r3, [r3]
	lsl	r3, r3, #6
	add	r3, r3, #13440
	add	r3, r3, #24
	ldr	r2, [fp, #-192]
	add	r3, r2, r3
	add	r3, r3, #4
	sub	r2, fp, #136
	mov	r1, ip
	bl	idct_block
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1724]
	sub	r3, r3, #1
	ldr	r2, [fp, #-192]
	add	r2, r2, #12288
	str	r3, [r2, #1724]
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1724]
	cmp	r3, #0
	bgt	.L302
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	cmp	r3, #23
	bgt	.L303
	ldr	r0, [fp, #-192]
	bl	grow_buffer_unsafe
.L303:
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldrb	r3, [r3, #1692]	@ zero_extendqisi2
	cmp	r3, #207
	bls	.L304
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldrb	r3, [r3, #1692]	@ zero_extendqisi2
	cmp	r3, #215
	bls	.L305
.L304:
	mov	r3, #1
	b	.L309
.L305:
	ldr	r0, [fp, #-192]
	bl	reset
.L302:
	ldr	r3, [fp, #-188]
	add	r3, r3, #1
	str	r3, [fp, #-188]
.L299:
	ldr	r2, [fp, #-188]
	ldr	r3, [fp, #-144]
	cmp	r2, r3
	blt	.L306
	ldr	r3, [fp, #-184]
	add	r3, r3, #1
	str	r3, [fp, #-184]
.L298:
	ldr	r2, [fp, #-184]
	ldr	r3, [fp, #-140]
	cmp	r2, r3
	blt	.L307
	b	.L308
.L297:
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L310
.L325:
	mov	r3, #0
	str	r3, [fp, #-180]
	b	.L311
.L324:
	mov	r3, #0
	str	r3, [fp, #-172]
	b	.L312
.L319:
	ldr	r2, [fp, #-192]
	ldr	r3, [fp, #-172]
	add	r3, r3, #3488
	add	r3, r3, #10
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-160]
	mov	r3, #0
	str	r3, [fp, #-164]
	b	.L313
.L318:
	mov	r3, #0
	str	r3, [fp, #-168]
	b	.L314
.L317:
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	ldr	r3, [r3]
	ldr	r2, [fp, #-180]
	mul	r2, r3, r2
	ldr	r3, [fp, #-168]
	add	r3, r2, r3
	lsl	r3, r3, #3
	str	r3, [fp, #-156]
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	ldr	r3, [r3]
	ldr	r2, [fp, #-176]
	mul	r2, r3, r2
	ldr	r3, [fp, #-164]
	add	r3, r2, r3
	lsl	r3, r3, #3
	str	r3, [fp, #-152]
	ldr	r3, [fp, #-192]
	add	r1, r3, #28
	ldr	r0, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #4
	mov	r2, r3
	mov	r3, r2
	add	ip, r1, r3
	ldr	r3, [fp, #-192]
	add	r1, r3, #6720
	add	r1, r1, #28
	ldr	r0, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #8
	ldr	r3, [r3]
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #4
	mov	r2, r3
	mov	r3, r2
	add	r2, r1, r3
	sub	r1, fp, #136
	ldr	r3, [fp, #-160]
	str	r3, [sp]
	mov	r3, r2
	mov	r2, ip
	ldr	r0, [fp, #-192]
	bl	decode_block
	mov	r3, r0
	cmp	r3, #0
	bne	.L315
	mov	r3, #0
	b	.L309
.L315:
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #32
	ldr	r1, [r3]
	ldr	r0, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #24
	ldr	r3, [r3]
	ldr	r2, [fp, #-152]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-156]
	add	r3, r2, r3
	add	r0, r1, r3
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #24
	ldr	ip, [r3]
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	ldr	r3, [r3]
	lsl	r3, r3, #6
	add	r3, r3, #13440
	add	r3, r3, #24
	ldr	r2, [fp, #-192]
	add	r3, r2, r3
	add	r3, r3, #4
	sub	r2, fp, #136
	mov	r1, ip
	bl	idct_block
	ldr	r3, [fp, #-168]
	add	r3, r3, #1
	str	r3, [fp, #-168]
.L314:
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	ldr	r3, [r3]
	ldr	r2, [fp, #-168]
	cmp	r2, r3
	blt	.L317
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
.L313:
	ldr	r1, [fp, #-192]
	ldr	r2, [fp, #-160]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	ldr	r3, [r3]
	ldr	r2, [fp, #-164]
	cmp	r2, r3
	blt	.L318
	ldr	r3, [fp, #-172]
	add	r3, r3, #1
	str	r3, [fp, #-172]
.L312:
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1700]
	ldr	r2, [fp, #-172]
	cmp	r2, r3
	blt	.L319
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1724]
	sub	r3, r3, #1
	ldr	r2, [fp, #-192]
	add	r2, r2, #12288
	str	r3, [r2, #1724]
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1724]
	cmp	r3, #0
	bgt	.L320
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1688]
	cmp	r3, #23
	bgt	.L321
	ldr	r0, [fp, #-192]
	bl	grow_buffer_unsafe
.L321:
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldrb	r3, [r3, #1692]	@ zero_extendqisi2
	cmp	r3, #207
	bls	.L322
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldrb	r3, [r3, #1692]	@ zero_extendqisi2
	cmp	r3, #215
	bls	.L323
.L322:
	mov	r3, #1
	b	.L309
.L323:
	ldr	r0, [fp, #-192]
	bl	reset
.L320:
	ldr	r3, [fp, #-180]
	add	r3, r3, #1
	str	r3, [fp, #-180]
.L311:
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1444]
	ldr	r2, [fp, #-180]
	cmp	r2, r3
	blt	.L324
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L310:
	ldr	r3, [fp, #-192]
	add	r3, r3, #12288
	ldr	r3, [r3, #1448]
	ldr	r2, [fp, #-176]
	cmp	r2, r3
	blt	.L325
.L308:
	mov	r3, #1
.L309:
	ldr	r2, .L327
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L326
	bl	__stack_chk_fail
.L326:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L328:
	.align	2
.L327:
	.word	.LC15
	.size	parse_entropy_coded_data, .-parse_entropy_coded_data
	.section	.rodata
	.align	2
.LC16:
	.ascii	"expected marker\000"
	.align	2
.LC17:
	.ascii	"progressive jpeg\000"
	.align	2
.LC18:
	.ascii	"bad DRI len\000"
	.align	2
.LC19:
	.ascii	"bad DQT type\000"
	.align	2
.LC20:
	.ascii	"bad DQT table\000"
	.align	2
.LC21:
	.ascii	"bad DHT header\000"
	.align	2
.LC22:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	process_marker, %function
process_marker:
	@ args = 0, pretend = 0, frame = 120
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #124
	str	r0, [fp, #-128]
	str	r1, [fp, #-132]
	ldr	r3, .L362
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, [fp, #-132]
	cmp	r3, #221
	bgt	.L330
	ldr	r3, [fp, #-132]
	cmp	r3, #194
	blt	.L331
	ldr	r3, [fp, #-132]
	sub	r3, r3, #194
	cmp	r3, #27
	ldrls	pc, [pc, r3, asl #2]
	b	.L331
.L333:
	.word	.L336
	.word	.L331
	.word	.L335
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L334
	.word	.L331
	.word	.L332
.L330:
	ldr	r3, [fp, #-132]
	cmp	r3, #255
	bne	.L331
	ldr	r0, .L362+4
	bl	e
	mov	r3, r0
	b	.L337
.L336:
	ldr	r0, .L362+8
	bl	e
	mov	r3, r0
	b	.L337
.L332:
	ldr	r3, [fp, #-128]
	mov	r0, r3
	bl	get16
	mov	r3, r0
	cmp	r3, #4
	beq	.L338
	ldr	r0, .L362+12
	bl	e
	mov	r3, r0
	b	.L337
.L338:
	ldr	r3, [fp, #-128]
	mov	r0, r3
	bl	get16
	mov	r2, r0
	ldr	r3, [fp, #-128]
	add	r3, r3, #12288
	str	r2, [r3, #1720]
	mov	r3, #1
	b	.L337
.L334:
	ldr	r3, [fp, #-128]
	mov	r0, r3
	bl	get16
	mov	r3, r0
	sub	r3, r3, #2
	str	r3, [fp, #-124]
	b	.L339
.L344:
	ldr	r3, [fp, #-128]
	mov	r0, r3
	bl	get8
	str	r0, [fp, #-104]
	ldr	r3, [fp, #-104]
	asr	r3, r3, #4
	str	r3, [fp, #-100]
	ldr	r3, [fp, #-104]
	and	r3, r3, #15
	str	r3, [fp, #-96]
	ldr	r3, [fp, #-100]
	cmp	r3, #0
	beq	.L340
	ldr	r0, .L362+16
	bl	e
	mov	r3, r0
	b	.L337
.L340:
	ldr	r3, [fp, #-96]
	cmp	r3, #3
	ble	.L341
	ldr	r0, .L362+20
	bl	e
	mov	r3, r0
	b	.L337
.L341:
	mov	r3, #0
	str	r3, [fp, #-120]
	b	.L342
.L343:
	ldr	r2, [fp, #-128]
	ldr	r1, .L362+24
	ldr	r3, [fp, #-120]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r4, r3
	mov	r0, r2
	bl	get8u
	mov	r3, r0
	mov	r1, r3
	ldr	r2, [fp, #-128]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #6
	add	r3, r2, r3
	add	r3, r3, r4
	add	r3, r3, #13440
	add	r3, r3, #28
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-120]
	add	r3, r3, #1
	str	r3, [fp, #-120]
.L342:
	ldr	r3, [fp, #-120]
	cmp	r3, #63
	ble	.L343
	ldr	r3, [fp, #-124]
	sub	r3, r3, #65
	str	r3, [fp, #-124]
.L339:
	ldr	r3, [fp, #-124]
	cmp	r3, #0
	bgt	.L344
	ldr	r3, [fp, #-124]
	cmp	r3, #0
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	b	.L337
.L335:
	ldr	r3, [fp, #-128]
	mov	r0, r3
	bl	get16
	mov	r3, r0
	sub	r3, r3, #2
	str	r3, [fp, #-124]
	b	.L345
.L357:
	mov	r3, #0
	str	r3, [fp, #-108]
	ldr	r3, [fp, #-128]
	mov	r0, r3
	bl	get8
	str	r0, [fp, #-92]
	ldr	r3, [fp, #-92]
	asr	r3, r3, #4
	str	r3, [fp, #-88]
	ldr	r3, [fp, #-92]
	and	r3, r3, #15
	str	r3, [fp, #-84]
	ldr	r3, [fp, #-88]
	cmp	r3, #1
	bgt	.L346
	ldr	r3, [fp, #-84]
	cmp	r3, #3
	ble	.L347
.L346:
	ldr	r0, .L362+28
	bl	e
	mov	r3, r0
	b	.L337
.L347:
	mov	r3, #0
	str	r3, [fp, #-112]
	b	.L349
.L350:
	ldr	r3, [fp, #-128]
	mov	r0, r3
	bl	get8
	mov	r2, r0
	ldr	r3, [fp, #-112]
	lsl	r3, r3, #2
	sub	r1, fp, #12
	add	r3, r1, r3
	str	r2, [r3, #-68]
	ldr	r3, [fp, #-112]
	lsl	r3, r3, #2
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r3, [r3, #-68]
	ldr	r2, [fp, #-108]
	add	r3, r2, r3
	str	r3, [fp, #-108]
	ldr	r3, [fp, #-112]
	add	r3, r3, #1
	str	r3, [fp, #-112]
.L349:
	ldr	r3, [fp, #-112]
	cmp	r3, #15
	ble	.L350
	ldr	r3, [fp, #-124]
	sub	r3, r3, #17
	str	r3, [fp, #-124]
	ldr	r3, [fp, #-88]
	cmp	r3, #0
	bne	.L351
	ldr	r3, [fp, #-128]
	add	r1, r3, #28
	ldr	r2, [fp, #-84]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #4
	mov	r2, r3
	mov	r3, r2
	add	r3, r1, r3
	sub	r2, fp, #80
	mov	r1, r2
	mov	r0, r3
	bl	build_huffman
	mov	r3, r0
	cmp	r3, #0
	bne	.L352
	mov	r3, #0
	b	.L337
.L352:
	ldr	r2, [fp, #-84]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #4
	mov	r2, r3
	add	r3, r2, #1040
	add	r3, r3, #8
	ldr	r2, [fp, #-128]
	add	r3, r2, r3
	add	r3, r3, #4
	str	r3, [fp, #-116]
	b	.L353
.L351:
	ldr	r3, [fp, #-128]
	add	r1, r3, #6720
	add	r1, r1, #28
	ldr	r2, [fp, #-84]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #4
	mov	r2, r3
	mov	r3, r2
	add	r3, r1, r3
	sub	r2, fp, #80
	mov	r1, r2
	mov	r0, r3
	bl	build_huffman
	mov	r3, r0
	cmp	r3, #0
	bne	.L354
	mov	r3, #0
	b	.L337
.L354:
	ldr	r2, [fp, #-84]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #4
	mov	r2, r3
	add	r3, r2, #7744
	add	r3, r3, #24
	ldr	r2, [fp, #-128]
	add	r3, r2, r3
	add	r3, r3, #4
	str	r3, [fp, #-116]
.L353:
	mov	r3, #0
	str	r3, [fp, #-112]
	b	.L355
.L356:
	ldr	r1, [fp, #-128]
	ldr	r3, [fp, #-112]
	ldr	r2, [fp, #-116]
	add	r4, r2, r3
	mov	r0, r1
	bl	get8u
	mov	r3, r0
	strb	r3, [r4]
	ldr	r3, [fp, #-112]
	add	r3, r3, #1
	str	r3, [fp, #-112]
.L355:
	ldr	r2, [fp, #-112]
	ldr	r3, [fp, #-108]
	cmp	r2, r3
	blt	.L356
	ldr	r2, [fp, #-124]
	ldr	r3, [fp, #-108]
	sub	r3, r2, r3
	str	r3, [fp, #-124]
.L345:
	ldr	r3, [fp, #-124]
	cmp	r3, #0
	bgt	.L357
	ldr	r3, [fp, #-124]
	cmp	r3, #0
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	b	.L337
.L331:
	ldr	r3, [fp, #-132]
	cmp	r3, #223
	ble	.L358
	ldr	r3, [fp, #-132]
	cmp	r3, #239
	ble	.L359
.L358:
	ldr	r3, [fp, #-132]
	cmp	r3, #254
	bne	.L360
.L359:
	ldr	r4, [fp, #-128]
	ldr	r3, [fp, #-128]
	mov	r0, r3
	bl	get16
	mov	r3, r0
	sub	r3, r3, #2
	mov	r1, r3
	mov	r0, r4
	bl	skip
	mov	r3, #1
	b	.L337
.L360:
	mov	r3, #0
.L337:
	ldr	r2, .L362
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L361
	bl	__stack_chk_fail
.L361:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L363:
	.align	2
.L362:
	.word	.LC22
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	dezigzag
	.word	.LC21
	.size	process_marker, .-process_marker
	.section	.rodata
	.align	2
.LC23:
	.ascii	"bad SOS component count\000"
	.align	2
.LC24:
	.ascii	"bad SOS len\000"
	.align	2
.LC25:
	.ascii	"bad DC huff\000"
	.align	2
.LC26:
	.ascii	"bad AC huff\000"
	.align	2
.LC27:
	.ascii	"bad SOS\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	process_scan_header, %function
process_scan_header:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	get16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	get8
	mov	r2, r0
	ldr	r3, [fp, #-32]
	add	r3, r3, #12288
	str	r2, [r3, #1700]
	ldr	r3, [fp, #-32]
	add	r3, r3, #12288
	ldr	r3, [r3, #1700]
	cmp	r3, #0
	ble	.L365
	ldr	r3, [fp, #-32]
	add	r3, r3, #12288
	ldr	r3, [r3, #1700]
	cmp	r3, #4
	bgt	.L365
	ldr	r3, [fp, #-32]
	add	r3, r3, #12288
	ldr	r2, [r3, #1700]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	cmp	r2, r3
	ble	.L366
.L365:
	ldr	r0, .L381
	bl	e
	mov	r3, r0
	b	.L367
.L366:
	ldr	r3, [fp, #-32]
	add	r3, r3, #12288
	ldr	r3, [r3, #1700]
	add	r3, r3, #3
	lsl	r3, r3, #1
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	beq	.L368
	ldr	r0, .L381+4
	bl	e
	mov	r3, r0
	b	.L367
.L368:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L369
.L377:
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	get8
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	get8
	str	r0, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L370
.L373:
	ldr	r1, [fp, #-32]
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #52
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	beq	.L380
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L370:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L373
	b	.L372
.L380:
	nop
.L372:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	bne	.L374
	mov	r3, #0
	b	.L367
.L374:
	ldr	r3, [fp, #-8]
	asr	r1, r3, #4
	ldr	r0, [fp, #-32]
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #4
	str	r1, [r3]
	ldr	r1, [fp, #-32]
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #4
	ldr	r3, [r3]
	cmp	r3, #3
	ble	.L375
	ldr	r0, .L381+8
	bl	e
	mov	r3, r0
	b	.L367
.L375:
	ldr	r3, [fp, #-8]
	and	r1, r3, #15
	ldr	r0, [fp, #-32]
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #8
	str	r1, [r3]
	ldr	r1, [fp, #-32]
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #8
	ldr	r3, [r3]
	cmp	r3, #3
	ble	.L376
	ldr	r0, .L381+12
	bl	e
	mov	r3, r0
	b	.L367
.L376:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	add	r3, r3, #3488
	add	r3, r3, #10
	ldr	r1, [fp, #-20]
	str	r1, [r2, r3, lsl #2]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L369:
	ldr	r3, [fp, #-32]
	add	r3, r3, #12288
	ldr	r3, [r3, #1700]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L377
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	get8
	mov	r3, r0
	cmp	r3, #0
	beq	.L378
	ldr	r0, .L381+16
	bl	e
	mov	r3, r0
	b	.L367
.L378:
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	get8
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	get8
	mov	r3, r0
	cmp	r3, #0
	beq	.L379
	ldr	r0, .L381+16
	bl	e
	mov	r3, r0
	b	.L367
.L379:
	mov	r3, #1
.L367:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L382:
	.align	2
.L381:
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.size	process_scan_header, .-process_scan_header
	.section	.rodata
	.align	2
.LC28:
	.ascii	"bad SOF len\000"
	.align	2
.LC29:
	.ascii	"only 8-bit\000"
	.align	2
.LC30:
	.ascii	"no header height\000"
	.align	2
.LC31:
	.ascii	"0 width\000"
	.align	2
.LC32:
	.ascii	"bad component count\000"
	.align	2
.LC33:
	.ascii	"bad component ID\000"
	.align	2
.LC34:
	.ascii	"bad H\000"
	.align	2
.LC35:
	.ascii	"bad V\000"
	.align	2
.LC36:
	.ascii	"bad TQ\000"
	.global	__aeabi_uidiv
	.align	2
.LC37:
	.ascii	"too large\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	process_frame_header, %function
process_frame_header:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-24]
	mov	r3, #1
	str	r3, [fp, #-32]
	mov	r3, #1
	str	r3, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	get16
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #10
	bgt	.L384
	ldr	r0, .L412
	bl	e
	mov	r3, r0
	b	.L385
.L384:
	ldr	r0, [fp, #-24]
	bl	get8
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #8
	beq	.L386
	ldr	r0, .L412+4
	bl	e
	mov	r3, r0
	b	.L385
.L386:
	ldr	r0, [fp, #-24]
	bl	get16
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L387
	ldr	r0, .L412+8
	bl	e
	mov	r3, r0
	b	.L385
.L387:
	ldr	r0, [fp, #-24]
	bl	get16
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L388
	ldr	r0, .L412+12
	bl	e
	mov	r3, r0
	b	.L385
.L388:
	ldr	r0, [fp, #-24]
	bl	get8
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #3
	beq	.L389
	ldr	r3, [fp, #-12]
	cmp	r3, #1
	beq	.L389
	ldr	r0, .L412+16
	bl	e
	mov	r3, r0
	b	.L385
.L389:
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #8]
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L390
.L391:
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #32
	mov	r2, #0
	str	r2, [r3]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #40
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L390:
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	blt	.L391
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	add	r3, r3, #8
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	beq	.L392
	ldr	r0, .L412
	bl	e
	mov	r3, r0
	b	.L385
.L392:
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L393
.L400:
	ldr	r0, [fp, #-24]
	bl	get8
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #52
	str	r0, [r3]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #52
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	cmp	r2, r3
	beq	.L394
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #52
	ldr	r3, [r3]
	ldr	r2, [fp, #-36]
	cmp	r2, r3
	beq	.L394
	ldr	r0, .L412+20
	bl	e
	mov	r3, r0
	b	.L385
.L394:
	ldr	r0, [fp, #-24]
	bl	get8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	asr	r1, r3, #4
	ldr	r0, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	str	r1, [r3]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L395
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	ldr	r3, [r3]
	cmp	r3, #4
	ble	.L396
.L395:
	ldr	r0, .L412+24
	bl	e
	mov	r3, r0
	b	.L385
.L396:
	ldr	r3, [fp, #-8]
	and	r1, r3, #15
	ldr	r0, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	str	r1, [r3]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L397
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	ldr	r3, [r3]
	cmp	r3, #4
	ble	.L398
.L397:
	ldr	r0, .L412+28
	bl	e
	mov	r3, r0
	b	.L385
.L398:
	ldr	r0, [fp, #-24]
	bl	get8
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	str	r0, [r3]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	ldr	r3, [r3]
	cmp	r3, #3
	ble	.L399
	ldr	r0, .L412+32
	bl	e
	mov	r3, r0
	b	.L385
.L399:
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L393:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-36]
	cmp	r2, r3
	blt	.L400
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	beq	.L401
	mov	r3, #1
	b	.L385
.L401:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #1073741824
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	cmp	r2, r3
	bcs	.L402
	ldr	r0, .L412+36
	bl	e
	mov	r3, r0
	b	.L385
.L402:
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L403
.L406:
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	cmp	r2, r3
	bge	.L404
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	ldr	r3, [r3]
	str	r3, [fp, #-32]
.L404:
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	bge	.L405
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	ldr	r3, [r3]
	str	r3, [fp, #-28]
.L405:
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L403:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-36]
	cmp	r2, r3
	blt	.L406
	ldr	r3, [fp, #-40]
	add	r3, r3, #12288
	mov	r2, r3
	ldr	r3, [fp, #-32]
	str	r3, [r2, #1436]
	ldr	r3, [fp, #-40]
	add	r3, r3, #12288
	mov	r2, r3
	ldr	r3, [fp, #-28]
	str	r3, [r2, #1440]
	ldr	r3, [fp, #-32]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-40]
	add	r2, r2, #12288
	str	r3, [r2, #1452]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-40]
	add	r2, r2, #12288
	str	r3, [r2, #1456]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [fp, #-40]
	add	r2, r2, #12288
	ldr	r2, [r2, #1452]
	add	r3, r3, r2
	sub	r2, r3, #1
	ldr	r3, [fp, #-40]
	add	r3, r3, #12288
	ldr	r3, [r3, #1452]
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-40]
	add	r3, r3, #12288
	str	r2, [r3, #1444]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-40]
	add	r2, r2, #12288
	ldr	r2, [r2, #1456]
	add	r3, r3, r2
	sub	r2, r3, #1
	ldr	r3, [fp, #-40]
	add	r3, r3, #12288
	ldr	r3, [r3, #1456]
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-40]
	add	r3, r3, #12288
	str	r2, [r3, #1448]
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L407
.L411:
	ldr	r3, [fp, #-24]
	ldr	r1, [r3]
	ldr	r0, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	ldr	r3, [r3]
	mul	r2, r3, r1
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	sub	r3, r3, #1
	ldr	r2, [fp, #-32]
	mov	r1, r2
	mov	r0, r3
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r0, r3
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #16
	str	r0, [r3]
	ldr	r3, [fp, #-24]
	ldr	r1, [r3, #4]
	ldr	r0, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	ldr	r3, [r3]
	mul	r2, r3, r1
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	sub	r3, r3, #1
	ldr	r2, [fp, #-28]
	mov	r1, r2
	mov	r0, r3
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r0, r3
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #20
	str	r0, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #12288
	ldr	r1, [r3, #1444]
	ldr	r0, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	ldr	r3, [r3]
	mul	r3, r1, r3
	lsl	r1, r3, #3
	ldr	r0, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #24
	str	r1, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #12288
	ldr	r1, [r3, #1448]
	ldr	r0, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	ldr	r3, [r3]
	mul	r3, r1, r3
	lsl	r1, r3, #3
	ldr	r0, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #28
	str	r1, [r3]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #24
	ldr	r1, [r3]
	ldr	r0, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #28
	ldr	r3, [r3]
	mul	r3, r1, r3
	add	r3, r3, #15
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r0, r3
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #36
	str	r0, [r3]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #36
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L408
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	str	r3, [fp, #-36]
	b	.L409
.L410:
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #36
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #32
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	str	r3, [fp, #-36]
.L409:
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	bge	.L410
	ldr	r0, .L412+40
	bl	e
	mov	r3, r0
	b	.L385
.L408:
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #36
	ldr	r3, [r3]
	add	r3, r3, #15
	bic	r3, r3, #15
	mov	r0, r3
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #32
	str	r0, [r3]
	ldr	r1, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #40
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L407:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-36]
	cmp	r2, r3
	blt	.L411
	mov	r3, #1
.L385:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L413:
	.align	2
.L412:
	.word	.LC28
	.word	.LC29
	.word	.LC30
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.word	.LC9
	.size	process_frame_header, .-process_frame_header
	.section	.rodata
	.align	2
.LC38:
	.ascii	"no SOI\000"
	.align	2
.LC39:
	.ascii	"no SOF\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_jpeg_header, %function
decode_jpeg_header:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	mvn	r2, #0
	strb	r2, [r3, #1692]
	ldr	r0, [fp, #-16]
	bl	get_marker
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #216
	beq	.L415
	ldr	r0, .L426
	bl	e
	mov	r3, r0
	b	.L416
.L415:
	ldr	r3, [fp, #-20]
	cmp	r3, #1
	bne	.L417
	mov	r3, #1
	b	.L416
.L417:
	ldr	r0, [fp, #-16]
	bl	get_marker
	mov	r3, r0
	str	r3, [fp, #-8]
	b	.L418
.L424:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	process_marker
	mov	r3, r0
	cmp	r3, #0
	bne	.L419
	mov	r3, #0
	b	.L416
.L419:
	ldr	r0, [fp, #-16]
	bl	get_marker
	mov	r3, r0
	str	r3, [fp, #-8]
	b	.L420
.L422:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	bl	at_eof
	mov	r3, r0
	cmp	r3, #0
	beq	.L421
	ldr	r0, .L426+4
	bl	e
	mov	r3, r0
	b	.L416
.L421:
	ldr	r0, [fp, #-16]
	bl	get_marker
	mov	r3, r0
	str	r3, [fp, #-8]
.L420:
	ldr	r3, [fp, #-8]
	cmp	r3, #255
	beq	.L422
.L418:
	ldr	r3, [fp, #-8]
	cmp	r3, #192
	beq	.L423
	ldr	r3, [fp, #-8]
	cmp	r3, #193
	bne	.L424
.L423:
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	process_frame_header
	mov	r3, r0
	cmp	r3, #0
	bne	.L425
	mov	r3, #0
	b	.L416
.L425:
	mov	r3, #1
.L416:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L427:
	.align	2
.L426:
	.word	.LC38
	.word	.LC39
	.size	decode_jpeg_header, .-decode_jpeg_header
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_jpeg_image, %function
decode_jpeg_image:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	add	r3, r3, #12288
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #1720]
	mov	r1, #0
	ldr	r0, [fp, #-16]
	bl	decode_jpeg_header
	mov	r3, r0
	cmp	r3, #0
	bne	.L429
	mov	r3, #0
	b	.L430
.L429:
	ldr	r0, [fp, #-16]
	bl	get_marker
	mov	r3, r0
	str	r3, [fp, #-8]
	b	.L431
.L435:
	ldr	r3, [fp, #-8]
	cmp	r3, #218
	bne	.L432
	ldr	r0, [fp, #-16]
	bl	process_scan_header
	mov	r3, r0
	cmp	r3, #0
	bne	.L433
	mov	r3, #0
	b	.L430
.L433:
	ldr	r0, [fp, #-16]
	bl	parse_entropy_coded_data
	mov	r3, r0
	cmp	r3, #0
	bne	.L434
	mov	r3, #0
	b	.L430
.L432:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	process_marker
	mov	r3, r0
	cmp	r3, #0
	bne	.L434
	mov	r3, #0
	b	.L430
.L434:
	ldr	r0, [fp, #-16]
	bl	get_marker
	mov	r3, r0
	str	r3, [fp, #-8]
.L431:
	ldr	r3, [fp, #-8]
	cmp	r3, #217
	bne	.L435
	mov	r3, #1
.L430:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	decode_jpeg_image, .-decode_jpeg_image
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	resample_row_1, %function
resample_row_1:
	@ args = 4, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-12]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	resample_row_1, .-resample_row_1
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	resample_row_v_2, %function
resample_row_v_2:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L439
.L440:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-24]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	add	r3, r3, r2
	add	r3, r3, #2
	asr	r2, r3, #2
	ldr	r3, [fp, #-8]
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L439:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	blt	.L440
	ldr	r3, [fp, #-16]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	resample_row_v_2, .-resample_row_v_2
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	resample_row_h_2, %function
resample_row_h_2:
	@ args = 4, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #36
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-36]
	cmp	r3, #1
	bne	.L443
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	ldr	r2, [fp, #-12]
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-24]
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	b	.L444
.L443:
	ldr	r3, [fp, #-12]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-24]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	ldr	r2, [fp, #-12]
	add	r2, r2, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	add	r3, r3, r2
	add	r3, r3, #2
	asr	r2, r3, #2
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	and	r2, r2, #255
	strb	r2, [r3]
	mov	r3, #1
	str	r3, [fp, #-16]
	b	.L445
.L446:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	add	r3, r3, #2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	asr	r2, r3, #2
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	mov	r1, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	asr	r2, r3, #2
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	add	r3, r3, #1
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L445:
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L446
	ldr	r3, [fp, #-36]
	sub	r3, r3, #2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	ldr	r2, [fp, #-36]
	sub	r2, r2, #1
	ldr	r1, [fp, #-12]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	add	r3, r3, r2
	add	r3, r3, #2
	asr	r2, r3, #2
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	mov	r1, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	ldr	r2, [fp, #-12]
	add	r2, r2, r3
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	add	r3, r3, #1
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
.L444:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	resample_row_h_2, .-resample_row_h_2
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	resample_row_hv_2, %function
resample_row_hv_2:
	@ args = 4, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #36
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-36]
	cmp	r3, #1
	bne	.L448
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	ldr	r2, [fp, #-32]
	ldrb	r2, [r2]	@ zero_extendqisi2
	add	r3, r3, r2
	add	r3, r3, #2
	asr	r2, r3, #2
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	and	r2, r2, #255
	strb	r2, [r3]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-24]
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	b	.L449
.L448:
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	ldr	r2, [fp, #-32]
	ldrb	r2, [r2]	@ zero_extendqisi2
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	asr	r3, r3, #2
	and	r2, r3, #255
	ldr	r3, [fp, #-24]
	strb	r2, [r3]
	mov	r3, #1
	str	r3, [fp, #-16]
	b	.L450
.L451:
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-32]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r2, r3, r2
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	add	r3, r3, #8
	asr	r2, r3, #4
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	sub	r3, r3, #1
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r2, [fp, #-12]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r2, r3, r2
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #8
	asr	r2, r3, #4
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	mov	r1, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L450:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-36]
	cmp	r2, r3
	blt	.L451
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	asr	r2, r3, #2
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #1
	sub	r3, r3, #1
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
.L449:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	resample_row_hv_2, .-resample_row_hv_2
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	resample_row_generic, %function
resample_row_generic:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L453
.L456:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L454
.L455:
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-20]
	add	r2, r2, r3
	ldr	r3, [fp, #-12]
	ldr	r1, [fp, #4]
	mul	r1, r3, r1
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	mov	r1, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L454:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #4]
	cmp	r2, r3
	blt	.L455
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L453:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	blt	.L456
	ldr	r3, [fp, #-16]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	resample_row_generic, .-resample_row_generic
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	YCbCr_to_RGB_row, %function
YCbCr_to_RGB_row:
	@ args = 8, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #52
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L459
.L466:
	ldr	r3, [fp, #-32]
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	add	r3, r3, #32768
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-32]
	ldr	r2, [fp, #-52]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #128
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-32]
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #128
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #6
	sub	r3, r3, r2
	lsl	r3, r3, #5
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-12]
	ldr	r2, .L467
	mul	r2, r3, r2
	ldr	r3, [fp, #-16]
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	ldr	r1, .L467+4
	mul	r3, r1, r3
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #4
	sub	r3, r3, r2
	lsl	r1, r3, #7
	add	r3, r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #1
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-28]
	asr	r3, r3, #16
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-24]
	asr	r3, r3, #16
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-20]
	asr	r3, r3, #16
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-28]
	cmp	r3, #255
	bls	.L460
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bge	.L461
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L460
.L461:
	mov	r3, #255
	str	r3, [fp, #-28]
.L460:
	ldr	r3, [fp, #-24]
	cmp	r3, #255
	bls	.L462
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L463
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L462
.L463:
	mov	r3, #255
	str	r3, [fp, #-24]
.L462:
	ldr	r3, [fp, #-20]
	cmp	r3, #255
	bls	.L464
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bge	.L465
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L464
.L465:
	mov	r3, #255
	str	r3, [fp, #-20]
.L464:
	ldr	r3, [fp, #-28]
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	ldr	r2, [fp, #-24]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #2
	ldr	r2, [fp, #-20]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #8]
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L459:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #4]
	cmp	r2, r3
	blt	.L466
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L468:
	.align	2
.L467:
	.word	-46802
	.word	-22554
	.size	YCbCr_to_RGB_row, .-YCbCr_to_RGB_row
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cleanup_jpeg, %function
cleanup_jpeg:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L470
.L473:
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #32
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L471
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #36
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #32
	mov	r2, #0
	str	r2, [r3]
.L471:
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #40
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L472
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #40
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #40
	mov	r2, #0
	str	r2, [r3]
.L472:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L470:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L473
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	cleanup_jpeg, .-cleanup_jpeg
	.section	.rodata
	.align	2
.LC40:
	.ascii	"bad req_comp\000"
	.global	__aeabi_idiv
	.align	2
.LC41:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	load_jpeg_image, %function
load_jpeg_image:
	@ args = 4, pretend = 0, frame = 216
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #228
	str	r0, [fp, #-216]
	str	r1, [fp, #-220]
	str	r2, [fp, #-224]
	str	r3, [fp, #-228]
	ldr	r3, .L514
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, [fp, #4]
	cmp	r3, #0
	blt	.L475
	ldr	r3, [fp, #4]
	cmp	r3, #4
	ble	.L476
.L475:
	ldr	r0, .L514+4
	bl	e
	mov	r3, #0
	b	.L477
.L476:
	ldr	r3, [fp, #-216]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r0, [fp, #-216]
	bl	decode_jpeg_image
	mov	r3, r0
	cmp	r3, #0
	bne	.L478
	ldr	r0, [fp, #-216]
	bl	cleanup_jpeg
	mov	r3, #0
	b	.L477
.L478:
	ldr	r3, [fp, #4]
	cmp	r3, #0
	bne	.L479
	ldr	r3, [fp, #-216]
	ldr	r3, [r3, #8]
	b	.L480
.L479:
	ldr	r3, [fp, #4]
.L480:
	str	r3, [fp, #-188]
	ldr	r3, [fp, #-216]
	ldr	r3, [r3, #8]
	cmp	r3, #3
	bne	.L481
	ldr	r3, [fp, #-188]
	cmp	r3, #2
	bgt	.L481
	mov	r3, #1
	str	r3, [fp, #-208]
	b	.L482
.L481:
	ldr	r3, [fp, #-216]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-208]
.L482:
	mov	r3, #0
	str	r3, [fp, #-204]
	b	.L483
.L491:
	sub	r2, fp, #144
	ldr	r3, [fp, #-204]
	lsl	r3, r3, #5
	add	r3, r2, r3
	str	r3, [fp, #-164]
	ldr	r3, [fp, #-216]
	ldr	r3, [r3]
	add	r3, r3, #3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r0, r3
	ldr	r1, [fp, #-216]
	ldr	r2, [fp, #-204]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #40
	str	r0, [r3]
	ldr	r1, [fp, #-216]
	ldr	r2, [fp, #-204]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #40
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L484
	ldr	r0, [fp, #-216]
	bl	cleanup_jpeg
	ldr	r0, .L514+8
	bl	e
	mov	r3, #0
	b	.L477
.L484:
	ldr	r3, [fp, #-216]
	add	r3, r3, #12288
	ldr	r0, [r3, #1436]
	ldr	r1, [fp, #-216]
	ldr	r2, [fp, #-204]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #56
	ldr	r3, [r3]
	mov	r1, r3
	bl	__aeabi_idiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-164]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-216]
	add	r3, r3, #12288
	ldr	r0, [r3, #1440]
	ldr	r1, [fp, #-216]
	ldr	r2, [fp, #-204]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13696
	add	r3, r3, #60
	ldr	r3, [r3]
	mov	r1, r3
	bl	__aeabi_idiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-164]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #16]
	asr	r2, r3, #1
	ldr	r3, [fp, #-164]
	str	r2, [r3, #24]
	ldr	r3, [fp, #-216]
	ldr	r3, [r3]
	ldr	r2, [fp, #-164]
	ldr	r2, [r2, #12]
	add	r3, r3, r2
	sub	r2, r3, #1
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #12]
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-164]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-164]
	mov	r2, #0
	str	r2, [r3, #28]
	ldr	r1, [fp, #-216]
	ldr	r2, [fp, #-204]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #32
	ldr	r2, [r3]
	ldr	r3, [fp, #-164]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-164]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-164]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #12]
	cmp	r3, #1
	bne	.L486
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #16]
	cmp	r3, #1
	bne	.L486
	ldr	r3, [fp, #-164]
	ldr	r2, .L514+12
	str	r2, [r3]
	b	.L487
.L486:
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #12]
	cmp	r3, #1
	bne	.L488
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #16]
	cmp	r3, #2
	bne	.L488
	ldr	r3, [fp, #-164]
	ldr	r2, .L514+16
	str	r2, [r3]
	b	.L487
.L488:
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #12]
	cmp	r3, #2
	bne	.L489
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #16]
	cmp	r3, #1
	bne	.L489
	ldr	r3, [fp, #-164]
	ldr	r2, .L514+20
	str	r2, [r3]
	b	.L487
.L489:
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #12]
	cmp	r3, #2
	bne	.L490
	ldr	r3, [fp, #-164]
	ldr	r3, [r3, #16]
	cmp	r3, #2
	bne	.L490
	ldr	r3, [fp, #-164]
	ldr	r2, .L514+24
	str	r2, [r3]
	b	.L487
.L490:
	ldr	r3, [fp, #-164]
	ldr	r2, .L514+28
	str	r2, [r3]
.L487:
	ldr	r3, [fp, #-204]
	add	r3, r3, #1
	str	r3, [fp, #-204]
.L483:
	ldr	r2, [fp, #-204]
	ldr	r3, [fp, #-208]
	cmp	r2, r3
	blt	.L491
	ldr	r3, [fp, #-216]
	ldr	r3, [r3]
	ldr	r2, [fp, #-188]
	mul	r3, r2, r3
	ldr	r2, [fp, #-216]
	ldr	r2, [r2, #4]
	mul	r3, r2, r3
	add	r3, r3, #1
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-184]
	ldr	r3, [fp, #-184]
	cmp	r3, #0
	bne	.L492
	ldr	r0, [fp, #-216]
	bl	cleanup_jpeg
	ldr	r0, .L514+8
	bl	e
	mov	r3, #0
	b	.L477
.L492:
	mov	r3, #0
	str	r3, [fp, #-196]
	b	.L493
.L511:
	ldr	r3, [fp, #-216]
	ldr	r3, [r3]
	ldr	r2, [fp, #-188]
	mul	r3, r2, r3
	ldr	r2, [fp, #-196]
	mul	r3, r2, r3
	ldr	r2, [fp, #-184]
	add	r3, r2, r3
	str	r3, [fp, #-192]
	mov	r3, #0
	str	r3, [fp, #-204]
	b	.L494
.L500:
	sub	r2, fp, #144
	ldr	r3, [fp, #-204]
	lsl	r3, r3, #5
	add	r3, r2, r3
	str	r3, [fp, #-172]
	ldr	r3, [fp, #-172]
	ldr	r2, [r3, #24]
	ldr	r3, [fp, #-172]
	ldr	r3, [r3, #16]
	asr	r3, r3, #1
	cmp	r2, r3
	movge	r3, #1
	movlt	r3, #0
	and	r3, r3, #255
	str	r3, [fp, #-168]
	ldr	r3, [fp, #-172]
	ldr	r4, [r3]
	ldr	r1, [fp, #-216]
	ldr	r2, [fp, #-204]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #13760
	add	r3, r3, #40
	ldr	r0, [r3]
	ldr	r3, [fp, #-168]
	cmp	r3, #0
	beq	.L495
	ldr	r3, [fp, #-172]
	ldr	r1, [r3, #8]
	b	.L496
.L495:
	ldr	r3, [fp, #-172]
	ldr	r1, [r3, #4]
.L496:
	ldr	r3, [fp, #-168]
	cmp	r3, #0
	beq	.L497
	ldr	r3, [fp, #-172]
	ldr	r2, [r3, #4]
	b	.L498
.L497:
	ldr	r3, [fp, #-172]
	ldr	r2, [r3, #8]
.L498:
	ldr	r3, [fp, #-172]
	ldr	ip, [r3, #20]
	ldr	r3, [fp, #-172]
	ldr	r3, [r3, #12]
	str	r3, [sp]
	mov	r3, ip
	blx	r4
	mov	r2, r0
	ldr	r3, [fp, #-204]
	lsl	r3, r3, #2
	sub	r1, fp, #12
	add	r3, r1, r3
	str	r2, [r3, #-148]
	ldr	r3, [fp, #-172]
	ldr	r3, [r3, #24]
	add	r2, r3, #1
	ldr	r3, [fp, #-172]
	str	r2, [r3, #24]
	ldr	r3, [fp, #-172]
	ldr	r2, [r3, #24]
	ldr	r3, [fp, #-172]
	ldr	r3, [r3, #16]
	cmp	r2, r3
	blt	.L499
	ldr	r3, [fp, #-172]
	mov	r2, #0
	str	r2, [r3, #24]
	ldr	r3, [fp, #-172]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-172]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-172]
	ldr	r3, [r3, #28]
	add	r2, r3, #1
	ldr	r3, [fp, #-172]
	str	r2, [r3, #28]
	ldr	r3, [fp, #-172]
	ldr	r1, [r3, #28]
	ldr	r0, [fp, #-216]
	ldr	r2, [fp, #-204]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #20
	ldr	r3, [r3]
	cmp	r1, r3
	bge	.L499
	ldr	r3, [fp, #-172]
	ldr	r1, [r3, #8]
	ldr	r0, [fp, #-216]
	ldr	r2, [fp, #-204]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r0, r3
	add	r3, r3, #13760
	add	r3, r3, #24
	ldr	r3, [r3]
	add	r2, r1, r3
	ldr	r3, [fp, #-172]
	str	r2, [r3, #8]
.L499:
	ldr	r3, [fp, #-204]
	add	r3, r3, #1
	str	r3, [fp, #-204]
.L494:
	ldr	r2, [fp, #-204]
	ldr	r3, [fp, #-208]
	cmp	r2, r3
	blt	.L500
	ldr	r3, [fp, #-188]
	cmp	r3, #2
	ble	.L501
	ldr	r3, [fp, #-160]
	str	r3, [fp, #-176]
	ldr	r3, [fp, #-216]
	ldr	r3, [r3, #8]
	cmp	r3, #3
	bne	.L502
	ldr	r2, [fp, #-156]
	ldr	r1, [fp, #-152]
	ldr	r3, [fp, #-216]
	ldr	r3, [r3]
	mov	r0, r3
	ldr	r3, [fp, #-188]
	str	r3, [sp, #4]
	str	r0, [sp]
	mov	r3, r1
	ldr	r1, [fp, #-176]
	ldr	r0, [fp, #-192]
	bl	YCbCr_to_RGB_row
	b	.L503
.L502:
	mov	r3, #0
	str	r3, [fp, #-200]
	b	.L504
.L505:
	ldr	r2, [fp, #-176]
	ldr	r3, [fp, #-200]
	add	r3, r2, r3
	ldr	r2, [fp, #-192]
	add	r2, r2, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-192]
	add	r3, r3, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-192]
	strb	r2, [r3]
	ldr	r3, [fp, #-192]
	add	r3, r3, #3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-188]
	ldr	r2, [fp, #-192]
	add	r3, r2, r3
	str	r3, [fp, #-192]
	ldr	r3, [fp, #-200]
	add	r3, r3, #1
	str	r3, [fp, #-200]
.L504:
	ldr	r3, [fp, #-216]
	ldr	r3, [r3]
	ldr	r2, [fp, #-200]
	cmp	r2, r3
	bcc	.L505
	b	.L503
.L501:
	ldr	r3, [fp, #-160]
	str	r3, [fp, #-180]
	ldr	r3, [fp, #-188]
	cmp	r3, #1
	bne	.L506
	mov	r3, #0
	str	r3, [fp, #-200]
	b	.L507
.L508:
	ldr	r2, [fp, #-180]
	ldr	r3, [fp, #-200]
	add	r2, r2, r3
	ldr	r1, [fp, #-192]
	ldr	r3, [fp, #-200]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-200]
	add	r3, r3, #1
	str	r3, [fp, #-200]
.L507:
	ldr	r3, [fp, #-216]
	ldr	r3, [r3]
	ldr	r2, [fp, #-200]
	cmp	r2, r3
	bcc	.L508
	b	.L503
.L506:
	mov	r3, #0
	str	r3, [fp, #-200]
	b	.L509
.L510:
	ldr	r2, [fp, #-180]
	ldr	r3, [fp, #-200]
	add	r2, r2, r3
	ldr	r3, [fp, #-192]
	add	r1, r3, #1
	str	r1, [fp, #-192]
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-192]
	add	r2, r3, #1
	str	r2, [fp, #-192]
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-200]
	add	r3, r3, #1
	str	r3, [fp, #-200]
.L509:
	ldr	r3, [fp, #-216]
	ldr	r3, [r3]
	ldr	r2, [fp, #-200]
	cmp	r2, r3
	bcc	.L510
.L503:
	ldr	r3, [fp, #-196]
	add	r3, r3, #1
	str	r3, [fp, #-196]
.L493:
	ldr	r3, [fp, #-216]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-196]
	cmp	r2, r3
	bcc	.L511
	ldr	r0, [fp, #-216]
	bl	cleanup_jpeg
	ldr	r3, [fp, #-216]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-220]
	str	r2, [r3]
	ldr	r3, [fp, #-216]
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r3, [fp, #-224]
	str	r2, [r3]
	ldr	r3, [fp, #-228]
	cmp	r3, #0
	beq	.L512
	ldr	r3, [fp, #-216]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-228]
	str	r2, [r3]
.L512:
	ldr	r3, [fp, #-184]
.L477:
	ldr	r2, .L514
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L513
	bl	__stack_chk_fail
.L513:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L515:
	.align	2
.L514:
	.word	.LC41
	.word	.LC40
	.word	.LC9
	.word	resample_row_1
	.word	resample_row_v_2
	.word	resample_row_h_2
	.word	resample_row_hv_2
	.word	resample_row_generic
	.size	load_jpeg_image, .-load_jpeg_image
	.section	.rodata
	.align	2
.LC42:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_jpeg_load_from_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_jpeg_load_from_file, %function
stbi_jpeg_load_from_file:
	@ args = 4, pretend = 0, frame = 14040
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #14016
	sub	sp, sp, #32
	sub	ip, fp, #12288
	sub	ip, ip, #4
	str	r0, [ip, #-1740]
	sub	r0, fp, #12288
	sub	r0, r0, #4
	str	r1, [r0, #-1744]
	sub	r1, fp, #12288
	sub	r1, r1, #4
	str	r2, [r1, #-1748]
	sub	r2, fp, #12288
	sub	r2, r2, #4
	str	r3, [r2, #-1752]
	ldr	r3, .L519
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #14016
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, [r2, #-1740]
	mov	r0, r3
	bl	start_file
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	ip, r3
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r1, r3
	sub	r0, fp, #14016
	sub	r0, r0, #4
	sub	r0, r0, #4
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [ip, #-1752]
	ldr	r2, [r2, #-1748]
	ldr	r1, [r1, #-1744]
	bl	load_jpeg_image
	mov	r3, r0
	ldr	r2, .L519
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L518
	bl	__stack_chk_fail
.L518:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L520:
	.align	2
.L519:
	.word	.LC42
	.size	stbi_jpeg_load_from_file, .-stbi_jpeg_load_from_file
	.align	2
	.global	stbi_jpeg_load
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_jpeg_load, %function
stbi_jpeg_load:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r1, .L524
	ldr	r0, [fp, #-16]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L522
	mov	r3, #0
	b	.L523
.L522:
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-12]
	bl	stbi_jpeg_load_from_file
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	fclose
	ldr	r3, [fp, #-8]
.L523:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L525:
	.align	2
.L524:
	.word	.LC4
	.size	stbi_jpeg_load, .-stbi_jpeg_load
	.section	.rodata
	.align	2
.LC43:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_jpeg_load_from_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_jpeg_load_from_memory, %function
stbi_jpeg_load_from_memory:
	@ args = 8, pretend = 0, frame = 14048
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #14016
	sub	sp, sp, #40
	sub	ip, fp, #12288
	sub	ip, ip, #4
	str	r0, [ip, #-1740]
	sub	r0, fp, #12288
	sub	r0, r0, #4
	str	r1, [r0, #-1744]
	sub	r1, fp, #12288
	sub	r1, r1, #4
	str	r2, [r1, #-1748]
	sub	r2, fp, #12288
	sub	r2, r2, #4
	str	r3, [r2, #-1752]
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r2, r3
	ldr	r3, [fp, #4]
	str	r3, [r2, #-1756]
	ldr	r3, .L529
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r1, r3
	sub	r3, fp, #14016
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r2, [r2, #-1744]
	ldr	r1, [r1, #-1740]
	mov	r0, r3
	bl	start_mem
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	ip, r3
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r1, r3
	sub	r0, fp, #14016
	sub	r0, r0, #4
	sub	r0, r0, #4
	ldr	r3, [fp, #8]
	str	r3, [sp]
	ldr	r3, [ip, #-1756]
	ldr	r2, [r2, #-1752]
	ldr	r1, [r1, #-1748]
	bl	load_jpeg_image
	mov	r3, r0
	ldr	r2, .L529
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L528
	bl	__stack_chk_fail
.L528:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L530:
	.align	2
.L529:
	.word	.LC43
	.size	stbi_jpeg_load_from_memory, .-stbi_jpeg_load_from_memory
	.section	.rodata
	.align	2
.LC44:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_jpeg_test_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_jpeg_test_file, %function
stbi_jpeg_test_file:
	@ args = 0, pretend = 0, frame = 14040
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #14016
	sub	sp, sp, #28
	sub	r3, fp, #12288
	sub	r3, r3, #12
	str	r0, [r3, #-1748]
	ldr	r3, .L534
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	sub	r3, fp, #12288
	sub	r3, r3, #12
	mov	r4, r3
	sub	r3, fp, #12288
	sub	r3, r3, #12
	ldr	r0, [r3, #-1748]
	bl	ftell
	str	r0, [r4, #-1740]
	sub	r3, fp, #12288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #14016
	sub	r3, r3, #12
	sub	r3, r3, #4
	ldr	r1, [r2, #-1748]
	mov	r0, r3
	bl	start_file
	sub	r3, fp, #12288
	sub	r3, r3, #12
	mov	r4, r3
	sub	r3, fp, #14016
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r1, #1
	mov	r0, r3
	bl	decode_jpeg_header
	str	r0, [r4, #-1736]
	sub	r3, fp, #12288
	sub	r3, r3, #12
	mov	r1, r3
	sub	r3, fp, #12288
	sub	r3, r3, #12
	mov	r2, #0
	ldr	r1, [r1, #-1740]
	ldr	r0, [r3, #-1748]
	bl	fseek
	sub	r3, fp, #12288
	sub	r3, r3, #12
	ldr	r3, [r3, #-1736]
	ldr	r2, .L534
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L533
	bl	__stack_chk_fail
.L533:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L535:
	.align	2
.L534:
	.word	.LC44
	.size	stbi_jpeg_test_file, .-stbi_jpeg_test_file
	.section	.rodata
	.align	2
.LC45:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_jpeg_test_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_jpeg_test_memory, %function
stbi_jpeg_test_memory:
	@ args = 0, pretend = 0, frame = 14032
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #14016
	sub	sp, sp, #16
	sub	r3, fp, #12288
	sub	r3, r3, #4
	str	r0, [r3, #-1740]
	sub	r3, fp, #12288
	sub	r3, r3, #4
	str	r1, [r3, #-1744]
	ldr	r3, .L539
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #12288
	sub	r3, r3, #4
	mov	r1, r3
	sub	r3, fp, #14016
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r2, [r2, #-1744]
	ldr	r1, [r1, #-1740]
	mov	r0, r3
	bl	start_mem
	sub	r3, fp, #14016
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, #1
	mov	r0, r3
	bl	decode_jpeg_header
	mov	r3, r0
	ldr	r2, .L539
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L538
	bl	__stack_chk_fail
.L538:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L540:
	.align	2
.L539:
	.word	.LC45
	.size	stbi_jpeg_test_memory, .-stbi_jpeg_test_memory
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	bitreverse16, %function
bitreverse16:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	asr	r3, r3, #1
	ldr	r2, .L543
	and	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsl	r1, r3, #1
	ldr	r3, .L543+4
	and	r3, r3, r1
	orr	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	asr	r3, r3, #2
	ldr	r2, .L543+8
	and	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsl	r1, r3, #2
	ldr	r3, .L543+12
	and	r3, r3, r1
	orr	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	asr	r3, r3, #4
	ldr	r2, .L543+16
	and	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsl	r1, r3, #4
	ldr	r3, .L543+20
	and	r3, r3, r1
	orr	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	asr	r3, r3, #8
	and	r2, r3, #255
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #8
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	orr	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L544:
	.align	2
.L543:
	.word	21845
	.word	43690
	.word	13107
	.word	52428
	.word	3855
	.word	61680
	.size	bitreverse16, .-bitreverse16
	.section	.rodata
	.align	2
.LC46:
	.ascii	"bits <= 16\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	bit_reverse, %function
bit_reverse:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #16
	ble	.L546
	ldr	r3, .L548
	ldr	r2, .L548+4
	ldr	r1, .L548+8
	ldr	r0, .L548+12
	bl	__assert_fail
.L546:
	ldr	r0, [fp, #-8]
	bl	bitreverse16
	mov	r2, r0
	ldr	r3, [fp, #-12]
	rsb	r3, r3, #16
	asr	r3, r2, r3
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L549:
	.align	2
.L548:
	.word	__PRETTY_FUNCTION__.7501
	.word	1908
	.word	.LC7
	.word	.LC46
	.size	bit_reverse, .-bit_reverse
	.section	.rodata
	.align	2
.LC47:
	.ascii	"sizes[i] <= (1 << i)\000"
	.align	2
.LC48:
	.ascii	"bad codelengths\000"
	.align	2
.LC49:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	zbuild_huffman, %function
zbuild_huffman:
	@ args = 0, pretend = 0, frame = 176
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #176
	str	r0, [fp, #-168]
	str	r1, [fp, #-172]
	str	r2, [fp, #-176]
	ldr	r3, .L568
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-160]
	sub	r3, fp, #76
	mov	r2, #68
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r3, [fp, #-168]
	mov	r2, #1024
	mov	r1, #255
	mov	r0, r3
	bl	memset
	mov	r3, #0
	str	r3, [fp, #-164]
	b	.L551
.L552:
	ldr	r3, [fp, #-164]
	ldr	r2, [fp, #-172]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	lsl	r3, r2, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-72]
	add	r1, r3, #1
	lsl	r3, r2, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	str	r1, [r3, #-72]
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
.L551:
	ldr	r2, [fp, #-164]
	ldr	r3, [fp, #-176]
	cmp	r2, r3
	blt	.L552
	mov	r3, #0
	str	r3, [fp, #-76]
	mov	r3, #1
	str	r3, [fp, #-164]
	b	.L553
.L555:
	ldr	r3, [fp, #-164]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [r3, #-72]
	mov	r1, #1
	ldr	r3, [fp, #-164]
	lsl	r3, r1, r3
	cmp	r2, r3
	ble	.L554
	ldr	r3, .L568+4
	ldr	r2, .L568+8
	ldr	r1, .L568+12
	ldr	r0, .L568+16
	bl	__assert_fail
.L554:
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
.L553:
	ldr	r3, [fp, #-164]
	cmp	r3, #15
	ble	.L555
	mov	r3, #0
	str	r3, [fp, #-156]
	mov	r3, #1
	str	r3, [fp, #-164]
	b	.L556
.L559:
	ldr	r3, [fp, #-164]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [fp, #-156]
	str	r2, [r3, #-136]
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r1, [fp, #-168]
	ldr	r3, [fp, #-164]
	add	r3, r3, #512
	lsl	r3, r3, #1
	add	r3, r1, r3
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-160]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r1, [fp, #-168]
	ldr	r3, [fp, #-164]
	add	r3, r3, #560
	lsl	r3, r3, #1
	add	r3, r1, r3
	add	r3, r3, #4
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-164]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-72]
	ldr	r2, [fp, #-156]
	add	r3, r2, r3
	str	r3, [fp, #-156]
	ldr	r3, [fp, #-164]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-72]
	cmp	r3, #0
	beq	.L557
	mov	r2, #1
	ldr	r3, [fp, #-164]
	lsl	r3, r2, r3
	ldr	r2, [fp, #-156]
	cmp	r2, r3
	ble	.L557
	ldr	r0, .L568+20
	bl	e
	mov	r3, r0
	b	.L566
.L557:
	ldr	r3, [fp, #-164]
	rsb	r3, r3, #16
	ldr	r2, [fp, #-156]
	lsl	r1, r2, r3
	ldr	r3, [fp, #-168]
	ldr	r2, [fp, #-164]
	add	r2, r2, #264
	str	r1, [r3, r2, lsl #2]
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #1
	str	r3, [fp, #-156]
	ldr	r3, [fp, #-164]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-72]
	ldr	r2, [fp, #-160]
	add	r3, r2, r3
	str	r3, [fp, #-160]
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
.L556:
	ldr	r3, [fp, #-164]
	cmp	r3, #15
	ble	.L559
	ldr	r3, [fp, #-168]
	mov	r2, #65536
	str	r2, [r3, #1120]
	mov	r3, #0
	str	r3, [fp, #-164]
	b	.L560
.L565:
	ldr	r3, [fp, #-164]
	ldr	r2, [fp, #-172]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-148]
	ldr	r3, [fp, #-148]
	cmp	r3, #0
	beq	.L561
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-136]
	ldr	r1, [fp, #-168]
	ldr	r2, [fp, #-148]
	add	r2, r2, #512
	lsl	r2, r2, #1
	add	r2, r1, r2
	ldrh	r2, [r2]
	sub	r3, r3, r2
	ldr	r1, [fp, #-168]
	ldr	r2, [fp, #-148]
	add	r2, r2, #560
	lsl	r2, r2, #1
	add	r2, r1, r2
	add	r2, r2, #4
	ldrh	r2, [r2]
	add	r3, r3, r2
	str	r3, [fp, #-144]
	ldr	r3, [fp, #-148]
	and	r1, r3, #255
	ldr	r2, [fp, #-168]
	ldr	r3, [fp, #-144]
	add	r3, r2, r3
	add	r3, r3, #1152
	add	r3, r3, #4
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-164]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r1, [fp, #-168]
	ldr	r3, [fp, #-144]
	add	r3, r3, #720
	lsl	r3, r3, #1
	add	r3, r1, r3
	add	r3, r3, #4
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-148]
	cmp	r3, #9
	bgt	.L562
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-136]
	ldr	r1, [fp, #-148]
	mov	r0, r3
	bl	bit_reverse
	str	r0, [fp, #-152]
	b	.L563
.L564:
	ldr	r3, [fp, #-144]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r1, [fp, #-168]
	ldr	r3, [fp, #-152]
	lsl	r3, r3, #1
	add	r3, r1, r3
	strh	r2, [r3]	@ movhi
	mov	r2, #1
	ldr	r3, [fp, #-148]
	lsl	r3, r2, r3
	ldr	r2, [fp, #-152]
	add	r3, r2, r3
	str	r3, [fp, #-152]
.L563:
	ldr	r3, [fp, #-152]
	cmp	r3, #512
	blt	.L564
.L562:
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-136]
	add	r2, r3, #1
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	str	r2, [r3, #-136]
.L561:
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
.L560:
	ldr	r2, [fp, #-164]
	ldr	r3, [fp, #-176]
	cmp	r2, r3
	blt	.L565
	mov	r3, #1
.L566:
	ldr	r2, .L568
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L567
	bl	__stack_chk_fail
.L567:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L569:
	.align	2
.L568:
	.word	.LC49
	.word	__PRETTY_FUNCTION__.7515
	.word	1926
	.word	.LC7
	.word	.LC47
	.word	.LC48
	.size	zbuild_huffman, .-zbuild_huffman
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	zget8, %function
zget8:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	cmp	r2, r3
	bcc	.L571
	mov	r3, #0
	b	.L572
.L571:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r1, r3, #1
	ldr	r2, [fp, #-8]
	str	r1, [r2]
	ldrb	r3, [r3]	@ zero_extendqisi2
.L572:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	zget8, .-zget8
	.section	.rodata
	.align	2
.LC50:
	.ascii	"z->code_buffer < (1U << z->num_bits)\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	fill_bits, %function
fill_bits:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
.L575:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	lsr	r3, r2, r3
	cmp	r3, #0
	beq	.L574
	ldr	r3, .L576
	ldr	r2, .L576+4
	ldr	r1, .L576+8
	ldr	r0, .L576+12
	bl	__assert_fail
.L574:
	ldr	r0, [fp, #-8]
	bl	zget8
	mov	r2, r0
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	lsl	r2, r2, r3
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	orr	r2, r3, r2
	ldr	r3, [fp, #-8]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	add	r2, r3, #8
	ldr	r3, [fp, #-8]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	cmp	r3, #24
	ble	.L575
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L577:
	.align	2
.L576:
	.word	__PRETTY_FUNCTION__.7549
	.word	1988
	.word	.LC7
	.word	.LC50
	.size	fill_bits, .-fill_bits
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	zreceive, %function
zreceive:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	ble	.L579
	ldr	r0, [fp, #-16]
	bl	fill_bits
.L579:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	mov	r1, #1
	ldr	r2, [fp, #-20]
	lsl	r2, r1, r2
	sub	r2, r2, #1
	and	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-20]
	lsr	r2, r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-20]
	sub	r2, r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	zreceive, .-zreceive
	.section	.rodata
	.align	2
.LC51:
	.ascii	"z->size[b] == s\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	zhuffman_decode, %function
zhuffman_decode:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	cmp	r3, #15
	bgt	.L582
	ldr	r0, [fp, #-24]
	bl	fill_bits
.L582:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #12]
	lsl	r3, r3, #23
	lsr	r3, r3, #23
	ldr	r2, [fp, #-28]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r2, .L592
	cmp	r3, r2
	bgt	.L583
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	add	r3, r3, #1152
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-16]
	lsr	r2, r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	sub	r2, r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #8]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-12]
	add	r3, r3, #720
	lsl	r3, r3, #1
	add	r3, r2, r3
	add	r3, r3, #4
	ldrh	r3, [r3]
	b	.L584
.L583:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #12]
	mov	r1, #16
	mov	r0, r3
	bl	bit_reverse
	str	r0, [fp, #-8]
	mov	r3, #10
	str	r3, [fp, #-16]
.L587:
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-16]
	add	r2, r2, #264
	ldr	r3, [r3, r2, lsl #2]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L591
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
	b	.L587
.L591:
	nop
	ldr	r3, [fp, #-16]
	cmp	r3, #16
	bne	.L588
	mvn	r3, #0
	b	.L584
.L588:
	ldr	r3, [fp, #-16]
	rsb	r3, r3, #16
	ldr	r2, [fp, #-8]
	asr	r3, r2, r3
	ldr	r1, [fp, #-28]
	ldr	r2, [fp, #-16]
	add	r2, r2, #512
	lsl	r2, r2, #1
	add	r2, r1, r2
	ldrh	r2, [r2]
	sub	r3, r3, r2
	ldr	r1, [fp, #-28]
	ldr	r2, [fp, #-16]
	add	r2, r2, #560
	lsl	r2, r2, #1
	add	r2, r1, r2
	add	r2, r2, #4
	ldrh	r2, [r2]
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	add	r3, r3, #1152
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	beq	.L589
	ldr	r3, .L592+4
	ldr	r2, .L592+8
	ldr	r1, .L592+12
	ldr	r0, .L592+16
	bl	__assert_fail
.L589:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-16]
	lsr	r2, r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	sub	r2, r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #8]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-12]
	add	r3, r3, #720
	lsl	r3, r3, #1
	add	r3, r2, r3
	add	r3, r3, #4
	ldrh	r3, [r3]
.L584:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L593:
	.align	2
.L592:
	.word	65534
	.word	__PRETTY_FUNCTION__.7566
	.word	2025
	.word	.LC7
	.word	.LC51
	.size	zhuffman_decode, .-zhuffman_decode
	.section	.rodata
	.align	2
.LC52:
	.ascii	"output buffer limit\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	expand, %function
expand:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #28]
	cmp	r3, #0
	bne	.L595
	ldr	r0, .L600
	bl	e
	mov	r3, r0
	b	.L596
.L595:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #20]
	sub	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #24]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #20]
	sub	r3, r2, r3
	str	r3, [fp, #-16]
	b	.L597
.L598:
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	str	r3, [fp, #-16]
.L597:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L598
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #20]
	ldr	r2, [fp, #-16]
	mov	r1, r2
	mov	r0, r3
	bl	realloc
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L599
	ldr	r0, .L600+4
	bl	e
	mov	r3, r0
	b	.L596
.L599:
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	add	r2, r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-8]
	add	r2, r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #24]
	mov	r3, #1
.L596:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L601:
	.align	2
.L600:
	.word	.LC52
	.word	.LC9
	.size	expand, .-expand
	.data
	.align	2
	.type	length_base, %object
	.size	length_base, 124
length_base:
	.word	3
	.word	4
	.word	5
	.word	6
	.word	7
	.word	8
	.word	9
	.word	10
	.word	11
	.word	13
	.word	15
	.word	17
	.word	19
	.word	23
	.word	27
	.word	31
	.word	35
	.word	43
	.word	51
	.word	59
	.word	67
	.word	83
	.word	99
	.word	115
	.word	131
	.word	163
	.word	195
	.word	227
	.word	258
	.word	0
	.word	0
	.align	2
	.type	length_extra, %object
	.size	length_extra, 124
length_extra:
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	1
	.word	1
	.word	1
	.word	1
	.word	2
	.word	2
	.word	2
	.word	2
	.word	3
	.word	3
	.word	3
	.word	3
	.word	4
	.word	4
	.word	4
	.word	4
	.word	5
	.word	5
	.word	5
	.word	5
	.word	0
	.word	0
	.word	0
	.align	2
	.type	dist_base, %object
	.size	dist_base, 128
dist_base:
	.word	1
	.word	2
	.word	3
	.word	4
	.word	5
	.word	7
	.word	9
	.word	13
	.word	17
	.word	25
	.word	33
	.word	49
	.word	65
	.word	97
	.word	129
	.word	193
	.word	257
	.word	385
	.word	513
	.word	769
	.word	1025
	.word	1537
	.word	2049
	.word	3073
	.word	4097
	.word	6145
	.word	8193
	.word	12289
	.word	16385
	.word	24577
	.word	0
	.word	0
	.align	2
	.type	dist_extra, %object
	.size	dist_extra, 128
dist_extra:
	.word	0
	.word	0
	.word	0
	.word	0
	.word	1
	.word	1
	.word	2
	.word	2
	.word	3
	.word	3
	.word	4
	.word	4
	.word	5
	.word	5
	.word	6
	.word	6
	.word	7
	.word	7
	.word	8
	.word	8
	.word	9
	.word	9
	.word	10
	.word	10
	.word	11
	.word	11
	.word	12
	.word	12
	.word	13
	.word	13
	.space	8
	.section	.rodata
	.align	2
.LC53:
	.ascii	"bad dist\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_huffman_block, %function
parse_huffman_block:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
.L616:
	ldr	r3, [fp, #-24]
	add	r3, r3, #32
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	zhuffman_decode
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #255
	bgt	.L603
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L604
	ldr	r0, .L617
	bl	e
	mov	r3, r0
	b	.L605
.L604:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #24]
	cmp	r2, r3
	bcc	.L606
	mov	r1, #1
	ldr	r0, [fp, #-24]
	bl	expand
	mov	r3, r0
	cmp	r3, #0
	bne	.L606
	mov	r3, #0
	b	.L605
.L606:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #16]
	add	r1, r3, #1
	ldr	r2, [fp, #-24]
	str	r1, [r2, #16]
	ldr	r2, [fp, #-8]
	and	r2, r2, #255
	strb	r2, [r3]
	b	.L616
.L603:
	ldr	r3, [fp, #-8]
	cmp	r3, #256
	bne	.L608
	mov	r3, #1
	b	.L605
.L608:
	ldr	r3, [fp, #-8]
	sub	r3, r3, #256
	sub	r3, r3, #1
	str	r3, [fp, #-8]
	ldr	r2, .L617+4
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-16]
	ldr	r2, .L617+8
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #0
	beq	.L609
	ldr	r2, .L617+8
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	zreceive
	mov	r2, r0
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	str	r3, [fp, #-16]
.L609:
	ldr	r3, [fp, #-24]
	add	r3, r3, #2048
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	zhuffman_decode
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L610
	ldr	r0, .L617
	bl	e
	mov	r3, r0
	b	.L605
.L610:
	ldr	r2, .L617+12
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-12]
	ldr	r2, .L617+16
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #0
	beq	.L611
	ldr	r2, .L617+16
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	zreceive
	mov	r2, r0
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-12]
.L611:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #20]
	sub	r3, r2, r3
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	ble	.L612
	ldr	r0, .L617+20
	bl	e
	mov	r3, r0
	b	.L605
.L612:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-16]
	add	r2, r2, r3
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #24]
	cmp	r2, r3
	bls	.L613
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-24]
	bl	expand
	mov	r3, r0
	cmp	r3, #0
	bne	.L613
	mov	r3, #0
	b	.L605
.L613:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	rsb	r3, r3, #0
	add	r3, r2, r3
	str	r3, [fp, #-20]
	b	.L614
.L615:
	ldr	r2, [fp, #-20]
	add	r3, r2, #1
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #16]
	add	r0, r3, #1
	ldr	r1, [fp, #-24]
	str	r0, [r1, #16]
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
.L614:
	ldr	r3, [fp, #-16]
	sub	r2, r3, #1
	str	r2, [fp, #-16]
	cmp	r3, #0
	bne	.L615
	b	.L616
.L605:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L618:
	.align	2
.L617:
	.word	.LC13
	.word	length_base
	.word	length_extra
	.word	dist_base
	.word	dist_extra
	.word	.LC53
	.size	parse_huffman_block, .-parse_huffman_block
	.section	.rodata
	.align	2
.LC54:
	.ascii	"c >= 0 && c < 19\000"
	.align	2
.LC55:
	.ascii	"c == 18\000"
	.align	2
.LC56:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	compute_huffman_codes, %function
compute_huffman_codes:
	@ args = 0, pretend = 0, frame = 2536
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #2528
	sub	sp, sp, #8
	str	r0, [fp, #-2536]
	ldr	r3, .L638
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r1, #5
	ldr	r0, [fp, #-2536]
	bl	zreceive
	mov	r3, r0
	add	r3, r3, #256
	add	r3, r3, #1
	str	r3, [fp, #-2524]
	mov	r1, #5
	ldr	r0, [fp, #-2536]
	bl	zreceive
	mov	r3, r0
	add	r3, r3, #1
	str	r3, [fp, #-2520]
	mov	r1, #4
	ldr	r0, [fp, #-2536]
	bl	zreceive
	mov	r3, r0
	add	r3, r3, #4
	str	r3, [fp, #-2516]
	sub	r3, fp, #484
	mov	r2, #19
	mov	r1, #0
	mov	r0, r3
	bl	memset
	mov	r3, #0
	str	r3, [fp, #-2532]
	b	.L620
.L621:
	mov	r1, #3
	ldr	r0, [fp, #-2536]
	bl	zreceive
	mov	r3, r0
	str	r3, [fp, #-2508]
	ldr	r2, .L638+4
	ldr	r3, [fp, #-2532]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-2508]
	and	r2, r3, #255
	sub	r3, fp, #4
	add	r3, r3, r1
	strb	r2, [r3, #-480]
	ldr	r3, [fp, #-2532]
	add	r3, r3, #1
	str	r3, [fp, #-2532]
.L620:
	ldr	r2, [fp, #-2532]
	ldr	r3, [fp, #-2516]
	cmp	r2, r3
	blt	.L621
	sub	r1, fp, #484
	sub	r3, fp, #2496
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #19
	mov	r0, r3
	bl	zbuild_huffman
	mov	r3, r0
	cmp	r3, #0
	bne	.L622
	mov	r3, #0
	b	.L635
.L622:
	mov	r3, #0
	str	r3, [fp, #-2528]
	b	.L624
.L631:
	sub	r3, fp, #2496
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-2536]
	bl	zhuffman_decode
	str	r0, [fp, #-2512]
	ldr	r3, [fp, #-2512]
	cmp	r3, #0
	blt	.L625
	ldr	r3, [fp, #-2512]
	cmp	r3, #18
	ble	.L637
.L625:
	ldr	r3, .L638+8
	mov	r2, #2112
	ldr	r1, .L638+12
	ldr	r0, .L638+16
	bl	__assert_fail
.L637:
	ldr	r3, [fp, #-2512]
	cmp	r3, #15
	bgt	.L627
	ldr	r3, [fp, #-2528]
	add	r2, r3, #1
	str	r2, [fp, #-2528]
	ldr	r2, [fp, #-2512]
	and	r2, r2, #255
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-460]
	b	.L624
.L627:
	ldr	r3, [fp, #-2512]
	cmp	r3, #16
	bne	.L628
	mov	r1, #2
	ldr	r0, [fp, #-2536]
	bl	zreceive
	mov	r3, r0
	add	r3, r3, #3
	str	r3, [fp, #-2512]
	ldr	r3, [fp, #-2528]
	sub	r2, fp, #464
	add	r0, r2, r3
	ldr	r3, [fp, #-2528]
	sub	r3, r3, #1
	sub	r2, fp, #4
	add	r3, r2, r3
	ldrb	r3, [r3, #-460]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-2512]
	mov	r2, r3
	bl	memset
	ldr	r2, [fp, #-2528]
	ldr	r3, [fp, #-2512]
	add	r3, r2, r3
	str	r3, [fp, #-2528]
	b	.L624
.L628:
	ldr	r3, [fp, #-2512]
	cmp	r3, #17
	bne	.L629
	mov	r1, #3
	ldr	r0, [fp, #-2536]
	bl	zreceive
	mov	r3, r0
	add	r3, r3, #3
	str	r3, [fp, #-2512]
	ldr	r3, [fp, #-2528]
	sub	r2, fp, #464
	add	r3, r2, r3
	ldr	r2, [fp, #-2512]
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r2, [fp, #-2528]
	ldr	r3, [fp, #-2512]
	add	r3, r2, r3
	str	r3, [fp, #-2528]
	b	.L624
.L629:
	ldr	r3, [fp, #-2512]
	cmp	r3, #18
	beq	.L630
	ldr	r3, .L638+8
	ldr	r2, .L638+20
	ldr	r1, .L638+12
	ldr	r0, .L638+24
	bl	__assert_fail
.L630:
	mov	r1, #7
	ldr	r0, [fp, #-2536]
	bl	zreceive
	mov	r3, r0
	add	r3, r3, #11
	str	r3, [fp, #-2512]
	ldr	r3, [fp, #-2528]
	sub	r2, fp, #464
	add	r3, r2, r3
	ldr	r2, [fp, #-2512]
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r2, [fp, #-2528]
	ldr	r3, [fp, #-2512]
	add	r3, r2, r3
	str	r3, [fp, #-2528]
.L624:
	ldr	r2, [fp, #-2524]
	ldr	r3, [fp, #-2520]
	add	r3, r2, r3
	ldr	r2, [fp, #-2528]
	cmp	r2, r3
	blt	.L631
	ldr	r2, [fp, #-2524]
	ldr	r3, [fp, #-2520]
	add	r3, r2, r3
	ldr	r2, [fp, #-2528]
	cmp	r2, r3
	beq	.L632
	ldr	r0, .L638+28
	bl	e
	mov	r3, r0
	b	.L635
.L632:
	ldr	r3, [fp, #-2536]
	add	r3, r3, #32
	sub	r1, fp, #464
	ldr	r2, [fp, #-2524]
	mov	r0, r3
	bl	zbuild_huffman
	mov	r3, r0
	cmp	r3, #0
	bne	.L633
	mov	r3, #0
	b	.L635
.L633:
	ldr	r3, [fp, #-2536]
	add	r3, r3, #2048
	add	r3, r3, #4
	ldr	r2, [fp, #-2524]
	sub	r1, fp, #464
	add	r1, r1, r2
	ldr	r2, [fp, #-2520]
	mov	r0, r3
	bl	zbuild_huffman
	mov	r3, r0
	cmp	r3, #0
	bne	.L634
	mov	r3, #0
	b	.L635
.L634:
	mov	r3, #1
.L635:
	ldr	r2, .L638
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L636
	bl	__stack_chk_fail
.L636:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L639:
	.align	2
.L638:
	.word	.LC56
	.word	length_dezigzag.7595
	.word	__PRETTY_FUNCTION__.7609
	.word	.LC7
	.word	.LC54
	.word	2124
	.word	.LC55
	.word	.LC48
	.size	compute_huffman_codes, .-compute_huffman_codes
	.section	.rodata
	.align	2
.LC57:
	.ascii	"a->num_bits == 0\000"
	.align	2
.LC58:
	.ascii	"zlib corrupt\000"
	.align	2
.LC59:
	.ascii	"read past buffer\000"
	.align	2
.LC60:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_uncompressed_block, %function
parse_uncompressed_block:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, .L653
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	and	r3, r3, #7
	cmp	r3, #0
	beq	.L641
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	and	r3, r3, #7
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	zreceive
.L641:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L642
.L643:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	add	r1, r3, #1
	str	r1, [fp, #-24]
	and	r2, r2, #255
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-8]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #12]
	lsr	r2, r3, #8
	ldr	r3, [fp, #-32]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	sub	r2, r3, #8
	ldr	r3, [fp, #-32]
	str	r2, [r3, #8]
.L642:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	bgt	.L643
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	beq	.L645
	ldr	r3, .L653+4
	ldr	r2, .L653+8
	ldr	r1, .L653+12
	ldr	r0, .L653+16
	bl	__assert_fail
.L646:
	ldr	r0, [fp, #-32]
	bl	zget8
	mov	r1, r0
	ldr	r3, [fp, #-24]
	add	r2, r3, #1
	str	r2, [fp, #-24]
	and	r2, r1, #255
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-8]
.L645:
	ldr	r3, [fp, #-24]
	cmp	r3, #3
	ble	.L646
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	lsl	r3, r3, #8
	ldrb	r2, [fp, #-12]	@ zero_extendqisi2
	add	r3, r3, r2
	str	r3, [fp, #-20]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsl	r3, r3, #8
	ldrb	r2, [fp, #-10]	@ zero_extendqisi2
	add	r3, r3, r2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-20]
	eor	r3, r3, #65280
	eor	r3, r3, #255
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	beq	.L647
	ldr	r0, .L653+20
	bl	e
	mov	r3, r0
	b	.L651
.L647:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	add	r2, r2, r3
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #4]
	cmp	r2, r3
	bls	.L649
	ldr	r0, .L653+24
	bl	e
	mov	r3, r0
	b	.L651
.L649:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-20]
	add	r2, r2, r3
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #24]
	cmp	r2, r3
	bls	.L650
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-32]
	bl	expand
	mov	r3, r0
	cmp	r3, #0
	bne	.L650
	mov	r3, #0
	b	.L651
.L650:
	ldr	r3, [fp, #-32]
	ldr	r0, [r3, #16]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [fp, #-20]
	mov	r1, r3
	bl	memcpy
	ldr	r3, [fp, #-32]
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	add	r2, r2, r3
	ldr	r3, [fp, #-32]
	str	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-20]
	add	r2, r2, r3
	ldr	r3, [fp, #-32]
	str	r2, [r3, #16]
	mov	r3, #1
.L651:
	ldr	r2, .L653
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L652
	bl	__stack_chk_fail
.L652:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L654:
	.align	2
.L653:
	.word	.LC60
	.word	__PRETTY_FUNCTION__.7623
	.word	2149
	.word	.LC7
	.word	.LC57
	.word	.LC58
	.word	.LC59
	.size	parse_uncompressed_block, .-parse_uncompressed_block
	.section	.rodata
	.align	2
.LC61:
	.ascii	"bad zlib header\000"
	.align	2
.LC62:
	.ascii	"no preset dict\000"
	.align	2
.LC63:
	.ascii	"bad compression\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_zlib_header, %function
parse_zlib_header:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-24]
	bl	zget8
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	and	r3, r3, #15
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-24]
	bl	zget8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-16]
	lsl	r2, r3, #8
	ldr	r3, [fp, #-8]
	add	r2, r2, r3
	ldr	r3, .L660
	smull	r1, r3, r2, r3
	add	r3, r3, r2
	asr	r1, r3, #4
	asr	r3, r2, #31
	sub	r1, r1, r3
	mov	r3, r1
	lsl	r3, r3, #5
	sub	r3, r3, r1
	sub	r1, r2, r3
	cmp	r1, #0
	beq	.L656
	ldr	r0, .L660+4
	bl	e
	mov	r3, r0
	b	.L657
.L656:
	ldr	r3, [fp, #-8]
	and	r3, r3, #32
	cmp	r3, #0
	beq	.L658
	ldr	r0, .L660+8
	bl	e
	mov	r3, r0
	b	.L657
.L658:
	ldr	r3, [fp, #-12]
	cmp	r3, #8
	beq	.L659
	ldr	r0, .L660+12
	bl	e
	mov	r3, r0
	b	.L657
.L659:
	mov	r3, #1
.L657:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L661:
	.align	2
.L660:
	.word	-2078209981
	.word	.LC61
	.word	.LC62
	.word	.LC63
	.size	parse_zlib_header, .-parse_zlib_header
	.local	default_length
	.comm	default_length,288,4
	.local	default_distance
	.comm	default_distance,32,4
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_defaults, %function
init_defaults:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L663
.L664:
	ldr	r2, .L673
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #8
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L663:
	ldr	r3, [fp, #-8]
	cmp	r3, #143
	ble	.L664
	b	.L665
.L666:
	ldr	r2, .L673
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #9
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L665:
	ldr	r3, [fp, #-8]
	cmp	r3, #255
	ble	.L666
	b	.L667
.L668:
	ldr	r2, .L673
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #7
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L667:
	ldr	r3, [fp, #-8]
	cmp	r3, #280
	blt	.L668
	b	.L669
.L670:
	ldr	r2, .L673
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #8
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L669:
	ldr	r3, [fp, #-8]
	cmp	r3, #288
	blt	.L670
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L671
.L672:
	ldr	r2, .L673+4
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #5
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L671:
	ldr	r3, [fp, #-8]
	cmp	r3, #31
	ble	.L672
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L674:
	.align	2
.L673:
	.word	default_length
	.word	default_distance
	.size	init_defaults, .-init_defaults
	.comm	stbi_png_partial,4,4
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_zlib, %function
parse_zlib:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L676
	ldr	r0, [fp, #-16]
	bl	parse_zlib_header
	mov	r3, r0
	cmp	r3, #0
	bne	.L676
	mov	r3, #0
	b	.L677
.L676:
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #12]
.L687:
	mov	r1, #1
	ldr	r0, [fp, #-16]
	bl	zreceive
	mov	r3, r0
	str	r3, [fp, #-12]
	mov	r1, #2
	ldr	r0, [fp, #-16]
	bl	zreceive
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L678
	ldr	r0, [fp, #-16]
	bl	parse_uncompressed_block
	mov	r3, r0
	cmp	r3, #0
	bne	.L679
	mov	r3, #0
	b	.L677
.L678:
	ldr	r3, [fp, #-8]
	cmp	r3, #3
	bne	.L680
	mov	r3, #0
	b	.L677
.L680:
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	bne	.L681
	ldr	r3, .L689
	ldrb	r3, [r3, #31]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L682
	bl	init_defaults
.L682:
	ldr	r3, [fp, #-16]
	add	r3, r3, #32
	mov	r2, #288
	ldr	r1, .L689+4
	mov	r0, r3
	bl	zbuild_huffman
	mov	r3, r0
	cmp	r3, #0
	bne	.L683
	mov	r3, #0
	b	.L677
.L683:
	ldr	r3, [fp, #-16]
	add	r3, r3, #2048
	add	r3, r3, #4
	mov	r2, #32
	ldr	r1, .L689
	mov	r0, r3
	bl	zbuild_huffman
	mov	r3, r0
	cmp	r3, #0
	bne	.L684
	mov	r3, #0
	b	.L677
.L681:
	ldr	r0, [fp, #-16]
	bl	compute_huffman_codes
	mov	r3, r0
	cmp	r3, #0
	bne	.L684
	mov	r3, #0
	b	.L677
.L684:
	ldr	r0, [fp, #-16]
	bl	parse_huffman_block
	mov	r3, r0
	cmp	r3, #0
	bne	.L679
	mov	r3, #0
	b	.L677
.L679:
	ldr	r3, .L689+8
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L685
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #20]
	sub	r3, r2, r3
	cmp	r3, #65536
	bgt	.L688
.L685:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L687
	b	.L686
.L688:
	nop
.L686:
	mov	r3, #1
.L677:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L690:
	.align	2
.L689:
	.word	default_distance
	.word	default_length
	.word	stbi_png_partial
	.size	parse_zlib, .-parse_zlib
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_zlib, %function
do_zlib:
	@ args = 4, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #24]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #28]
	ldr	r1, [fp, #4]
	ldr	r0, [fp, #-8]
	bl	parse_zlib
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	do_zlib, .-do_zlib
	.section	.rodata
	.align	2
.LC64:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_zlib_decode_malloc_guesssize
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_zlib_decode_malloc_guesssize, %function
stbi_zlib_decode_malloc_guesssize:
	@ args = 0, pretend = 0, frame = 4096
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #4096
	sub	sp, sp, #8
	str	r0, [fp, #-4088]
	str	r1, [fp, #-4092]
	sub	r1, fp, #4096
	str	r2, [r1]
	sub	r2, fp, #4096
	sub	r2, r2, #4
	str	r3, [r2]
	ldr	r3, .L700
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #4096
	ldr	r3, [r3]
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-4084]
	ldr	r3, [fp, #-4084]
	cmp	r3, #0
	bne	.L694
	mov	r3, #0
	b	.L698
.L694:
	ldr	r3, [fp, #-4088]
	str	r3, [fp, #-4080]
	ldr	r3, [fp, #-4092]
	ldr	r2, [fp, #-4088]
	add	r3, r2, r3
	str	r3, [fp, #-4076]
	sub	r0, fp, #4064
	sub	r0, r0, #4
	sub	r0, r0, #12
	mov	r3, #1
	str	r3, [sp]
	mov	r3, #1
	sub	r2, fp, #4096
	ldr	r2, [r2]
	ldr	r1, [fp, #-4084]
	bl	do_zlib
	mov	r3, r0
	cmp	r3, #0
	beq	.L696
	sub	r3, fp, #4096
	sub	r3, r3, #4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L697
	ldr	r2, [fp, #-4064]
	ldr	r3, [fp, #-4060]
	sub	r2, r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #4
	ldr	r3, [r3]
	str	r2, [r3]
.L697:
	ldr	r3, [fp, #-4060]
	b	.L698
.L696:
	ldr	r3, [fp, #-4060]
	mov	r0, r3
	bl	free
	mov	r3, #0
.L698:
	ldr	r2, .L700
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L699
	bl	__stack_chk_fail
.L699:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L701:
	.align	2
.L700:
	.word	.LC64
	.size	stbi_zlib_decode_malloc_guesssize, .-stbi_zlib_decode_malloc_guesssize
	.align	2
	.global	stbi_zlib_decode_malloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_zlib_decode_malloc, %function
stbi_zlib_decode_malloc:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, [fp, #-16]
	mov	r2, #16384
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	stbi_zlib_decode_malloc_guesssize
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	stbi_zlib_decode_malloc, .-stbi_zlib_decode_malloc
	.section	.rodata
	.align	2
.LC65:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_zlib_decode_buffer
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_zlib_decode_buffer, %function
stbi_zlib_decode_buffer:
	@ args = 0, pretend = 0, frame = 4096
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #4096
	sub	sp, sp, #8
	str	r0, [fp, #-4088]
	str	r1, [fp, #-4092]
	sub	r1, fp, #4096
	str	r2, [r1]
	sub	r2, fp, #4096
	sub	r2, r2, #4
	str	r3, [r2]
	ldr	r3, .L709
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #4096
	ldr	r3, [r3]
	str	r3, [fp, #-4080]
	sub	r3, fp, #4096
	sub	r3, r3, #4
	ldr	r3, [r3]
	sub	r2, fp, #4096
	ldr	r2, [r2]
	add	r3, r2, r3
	str	r3, [fp, #-4076]
	sub	r0, fp, #4064
	sub	r0, r0, #4
	sub	r0, r0, #12
	mov	r3, #1
	str	r3, [sp]
	mov	r3, #0
	ldr	r2, [fp, #-4092]
	ldr	r1, [fp, #-4088]
	bl	do_zlib
	mov	r3, r0
	cmp	r3, #0
	beq	.L705
	ldr	r2, [fp, #-4064]
	ldr	r3, [fp, #-4060]
	sub	r3, r2, r3
	b	.L707
.L705:
	mvn	r3, #0
.L707:
	ldr	r2, .L709
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L708
	bl	__stack_chk_fail
.L708:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L710:
	.align	2
.L709:
	.word	.LC65
	.size	stbi_zlib_decode_buffer, .-stbi_zlib_decode_buffer
	.section	.rodata
	.align	2
.LC66:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_zlib_decode_noheader_malloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_zlib_decode_noheader_malloc, %function
stbi_zlib_decode_noheader_malloc:
	@ args = 0, pretend = 0, frame = 4096
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #4096
	sub	sp, sp, #8
	str	r0, [fp, #-4088]
	str	r1, [fp, #-4092]
	sub	r3, fp, #4096
	str	r2, [r3]
	ldr	r3, .L718
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r0, #16384
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-4084]
	ldr	r3, [fp, #-4084]
	cmp	r3, #0
	bne	.L712
	mov	r3, #0
	b	.L716
.L712:
	ldr	r3, [fp, #-4088]
	str	r3, [fp, #-4080]
	ldr	r3, [fp, #-4092]
	ldr	r2, [fp, #-4088]
	add	r3, r2, r3
	str	r3, [fp, #-4076]
	sub	r0, fp, #4064
	sub	r0, r0, #4
	sub	r0, r0, #12
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #1
	mov	r2, #16384
	ldr	r1, [fp, #-4084]
	bl	do_zlib
	mov	r3, r0
	cmp	r3, #0
	beq	.L714
	sub	r3, fp, #4096
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L715
	ldr	r2, [fp, #-4064]
	ldr	r3, [fp, #-4060]
	sub	r2, r2, r3
	sub	r3, fp, #4096
	ldr	r3, [r3]
	str	r2, [r3]
.L715:
	ldr	r3, [fp, #-4060]
	b	.L716
.L714:
	ldr	r3, [fp, #-4060]
	mov	r0, r3
	bl	free
	mov	r3, #0
.L716:
	ldr	r2, .L718
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L717
	bl	__stack_chk_fail
.L717:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L719:
	.align	2
.L718:
	.word	.LC66
	.size	stbi_zlib_decode_noheader_malloc, .-stbi_zlib_decode_noheader_malloc
	.section	.rodata
	.align	2
.LC67:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_zlib_decode_noheader_buffer
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_zlib_decode_noheader_buffer, %function
stbi_zlib_decode_noheader_buffer:
	@ args = 0, pretend = 0, frame = 4096
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #4096
	sub	sp, sp, #8
	str	r0, [fp, #-4088]
	str	r1, [fp, #-4092]
	sub	r1, fp, #4096
	str	r2, [r1]
	sub	r2, fp, #4096
	sub	r2, r2, #4
	str	r3, [r2]
	ldr	r3, .L725
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #4096
	ldr	r3, [r3]
	str	r3, [fp, #-4080]
	sub	r3, fp, #4096
	sub	r3, r3, #4
	ldr	r3, [r3]
	sub	r2, fp, #4096
	ldr	r2, [r2]
	add	r3, r2, r3
	str	r3, [fp, #-4076]
	sub	r0, fp, #4064
	sub	r0, r0, #4
	sub	r0, r0, #12
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #0
	ldr	r2, [fp, #-4092]
	ldr	r1, [fp, #-4088]
	bl	do_zlib
	mov	r3, r0
	cmp	r3, #0
	beq	.L721
	ldr	r2, [fp, #-4064]
	ldr	r3, [fp, #-4060]
	sub	r3, r2, r3
	b	.L723
.L721:
	mvn	r3, #0
.L723:
	ldr	r2, .L725
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L724
	bl	__stack_chk_fail
.L724:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L726:
	.align	2
.L725:
	.word	.LC67
	.size	stbi_zlib_decode_noheader_buffer, .-stbi_zlib_decode_noheader_buffer
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_chunk_header, %function
get_chunk_header:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	get32
	mov	r3, r0
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-20]
	bl	get32
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	mov	r2, r3
	sub	r3, fp, #12
	ldm	r3, {r0, r1}
	stm	r2, {r0, r1}
	ldr	r0, [fp, #-16]
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_chunk_header, .-get_chunk_header
	.section	.rodata
	.align	2
.LC68:
	.ascii	"bad png sig\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	check_png_header, %function
check_png_header:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L730
.L733:
	ldr	r0, [fp, #-16]
	bl	get8
	mov	r2, r0
	ldr	r1, .L734
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	beq	.L731
	ldr	r0, .L734+4
	bl	e
	mov	r3, r0
	b	.L732
.L731:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L730:
	ldr	r3, [fp, #-8]
	cmp	r3, #7
	ble	.L733
	mov	r3, #1
.L732:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L735:
	.align	2
.L734:
	.word	png_sig.7715
	.word	.LC68
	.size	check_png_header, .-check_png_header
	.data
	.align	2
	.type	first_row_filter, %object
	.size	first_row_filter, 5
first_row_filter:
	.ascii	"\000\001\000\005\006"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	paeth, %function
paeth:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #36
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r2, r2, r3
	ldr	r3, [fp, #-32]
	sub	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	cmp	r3, #0
	rsblt	r3, r3, #0
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-28]
	sub	r3, r2, r3
	cmp	r3, #0
	rsblt	r3, r3, #0
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-32]
	sub	r3, r2, r3
	cmp	r3, #0
	rsblt	r3, r3, #0
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	bgt	.L737
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	bgt	.L737
	ldr	r3, [fp, #-24]
	b	.L738
.L737:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	bgt	.L739
	ldr	r3, [fp, #-28]
	b	.L738
.L739:
	ldr	r3, [fp, #-32]
.L738:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	paeth, .-paeth
	.section	.rodata
	.align	2
.LC69:
	.ascii	"out_n == s->img_n || out_n == s->img_n+1\000"
	.align	2
.LC70:
	.ascii	"not enough pixels\000"
	.align	2
.LC71:
	.ascii	"invalid filter\000"
	.align	2
.LC72:
	.ascii	"img_n+1 == out_n\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	create_png_image_raw, %function
create_png_image_raw:
	@ args = 8, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #60
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-56]
	str	r3, [fp, #-24]
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #4]
	mul	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-68]
	cmp	r2, r3
	beq	.L741
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	add	r3, r3, #1
	ldr	r2, [fp, #-68]
	cmp	r2, r3
	beq	.L741
	ldr	r3, .L839
	ldr	r2, .L839+4
	ldr	r1, .L839+8
	ldr	r0, .L839+12
	bl	__assert_fail
.L741:
	ldr	r3, .L839+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L742
	mov	r3, #1
	str	r3, [fp, #8]
.L742:
	ldr	r3, [fp, #4]
	ldr	r2, [fp, #8]
	mul	r3, r2, r3
	ldr	r2, [fp, #-68]
	mul	r3, r2, r3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-56]
	str	r2, [r3, #36]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #36]
	cmp	r3, #0
	bne	.L743
	ldr	r0, .L839+20
	bl	e
	mov	r3, r0
	b	.L744
.L743:
	ldr	r3, .L839+16
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L745
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [fp, #4]
	cmp	r2, r3
	bne	.L745
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #8]
	cmp	r2, r3
	bne	.L745
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, [fp, #8]
	mul	r3, r2, r3
	ldr	r2, [fp, #-64]
	cmp	r2, r3
	beq	.L746
	ldr	r0, .L839+24
	bl	e
	mov	r3, r0
	b	.L744
.L746:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, [fp, #8]
	mul	r3, r2, r3
	ldr	r2, [fp, #-64]
	cmp	r2, r3
	bcs	.L745
	ldr	r0, .L839+24
	bl	e
	mov	r3, r0
	b	.L744
.L745:
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L747
.L838:
	ldr	r3, [fp, #-56]
	ldr	r2, [r3, #36]
	ldr	r3, [fp, #-20]
	ldr	r1, [fp, #-44]
	mul	r3, r1, r3
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-20]
	rsb	r3, r3, #0
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-60]
	add	r2, r3, #1
	str	r2, [fp, #-60]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmp	r3, #4
	ble	.L748
	ldr	r0, .L839+28
	bl	e
	mov	r3, r0
	b	.L744
.L748:
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	bne	.L749
	ldr	r2, .L839+32
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-28]
.L749:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L750
.L760:
	ldr	r3, [fp, #-28]
	cmp	r3, #6
	ldrls	pc, [pc, r3, asl #2]
	b	.L751
.L753:
	.word	.L759
	.word	.L758
	.word	.L757
	.word	.L756
	.word	.L755
	.word	.L754
	.word	.L752
.L759:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r2, r2, r3
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	b	.L751
.L758:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r2, r2, r3
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	b	.L751
.L757:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	b	.L751
.L756:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #1
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	b	.L751
.L755:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r4, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, #0
	mov	r1, r3
	mov	r0, #0
	bl	paeth
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	add	r2, r4, r2
	and	r2, r2, #255
	strb	r2, [r3]
	b	.L751
.L754:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r2, r2, r3
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	b	.L751
.L752:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r2, r2, r3
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	nop
.L751:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L750:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L760
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-68]
	cmp	r2, r3
	beq	.L761
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
.L761:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-68]
	cmp	r2, r3
	bne	.L762
	ldr	r3, [fp, #-28]
	cmp	r3, #6
	ldrls	pc, [pc, r3, asl #2]
	b	.L800
.L765:
	.word	.L771
	.word	.L770
	.word	.L769
	.word	.L768
	.word	.L767
	.word	.L766
	.word	.L764
.L771:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L772
.L775:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L773
.L774:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r2, r2, r3
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L773:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L774
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L772:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L775
	b	.L800
.L770:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L776
.L779:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L777
.L778:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L777:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L778
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L776:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L779
	b	.L800
.L769:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L780
.L783:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L781
.L782:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L781:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L782
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L780:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L783
	b	.L800
.L768:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L784
.L787:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L785
.L786:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	add	r3, r0, r3
	asr	r3, r3, #1
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L785:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L786
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L784:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L787
	b	.L800
.L767:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L788
.L791:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L789
.L790:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r4, [r3]	@ zero_extendqisi2
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	bl	paeth
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	add	r2, r4, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L789:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L790
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L788:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L791
	b	.L800
.L766:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L792
.L795:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L793
.L794:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #1
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L793:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L794
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L792:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L795
	b	.L800
.L764:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L796
.L799:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L797
.L798:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r4, [r3]	@ zero_extendqisi2
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, #0
	mov	r1, #0
	mov	r0, r3
	bl	paeth
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	add	r2, r4, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L797:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L798
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L796:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L799
	b	.L800
.L762:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldr	r2, [fp, #-68]
	cmp	r2, r3
	beq	.L801
	ldr	r3, .L839
	ldr	r2, .L839+36
	ldr	r1, .L839+8
	ldr	r0, .L839+40
	bl	__assert_fail
.L801:
	ldr	r3, [fp, #-28]
	cmp	r3, #6
	ldrls	pc, [pc, r3, asl #2]
	b	.L800
.L803:
	.word	.L809
	.word	.L808
	.word	.L807
	.word	.L806
	.word	.L805
	.word	.L804
	.word	.L802
.L809:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L810
.L813:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L811
.L812:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r2, r2, r3
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L811:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L812
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L810:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L813
	b	.L800
.L808:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L814
.L817:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L815
.L816:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-68]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L815:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L816
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L814:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L817
	b	.L800
.L807:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L818
.L821:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L819
.L820:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L819:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L820
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L818:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L821
	b	.L800
.L806:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L822
.L825:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L823
.L824:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-68]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	add	r3, r0, r3
	asr	r3, r3, #1
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L823:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L824
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L822:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L825
	b	.L800
.L805:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L826
.L829:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L827
.L828:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r4, [r3]	@ zero_extendqisi2
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-68]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-68]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	bl	paeth
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	add	r2, r4, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L827:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L828
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L826:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L829
	b	.L800
.L804:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L830
.L833:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L831
.L832:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-68]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #1
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r0, [fp, #-36]
	add	r3, r0, r3
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L831:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L832
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L830:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L833
	b	.L800
.L802:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	b	.L834
.L837:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L835
.L840:
	.align	2
.L839:
	.word	__PRETTY_FUNCTION__.7758
	.word	2363
	.word	.LC7
	.word	.LC69
	.word	stbi_png_partial
	.word	.LC9
	.word	.LC70
	.word	.LC71
	.word	first_row_filter
	.word	2413
	.word	.LC72
.L836:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	ldrb	r4, [r3]	@ zero_extendqisi2
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-68]
	sub	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, #0
	mov	r1, #0
	mov	r0, r3
	bl	paeth
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	add	r2, r4, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L835:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L836
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-60]
	add	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L834:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L837
	nop
.L800:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L747:
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #8]
	cmp	r2, r3
	bcc	.L838
	mov	r3, #1
.L744:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
	.size	create_png_image_raw, .-create_png_image_raw
	.section	.rodata
	.align	2
.LC0:
	.word	0
	.word	4
	.word	0
	.word	2
	.word	0
	.word	1
	.word	0
	.align	2
.LC1:
	.word	0
	.word	0
	.word	4
	.word	0
	.word	2
	.word	0
	.word	1
	.align	2
.LC2:
	.word	8
	.word	8
	.word	4
	.word	4
	.word	2
	.word	2
	.word	1
	.align	2
.LC3:
	.word	8
	.word	8
	.word	8
	.word	4
	.word	4
	.word	2
	.word	2
	.align	2
.LC73:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	create_png_image, %function
create_png_image:
	@ args = 4, pretend = 0, frame = 160
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #168
	str	r0, [fp, #-152]
	str	r1, [fp, #-156]
	str	r2, [fp, #-160]
	str	r3, [fp, #-164]
	ldr	r3, .L853
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #4]
	cmp	r3, #0
	bne	.L842
	ldr	r3, [fp, #-152]
	ldr	r3, [r3]
	ldr	r2, [fp, #-152]
	ldr	r2, [r2, #4]
	str	r2, [sp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-164]
	ldr	r2, [fp, #-160]
	ldr	r1, [fp, #-156]
	ldr	r0, [fp, #-152]
	bl	create_png_image_raw
	mov	r3, r0
	b	.L843
.L842:
	ldr	r3, .L853+4
	ldr	r3, [r3]
	str	r3, [fp, #-136]
	ldr	r3, .L853+4
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-152]
	ldr	r3, [r3]
	ldr	r2, [fp, #-152]
	ldr	r2, [r2, #4]
	mul	r3, r2, r3
	ldr	r2, [fp, #-164]
	mul	r3, r2, r3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-132]
	mov	r3, #0
	str	r3, [fp, #-148]
	b	.L844
.L851:
	ldr	r3, .L853+8
	sub	ip, fp, #120
	mov	lr, r3
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldm	lr, {r0, r1, r2}
	stm	ip, {r0, r1, r2}
	ldr	r3, .L853+12
	sub	ip, fp, #92
	mov	lr, r3
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldm	lr, {r0, r1, r2}
	stm	ip, {r0, r1, r2}
	ldr	r3, .L853+16
	sub	ip, fp, #64
	mov	lr, r3
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldm	lr, {r0, r1, r2}
	stm	ip, {r0, r1, r2}
	ldr	r3, .L853+20
	sub	ip, fp, #36
	mov	lr, r3
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldm	lr, {r0, r1, r2}
	stm	ip, {r0, r1, r2}
	ldr	r3, [fp, #-152]
	ldr	r2, [r3]
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-116]
	sub	r2, r2, r3
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-60]
	add	r3, r2, r3
	sub	r2, r3, #1
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-60]
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_uidiv
	mov	r3, r0
	str	r3, [fp, #-128]
	ldr	r3, [fp, #-152]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-88]
	sub	r2, r2, r3
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-32]
	add	r3, r2, r3
	sub	r2, r3, #1
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-32]
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_uidiv
	mov	r3, r0
	str	r3, [fp, #-124]
	ldr	r3, [fp, #-128]
	cmp	r3, #0
	beq	.L845
	ldr	r3, [fp, #-124]
	cmp	r3, #0
	beq	.L845
	ldr	r3, [fp, #-128]
	ldr	r2, [fp, #-124]
	str	r2, [sp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-164]
	ldr	r2, [fp, #-160]
	ldr	r1, [fp, #-156]
	ldr	r0, [fp, #-152]
	bl	create_png_image_raw
	mov	r3, r0
	cmp	r3, #0
	bne	.L846
	ldr	r0, [fp, #-132]
	bl	free
	mov	r3, #0
	b	.L843
.L846:
	mov	r3, #0
	str	r3, [fp, #-140]
	b	.L847
.L850:
	mov	r3, #0
	str	r3, [fp, #-144]
	b	.L848
.L849:
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-32]
	ldr	r2, [fp, #-140]
	mul	r2, r3, r2
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-88]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-152]
	ldr	r3, [r3]
	mul	r3, r2, r3
	ldr	r2, [fp, #-164]
	mul	r2, r3, r2
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-60]
	ldr	r1, [fp, #-144]
	mul	r1, r3, r1
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r0, fp, #4
	add	r3, r0, r3
	ldr	r3, [r3, #-116]
	add	r3, r1, r3
	ldr	r1, [fp, #-164]
	mul	r3, r1, r3
	add	r3, r2, r3
	ldr	r2, [fp, #-132]
	add	r0, r2, r3
	ldr	r3, [fp, #-152]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-140]
	ldr	r1, [fp, #-128]
	mul	r1, r2, r1
	ldr	r2, [fp, #-144]
	add	r2, r1, r2
	ldr	r1, [fp, #-164]
	mul	r2, r1, r2
	add	r3, r3, r2
	ldr	r2, [fp, #-164]
	mov	r1, r3
	bl	memcpy
	ldr	r3, [fp, #-144]
	add	r3, r3, #1
	str	r3, [fp, #-144]
.L848:
	ldr	r2, [fp, #-144]
	ldr	r3, [fp, #-128]
	cmp	r2, r3
	blt	.L849
	ldr	r3, [fp, #-140]
	add	r3, r3, #1
	str	r3, [fp, #-140]
.L847:
	ldr	r2, [fp, #-140]
	ldr	r3, [fp, #-124]
	cmp	r2, r3
	blt	.L850
	ldr	r3, [fp, #-152]
	ldr	r3, [r3, #36]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-128]
	ldr	r2, [fp, #-164]
	mul	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, [fp, #-124]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-156]
	add	r3, r3, r2
	str	r3, [fp, #-156]
	ldr	r3, [fp, #-128]
	ldr	r2, [fp, #-164]
	mul	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, [fp, #-124]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-160]
	sub	r3, r3, r2
	str	r3, [fp, #-160]
.L845:
	ldr	r3, [fp, #-148]
	add	r3, r3, #1
	str	r3, [fp, #-148]
.L844:
	ldr	r3, [fp, #-148]
	cmp	r3, #6
	ble	.L851
	ldr	r3, [fp, #-152]
	ldr	r2, [fp, #-132]
	str	r2, [r3, #36]
	ldr	r2, .L853+4
	ldr	r3, [fp, #-136]
	str	r3, [r2]
	mov	r3, #1
.L843:
	ldr	r2, .L853
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L852
	bl	__stack_chk_fail
.L852:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L854:
	.align	2
.L853:
	.word	.LC73
	.word	stbi_png_partial
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.size	create_png_image, .-create_png_image
	.section	.rodata
	.align	2
.LC74:
	.ascii	"out_n == 2 || out_n == 4\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	compute_transparency, %function
compute_transparency:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	ldr	r2, [r2, #4]
	mul	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #36]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-32]
	cmp	r3, #2
	beq	.L856
	ldr	r3, [fp, #-32]
	cmp	r3, #4
	beq	.L856
	ldr	r3, .L867
	ldr	r2, .L867+4
	ldr	r1, .L867+8
	ldr	r0, .L867+12
	bl	__assert_fail
.L856:
	ldr	r3, [fp, #-32]
	cmp	r3, #2
	bne	.L857
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L858
.L861:
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L859
	mov	r2, #0
	b	.L860
.L859:
	mov	r2, #255
.L860:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L858:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	bcc	.L861
	b	.L862
.L857:
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L863
.L865:
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L864
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L864
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L864
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	mov	r2, #0
	strb	r2, [r3]
.L864:
	ldr	r3, [fp, #-16]
	add	r3, r3, #4
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L863:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	bcc	.L865
.L862:
	mov	r3, #1
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L868:
	.align	2
.L867:
	.word	__PRETTY_FUNCTION__.7912
	.word	2482
	.word	.LC7
	.word	.LC74
	.size	compute_transparency, .-compute_transparency
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	expand_palette, %function
expand_palette:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3]
	ldr	r2, [fp, #-40]
	ldr	r2, [r2, #4]
	mul	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #36]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-24]
	mul	r3, r2, r3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L870
	ldr	r0, .L878
	bl	e
	mov	r3, r0
	b	.L871
.L870:
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-52]
	cmp	r3, #3
	bne	.L872
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L873
.L874:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	ldr	r2, [fp, #-44]
	add	r2, r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #2
	ldr	r2, [fp, #-44]
	add	r2, r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, #2
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #3
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L873:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bcc	.L874
	b	.L875
.L872:
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L876
.L877:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	ldr	r2, [fp, #-44]
	add	r2, r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	ldr	r2, [fp, #-44]
	add	r2, r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, #2
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #3
	ldr	r2, [fp, #-44]
	add	r2, r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, #3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #4
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L876:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bcc	.L877
.L875:
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #36]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #36]
	mov	r3, #1
.L871:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L879:
	.align	2
.L878:
	.word	.LC9
	.size	expand_palette, .-expand_palette
	.section	.rodata
	.align	2
.LC75:
	.ascii	"first not IHDR\000"
	.align	2
.LC76:
	.ascii	"multiple IHDR\000"
	.align	2
.LC77:
	.ascii	"bad IHDR len\000"
	.align	2
.LC78:
	.ascii	"8bit only\000"
	.align	2
.LC79:
	.ascii	"bad ctype\000"
	.align	2
.LC80:
	.ascii	"bad comp method\000"
	.align	2
.LC81:
	.ascii	"bad filter method\000"
	.align	2
.LC82:
	.ascii	"bad interlace method\000"
	.align	2
.LC83:
	.ascii	"0-pixel image\000"
	.align	2
.LC84:
	.ascii	"invalid PLTE\000"
	.align	2
.LC85:
	.ascii	"tRNS after IDAT\000"
	.align	2
.LC86:
	.ascii	"tRNS before PLTE\000"
	.align	2
.LC87:
	.ascii	"bad tRNS len\000"
	.align	2
.LC88:
	.ascii	"tRNS with alpha\000"
	.align	2
.LC89:
	.ascii	"no PLTE\000"
	.align	2
.LC90:
	.ascii	"outofdata\000"
	.align	2
.LC91:
	.ascii	"no IDAT\000"
	.align	2
.LC92:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_png_file, %function
parse_png_file:
	@ args = 0, pretend = 0, frame = 1120
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #1120
	sub	sp, sp, #12
	str	r0, [fp, #-1120]
	str	r1, [fp, #-1124]
	str	r2, [fp, #-1128]
	ldr	r3, .L952
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	mov	r3, #0
	strb	r3, [fp, #-1110]
	mov	r3, #0
	strb	r3, [fp, #-1109]
	mov	r3, #0
	str	r3, [fp, #-1104]
	mov	r3, #0
	str	r3, [fp, #-1100]
	mov	r3, #0
	str	r3, [fp, #-1092]
	mov	r3, #1
	str	r3, [fp, #-1088]
	mov	r3, #0
	str	r3, [fp, #-1080]
	ldr	r3, [fp, #-1120]
	str	r3, [fp, #-1076]
	ldr	r0, [fp, #-1076]
	bl	check_png_header
	mov	r3, r0
	cmp	r3, #0
	bne	.L881
	mov	r3, #0
	b	.L949
.L881:
	ldr	r3, [fp, #-1124]
	cmp	r3, #1
	bne	.L883
	mov	r3, #1
	b	.L949
.L883:
	sub	r3, fp, #1040
	sub	r3, r3, #12
	ldr	r1, [fp, #-1076]
	mov	r0, r3
	bl	get_chunk_header
	ldr	r3, [fp, #-1088]
	cmp	r3, #0
	beq	.L884
	ldr	r3, [fp, #-1048]
	ldr	r2, .L952+4
	cmp	r3, r2
	beq	.L884
	ldr	r0, .L952+8
	bl	e
	mov	r3, r0
	b	.L949
.L884:
	ldr	r3, [fp, #-1048]
	ldr	r2, .L952+12
	cmp	r3, r2
	beq	.L886
	ldr	r2, .L952+12
	cmp	r3, r2
	bhi	.L887
	ldr	r2, .L952+16
	cmp	r3, r2
	beq	.L888
	ldr	r2, .L952+16
	cmp	r3, r2
	bhi	.L887
	ldr	r2, .L952+4
	cmp	r3, r2
	beq	.L889
	ldr	r2, .L952+4
	cmp	r3, r2
	bhi	.L887
	ldr	r2, .L952+20
	cmp	r3, r2
	beq	.L890
	ldr	r2, .L952+24
	cmp	r3, r2
	beq	.L891
	b	.L887
.L889:
	ldr	r3, [fp, #-1088]
	cmp	r3, #0
	bne	.L892
	ldr	r0, .L952+28
	bl	e
	mov	r3, r0
	b	.L949
.L892:
	ldr	r3, [fp, #-1052]
	cmp	r3, #13
	beq	.L893
	ldr	r0, .L952+32
	bl	e
	mov	r3, r0
	b	.L949
.L893:
	ldr	r0, [fp, #-1076]
	bl	get32
	mov	r2, r0
	ldr	r3, [fp, #-1076]
	str	r2, [r3]
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3]
	cmp	r3, #16777216
	bls	.L894
	ldr	r0, .L952+36
	bl	e
	mov	r3, r0
	b	.L949
.L894:
	ldr	r0, [fp, #-1076]
	bl	get32
	mov	r2, r0
	ldr	r3, [fp, #-1076]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #4]
	cmp	r3, #16777216
	bls	.L895
	ldr	r0, .L952+36
	bl	e
	mov	r3, r0
	b	.L949
.L895:
	ldr	r0, [fp, #-1076]
	bl	get8
	str	r0, [fp, #-1072]
	ldr	r3, [fp, #-1072]
	cmp	r3, #8
	beq	.L896
	ldr	r0, .L952+40
	bl	e
	mov	r3, r0
	b	.L949
.L896:
	ldr	r0, [fp, #-1076]
	bl	get8
	str	r0, [fp, #-1068]
	ldr	r3, [fp, #-1068]
	cmp	r3, #6
	ble	.L897
	ldr	r0, .L952+44
	bl	e
	mov	r3, r0
	b	.L949
.L897:
	ldr	r3, [fp, #-1068]
	cmp	r3, #3
	bne	.L898
	mov	r3, #3
	strb	r3, [fp, #-1110]
	b	.L899
.L898:
	ldr	r3, [fp, #-1068]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L899
	ldr	r0, .L952+44
	bl	e
	mov	r3, r0
	b	.L949
.L899:
	ldr	r0, [fp, #-1076]
	bl	get8
	str	r0, [fp, #-1064]
	ldr	r3, [fp, #-1064]
	cmp	r3, #0
	beq	.L900
	ldr	r0, .L952+48
	bl	e
	mov	r3, r0
	b	.L949
.L900:
	ldr	r0, [fp, #-1076]
	bl	get8
	str	r0, [fp, #-1060]
	ldr	r3, [fp, #-1060]
	cmp	r3, #0
	beq	.L901
	ldr	r0, .L952+52
	bl	e
	mov	r3, r0
	b	.L949
.L901:
	ldr	r0, [fp, #-1076]
	bl	get8
	str	r0, [fp, #-1080]
	ldr	r3, [fp, #-1080]
	cmp	r3, #1
	ble	.L902
	ldr	r0, .L952+56
	bl	e
	mov	r3, r0
	b	.L949
.L902:
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L903
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L904
.L903:
	ldr	r0, .L952+60
	bl	e
	mov	r3, r0
	b	.L949
.L904:
	ldrb	r3, [fp, #-1110]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L905
	ldr	r3, [fp, #-1068]
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L906
	mov	r2, #3
	b	.L907
.L906:
	mov	r2, #1
.L907:
	ldr	r3, [fp, #-1068]
	asr	r3, r3, #2
	and	r3, r3, #1
	add	r2, r2, r3
	ldr	r3, [fp, #-1076]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #1073741824
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #8]
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #4]
	cmp	r2, r3
	bcs	.L908
	ldr	r0, .L952+36
	bl	e
	mov	r3, r0
	b	.L949
.L908:
	ldr	r3, [fp, #-1124]
	cmp	r3, #2
	bne	.L951
	mov	r3, #1
	b	.L949
.L905:
	ldr	r3, [fp, #-1076]
	mov	r2, #1
	str	r2, [r3, #8]
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #268435456
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #4]
	cmp	r2, r3
	bcs	.L951
	ldr	r0, .L952+36
	bl	e
	mov	r3, r0
	b	.L949
.L888:
	ldr	r3, [fp, #-1052]
	cmp	r3, #768
	bls	.L911
	ldr	r0, .L952+64
	bl	e
	mov	r3, r0
	b	.L949
.L911:
	ldr	r3, [fp, #-1052]
	ldr	r2, .L952+68
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	str	r3, [fp, #-1092]
	ldr	r2, [fp, #-1092]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r2, r3, r2
	ldr	r3, [fp, #-1052]
	cmp	r2, r3
	beq	.L912
	ldr	r0, .L952+64
	bl	e
	mov	r3, r0
	b	.L949
.L912:
	mov	r3, #0
	str	r3, [fp, #-1096]
	b	.L913
.L914:
	ldr	r3, [fp, #-1096]
	lsl	r4, r3, #2
	ldr	r0, [fp, #-1076]
	bl	get8u
	mov	r3, r0
	mov	r2, r3
	sub	r3, fp, #12
	add	r3, r3, r4
	strb	r2, [r3, #-1028]
	ldr	r3, [fp, #-1096]
	lsl	r3, r3, #2
	add	r4, r3, #1
	ldr	r0, [fp, #-1076]
	bl	get8u
	mov	r3, r0
	mov	r2, r3
	sub	r3, fp, #12
	add	r3, r3, r4
	strb	r2, [r3, #-1028]
	ldr	r3, [fp, #-1096]
	lsl	r3, r3, #2
	add	r4, r3, #2
	ldr	r0, [fp, #-1076]
	bl	get8u
	mov	r3, r0
	mov	r2, r3
	sub	r3, fp, #12
	add	r3, r3, r4
	strb	r2, [r3, #-1028]
	ldr	r3, [fp, #-1096]
	lsl	r3, r3, #2
	add	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3, #-1028]
	ldr	r3, [fp, #-1096]
	add	r3, r3, #1
	str	r3, [fp, #-1096]
.L913:
	ldr	r2, [fp, #-1096]
	ldr	r3, [fp, #-1092]
	cmp	r2, r3
	bcc	.L914
	b	.L910
.L886:
	ldr	r3, [fp, #-1120]
	ldr	r3, [r3, #28]
	cmp	r3, #0
	beq	.L915
	ldr	r0, .L952+72
	bl	e
	mov	r3, r0
	b	.L949
.L915:
	ldrb	r3, [fp, #-1110]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L916
	ldr	r3, [fp, #-1124]
	cmp	r3, #2
	bne	.L917
	ldr	r3, [fp, #-1076]
	mov	r2, #4
	str	r2, [r3, #8]
	mov	r3, #1
	b	.L949
.L917:
	ldr	r3, [fp, #-1092]
	cmp	r3, #0
	bne	.L918
	ldr	r0, .L952+76
	bl	e
	mov	r3, r0
	b	.L949
.L918:
	ldr	r3, [fp, #-1052]
	ldr	r2, [fp, #-1092]
	cmp	r2, r3
	bcs	.L919
	ldr	r0, .L952+80
	bl	e
	mov	r3, r0
	b	.L949
.L919:
	mov	r3, #4
	strb	r3, [fp, #-1110]
	mov	r3, #0
	str	r3, [fp, #-1096]
	b	.L920
.L921:
	ldr	r3, [fp, #-1096]
	lsl	r3, r3, #2
	add	r4, r3, #3
	ldr	r0, [fp, #-1076]
	bl	get8u
	mov	r3, r0
	mov	r2, r3
	sub	r3, fp, #12
	add	r3, r3, r4
	strb	r2, [r3, #-1028]
	ldr	r3, [fp, #-1096]
	add	r3, r3, #1
	str	r3, [fp, #-1096]
.L920:
	ldr	r3, [fp, #-1052]
	ldr	r2, [fp, #-1096]
	cmp	r2, r3
	bcc	.L921
	b	.L910
.L916:
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #8]
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L923
	ldr	r0, .L952+84
	bl	e
	mov	r3, r0
	b	.L949
.L923:
	ldr	r2, [fp, #-1052]
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #8]
	lsl	r3, r3, #1
	cmp	r2, r3
	beq	.L924
	ldr	r0, .L952+80
	bl	e
	mov	r3, r0
	b	.L949
.L924:
	mov	r3, #1
	strb	r3, [fp, #-1109]
	mov	r3, #0
	str	r3, [fp, #-1084]
	b	.L925
.L926:
	ldr	r0, [fp, #-1076]
	bl	get16
	mov	r3, r0
	and	r1, r3, #255
	sub	r3, fp, #1024
	sub	r3, r3, #12
	sub	r3, r3, #8
	ldr	r2, [fp, #-1084]
	add	r3, r3, r2
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-1084]
	add	r3, r3, #1
	str	r3, [fp, #-1084]
.L925:
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-1084]
	cmp	r2, r3
	blt	.L926
	b	.L910
.L890:
	ldrb	r3, [fp, #-1110]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L927
	ldr	r3, [fp, #-1092]
	cmp	r3, #0
	bne	.L927
	ldr	r0, .L952+88
	bl	e
	mov	r3, r0
	b	.L949
.L927:
	ldr	r3, [fp, #-1124]
	cmp	r3, #2
	bne	.L928
	ldrb	r2, [fp, #-1110]	@ zero_extendqisi2
	ldr	r3, [fp, #-1076]
	str	r2, [r3, #8]
	mov	r3, #1
	b	.L949
.L928:
	ldr	r2, [fp, #-1052]
	ldr	r3, [fp, #-1104]
	add	r3, r2, r3
	ldr	r2, [fp, #-1100]
	cmp	r2, r3
	bcs	.L929
	ldr	r3, [fp, #-1100]
	cmp	r3, #0
	bne	.L931
	ldr	r3, [fp, #-1052]
	cmp	r3, #4096
	movcs	r3, r3
	movcc	r3, #4096
	str	r3, [fp, #-1100]
	b	.L931
.L932:
	ldr	r3, [fp, #-1100]
	lsl	r3, r3, #1
	str	r3, [fp, #-1100]
.L931:
	ldr	r2, [fp, #-1052]
	ldr	r3, [fp, #-1104]
	add	r3, r2, r3
	ldr	r2, [fp, #-1100]
	cmp	r2, r3
	bcc	.L932
	ldr	r3, [fp, #-1120]
	ldr	r3, [r3, #28]
	ldr	r1, [fp, #-1100]
	mov	r0, r3
	bl	realloc
	str	r0, [fp, #-1056]
	ldr	r3, [fp, #-1056]
	cmp	r3, #0
	bne	.L933
	ldr	r0, .L952+92
	bl	e
	mov	r3, r0
	b	.L949
.L933:
	ldr	r3, [fp, #-1120]
	ldr	r2, [fp, #-1056]
	str	r2, [r3, #28]
.L929:
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #16]
	cmp	r3, #0
	beq	.L934
	ldr	r3, [fp, #-1120]
	ldr	r2, [r3, #28]
	ldr	r3, [fp, #-1104]
	add	r0, r2, r3
	ldr	r2, [fp, #-1052]
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #16]
	mov	r1, #1
	bl	fread
	mov	r2, r0
	ldr	r3, [fp, #-1052]
	cmp	r2, r3
	beq	.L935
	ldr	r0, .L952+96
	bl	e
	mov	r3, r0
	b	.L949
.L934:
	ldr	r3, [fp, #-1120]
	ldr	r2, [r3, #28]
	ldr	r3, [fp, #-1104]
	add	r0, r2, r3
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #20]
	ldr	r2, [fp, #-1052]
	mov	r1, r3
	bl	memcpy
	ldr	r3, [fp, #-1076]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-1052]
	add	r2, r2, r3
	ldr	r3, [fp, #-1076]
	str	r2, [r3, #20]
.L935:
	ldr	r3, [fp, #-1052]
	ldr	r2, [fp, #-1104]
	add	r3, r2, r3
	str	r3, [fp, #-1104]
	b	.L910
.L891:
	ldr	r3, [fp, #-1124]
	cmp	r3, #0
	beq	.L936
	mov	r3, #1
	b	.L949
.L936:
	ldr	r3, [fp, #-1120]
	ldr	r3, [r3, #28]
	cmp	r3, #0
	bne	.L938
	ldr	r0, .L952+100
	bl	e
	mov	r3, r0
	b	.L949
.L938:
	ldr	r3, [fp, #-1120]
	ldr	r0, [r3, #28]
	ldr	r1, [fp, #-1104]
	sub	r3, fp, #1088
	sub	r3, r3, #12
	sub	r3, r3, #8
	mov	r2, r3
	bl	stbi_zlib_decode_malloc
	mov	r2, r0
	ldr	r3, [fp, #-1120]
	str	r2, [r3, #32]
	ldr	r3, [fp, #-1120]
	ldr	r3, [r3, #32]
	cmp	r3, #0
	bne	.L939
	mov	r3, #0
	b	.L949
.L939:
	ldr	r3, [fp, #-1120]
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-1120]
	mov	r2, #0
	str	r2, [r3, #28]
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #8]
	add	r3, r3, #1
	ldr	r2, [fp, #-1128]
	cmp	r2, r3
	bne	.L940
	ldr	r3, [fp, #-1128]
	cmp	r3, #3
	beq	.L940
	ldrb	r3, [fp, #-1110]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L941
.L940:
	ldrb	r3, [fp, #-1109]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L942
.L941:
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #8]
	add	r2, r3, #1
	ldr	r3, [fp, #-1076]
	str	r2, [r3, #12]
	b	.L943
.L942:
	ldr	r3, [fp, #-1076]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-1076]
	str	r2, [r3, #12]
.L943:
	ldr	r3, [fp, #-1120]
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-1108]
	ldr	r3, [fp, #-1076]
	ldr	r0, [r3, #12]
	ldr	r3, [fp, #-1080]
	str	r3, [sp]
	mov	r3, r0
	ldr	r0, [fp, #-1120]
	bl	create_png_image
	mov	r3, r0
	cmp	r3, #0
	bne	.L944
	mov	r3, #0
	b	.L949
.L944:
	ldrb	r3, [fp, #-1109]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L945
	ldr	r3, [fp, #-1076]
	ldr	r2, [r3, #12]
	sub	r3, fp, #1024
	sub	r3, r3, #12
	sub	r3, r3, #8
	mov	r1, r3
	ldr	r0, [fp, #-1120]
	bl	compute_transparency
	mov	r3, r0
	cmp	r3, #0
	bne	.L945
	mov	r3, #0
	b	.L949
.L945:
	ldrb	r3, [fp, #-1110]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L946
	ldrb	r2, [fp, #-1110]	@ zero_extendqisi2
	ldr	r3, [fp, #-1076]
	str	r2, [r3, #8]
	ldrb	r2, [fp, #-1110]	@ zero_extendqisi2
	ldr	r3, [fp, #-1076]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-1128]
	cmp	r3, #2
	ble	.L947
	ldr	r3, [fp, #-1076]
	ldr	r2, [fp, #-1128]
	str	r2, [r3, #12]
.L947:
	ldr	r2, [fp, #-1092]
	ldr	r3, [fp, #-1076]
	ldr	r3, [r3, #12]
	sub	r1, fp, #1024
	sub	r1, r1, #12
	sub	r1, r1, #4
	ldr	r0, [fp, #-1120]
	bl	expand_palette
	mov	r3, r0
	cmp	r3, #0
	bne	.L946
	mov	r3, #0
	b	.L949
.L946:
	ldr	r3, [fp, #-1120]
	ldr	r3, [r3, #32]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-1120]
	mov	r2, #0
	str	r2, [r3, #32]
	mov	r3, #1
	b	.L949
.L887:
	ldr	r3, [fp, #-1048]
	and	r3, r3, #536870912
	cmp	r3, #0
	bne	.L948
	ldr	r3, [fp, #-1048]
	lsr	r3, r3, #24
	and	r2, r3, #255
	ldr	r3, .L952+104
	strb	r2, [r3]
	ldr	r3, [fp, #-1048]
	lsr	r3, r3, #16
	and	r2, r3, #255
	ldr	r3, .L952+104
	strb	r2, [r3, #1]
	ldr	r3, [fp, #-1048]
	lsr	r3, r3, #8
	and	r2, r3, #255
	ldr	r3, .L952+104
	strb	r2, [r3, #2]
	ldr	r3, [fp, #-1048]
	and	r2, r3, #255
	ldr	r3, .L952+104
	strb	r2, [r3, #3]
	ldr	r0, .L952+104
	bl	e
	mov	r3, r0
	b	.L949
.L948:
	ldr	r3, [fp, #-1052]
	mov	r1, r3
	ldr	r0, [fp, #-1076]
	bl	skip
	b	.L910
.L951:
	nop
.L910:
	ldr	r0, [fp, #-1076]
	bl	get32
	mov	r3, #0
	str	r3, [fp, #-1088]
	b	.L883
.L949:
	ldr	r2, .L952
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L950
	bl	__stack_chk_fail
.L950:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L953:
	.align	2
.L952:
	.word	.LC92
	.word	1229472850
	.word	.LC75
	.word	1951551059
	.word	1347179589
	.word	1229209940
	.word	1229278788
	.word	.LC76
	.word	.LC77
	.word	.LC37
	.word	.LC78
	.word	.LC79
	.word	.LC80
	.word	.LC81
	.word	.LC82
	.word	.LC83
	.word	.LC84
	.word	-1431655765
	.word	.LC85
	.word	.LC86
	.word	.LC87
	.word	.LC88
	.word	.LC89
	.word	.LC9
	.word	.LC90
	.word	.LC91
	.word	invalid_chunk.7981
	.size	parse_png_file, .-parse_png_file
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_png, %function
do_png:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #32]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #28]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #36]
	ldr	r3, [fp, #4]
	cmp	r3, #0
	blt	.L955
	ldr	r3, [fp, #4]
	cmp	r3, #4
	ble	.L956
.L955:
	ldr	r0, .L960
	bl	e
	mov	r3, #0
	b	.L957
.L956:
	ldr	r2, [fp, #4]
	mov	r1, #0
	ldr	r0, [fp, #-16]
	bl	parse_png_file
	mov	r3, r0
	cmp	r3, #0
	beq	.L958
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #36]
	ldr	r3, [fp, #4]
	cmp	r3, #0
	beq	.L959
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #4]
	cmp	r2, r3
	beq	.L959
	ldr	r3, [fp, #-16]
	ldr	r1, [r3, #12]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	str	r3, [sp]
	mov	r3, r2
	ldr	r2, [fp, #4]
	ldr	r0, [fp, #-8]
	bl	convert_format
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #4]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L959
	ldr	r3, [fp, #-8]
	b	.L957
.L959:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-20]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L958
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-28]
	str	r2, [r3]
.L958:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #36]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #32]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #32]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #28]
	ldr	r3, [fp, #-8]
.L957:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L961:
	.align	2
.L960:
	.word	.LC40
	.size	do_png, .-do_png
	.section	.rodata
	.align	2
.LC93:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_png_load_from_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_png_load_from_file, %function
stbi_png_load_from_file:
	@ args = 4, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #72
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	str	r3, [fp, #-68]
	ldr	r3, .L965
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #48
	ldr	r1, [fp, #-56]
	mov	r0, r3
	bl	start_file
	sub	r0, fp, #48
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-64]
	ldr	r1, [fp, #-60]
	bl	do_png
	mov	r3, r0
	ldr	r2, .L965
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L964
	bl	__stack_chk_fail
.L964:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L966:
	.align	2
.L965:
	.word	.LC93
	.size	stbi_png_load_from_file, .-stbi_png_load_from_file
	.align	2
	.global	stbi_png_load
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_png_load, %function
stbi_png_load:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r1, .L970
	ldr	r0, [fp, #-16]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L968
	mov	r3, #0
	b	.L969
.L968:
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-12]
	bl	stbi_png_load_from_file
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	fclose
	ldr	r3, [fp, #-8]
.L969:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L971:
	.align	2
.L970:
	.word	.LC4
	.size	stbi_png_load, .-stbi_png_load
	.section	.rodata
	.align	2
.LC94:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_png_load_from_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_png_load_from_memory, %function
stbi_png_load_from_memory:
	@ args = 8, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #80
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	str	r3, [fp, #-68]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-72]
	ldr	r3, .L975
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #48
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-56]
	mov	r0, r3
	bl	start_mem
	sub	r0, fp, #48
	ldr	r3, [fp, #8]
	str	r3, [sp]
	ldr	r3, [fp, #-72]
	ldr	r2, [fp, #-68]
	ldr	r1, [fp, #-64]
	bl	do_png
	mov	r3, r0
	ldr	r2, .L975
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L974
	bl	__stack_chk_fail
.L974:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L976:
	.align	2
.L975:
	.word	.LC94
	.size	stbi_png_load_from_memory, .-stbi_png_load_from_memory
	.section	.rodata
	.align	2
.LC95:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_png_test_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_png_test_file, %function
stbi_png_test_file:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-64]
	ldr	r3, .L980
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, [fp, #-64]
	bl	ftell
	str	r0, [fp, #-56]
	sub	r3, fp, #48
	ldr	r1, [fp, #-64]
	mov	r0, r3
	bl	start_file
	sub	r3, fp, #48
	mov	r2, #0
	mov	r1, #1
	mov	r0, r3
	bl	parse_png_file
	str	r0, [fp, #-52]
	mov	r2, #0
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-64]
	bl	fseek
	ldr	r3, [fp, #-52]
	ldr	r2, .L980
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L979
	bl	__stack_chk_fail
.L979:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L981:
	.align	2
.L980:
	.word	.LC95
	.size	stbi_png_test_file, .-stbi_png_test_file
	.section	.rodata
	.align	2
.LC96:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_png_test_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_png_test_memory, %function
stbi_png_test_memory:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	ldr	r3, .L985
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #48
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-56]
	mov	r0, r3
	bl	start_mem
	sub	r3, fp, #48
	mov	r2, #0
	mov	r1, #1
	mov	r0, r3
	bl	parse_png_file
	mov	r3, r0
	ldr	r2, .L985
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L984
	bl	__stack_chk_fail
.L984:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L986:
	.align	2
.L985:
	.word	.LC96
	.size	stbi_png_test_memory, .-stbi_png_test_memory
	.section	.rodata
	.align	2
.LC97:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_png_info
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_png_info, %function
stbi_png_info:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	str	r3, [fp, #-68]
	ldr	r3, .L996
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r1, .L996+4
	ldr	r0, [fp, #-56]
	bl	fopen
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	bne	.L988
	mov	r3, #0
	b	.L994
.L988:
	sub	r3, fp, #48
	ldr	r1, [fp, #-52]
	mov	r0, r3
	bl	start_file
	sub	r3, fp, #48
	mov	r2, #0
	mov	r1, #2
	mov	r0, r3
	bl	parse_png_file
	mov	r3, r0
	cmp	r3, #0
	beq	.L990
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L991
	ldr	r3, [fp, #-48]
	mov	r2, r3
	ldr	r3, [fp, #-60]
	str	r2, [r3]
.L991:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L992
	ldr	r3, [fp, #-44]
	mov	r2, r3
	ldr	r3, [fp, #-64]
	str	r2, [r3]
.L992:
	ldr	r3, [fp, #-68]
	cmp	r3, #0
	beq	.L993
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-68]
	str	r2, [r3]
.L993:
	ldr	r0, [fp, #-52]
	bl	fclose
	mov	r3, #1
	b	.L994
.L990:
	ldr	r0, [fp, #-52]
	bl	fclose
	mov	r3, #0
.L994:
	ldr	r2, .L996
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L995
	bl	__stack_chk_fail
.L995:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L997:
	.align	2
.L996:
	.word	.LC97
	.word	.LC4
	.size	stbi_png_info, .-stbi_png_info
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	bmp_test, %function
bmp_test:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	get8
	mov	r3, r0
	cmp	r3, #66
	beq	.L999
	mov	r3, #0
	b	.L1000
.L999:
	ldr	r0, [fp, #-16]
	bl	get8
	mov	r3, r0
	cmp	r3, #77
	beq	.L1001
	mov	r3, #0
	b	.L1000
.L1001:
	ldr	r0, [fp, #-16]
	bl	get32le
	ldr	r0, [fp, #-16]
	bl	get16le
	ldr	r0, [fp, #-16]
	bl	get16le
	ldr	r0, [fp, #-16]
	bl	get32le
	ldr	r0, [fp, #-16]
	bl	get32le
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #12
	beq	.L1002
	ldr	r3, [fp, #-8]
	cmp	r3, #40
	beq	.L1002
	ldr	r3, [fp, #-8]
	cmp	r3, #56
	beq	.L1002
	ldr	r3, [fp, #-8]
	cmp	r3, #108
	bne	.L1003
.L1002:
	mov	r3, #1
	b	.L1000
.L1003:
	mov	r3, #0
.L1000:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	bmp_test, .-bmp_test
	.section	.rodata
	.align	2
.LC98:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_bmp_test_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_bmp_test_file, %function
stbi_bmp_test_file:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	ldr	r3, .L1007
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, [fp, #-48]
	bl	ftell
	str	r0, [fp, #-44]
	sub	r3, fp, #36
	ldr	r1, [fp, #-48]
	mov	r0, r3
	bl	start_file
	sub	r3, fp, #36
	mov	r0, r3
	bl	bmp_test
	str	r0, [fp, #-40]
	mov	r2, #0
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	fseek
	ldr	r3, [fp, #-40]
	ldr	r2, .L1007
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1006
	bl	__stack_chk_fail
.L1006:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1008:
	.align	2
.L1007:
	.word	.LC98
	.size	stbi_bmp_test_file, .-stbi_bmp_test_file
	.section	.rodata
	.align	2
.LC99:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_bmp_test_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_bmp_test_memory, %function
stbi_bmp_test_memory:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r3, .L1012
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_mem
	sub	r3, fp, #36
	mov	r0, r3
	bl	bmp_test
	mov	r3, r0
	ldr	r2, .L1012
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1011
	bl	__stack_chk_fail
.L1011:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1013:
	.align	2
.L1012:
	.word	.LC99
	.size	stbi_bmp_test_memory, .-stbi_bmp_test_memory
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	high_bit, %function
high_bit:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L1015
	mvn	r3, #0
	b	.L1016
.L1015:
	ldr	r3, [fp, #-16]
	cmp	r3, #65536
	bcc	.L1017
	ldr	r3, [fp, #-8]
	add	r3, r3, #16
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	lsr	r3, r3, #16
	str	r3, [fp, #-16]
.L1017:
	ldr	r3, [fp, #-16]
	cmp	r3, #255
	bls	.L1018
	ldr	r3, [fp, #-8]
	add	r3, r3, #8
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	lsr	r3, r3, #8
	str	r3, [fp, #-16]
.L1018:
	ldr	r3, [fp, #-16]
	cmp	r3, #15
	bls	.L1019
	ldr	r3, [fp, #-8]
	add	r3, r3, #4
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	lsr	r3, r3, #4
	str	r3, [fp, #-16]
.L1019:
	ldr	r3, [fp, #-16]
	cmp	r3, #3
	bls	.L1020
	ldr	r3, [fp, #-8]
	add	r3, r3, #2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	lsr	r3, r3, #2
	str	r3, [fp, #-16]
.L1020:
	ldr	r3, [fp, #-16]
	cmp	r3, #1
	bls	.L1021
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	lsr	r3, r3, #1
	str	r3, [fp, #-16]
.L1021:
	ldr	r3, [fp, #-8]
.L1016:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	high_bit, .-high_bit
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	bitcount, %function
bitcount:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, .L1024
	and	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsr	r1, r3, #1
	ldr	r3, .L1024
	and	r3, r3, r1
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, .L1024+4
	and	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsr	r1, r3, #2
	ldr	r3, .L1024+4
	and	r3, r3, r1
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	lsr	r2, r3, #4
	ldr	r3, [fp, #-8]
	add	r2, r2, r3
	ldr	r3, .L1024+8
	and	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #8
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #16
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	and	r3, r3, #255
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L1025:
	.align	2
.L1024:
	.word	1431655765
	.word	858993459
	.word	252645135
	.size	bitcount, .-bitcount
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	shiftsigned, %function
shiftsigned:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bge	.L1027
	ldr	r3, [fp, #-20]
	rsb	r3, r3, #0
	ldr	r2, [fp, #-16]
	lsl	r3, r2, r3
	str	r3, [fp, #-16]
	b	.L1028
.L1027:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-20]
	asr	r3, r2, r3
	str	r3, [fp, #-16]
.L1028:
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-8]
	b	.L1029
.L1030:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	asr	r3, r2, r3
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-8]
.L1029:
	ldr	r3, [fp, #-8]
	cmp	r3, #7
	ble	.L1030
	ldr	r3, [fp, #-12]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	shiftsigned, .-shiftsigned
	.section	.rodata
	.align	2
.LC100:
	.ascii	"not BMP\000"
	.align	2
.LC101:
	.ascii	"unknown BMP\000"
	.align	2
.LC102:
	.ascii	"bad BMP\000"
	.align	2
.LC103:
	.ascii	"monochrome\000"
	.align	2
.LC104:
	.ascii	"BMP RLE\000"
	.align	2
.LC105:
	.ascii	"hsz == 108\000"
	.align	2
.LC106:
	.ascii	"invalid\000"
	.align	2
.LC107:
	.ascii	"bad bpp\000"
	.align	2
.LC108:
	.ascii	"bad masks\000"
	.align	2
.LC109:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	bmp_load, %function
bmp_load:
	@ args = 4, pretend = 0, frame = 1192
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #1200
	str	r0, [fp, #-1184]
	str	r1, [fp, #-1188]
	str	r2, [fp, #-1192]
	str	r3, [fp, #-1196]
	ldr	r3, .L1120
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-1168]
	mov	r3, #0
	str	r3, [fp, #-1164]
	mov	r3, #0
	str	r3, [fp, #-1160]
	mov	r3, #0
	str	r3, [fp, #-1156]
	mov	r3, #0
	str	r3, [fp, #-1080]
	mov	r3, #0
	str	r3, [fp, #-1152]
	mov	r3, #0
	str	r3, [fp, #-1076]
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r3, r0
	cmp	r3, #66
	bne	.L1033
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r3, r0
	cmp	r3, #77
	beq	.L1034
.L1033:
	ldr	r0, .L1120+4
	bl	e
	mov	r3, #0
	b	.L1116
.L1034:
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r0, [fp, #-1184]
	bl	get16le
	ldr	r0, [fp, #-1184]
	bl	get16le
	ldr	r0, [fp, #-1184]
	bl	get32le
	mov	r3, r0
	str	r3, [fp, #-1072]
	ldr	r0, [fp, #-1184]
	bl	get32le
	mov	r3, r0
	str	r3, [fp, #-1068]
	ldr	r3, [fp, #-1068]
	cmp	r3, #12
	beq	.L1036
	ldr	r3, [fp, #-1068]
	cmp	r3, #40
	beq	.L1036
	ldr	r3, [fp, #-1068]
	cmp	r3, #56
	beq	.L1036
	ldr	r3, [fp, #-1068]
	cmp	r3, #108
	beq	.L1036
	ldr	r0, .L1120+8
	bl	e
	mov	r3, #0
	b	.L1116
.L1036:
	ldr	r3, .L1120+12
	ldr	r2, .L1120+16
	str	r2, [r3]
	ldr	r3, [fp, #-1068]
	cmp	r3, #12
	bne	.L1037
	ldr	r0, [fp, #-1184]
	bl	get16le
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-1184]
	str	r2, [r3]
	ldr	r0, [fp, #-1184]
	bl	get16le
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-1184]
	str	r2, [r3, #4]
	b	.L1038
.L1037:
	ldr	r0, [fp, #-1184]
	bl	get32le
	mov	r2, r0
	ldr	r3, [fp, #-1184]
	str	r2, [r3]
	ldr	r0, [fp, #-1184]
	bl	get32le
	mov	r2, r0
	ldr	r3, [fp, #-1184]
	str	r2, [r3, #4]
.L1038:
	ldr	r0, [fp, #-1184]
	bl	get16le
	mov	r3, r0
	cmp	r3, #1
	beq	.L1039
	mov	r3, #0
	b	.L1116
.L1039:
	ldr	r0, [fp, #-1184]
	bl	get16le
	str	r0, [fp, #-1064]
	ldr	r3, [fp, #-1064]
	cmp	r3, #1
	bne	.L1040
	ldr	r0, .L1120+20
	bl	e
	mov	r3, #0
	b	.L1116
.L1040:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	movgt	r3, #1
	movle	r3, #0
	and	r3, r3, #255
	str	r3, [fp, #-1060]
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	rsblt	r3, r3, #0
	mov	r2, r3
	ldr	r3, [fp, #-1184]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-1068]
	cmp	r3, #12
	bne	.L1041
	ldr	r3, [fp, #-1064]
	cmp	r3, #23
	bgt	.L1042
	ldr	r3, [fp, #-1072]
	sub	r3, r3, #38
	ldr	r2, .L1120+24
	smull	r1, r2, r3, r2
	asr	r3, r3, #31
	sub	r3, r2, r3
	str	r3, [fp, #-1152]
	b	.L1042
.L1041:
	ldr	r0, [fp, #-1184]
	bl	get32le
	mov	r3, r0
	str	r3, [fp, #-1076]
	ldr	r3, [fp, #-1076]
	cmp	r3, #1
	beq	.L1043
	ldr	r3, [fp, #-1076]
	cmp	r3, #2
	bne	.L1044
.L1043:
	ldr	r0, .L1120+28
	bl	e
	mov	r3, #0
	b	.L1116
.L1044:
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r3, [fp, #-1068]
	cmp	r3, #40
	beq	.L1045
	ldr	r3, [fp, #-1068]
	cmp	r3, #56
	bne	.L1046
.L1045:
	ldr	r3, [fp, #-1068]
	cmp	r3, #56
	bne	.L1047
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r0, [fp, #-1184]
	bl	get32le
.L1047:
	ldr	r3, [fp, #-1064]
	cmp	r3, #16
	beq	.L1048
	ldr	r3, [fp, #-1064]
	cmp	r3, #32
	bne	.L1118
.L1048:
	mov	r3, #0
	str	r3, [fp, #-1160]
	ldr	r3, [fp, #-1160]
	str	r3, [fp, #-1164]
	ldr	r3, [fp, #-1164]
	str	r3, [fp, #-1168]
	ldr	r3, [fp, #-1076]
	cmp	r3, #0
	bne	.L1050
	ldr	r3, [fp, #-1064]
	cmp	r3, #32
	bne	.L1051
	mov	r3, #16711680
	str	r3, [fp, #-1168]
	mov	r3, #65280
	str	r3, [fp, #-1164]
	mov	r3, #255
	str	r3, [fp, #-1160]
	mov	r3, #-16777216
	str	r3, [fp, #-1156]
	mov	r3, #1
	str	r3, [fp, #-1080]
	b	.L1118
.L1051:
	mov	r3, #31744
	str	r3, [fp, #-1168]
	mov	r3, #992
	str	r3, [fp, #-1164]
	mov	r3, #31
	str	r3, [fp, #-1160]
	b	.L1118
.L1050:
	ldr	r3, [fp, #-1076]
	cmp	r3, #3
	bne	.L1052
	ldr	r0, [fp, #-1184]
	bl	get32le
	str	r0, [fp, #-1168]
	ldr	r0, [fp, #-1184]
	bl	get32le
	str	r0, [fp, #-1164]
	ldr	r0, [fp, #-1184]
	bl	get32le
	str	r0, [fp, #-1160]
	ldr	r2, [fp, #-1168]
	ldr	r3, [fp, #-1164]
	cmp	r2, r3
	bne	.L1118
	ldr	r2, [fp, #-1164]
	ldr	r3, [fp, #-1160]
	cmp	r2, r3
	bne	.L1118
	mov	r3, #0
	b	.L1116
.L1052:
	mov	r3, #0
	b	.L1116
.L1046:
	ldr	r3, [fp, #-1068]
	cmp	r3, #108
	beq	.L1054
	ldr	r3, .L1120+32
	ldr	r2, .L1120+36
	ldr	r1, .L1120+40
	ldr	r0, .L1120+44
	bl	__assert_fail
.L1054:
	ldr	r0, [fp, #-1184]
	bl	get32le
	str	r0, [fp, #-1168]
	ldr	r0, [fp, #-1184]
	bl	get32le
	str	r0, [fp, #-1164]
	ldr	r0, [fp, #-1184]
	bl	get32le
	str	r0, [fp, #-1160]
	ldr	r0, [fp, #-1184]
	bl	get32le
	str	r0, [fp, #-1156]
	ldr	r0, [fp, #-1184]
	bl	get32le
	mov	r3, #0
	str	r3, [fp, #-1148]
	b	.L1055
.L1056:
	ldr	r0, [fp, #-1184]
	bl	get32le
	ldr	r3, [fp, #-1148]
	add	r3, r3, #1
	str	r3, [fp, #-1148]
.L1055:
	ldr	r3, [fp, #-1148]
	cmp	r3, #11
	ble	.L1056
	b	.L1053
.L1118:
	nop
.L1053:
	ldr	r3, [fp, #-1064]
	cmp	r3, #15
	bgt	.L1042
	ldr	r3, [fp, #-1072]
	sub	r2, r3, #14
	ldr	r3, [fp, #-1068]
	sub	r3, r2, r3
	asr	r3, r3, #2
	str	r3, [fp, #-1152]
.L1042:
	ldr	r3, [fp, #-1156]
	cmp	r3, #0
	beq	.L1057
	mov	r2, #4
	b	.L1058
.L1057:
	mov	r2, #3
.L1058:
	ldr	r3, [fp, #-1184]
	str	r2, [r3, #8]
	ldr	r3, [fp, #4]
	cmp	r3, #0
	beq	.L1059
	ldr	r3, [fp, #4]
	cmp	r3, #2
	ble	.L1059
	ldr	r3, [fp, #4]
	str	r3, [fp, #-1136]
	b	.L1060
.L1059:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-1136]
.L1060:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	ldr	r2, [fp, #-1136]
	mul	r3, r2, r3
	ldr	r2, [fp, #-1184]
	ldr	r2, [r2, #4]
	mul	r3, r2, r3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-1172]
	ldr	r3, [fp, #-1172]
	cmp	r3, #0
	bne	.L1061
	ldr	r0, .L1120+48
	bl	e
	mov	r3, #0
	b	.L1116
.L1061:
	ldr	r3, [fp, #-1064]
	cmp	r3, #15
	bgt	.L1062
	mov	r3, #0
	str	r3, [fp, #-1132]
	ldr	r3, [fp, #-1152]
	cmp	r3, #0
	beq	.L1063
	ldr	r3, [fp, #-1152]
	cmp	r3, #256
	ble	.L1064
.L1063:
	ldr	r0, [fp, #-1172]
	bl	free
	ldr	r0, .L1120+52
	bl	e
	mov	r3, #0
	b	.L1116
.L1064:
	mov	r3, #0
	str	r3, [fp, #-1148]
	b	.L1065
.L1067:
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-1148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-1026]
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-1148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-1027]
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-1148]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-1028]
	ldr	r3, [fp, #-1068]
	cmp	r3, #12
	beq	.L1066
	ldr	r0, [fp, #-1184]
	bl	get8
.L1066:
	ldr	r3, [fp, #-1148]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3, #-1025]
	ldr	r3, [fp, #-1148]
	add	r3, r3, #1
	str	r3, [fp, #-1148]
.L1065:
	ldr	r2, [fp, #-1148]
	ldr	r3, [fp, #-1152]
	cmp	r2, r3
	blt	.L1067
	ldr	r3, [fp, #-1072]
	sub	r2, r3, #14
	ldr	r3, [fp, #-1068]
	sub	r2, r2, r3
	ldr	r3, [fp, #-1068]
	cmp	r3, #12
	bne	.L1068
	mov	r3, #3
	b	.L1069
.L1068:
	mov	r3, #4
.L1069:
	ldr	r1, [fp, #-1152]
	mul	r3, r1, r3
	sub	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-1184]
	bl	skip
	ldr	r3, [fp, #-1064]
	cmp	r3, #4
	bne	.L1070
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	add	r3, r3, #1
	lsr	r3, r3, #1
	str	r3, [fp, #-1140]
	b	.L1071
.L1070:
	ldr	r3, [fp, #-1064]
	cmp	r3, #8
	bne	.L1072
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	str	r3, [fp, #-1140]
	b	.L1071
.L1072:
	ldr	r0, [fp, #-1172]
	bl	free
	ldr	r0, .L1120+56
	bl	e
	mov	r3, #0
	b	.L1116
.L1071:
	ldr	r3, [fp, #-1140]
	rsb	r3, r3, #0
	and	r3, r3, #3
	str	r3, [fp, #-1056]
	mov	r3, #0
	str	r3, [fp, #-1144]
	b	.L1073
.L1083:
	mov	r3, #0
	str	r3, [fp, #-1148]
	b	.L1074
.L1082:
	ldr	r0, [fp, #-1184]
	bl	get8
	str	r0, [fp, #-1128]
	mov	r3, #0
	str	r3, [fp, #-1124]
	ldr	r3, [fp, #-1064]
	cmp	r3, #4
	bne	.L1075
	ldr	r3, [fp, #-1128]
	and	r3, r3, #15
	str	r3, [fp, #-1124]
	ldr	r3, [fp, #-1128]
	asr	r3, r3, #4
	str	r3, [fp, #-1128]
.L1075:
	ldr	r3, [fp, #-1132]
	add	r2, r3, #1
	str	r2, [fp, #-1132]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r2, r3, r2
	ldr	r3, [fp, #-1128]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldrb	r3, [r3, #-1028]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-1132]
	add	r2, r3, #1
	str	r2, [fp, #-1132]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r2, r3, r2
	ldr	r3, [fp, #-1128]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldrb	r3, [r3, #-1027]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-1132]
	add	r2, r3, #1
	str	r2, [fp, #-1132]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r2, r3, r2
	ldr	r3, [fp, #-1128]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldrb	r3, [r3, #-1026]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-1136]
	cmp	r3, #4
	bne	.L1076
	ldr	r3, [fp, #-1132]
	add	r2, r3, #1
	str	r2, [fp, #-1132]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r3, r3, r2
	mvn	r2, #0
	strb	r2, [r3]
.L1076:
	ldr	r3, [fp, #-1148]
	add	r3, r3, #1
	ldr	r2, [fp, #-1184]
	ldr	r2, [r2]
	cmp	r3, r2
	beq	.L1119
	ldr	r3, [fp, #-1064]
	cmp	r3, #8
	bne	.L1079
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r3, r0
	b	.L1080
.L1079:
	ldr	r3, [fp, #-1124]
.L1080:
	str	r3, [fp, #-1128]
	ldr	r3, [fp, #-1132]
	add	r2, r3, #1
	str	r2, [fp, #-1132]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r2, r3, r2
	ldr	r3, [fp, #-1128]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldrb	r3, [r3, #-1028]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-1132]
	add	r2, r3, #1
	str	r2, [fp, #-1132]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r2, r3, r2
	ldr	r3, [fp, #-1128]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldrb	r3, [r3, #-1027]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-1132]
	add	r2, r3, #1
	str	r2, [fp, #-1132]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r2, r3, r2
	ldr	r3, [fp, #-1128]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldrb	r3, [r3, #-1026]	@ zero_extendqisi2
	strb	r3, [r2]
	ldr	r3, [fp, #-1136]
	cmp	r3, #4
	bne	.L1081
	ldr	r3, [fp, #-1132]
	add	r2, r3, #1
	str	r2, [fp, #-1132]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r3, r3, r2
	mvn	r2, #0
	strb	r2, [r3]
.L1081:
	ldr	r3, [fp, #-1148]
	add	r3, r3, #2
	str	r3, [fp, #-1148]
.L1074:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-1148]
	cmp	r3, r2
	blt	.L1082
	b	.L1078
.L1119:
	nop
.L1078:
	ldr	r1, [fp, #-1056]
	ldr	r0, [fp, #-1184]
	bl	skip
	ldr	r3, [fp, #-1144]
	add	r3, r3, #1
	str	r3, [fp, #-1144]
.L1073:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r3, [fp, #-1144]
	cmp	r3, r2
	blt	.L1083
	b	.L1084
.L1062:
	mov	r3, #0
	str	r3, [fp, #-1120]
	mov	r3, #0
	str	r3, [fp, #-1116]
	mov	r3, #0
	str	r3, [fp, #-1112]
	mov	r3, #0
	str	r3, [fp, #-1108]
	mov	r3, #0
	str	r3, [fp, #-1104]
	mov	r3, #0
	str	r3, [fp, #-1100]
	mov	r3, #0
	str	r3, [fp, #-1096]
	mov	r3, #0
	str	r3, [fp, #-1092]
	mov	r3, #0
	str	r3, [fp, #-1088]
	mov	r3, #0
	str	r3, [fp, #-1084]
	ldr	r3, [fp, #-1072]
	sub	r2, r3, #14
	ldr	r3, [fp, #-1068]
	sub	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-1184]
	bl	skip
	ldr	r3, [fp, #-1064]
	cmp	r3, #24
	bne	.L1085
	ldr	r3, [fp, #-1184]
	ldr	r2, [r3]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	str	r3, [fp, #-1140]
	b	.L1086
.L1085:
	ldr	r3, [fp, #-1064]
	cmp	r3, #16
	bne	.L1087
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	lsl	r3, r3, #1
	str	r3, [fp, #-1140]
	b	.L1086
.L1087:
	mov	r3, #0
	str	r3, [fp, #-1140]
.L1086:
	ldr	r3, [fp, #-1140]
	rsb	r3, r3, #0
	and	r3, r3, #3
	str	r3, [fp, #-1056]
	ldr	r3, [fp, #-1064]
	cmp	r3, #24
	bne	.L1088
	mov	r3, #1
	str	r3, [fp, #-1084]
	b	.L1089
.L1088:
	ldr	r3, [fp, #-1064]
	cmp	r3, #32
	bne	.L1089
	ldr	r3, [fp, #-1160]
	cmp	r3, #255
	bne	.L1089
	ldr	r3, [fp, #-1164]
	cmp	r3, #65280
	bne	.L1089
	ldr	r3, [fp, #-1168]
	cmp	r3, #-16777216
	bne	.L1089
	ldr	r3, [fp, #-1156]
	cmp	r3, #-16777216
	bne	.L1089
	mov	r3, #2
	str	r3, [fp, #-1084]
.L1089:
	ldr	r3, [fp, #-1084]
	cmp	r3, #0
	bne	.L1090
	ldr	r3, [fp, #-1168]
	cmp	r3, #0
	beq	.L1091
	ldr	r3, [fp, #-1164]
	cmp	r3, #0
	beq	.L1091
	ldr	r3, [fp, #-1160]
	cmp	r3, #0
	bne	.L1092
.L1091:
	ldr	r0, .L1120+60
	bl	e
	mov	r3, #0
	b	.L1116
.L1092:
	ldr	r0, [fp, #-1168]
	bl	high_bit
	mov	r3, r0
	sub	r3, r3, #7
	str	r3, [fp, #-1120]
	ldr	r0, [fp, #-1168]
	bl	bitcount
	str	r0, [fp, #-1104]
	ldr	r0, [fp, #-1164]
	bl	high_bit
	mov	r3, r0
	sub	r3, r3, #7
	str	r3, [fp, #-1116]
	ldr	r0, [fp, #-1168]
	bl	bitcount
	str	r0, [fp, #-1100]
	ldr	r0, [fp, #-1160]
	bl	high_bit
	mov	r3, r0
	sub	r3, r3, #7
	str	r3, [fp, #-1112]
	ldr	r0, [fp, #-1168]
	bl	bitcount
	str	r0, [fp, #-1096]
	ldr	r0, [fp, #-1156]
	bl	high_bit
	mov	r3, r0
	sub	r3, r3, #7
	str	r3, [fp, #-1108]
	ldr	r0, [fp, #-1168]
	bl	bitcount
	str	r0, [fp, #-1092]
.L1090:
	mov	r3, #0
	str	r3, [fp, #-1144]
	b	.L1093
.L1108:
	ldr	r3, [fp, #-1084]
	cmp	r3, #0
	beq	.L1094
	mov	r3, #0
	str	r3, [fp, #-1148]
	b	.L1095
.L1099:
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r1, r0
	ldr	r3, [fp, #-1088]
	add	r3, r3, #2
	ldr	r2, [fp, #-1172]
	add	r3, r2, r3
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r1, r0
	ldr	r3, [fp, #-1088]
	add	r3, r3, #1
	ldr	r2, [fp, #-1172]
	add	r3, r2, r3
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r1, r0
	ldr	r3, [fp, #-1088]
	ldr	r2, [fp, #-1172]
	add	r3, r2, r3
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-1088]
	add	r3, r3, #3
	str	r3, [fp, #-1088]
	ldr	r3, [fp, #-1084]
	cmp	r3, #2
	bne	.L1096
	ldr	r0, [fp, #-1184]
	bl	get8
	mov	r3, r0
	b	.L1097
.L1096:
	mov	r3, #255
.L1097:
	str	r3, [fp, #-1044]
	ldr	r3, [fp, #-1136]
	cmp	r3, #4
	bne	.L1098
	ldr	r3, [fp, #-1088]
	add	r2, r3, #1
	str	r2, [fp, #-1088]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r3, r3, r2
	ldr	r2, [fp, #-1044]
	and	r2, r2, #255
	strb	r2, [r3]
.L1098:
	ldr	r3, [fp, #-1148]
	add	r3, r3, #1
	str	r3, [fp, #-1148]
.L1095:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-1148]
	cmp	r3, r2
	blt	.L1099
	b	.L1100
.L1094:
	mov	r3, #0
	str	r3, [fp, #-1148]
	b	.L1101
.L1107:
	ldr	r3, [fp, #-1064]
	cmp	r3, #16
	bne	.L1102
	ldr	r0, [fp, #-1184]
	bl	get16le
	mov	r3, r0
	b	.L1103
.L1102:
	ldr	r0, [fp, #-1184]
	bl	get32le
	mov	r3, r0
.L1103:
	str	r3, [fp, #-1052]
	ldr	r2, [fp, #-1052]
	ldr	r3, [fp, #-1168]
	and	r3, r3, r2
	ldr	r2, [fp, #-1104]
	ldr	r1, [fp, #-1120]
	mov	r0, r3
	bl	shiftsigned
	mov	r1, r0
	ldr	r3, [fp, #-1088]
	add	r2, r3, #1
	str	r2, [fp, #-1088]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r3, r3, r2
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r2, [fp, #-1052]
	ldr	r3, [fp, #-1164]
	and	r3, r3, r2
	ldr	r2, [fp, #-1100]
	ldr	r1, [fp, #-1116]
	mov	r0, r3
	bl	shiftsigned
	mov	r1, r0
	ldr	r3, [fp, #-1088]
	add	r2, r3, #1
	str	r2, [fp, #-1088]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r3, r3, r2
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r2, [fp, #-1052]
	ldr	r3, [fp, #-1160]
	and	r3, r3, r2
	ldr	r2, [fp, #-1096]
	ldr	r1, [fp, #-1112]
	mov	r0, r3
	bl	shiftsigned
	mov	r1, r0
	ldr	r3, [fp, #-1088]
	add	r2, r3, #1
	str	r2, [fp, #-1088]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r3, r3, r2
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-1156]
	cmp	r3, #0
	beq	.L1104
	ldr	r2, [fp, #-1052]
	ldr	r3, [fp, #-1156]
	and	r3, r3, r2
	ldr	r2, [fp, #-1092]
	ldr	r1, [fp, #-1108]
	mov	r0, r3
	bl	shiftsigned
	mov	r3, r0
	b	.L1105
.L1104:
	mov	r3, #255
.L1105:
	str	r3, [fp, #-1048]
	ldr	r3, [fp, #-1136]
	cmp	r3, #4
	bne	.L1106
	ldr	r3, [fp, #-1088]
	add	r2, r3, #1
	str	r2, [fp, #-1088]
	mov	r2, r3
	ldr	r3, [fp, #-1172]
	add	r3, r3, r2
	ldr	r2, [fp, #-1048]
	and	r2, r2, #255
	strb	r2, [r3]
.L1106:
	ldr	r3, [fp, #-1148]
	add	r3, r3, #1
	str	r3, [fp, #-1148]
.L1101:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-1148]
	cmp	r3, r2
	blt	.L1107
.L1100:
	ldr	r1, [fp, #-1056]
	ldr	r0, [fp, #-1184]
	bl	skip
	ldr	r3, [fp, #-1144]
	add	r3, r3, #1
	str	r3, [fp, #-1144]
.L1093:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r3, [fp, #-1144]
	cmp	r3, r2
	blt	.L1108
.L1084:
	ldr	r3, [fp, #-1060]
	cmp	r3, #0
	beq	.L1109
	mov	r3, #0
	str	r3, [fp, #-1144]
	b	.L1110
.L1113:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	ldr	r2, [fp, #-1144]
	mul	r3, r2, r3
	ldr	r2, [fp, #-1136]
	mul	r3, r2, r3
	ldr	r2, [fp, #-1172]
	add	r3, r2, r3
	str	r3, [fp, #-1040]
	ldr	r3, [fp, #-1184]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-1144]
	sub	r3, r2, r3
	sub	r3, r3, #1
	ldr	r2, [fp, #-1184]
	ldr	r2, [r2]
	mul	r3, r2, r3
	ldr	r2, [fp, #-1136]
	mul	r3, r2, r3
	ldr	r2, [fp, #-1172]
	add	r3, r2, r3
	str	r3, [fp, #-1036]
	mov	r3, #0
	str	r3, [fp, #-1148]
	b	.L1111
.L1112:
	ldr	r3, [fp, #-1148]
	ldr	r2, [fp, #-1040]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-1173]
	ldr	r3, [fp, #-1148]
	ldr	r2, [fp, #-1036]
	add	r2, r2, r3
	ldr	r3, [fp, #-1148]
	ldr	r1, [fp, #-1040]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-1148]
	ldr	r2, [fp, #-1036]
	add	r3, r2, r3
	ldrb	r2, [fp, #-1173]
	strb	r2, [r3]
	ldr	r3, [fp, #-1148]
	add	r3, r3, #1
	str	r3, [fp, #-1148]
.L1111:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-1136]
	mul	r3, r2, r3
	ldr	r2, [fp, #-1148]
	cmp	r2, r3
	blt	.L1112
	ldr	r3, [fp, #-1144]
	add	r3, r3, #1
	str	r3, [fp, #-1144]
.L1110:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3, #4]
	asr	r3, r3, #1
	ldr	r2, [fp, #-1144]
	cmp	r2, r3
	blt	.L1113
.L1109:
	ldr	r3, [fp, #4]
	cmp	r3, #0
	beq	.L1114
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-1136]
	cmp	r2, r3
	beq	.L1114
	ldr	r3, [fp, #-1184]
	ldr	r2, [r3]
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3, #4]
	str	r3, [sp]
	mov	r3, r2
	ldr	r2, [fp, #4]
	ldr	r1, [fp, #-1136]
	ldr	r0, [fp, #-1172]
	bl	convert_format
	str	r0, [fp, #-1172]
	ldr	r3, [fp, #-1172]
	cmp	r3, #0
	bne	.L1114
	ldr	r3, [fp, #-1172]
	b	.L1116
.L1114:
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-1188]
	str	r2, [r3]
	ldr	r3, [fp, #-1184]
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r3, [fp, #-1192]
	str	r2, [r3]
	ldr	r3, [fp, #-1196]
	cmp	r3, #0
	beq	.L1115
	ldr	r3, [fp, #-1196]
	ldr	r2, [fp, #-1136]
	str	r2, [r3]
.L1115:
	ldr	r3, [fp, #-1172]
.L1116:
	ldr	r2, .L1120
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1117
	bl	__stack_chk_fail
.L1117:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1121:
	.align	2
.L1120:
	.word	.LC109
	.word	.LC100
	.word	.LC101
	.word	failure_reason
	.word	.LC102
	.word	.LC103
	.word	1431655766
	.word	.LC104
	.word	__PRETTY_FUNCTION__.8113
	.word	2924
	.word	.LC7
	.word	.LC105
	.word	.LC9
	.word	.LC106
	.word	.LC107
	.word	.LC108
	.size	bmp_load, .-bmp_load
	.align	2
	.global	stbi_bmp_load
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_bmp_load, %function
stbi_bmp_load:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r1, .L1125
	ldr	r0, [fp, #-16]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L1123
	mov	r3, #0
	b	.L1124
.L1123:
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-12]
	bl	stbi_bmp_load_from_file
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	fclose
	ldr	r3, [fp, #-8]
.L1124:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1126:
	.align	2
.L1125:
	.word	.LC4
	.size	stbi_bmp_load, .-stbi_bmp_load
	.section	.rodata
	.align	2
.LC110:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_bmp_load_from_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_bmp_load_from_file, %function
stbi_bmp_load_from_file:
	@ args = 4, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, .L1130
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_file
	sub	r0, fp, #36
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-44]
	bl	bmp_load
	mov	r3, r0
	ldr	r2, .L1130
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1129
	bl	__stack_chk_fail
.L1129:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1131:
	.align	2
.L1130:
	.word	.LC110
	.size	stbi_bmp_load_from_file, .-stbi_bmp_load_from_file
	.section	.rodata
	.align	2
.LC111:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_bmp_load_from_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_bmp_load_from_memory, %function
stbi_bmp_load_from_memory:
	@ args = 8, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-56]
	ldr	r3, .L1135
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_mem
	sub	r0, fp, #36
	ldr	r3, [fp, #8]
	str	r3, [sp]
	ldr	r3, [fp, #-56]
	ldr	r2, [fp, #-52]
	ldr	r1, [fp, #-48]
	bl	bmp_load
	mov	r3, r0
	ldr	r2, .L1135
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1134
	bl	__stack_chk_fail
.L1134:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1136:
	.align	2
.L1135:
	.word	.LC111
	.size	stbi_bmp_load_from_memory, .-stbi_bmp_load_from_memory
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	tga_test, %function
tga_test:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	get8u
	ldr	r0, [fp, #-16]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	ble	.L1138
	mov	r3, #0
	b	.L1139
.L1138:
	ldr	r0, [fp, #-16]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	beq	.L1140
	ldr	r3, [fp, #-8]
	cmp	r3, #2
	beq	.L1140
	ldr	r3, [fp, #-8]
	cmp	r3, #3
	beq	.L1140
	ldr	r3, [fp, #-8]
	cmp	r3, #9
	beq	.L1140
	ldr	r3, [fp, #-8]
	cmp	r3, #10
	beq	.L1140
	ldr	r3, [fp, #-8]
	cmp	r3, #11
	beq	.L1140
	mov	r3, #0
	b	.L1139
.L1140:
	ldr	r0, [fp, #-16]
	bl	get16
	ldr	r0, [fp, #-16]
	bl	get16
	ldr	r0, [fp, #-16]
	bl	get8
	ldr	r0, [fp, #-16]
	bl	get16
	ldr	r0, [fp, #-16]
	bl	get16
	ldr	r0, [fp, #-16]
	bl	get16
	mov	r3, r0
	cmp	r3, #0
	bgt	.L1141
	mov	r3, #0
	b	.L1139
.L1141:
	ldr	r0, [fp, #-16]
	bl	get16
	mov	r3, r0
	cmp	r3, #0
	bgt	.L1142
	mov	r3, #0
	b	.L1139
.L1142:
	ldr	r0, [fp, #-16]
	bl	get8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #8
	beq	.L1143
	ldr	r3, [fp, #-8]
	cmp	r3, #16
	beq	.L1143
	ldr	r3, [fp, #-8]
	cmp	r3, #24
	beq	.L1143
	ldr	r3, [fp, #-8]
	cmp	r3, #32
	beq	.L1143
	mov	r3, #0
	b	.L1139
.L1143:
	mov	r3, #1
.L1139:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	tga_test, .-tga_test
	.section	.rodata
	.align	2
.LC112:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_tga_test_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_tga_test_file, %function
stbi_tga_test_file:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	ldr	r3, .L1147
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, [fp, #-48]
	bl	ftell
	str	r0, [fp, #-44]
	sub	r3, fp, #36
	ldr	r1, [fp, #-48]
	mov	r0, r3
	bl	start_file
	sub	r3, fp, #36
	mov	r0, r3
	bl	tga_test
	str	r0, [fp, #-40]
	mov	r2, #0
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	fseek
	ldr	r3, [fp, #-40]
	ldr	r2, .L1147
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1146
	bl	__stack_chk_fail
.L1146:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1148:
	.align	2
.L1147:
	.word	.LC112
	.size	stbi_tga_test_file, .-stbi_tga_test_file
	.section	.rodata
	.align	2
.LC113:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_tga_test_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_tga_test_memory, %function
stbi_tga_test_memory:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r3, .L1152
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_mem
	sub	r3, fp, #36
	mov	r0, r3
	bl	tga_test
	mov	r3, r0
	ldr	r2, .L1152
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1151
	bl	__stack_chk_fail
.L1151:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1153:
	.align	2
.L1152:
	.word	.LC113
	.size	stbi_tga_test_memory, .-stbi_tga_test_memory
	.section	.rodata
	.align	2
.LC114:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	tga_load, %function
tga_load:
	@ args = 4, pretend = 0, frame = 128
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #132
	str	r0, [fp, #-128]
	str	r1, [fp, #-132]
	str	r2, [fp, #-136]
	str	r3, [fp, #-140]
	ldr	r3, .L1197
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r0, [fp, #-128]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-72]
	ldr	r0, [fp, #-128]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-68]
	ldr	r0, [fp, #-128]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-120]
	mov	r3, #0
	str	r3, [fp, #-116]
	ldr	r0, [fp, #-128]
	bl	get16le
	str	r0, [fp, #-64]
	ldr	r0, [fp, #-128]
	bl	get16le
	str	r0, [fp, #-60]
	ldr	r0, [fp, #-128]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-56]
	ldr	r0, [fp, #-128]
	bl	get16le
	str	r0, [fp, #-52]
	ldr	r0, [fp, #-128]
	bl	get16le
	str	r0, [fp, #-48]
	ldr	r0, [fp, #-128]
	bl	get16le
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-128]
	bl	get16le
	str	r0, [fp, #-40]
	ldr	r0, [fp, #-128]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-112]
	ldr	r0, [fp, #-128]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-108]
	mov	r3, #0
	str	r3, [fp, #-96]
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r3, #1
	str	r3, [fp, #-88]
	ldr	r3, [fp, #-120]
	cmp	r3, #7
	ble	.L1155
	ldr	r3, [fp, #-120]
	sub	r3, r3, #8
	str	r3, [fp, #-120]
	mov	r3, #1
	str	r3, [fp, #-116]
.L1155:
	ldr	r3, [fp, #-36]
	and	r3, r3, #32
	cmp	r3, #0
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	ble	.L1156
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	ble	.L1156
	ldr	r3, [fp, #-120]
	cmp	r3, #0
	ble	.L1156
	ldr	r3, [fp, #-120]
	cmp	r3, #3
	bgt	.L1156
	ldr	r3, [fp, #-112]
	cmp	r3, #8
	beq	.L1157
	ldr	r3, [fp, #-112]
	cmp	r3, #16
	beq	.L1157
	ldr	r3, [fp, #-112]
	cmp	r3, #24
	beq	.L1157
	ldr	r3, [fp, #-112]
	cmp	r3, #32
	beq	.L1157
.L1156:
	mov	r3, #0
	b	.L1195
.L1157:
	ldr	r3, [fp, #-68]
	cmp	r3, #0
	beq	.L1159
	ldr	r3, [fp, #-56]
	str	r3, [fp, #-112]
.L1159:
	ldr	r3, [fp, #-132]
	ldr	r2, [fp, #-44]
	str	r2, [r3]
	ldr	r3, [fp, #-136]
	ldr	r2, [fp, #-40]
	str	r2, [r3]
	ldr	r3, [fp, #4]
	cmp	r3, #0
	ble	.L1160
	ldr	r3, [fp, #4]
	cmp	r3, #4
	ble	.L1161
.L1160:
	ldr	r3, [fp, #-112]
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	str	r3, [fp, #4]
	ldr	r3, [fp, #-140]
	ldr	r2, [fp, #4]
	str	r2, [r3]
	b	.L1162
.L1161:
	ldr	r3, [fp, #-112]
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	mov	r2, r3
	ldr	r3, [fp, #-140]
	str	r2, [r3]
.L1162:
	ldr	r3, [fp, #-44]
	ldr	r2, [fp, #-40]
	mul	r3, r2, r3
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-32]
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-128]
	bl	skip
	ldr	r3, [fp, #-68]
	cmp	r3, #0
	beq	.L1163
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-128]
	bl	skip
	ldr	r3, [fp, #-60]
	ldr	r2, [fp, #-56]
	mul	r3, r2, r3
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-108]
	ldr	r3, [fp, #-60]
	ldr	r2, [fp, #-56]
	mul	r3, r2, r3
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	mov	r2, r3
	ldr	r1, [fp, #-108]
	ldr	r0, [fp, #-128]
	bl	getn
.L1163:
	mov	r3, #0
	str	r3, [fp, #-104]
	b	.L1164
.L1188:
	ldr	r3, [fp, #-116]
	cmp	r3, #0
	beq	.L1165
	ldr	r3, [fp, #-96]
	cmp	r3, #0
	bne	.L1166
	ldr	r0, [fp, #-128]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	and	r3, r3, #127
	add	r3, r3, #1
	str	r3, [fp, #-96]
	ldr	r3, [fp, #-28]
	asr	r3, r3, #7
	str	r3, [fp, #-92]
	mov	r3, #1
	str	r3, [fp, #-88]
	b	.L1167
.L1166:
	ldr	r3, [fp, #-92]
	cmp	r3, #0
	bne	.L1167
	mov	r3, #1
	str	r3, [fp, #-88]
	b	.L1167
.L1165:
	mov	r3, #1
	str	r3, [fp, #-88]
.L1167:
	ldr	r3, [fp, #-88]
	cmp	r3, #0
	beq	.L1168
	ldr	r3, [fp, #-68]
	cmp	r3, #0
	beq	.L1169
	ldr	r0, [fp, #-128]
	bl	get8u
	mov	r3, r0
	str	r3, [fp, #-84]
	ldr	r2, [fp, #-84]
	ldr	r3, [fp, #-60]
	cmp	r2, r3
	blt	.L1170
	mov	r3, #0
	str	r3, [fp, #-84]
.L1170:
	ldr	r3, [fp, #-112]
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	mov	r2, r3
	ldr	r3, [fp, #-84]
	mul	r3, r2, r3
	str	r3, [fp, #-84]
	mov	r3, #0
	str	r3, [fp, #-100]
	b	.L1171
.L1172:
	ldr	r2, [fp, #-84]
	ldr	r3, [fp, #-100]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-108]
	add	r3, r3, r2
	ldrb	r1, [r3]	@ zero_extendqisi2
	sub	r2, fp, #24
	ldr	r3, [fp, #-100]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	str	r3, [fp, #-100]
.L1171:
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-112]
	cmp	r2, r3
	bgt	.L1172
	b	.L1173
.L1169:
	mov	r3, #0
	str	r3, [fp, #-100]
	b	.L1174
.L1175:
	ldr	r0, [fp, #-128]
	bl	get8u
	mov	r3, r0
	mov	r1, r3
	sub	r2, fp, #24
	ldr	r3, [fp, #-100]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	str	r3, [fp, #-100]
.L1174:
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-112]
	cmp	r2, r3
	bgt	.L1175
.L1173:
	ldr	r3, [fp, #-112]
	sub	r3, r3, #8
	cmp	r3, #24
	ldrls	pc, [pc, r3, asl #2]
	b	.L1176
.L1178:
	.word	.L1181
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1180
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1179
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1176
	.word	.L1177
.L1181:
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	strb	r3, [fp, #-20]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	strb	r3, [fp, #-19]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	strb	r3, [fp, #-18]
	mvn	r3, #0
	strb	r3, [fp, #-17]
	b	.L1176
.L1180:
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	strb	r3, [fp, #-20]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	strb	r3, [fp, #-19]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	strb	r3, [fp, #-18]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	strb	r3, [fp, #-17]
	b	.L1176
.L1179:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	strb	r3, [fp, #-20]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	strb	r3, [fp, #-19]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	strb	r3, [fp, #-18]
	mvn	r3, #0
	strb	r3, [fp, #-17]
	b	.L1176
.L1177:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	strb	r3, [fp, #-20]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	strb	r3, [fp, #-19]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	strb	r3, [fp, #-18]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	strb	r3, [fp, #-17]
	nop
.L1176:
	mov	r3, #0
	str	r3, [fp, #-88]
.L1168:
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	cmp	r3, #3
	ldrls	pc, [pc, r3, asl #2]
	b	.L1182
.L1184:
	.word	.L1187
	.word	.L1186
	.word	.L1185
	.word	.L1183
.L1187:
	ldrb	r3, [fp, #-20]	@ zero_extendqisi2
	mov	r0, r3
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	mov	r1, r3
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	mov	ip, r3
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r4, r3, r2
	mov	r2, ip
	bl	compute_y
	mov	r3, r0
	strb	r3, [r4]
	b	.L1182
.L1186:
	ldrb	r3, [fp, #-20]	@ zero_extendqisi2
	mov	r0, r3
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	mov	r1, r3
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	mov	ip, r3
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r4, r3, r2
	mov	r2, ip
	bl	compute_y
	mov	r3, r0
	strb	r3, [r4]
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [fp, #-17]	@ zero_extendqisi2
	strb	r2, [r3]
	b	.L1182
.L1185:
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r2
	ldrb	r2, [fp, #-20]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [fp, #-19]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	add	r3, r3, #2
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [fp, #-18]	@ zero_extendqisi2
	strb	r2, [r3]
	b	.L1182
.L1183:
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r2
	ldrb	r2, [fp, #-20]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [fp, #-19]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	add	r3, r3, #2
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [fp, #-18]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	add	r3, r3, #3
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [fp, #-17]	@ zero_extendqisi2
	strb	r2, [r3]
	nop
.L1182:
	ldr	r3, [fp, #-96]
	sub	r3, r3, #1
	str	r3, [fp, #-96]
	ldr	r3, [fp, #-104]
	add	r3, r3, #1
	str	r3, [fp, #-104]
.L1164:
	ldr	r3, [fp, #-44]
	ldr	r2, [fp, #-40]
	mul	r3, r2, r3
	ldr	r2, [fp, #-104]
	cmp	r2, r3
	blt	.L1188
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	beq	.L1189
	mov	r3, #0
	str	r3, [fp, #-100]
	b	.L1190
.L1193:
	ldr	r3, [fp, #-100]
	ldr	r2, [fp, #-44]
	mul	r2, r3, r2
	ldr	r3, [fp, #4]
	mul	r3, r2, r3
	str	r3, [fp, #-80]
	ldr	r3, [fp, #-40]
	sub	r2, r3, #1
	ldr	r3, [fp, #-100]
	sub	r3, r2, r3
	ldr	r2, [fp, #-44]
	mul	r2, r3, r2
	ldr	r3, [fp, #4]
	mul	r3, r2, r3
	str	r3, [fp, #-76]
	ldr	r3, [fp, #-44]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	str	r3, [fp, #-104]
	b	.L1191
.L1192:
	ldr	r3, [fp, #-80]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-121]
	ldr	r3, [fp, #-76]
	ldr	r2, [fp, #-32]
	add	r2, r2, r3
	ldr	r3, [fp, #-80]
	ldr	r1, [fp, #-32]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-76]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [fp, #-121]
	strb	r2, [r3]
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	str	r3, [fp, #-80]
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
	ldr	r3, [fp, #-104]
	sub	r3, r3, #1
	str	r3, [fp, #-104]
.L1191:
	ldr	r3, [fp, #-104]
	cmp	r3, #0
	bgt	.L1192
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	str	r3, [fp, #-100]
.L1190:
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-40]
	cmp	r2, r3
	bgt	.L1193
.L1189:
	ldr	r3, [fp, #-108]
	cmp	r3, #0
	beq	.L1194
	ldr	r0, [fp, #-108]
	bl	free
.L1194:
	mov	r3, #0
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-56]
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-60]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-32]
.L1195:
	ldr	r2, .L1197
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1196
	bl	__stack_chk_fail
.L1196:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L1198:
	.align	2
.L1197:
	.word	.LC114
	.size	tga_load, .-tga_load
	.align	2
	.global	stbi_tga_load
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_tga_load, %function
stbi_tga_load:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r1, .L1202
	ldr	r0, [fp, #-16]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L1200
	mov	r3, #0
	b	.L1201
.L1200:
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-12]
	bl	stbi_tga_load_from_file
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	fclose
	ldr	r3, [fp, #-8]
.L1201:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1203:
	.align	2
.L1202:
	.word	.LC4
	.size	stbi_tga_load, .-stbi_tga_load
	.section	.rodata
	.align	2
.LC115:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_tga_load_from_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_tga_load_from_file, %function
stbi_tga_load_from_file:
	@ args = 4, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, .L1207
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_file
	sub	r0, fp, #36
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-44]
	bl	tga_load
	mov	r3, r0
	ldr	r2, .L1207
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1206
	bl	__stack_chk_fail
.L1206:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1208:
	.align	2
.L1207:
	.word	.LC115
	.size	stbi_tga_load_from_file, .-stbi_tga_load_from_file
	.section	.rodata
	.align	2
.LC116:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_tga_load_from_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_tga_load_from_memory, %function
stbi_tga_load_from_memory:
	@ args = 8, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-56]
	ldr	r3, .L1212
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_mem
	sub	r0, fp, #36
	ldr	r3, [fp, #8]
	str	r3, [sp]
	ldr	r3, [fp, #-56]
	ldr	r2, [fp, #-52]
	ldr	r1, [fp, #-48]
	bl	tga_load
	mov	r3, r0
	ldr	r2, .L1212
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1211
	bl	__stack_chk_fail
.L1211:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1213:
	.align	2
.L1212:
	.word	.LC116
	.size	stbi_tga_load_from_memory, .-stbi_tga_load_from_memory
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	psd_test, %function
psd_test:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	get32
	mov	r3, r0
	ldr	r2, .L1217
	cmp	r3, r2
	beq	.L1215
	mov	r3, #0
	b	.L1216
.L1215:
	mov	r3, #1
.L1216:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1218:
	.align	2
.L1217:
	.word	943870035
	.size	psd_test, .-psd_test
	.section	.rodata
	.align	2
.LC117:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_psd_test_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_psd_test_file, %function
stbi_psd_test_file:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	ldr	r3, .L1222
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, [fp, #-48]
	bl	ftell
	str	r0, [fp, #-44]
	sub	r3, fp, #36
	ldr	r1, [fp, #-48]
	mov	r0, r3
	bl	start_file
	sub	r3, fp, #36
	mov	r0, r3
	bl	psd_test
	str	r0, [fp, #-40]
	mov	r2, #0
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	fseek
	ldr	r3, [fp, #-40]
	ldr	r2, .L1222
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1221
	bl	__stack_chk_fail
.L1221:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1223:
	.align	2
.L1222:
	.word	.LC117
	.size	stbi_psd_test_file, .-stbi_psd_test_file
	.section	.rodata
	.align	2
.LC118:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_psd_test_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_psd_test_memory, %function
stbi_psd_test_memory:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r3, .L1227
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_mem
	sub	r3, fp, #36
	mov	r0, r3
	bl	psd_test
	mov	r3, r0
	ldr	r2, .L1227
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1226
	bl	__stack_chk_fail
.L1226:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1228:
	.align	2
.L1227:
	.word	.LC118
	.size	stbi_psd_test_memory, .-stbi_psd_test_memory
	.section	.rodata
	.align	2
.LC119:
	.ascii	"not PSD\000"
	.align	2
.LC120:
	.ascii	"wrong version\000"
	.align	2
.LC121:
	.ascii	"wrong channel count\000"
	.align	2
.LC122:
	.ascii	"unsupported bit depth\000"
	.align	2
.LC123:
	.ascii	"wrong color format\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	psd_load, %function
psd_load:
	@ args = 4, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #80
	str	r0, [fp, #-64]
	str	r1, [fp, #-68]
	str	r2, [fp, #-72]
	str	r3, [fp, #-76]
	ldr	r0, [fp, #-64]
	bl	get32
	mov	r3, r0
	ldr	r2, .L1268
	cmp	r3, r2
	beq	.L1230
	ldr	r0, .L1268+4
	bl	e
	mov	r3, #0
	b	.L1231
.L1230:
	ldr	r0, [fp, #-64]
	bl	get16
	mov	r3, r0
	cmp	r3, #1
	beq	.L1232
	ldr	r0, .L1268+8
	bl	e
	mov	r3, #0
	b	.L1231
.L1232:
	mov	r1, #6
	ldr	r0, [fp, #-64]
	bl	skip
	ldr	r0, [fp, #-64]
	bl	get16
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	blt	.L1233
	ldr	r3, [fp, #-28]
	cmp	r3, #16
	ble	.L1234
.L1233:
	ldr	r0, .L1268+12
	bl	e
	mov	r3, #0
	b	.L1231
.L1234:
	ldr	r0, [fp, #-64]
	bl	get32
	mov	r3, r0
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-64]
	bl	get32
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-64]
	bl	get16
	mov	r3, r0
	cmp	r3, #8
	beq	.L1235
	ldr	r0, .L1268+16
	bl	e
	mov	r3, #0
	b	.L1231
.L1235:
	ldr	r0, [fp, #-64]
	bl	get16
	mov	r3, r0
	cmp	r3, #3
	beq	.L1236
	ldr	r0, .L1268+20
	bl	e
	mov	r3, #0
	b	.L1231
.L1236:
	ldr	r0, [fp, #-64]
	bl	get32
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-64]
	bl	skip
	ldr	r0, [fp, #-64]
	bl	get32
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-64]
	bl	skip
	ldr	r0, [fp, #-64]
	bl	get32
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-64]
	bl	skip
	ldr	r0, [fp, #-64]
	bl	get16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #1
	ble	.L1237
	ldr	r0, .L1268+24
	bl	e
	mov	r3, #0
	b	.L1231
.L1237:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-24]
	mul	r3, r2, r3
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L1238
	ldr	r0, .L1268+28
	bl	e
	mov	r3, #0
	b	.L1231
.L1238:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-24]
	mul	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L1239
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-28]
	mul	r3, r2, r3
	lsl	r3, r3, #1
	mov	r1, r3
	ldr	r0, [fp, #-64]
	bl	skip
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L1240
.L1254:
	ldr	r3, [fp, #-56]
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	blt	.L1241
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L1242
.L1245:
	ldr	r3, [fp, #-56]
	cmp	r3, #3
	bne	.L1243
	mov	r2, #255
	b	.L1244
.L1243:
	mov	r2, #0
.L1244:
	ldr	r3, [fp, #-36]
	strb	r2, [r3]
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L1242:
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	blt	.L1245
	b	.L1246
.L1241:
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L1247
.L1253:
	ldr	r0, [fp, #-64]
	bl	get8
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	cmp	r3, #128
	beq	.L1247
	ldr	r3, [fp, #-44]
	cmp	r3, #127
	bgt	.L1248
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	b	.L1249
.L1250:
	ldr	r0, [fp, #-64]
	bl	get8
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-36]
	strb	r2, [r3]
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-44]
.L1249:
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	bne	.L1250
	b	.L1247
.L1248:
	ldr	r3, [fp, #-44]
	cmp	r3, #128
	ble	.L1247
	ldr	r3, [fp, #-44]
	eor	r3, r3, #255
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	str	r3, [fp, #-44]
	ldr	r0, [fp, #-64]
	bl	get8
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	b	.L1251
.L1252:
	ldr	r3, [fp, #-8]
	and	r2, r3, #255
	ldr	r3, [fp, #-36]
	strb	r2, [r3]
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-44]
.L1251:
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	bne	.L1252
.L1247:
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	blt	.L1253
.L1246:
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L1240:
	ldr	r3, [fp, #-56]
	cmp	r3, #3
	ble	.L1254
	b	.L1255
.L1239:
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L1256
.L1265:
	ldr	r3, [fp, #-56]
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	ble	.L1257
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L1258
.L1261:
	ldr	r3, [fp, #-56]
	cmp	r3, #3
	bne	.L1259
	mov	r2, #255
	b	.L1260
.L1259:
	mov	r2, #0
.L1260:
	ldr	r3, [fp, #-32]
	strb	r2, [r3]
	ldr	r3, [fp, #-32]
	add	r3, r3, #4
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L1258:
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	blt	.L1261
	b	.L1262
.L1257:
	mov	r3, #0
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L1263
.L1264:
	ldr	r0, [fp, #-64]
	bl	get8
	mov	r3, r0
	and	r2, r3, #255
	ldr	r3, [fp, #-32]
	strb	r2, [r3]
	ldr	r3, [fp, #-32]
	add	r3, r3, #4
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L1263:
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	blt	.L1264
.L1262:
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L1256:
	ldr	r3, [fp, #-56]
	cmp	r3, #3
	ble	.L1265
.L1255:
	ldr	r3, [fp, #4]
	cmp	r3, #0
	beq	.L1266
	ldr	r3, [fp, #4]
	cmp	r3, #4
	beq	.L1266
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	mov	r3, r2
	ldr	r2, [fp, #4]
	mov	r1, #4
	ldr	r0, [fp, #-40]
	bl	convert_format
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L1266
	ldr	r3, [fp, #-40]
	b	.L1231
.L1266:
	ldr	r3, [fp, #-76]
	cmp	r3, #0
	beq	.L1267
	ldr	r3, [fp, #-76]
	ldr	r2, [fp, #-28]
	str	r2, [r3]
.L1267:
	ldr	r3, [fp, #-72]
	ldr	r2, [fp, #-24]
	str	r2, [r3]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-20]
	str	r2, [r3]
	ldr	r3, [fp, #-40]
.L1231:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1269:
	.align	2
.L1268:
	.word	943870035
	.word	.LC119
	.word	.LC120
	.word	.LC121
	.word	.LC122
	.word	.LC123
	.word	.LC63
	.word	.LC9
	.size	psd_load, .-psd_load
	.align	2
	.global	stbi_psd_load
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_psd_load, %function
stbi_psd_load:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r1, .L1273
	ldr	r0, [fp, #-16]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L1271
	mov	r3, #0
	b	.L1272
.L1271:
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-12]
	bl	stbi_psd_load_from_file
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	fclose
	ldr	r3, [fp, #-8]
.L1272:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1274:
	.align	2
.L1273:
	.word	.LC4
	.size	stbi_psd_load, .-stbi_psd_load
	.section	.rodata
	.align	2
.LC124:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_psd_load_from_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_psd_load_from_file, %function
stbi_psd_load_from_file:
	@ args = 4, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, .L1278
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_file
	sub	r0, fp, #36
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-44]
	bl	psd_load
	mov	r3, r0
	ldr	r2, .L1278
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1277
	bl	__stack_chk_fail
.L1277:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1279:
	.align	2
.L1278:
	.word	.LC124
	.size	stbi_psd_load_from_file, .-stbi_psd_load_from_file
	.section	.rodata
	.align	2
.LC125:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_psd_load_from_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_psd_load_from_memory, %function
stbi_psd_load_from_memory:
	@ args = 8, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-56]
	ldr	r3, .L1283
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_mem
	sub	r0, fp, #36
	ldr	r3, [fp, #8]
	str	r3, [sp]
	ldr	r3, [fp, #-56]
	ldr	r2, [fp, #-52]
	ldr	r1, [fp, #-48]
	bl	psd_load
	mov	r3, r0
	ldr	r2, .L1283
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1282
	bl	__stack_chk_fail
.L1282:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1284:
	.align	2
.L1283:
	.word	.LC125
	.size	stbi_psd_load_from_memory, .-stbi_psd_load_from_memory
	.section	.rodata
	.align	2
.LC126:
	.ascii	"#?RADIANCE\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	hdr_test, %function
hdr_test:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, .L1290
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L1286
.L1289:
	ldr	r0, [fp, #-16]
	bl	get8
	mov	r1, r0
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r1, r3
	beq	.L1287
	mov	r3, #0
	b	.L1288
.L1287:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L1286:
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L1289
	mov	r3, #1
.L1288:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1291:
	.align	2
.L1290:
	.word	.LC126
	.size	hdr_test, .-hdr_test
	.section	.rodata
	.align	2
.LC127:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_hdr_test_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_hdr_test_memory, %function
stbi_hdr_test_memory:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r3, .L1295
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_mem
	sub	r3, fp, #36
	mov	r0, r3
	bl	hdr_test
	mov	r3, r0
	ldr	r2, .L1295
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1294
	bl	__stack_chk_fail
.L1294:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1296:
	.align	2
.L1295:
	.word	.LC127
	.size	stbi_hdr_test_memory, .-stbi_hdr_test_memory
	.section	.rodata
	.align	2
.LC128:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_hdr_test_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_hdr_test_file, %function
stbi_hdr_test_file:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	ldr	r3, .L1300
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, [fp, #-48]
	bl	ftell
	str	r0, [fp, #-44]
	sub	r3, fp, #36
	ldr	r1, [fp, #-48]
	mov	r0, r3
	bl	start_file
	sub	r3, fp, #36
	mov	r0, r3
	bl	hdr_test
	str	r0, [fp, #-40]
	mov	r2, #0
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	fseek
	ldr	r3, [fp, #-40]
	ldr	r2, .L1300
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1299
	bl	__stack_chk_fail
.L1299:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1301:
	.align	2
.L1300:
	.word	.LC128
	.size	stbi_hdr_test_file, .-stbi_hdr_test_file
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	hdr_gettoken, %function
hdr_gettoken:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-8]
	mov	r3, #0
	strb	r3, [fp, #-13]
	ldr	r0, [fp, #-24]
	bl	get8
	mov	r3, r0
	strb	r3, [fp, #-13]
	b	.L1303
.L1308:
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, r2
	ldrb	r2, [fp, #-13]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	ldr	r2, .L1311
	cmp	r3, r2
	bne	.L1304
	nop
.L1306:
	ldr	r0, [fp, #-24]
	bl	at_eof
	mov	r3, r0
	cmp	r3, #0
	bne	.L1310
	ldr	r0, [fp, #-24]
	bl	get8
	mov	r3, r0
	cmp	r3, #10
	bne	.L1306
	b	.L1310
.L1304:
	ldr	r0, [fp, #-24]
	bl	get8
	mov	r3, r0
	strb	r3, [fp, #-13]
.L1303:
	ldr	r0, [fp, #-24]
	bl	at_eof
	mov	r3, r0
	cmp	r3, #0
	bne	.L1307
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r3, #10
	bne	.L1308
	b	.L1307
.L1310:
	nop
.L1307:
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1312:
	.align	2
.L1311:
	.word	1023
	.size	hdr_gettoken, .-hdr_gettoken
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	hdr_convert, %function
hdr_convert:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r3, [fp, #-28]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L1314
	ldr	r3, [fp, #-28]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #136
	mov	r2, r3
	mov	r0, #0
	ldr	r1, .L1325
	bl	ldexp
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2f
	mov	r3, r0
	str	r3, [fp, #-16]	@ float
	ldr	r3, [fp, #-32]
	cmp	r3, #2
	bgt	.L1315
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	add	r3, r2, r3
	ldr	r2, [fp, #-28]
	add	r2, r2, #2
	ldrb	r2, [r2]	@ zero_extendqisi2
	add	r3, r3, r2
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r3, r0
	ldr	r1, [fp, #-16]	@ float
	mov	r0, r3
	bl	__aeabi_fmul
	mov	r3, r0
	ldr	r1, .L1325+4
	mov	r0, r3
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]	@ float
	b	.L1316
.L1315:
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r3, r0
	ldr	r1, [fp, #-16]	@ float
	mov	r0, r3
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]	@ float
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r4, r3, #4
	ldr	r1, [fp, #-16]	@ float
	mov	r0, r2
	bl	__aeabi_fmul
	mov	r3, r0
	str	r3, [r4]	@ float
	ldr	r3, [fp, #-28]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r4, r3, #8
	ldr	r1, [fp, #-16]	@ float
	mov	r0, r2
	bl	__aeabi_fmul
	mov	r3, r0
	str	r3, [r4]	@ float
.L1316:
	ldr	r3, [fp, #-32]
	cmp	r3, #2
	bne	.L1317
	ldr	r3, [fp, #-24]
	add	r3, r3, #4
	mov	r2, #1065353216
	str	r2, [r3]	@ float
.L1317:
	ldr	r3, [fp, #-32]
	cmp	r3, #4
	bne	.L1324
	ldr	r3, [fp, #-24]
	add	r3, r3, #12
	mov	r2, #1065353216
	str	r2, [r3]	@ float
	b	.L1324
.L1314:
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	cmp	r3, #3
	ldrls	pc, [pc, r3, asl #2]
	b	.L1324
.L1320:
	.word	.L1323
	.word	.L1322
	.word	.L1321
	.word	.L1319
.L1319:
	ldr	r3, [fp, #-24]
	add	r3, r3, #12
	mov	r2, #1065353216
	str	r2, [r3]	@ float
.L1321:
	ldr	r3, [fp, #-24]
	add	r2, r3, #8
	mov	r3, #0
	str	r3, [r2]	@ float
	ldr	r3, [fp, #-24]
	add	r3, r3, #4
	ldr	r2, [r2]	@ float
	str	r2, [r3]	@ float
	ldr	r2, [r3]	@ float
	ldr	r3, [fp, #-24]
	str	r2, [r3]	@ float
	b	.L1318
.L1322:
	ldr	r3, [fp, #-24]
	add	r3, r3, #4
	mov	r2, #1065353216
	str	r2, [r3]	@ float
.L1323:
	ldr	r3, [fp, #-24]
	mov	r2, #0
	str	r2, [r3]	@ float
	nop
.L1318:
.L1324:
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L1326:
	.align	2
.L1325:
	.word	1072693248
	.word	1077936128
	.size	hdr_convert, .-hdr_convert
	.section	.rodata
	.align	2
.LC129:
	.ascii	"#?RADIANCE\000"
	.align	2
.LC130:
	.ascii	"not HDR\000"
	.align	2
.LC131:
	.ascii	"FORMAT=32-bit_rle_rgbe\000"
	.align	2
.LC132:
	.ascii	"unsupported format\000"
	.align	2
.LC133:
	.ascii	"-Y \000"
	.align	2
.LC134:
	.ascii	"unsupported data layout\000"
	.align	2
.LC135:
	.ascii	"+X \000"
	.align	2
.LC136:
	.ascii	"invalid decoded scanline length\000"
	.align	2
.LC137:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	hdr_load, %function
hdr_load:
	@ args = 4, pretend = 0, frame = 1104
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #1104
	str	r0, [fp, #-1096]
	str	r1, [fp, #-1100]
	str	r2, [fp, #-1104]
	str	r3, [fp, #-1108]
	ldr	r3, .L1368
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-1084]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-1096]
	bl	hdr_gettoken
	mov	r3, r0
	ldr	r1, .L1368+4
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L1328
	ldr	r0, .L1368+8
	bl	e
	mov	r3, #0
	b	.L1363
.L1328:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-1096]
	bl	hdr_gettoken
	mov	r3, r0
	str	r3, [fp, #-1088]
	ldr	r3, [fp, #-1088]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L1366
	ldr	r3, [fp, #-1088]
	ldr	r1, .L1368+12
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L1328
	mov	r3, #1
	str	r3, [fp, #-1084]
	b	.L1328
.L1366:
	nop
	ldr	r3, [fp, #-1084]
	cmp	r3, #0
	bne	.L1333
	ldr	r0, .L1368+16
	bl	e
	mov	r3, #0
	b	.L1363
.L1333:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-1096]
	bl	hdr_gettoken
	mov	r3, r0
	str	r3, [fp, #-1088]
	ldr	r3, [fp, #-1088]
	mov	r2, #3
	ldr	r1, .L1368+20
	mov	r0, r3
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L1334
	ldr	r0, .L1368+24
	bl	e
	mov	r3, #0
	b	.L1363
.L1334:
	ldr	r3, [fp, #-1088]
	add	r3, r3, #3
	str	r3, [fp, #-1088]
	ldr	r0, [fp, #-1088]
	sub	r3, fp, #1072
	sub	r3, r3, #4
	sub	r3, r3, #12
	mov	r2, #10
	mov	r1, r3
	bl	strtol
	str	r0, [fp, #-1060]
	b	.L1335
.L1336:
	ldr	r3, [fp, #-1088]
	add	r3, r3, #1
	str	r3, [fp, #-1088]
.L1335:
	ldr	r3, [fp, #-1088]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #32
	beq	.L1336
	ldr	r3, [fp, #-1088]
	mov	r2, #3
	ldr	r1, .L1368+28
	mov	r0, r3
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L1337
	ldr	r0, .L1368+24
	bl	e
	mov	r3, #0
	b	.L1363
.L1337:
	ldr	r3, [fp, #-1088]
	add	r3, r3, #3
	str	r3, [fp, #-1088]
	ldr	r3, [fp, #-1088]
	mov	r2, #10
	mov	r1, #0
	mov	r0, r3
	bl	strtol
	str	r0, [fp, #-1056]
	ldr	r3, [fp, #-1100]
	ldr	r2, [fp, #-1056]
	str	r2, [r3]
	ldr	r3, [fp, #-1104]
	ldr	r2, [fp, #-1060]
	str	r2, [r3]
	ldr	r3, [fp, #-1108]
	mov	r2, #3
	str	r2, [r3]
	ldr	r3, [fp, #4]
	cmp	r3, #0
	bne	.L1338
	mov	r3, #3
	str	r3, [fp, #4]
.L1338:
	ldr	r3, [fp, #-1060]
	ldr	r2, [fp, #-1056]
	mul	r3, r2, r3
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-1052]
	ldr	r3, [fp, #-1056]
	cmp	r3, #7
	ble	.L1339
	ldr	r3, [fp, #-1056]
	cmp	r3, #32768
	blt	.L1340
.L1339:
	mov	r3, #0
	str	r3, [fp, #-1072]
	b	.L1341
.L1344:
	mov	r3, #0
	str	r3, [fp, #-1076]
	b	.L1342
.L1367:
	nop
.L1343:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #8
	mov	r2, #4
	mov	r1, r3
	ldr	r0, [fp, #-1096]
	bl	getn
	ldr	r3, [fp, #-1072]
	ldr	r2, [fp, #-1056]
	mul	r3, r2, r3
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	mov	r1, r3
	ldr	r3, [fp, #-1076]
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	add	r3, r1, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-1052]
	add	r0, r2, r3
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #8
	ldr	r2, [fp, #4]
	mov	r1, r3
	bl	hdr_convert
	ldr	r3, [fp, #-1076]
	add	r3, r3, #1
	str	r3, [fp, #-1076]
.L1342:
	ldr	r2, [fp, #-1076]
	ldr	r3, [fp, #-1056]
	cmp	r2, r3
	blt	.L1367
	ldr	r3, [fp, #-1072]
	add	r3, r3, #1
	str	r3, [fp, #-1072]
.L1341:
	ldr	r2, [fp, #-1072]
	ldr	r3, [fp, #-1060]
	cmp	r2, r3
	blt	.L1344
	b	.L1345
.L1340:
	mov	r3, #0
	str	r3, [fp, #-1080]
	mov	r3, #0
	str	r3, [fp, #-1072]
	b	.L1346
.L1362:
	ldr	r0, [fp, #-1096]
	bl	get8
	str	r0, [fp, #-1048]
	ldr	r0, [fp, #-1096]
	bl	get8
	str	r0, [fp, #-1044]
	ldr	r0, [fp, #-1096]
	bl	get8
	str	r0, [fp, #-1040]
	ldr	r3, [fp, #-1048]
	cmp	r3, #2
	bne	.L1347
	ldr	r3, [fp, #-1044]
	cmp	r3, #2
	bne	.L1347
	ldr	r3, [fp, #-1040]
	and	r3, r3, #128
	cmp	r3, #0
	beq	.L1348
.L1347:
	ldr	r3, [fp, #-1048]
	and	r3, r3, #255
	strb	r3, [fp, #-1036]
	ldr	r3, [fp, #-1044]
	and	r3, r3, #255
	strb	r3, [fp, #-1035]
	ldr	r3, [fp, #-1040]
	and	r3, r3, #255
	strb	r3, [fp, #-1034]
	ldr	r0, [fp, #-1096]
	bl	get8
	mov	r3, r0
	and	r3, r3, #255
	strb	r3, [fp, #-1033]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #8
	ldr	r2, [fp, #4]
	mov	r1, r3
	ldr	r0, [fp, #-1052]
	bl	hdr_convert
	mov	r3, #1
	str	r3, [fp, #-1076]
	mov	r3, #0
	str	r3, [fp, #-1072]
	ldr	r0, [fp, #-1080]
	bl	free
	b	.L1343
.L1348:
	ldr	r3, [fp, #-1040]
	lsl	r3, r3, #8
	str	r3, [fp, #-1040]
	ldr	r0, [fp, #-1096]
	bl	get8
	mov	r2, r0
	ldr	r3, [fp, #-1040]
	orr	r3, r3, r2
	str	r3, [fp, #-1040]
	ldr	r2, [fp, #-1040]
	ldr	r3, [fp, #-1056]
	cmp	r2, r3
	beq	.L1349
	ldr	r0, [fp, #-1052]
	bl	free
	ldr	r0, [fp, #-1080]
	bl	free
	ldr	r0, .L1368+32
	bl	e
	mov	r3, #0
	b	.L1363
.L1349:
	ldr	r3, [fp, #-1080]
	cmp	r3, #0
	bne	.L1350
	ldr	r3, [fp, #-1056]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-1080]
.L1350:
	mov	r3, #0
	str	r3, [fp, #-1068]
	b	.L1351
.L1359:
	mov	r3, #0
	str	r3, [fp, #-1076]
	b	.L1352
.L1358:
	ldr	r0, [fp, #-1096]
	bl	get8
	mov	r3, r0
	strb	r3, [fp, #-1090]
	ldrb	r3, [fp, #-1090]	@ zero_extendqisi2
	cmp	r3, #128
	bls	.L1353
	ldr	r0, [fp, #-1096]
	bl	get8
	mov	r3, r0
	strb	r3, [fp, #-1089]
	ldrb	r3, [fp, #-1090]
	sub	r3, r3, #128
	strb	r3, [fp, #-1090]
	mov	r3, #0
	str	r3, [fp, #-1064]
	b	.L1354
.L1355:
	ldr	r3, [fp, #-1076]
	add	r2, r3, #1
	str	r2, [fp, #-1076]
	lsl	r2, r3, #2
	ldr	r3, [fp, #-1068]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-1080]
	add	r3, r3, r2
	ldrb	r2, [fp, #-1089]
	strb	r2, [r3]
	ldr	r3, [fp, #-1064]
	add	r3, r3, #1
	str	r3, [fp, #-1064]
.L1354:
	ldrb	r3, [fp, #-1090]	@ zero_extendqisi2
	ldr	r2, [fp, #-1064]
	cmp	r2, r3
	blt	.L1355
	b	.L1352
.L1353:
	mov	r3, #0
	str	r3, [fp, #-1064]
	b	.L1356
.L1357:
	ldr	r0, [fp, #-1096]
	bl	get8
	mov	r1, r0
	ldr	r3, [fp, #-1076]
	add	r2, r3, #1
	str	r2, [fp, #-1076]
	lsl	r2, r3, #2
	ldr	r3, [fp, #-1068]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-1080]
	add	r3, r3, r2
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-1064]
	add	r3, r3, #1
	str	r3, [fp, #-1064]
.L1356:
	ldrb	r3, [fp, #-1090]	@ zero_extendqisi2
	ldr	r2, [fp, #-1064]
	cmp	r2, r3
	blt	.L1357
.L1352:
	ldr	r2, [fp, #-1076]
	ldr	r3, [fp, #-1056]
	cmp	r2, r3
	blt	.L1358
	ldr	r3, [fp, #-1068]
	add	r3, r3, #1
	str	r3, [fp, #-1068]
.L1351:
	ldr	r3, [fp, #-1068]
	cmp	r3, #3
	ble	.L1359
	mov	r3, #0
	str	r3, [fp, #-1076]
	b	.L1360
.L1361:
	ldr	r3, [fp, #-1072]
	ldr	r2, [fp, #-1056]
	mul	r2, r3, r2
	ldr	r3, [fp, #-1076]
	add	r3, r2, r3
	ldr	r2, [fp, #4]
	mul	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-1052]
	add	r0, r2, r3
	ldr	r3, [fp, #-1076]
	lsl	r3, r3, #2
	mov	r2, r3
	ldr	r3, [fp, #-1080]
	add	r3, r3, r2
	ldr	r2, [fp, #4]
	mov	r1, r3
	bl	hdr_convert
	ldr	r3, [fp, #-1076]
	add	r3, r3, #1
	str	r3, [fp, #-1076]
.L1360:
	ldr	r2, [fp, #-1076]
	ldr	r3, [fp, #-1056]
	cmp	r2, r3
	blt	.L1361
	ldr	r3, [fp, #-1072]
	add	r3, r3, #1
	str	r3, [fp, #-1072]
.L1346:
	ldr	r2, [fp, #-1072]
	ldr	r3, [fp, #-1060]
	cmp	r2, r3
	blt	.L1362
	ldr	r0, [fp, #-1080]
	bl	free
.L1345:
	ldr	r3, [fp, #-1052]
.L1363:
	ldr	r2, .L1368
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1364
	bl	__stack_chk_fail
.L1364:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1369:
	.align	2
.L1368:
	.word	.LC137
	.word	.LC129
	.word	.LC130
	.word	.LC131
	.word	.LC132
	.word	.LC133
	.word	.LC134
	.word	.LC135
	.word	.LC136
	.size	hdr_load, .-hdr_load
	.section	.rodata
	.align	2
.LC138:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_hdr_load_from_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_hdr_load_from_file, %function
stbi_hdr_load_from_file:
	@ args = 4, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, .L1373
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_file
	sub	r0, fp, #36
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-44]
	bl	hdr_load
	mov	r3, r0
	ldr	r2, .L1373
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1372
	bl	__stack_chk_fail
.L1372:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1374:
	.align	2
.L1373:
	.word	.LC138
	.size	stbi_hdr_load_from_file, .-stbi_hdr_load_from_file
	.section	.rodata
	.align	2
.LC139:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	stbi_hdr_load_from_memory
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_hdr_load_from_memory, %function
stbi_hdr_load_from_memory:
	@ args = 8, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-56]
	ldr	r3, .L1378
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #36
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	start_mem
	sub	r0, fp, #36
	ldr	r3, [fp, #8]
	str	r3, [sp]
	ldr	r3, [fp, #-56]
	ldr	r2, [fp, #-52]
	ldr	r1, [fp, #-48]
	bl	hdr_load
	mov	r3, r0
	ldr	r2, .L1378
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1377
	bl	__stack_chk_fail
.L1377:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1379:
	.align	2
.L1378:
	.word	.LC139
	.size	stbi_hdr_load_from_memory, .-stbi_hdr_load_from_memory
	.section	.rodata
	.align	2
.LC140:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	write8, %function
write8:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, .L1382
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-20]
	and	r3, r3, #255
	strb	r3, [fp, #-9]
	sub	r0, fp, #9
	ldr	r3, [fp, #-16]
	mov	r2, #1
	mov	r1, #1
	bl	fwrite
	nop
	ldr	r3, .L1382
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L1381
	bl	__stack_chk_fail
.L1381:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1383:
	.align	2
.L1382:
	.word	.LC140
	.size	write8, .-write8
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	writefv, %function
writefv:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	b	.L1385
.L1392:
	ldr	r3, [fp, #-20]
	add	r2, r3, #1
	str	r2, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #32
	cmp	r3, #20
	ldrls	pc, [pc, r3, asl #2]
	b	.L1394
.L1388:
	.word	.L1385
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1394
	.word	.L1390
	.word	.L1389
	.word	.L1394
	.word	.L1387
.L1390:
	ldr	r3, [fp, #-24]
	add	r2, r3, #4
	str	r2, [fp, #-24]
	ldr	r3, [r3]
	strb	r3, [fp, #-11]
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	write8
	b	.L1385
.L1389:
	ldr	r3, [fp, #-24]
	add	r2, r3, #4
	str	r2, [fp, #-24]
	ldr	r3, [r3]
	strh	r3, [fp, #-10]	@ movhi
	ldrsh	r3, [fp, #-10]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	write8
	ldrsh	r3, [fp, #-10]
	asr	r3, r3, #8
	lsl	r3, r3, #16
	asr	r3, r3, #16
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	write8
	b	.L1385
.L1387:
	ldr	r3, [fp, #-24]
	add	r2, r3, #4
	str	r2, [fp, #-24]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	write8
	ldr	r3, [fp, #-8]
	asr	r3, r3, #8
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	write8
	ldr	r3, [fp, #-8]
	asr	r3, r3, #16
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	write8
	ldr	r3, [fp, #-8]
	asr	r3, r3, #24
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	write8
	b	.L1385
.L1394:
	ldr	r3, .L1395
	ldr	r2, .L1395+4
	ldr	r1, .L1395+8
	ldr	r0, .L1395+12
	bl	__assert_fail
.L1385:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L1392
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1396:
	.align	2
.L1395:
	.word	__PRETTY_FUNCTION__.8504
	.word	3799
	.word	.LC7
	.word	.LC10
	.size	writefv, .-writefv
	.section	.rodata
	.align	2
.LC141:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	writef, %function
writef:
	@ args = 4, pretend = 12, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #20
	str	r0, [fp, #-20]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-24]
	ldr	r3, .L1399
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	mov	r3,#0
	add	r3, fp, #8
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	writefv
	nop
	ldr	r3, .L1399
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L1398
	bl	__stack_chk_fail
.L1398:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #12
	bx	lr
.L1400:
	.align	2
.L1399:
	.word	.LC141
	.size	writef, .-writef
	.section	.rodata
	.align	2
.LC143:
	.ascii	"111\000"
	.align	2
.LC142:
	.ascii	"\377\000\377"
	.align	2
.LC144:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	write_pixels, %function
write_pixels:
	@ args = 20, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #72
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	str	r2, [fp, #-56]
	str	r3, [fp, #-60]
	ldr	r3, [fp, #12]
	str	r3, [fp, #-64]
	ldr	r3, .L1418
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r2, .L1418+4
	sub	r3, fp, #16
	ldr	r2, [r2]
	strh	r2, [r3]	@ movhi
	add	r3, r3, #2
	lsr	r2, r2, #16
	strb	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	bge	.L1402
	mvn	r3, #0
	str	r3, [fp, #-24]
	ldr	r3, [fp, #4]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	b	.L1404
.L1402:
	ldr	r3, [fp, #4]
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L1404
.L1416:
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L1405
.L1415:
	ldr	r3, [fp, #-32]
	ldr	r2, [fp, #-60]
	mul	r2, r3, r2
	ldr	r3, [fp, #-36]
	add	r3, r2, r3
	ldr	r2, [fp, #8]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-64]
	add	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #16]
	cmp	r3, #0
	bge	.L1406
	ldr	r3, [fp, #8]
	sub	r3, r3, #1
	ldr	r2, [fp, #-20]
	add	r0, r2, r3
	ldr	r3, [fp, #-48]
	mov	r2, #1
	mov	r1, #1
	bl	fwrite
.L1406:
	ldr	r3, [fp, #8]
	cmp	r3, #4
	beq	.L1407
	ldr	r3, [fp, #8]
	cmp	r3, #4
	bgt	.L1408
	ldr	r3, [fp, #8]
	cmp	r3, #2
	bgt	.L1409
	ldr	r3, [fp, #8]
	cmp	r3, #0
	bgt	.L1410
	b	.L1408
.L1409:
	ldr	r3, [fp, #8]
	cmp	r3, #3
	beq	.L1411
	b	.L1408
.L1410:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [sp]
	mov	r3, r1
	ldr	r1, .L1418+8
	ldr	r0, [fp, #-48]
	bl	writef
	b	.L1408
.L1407:
	ldr	r3, [fp, #16]
	cmp	r3, #0
	bne	.L1411
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L1412
.L1413:
	sub	r2, fp, #16
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	ldr	r1, [fp, #-20]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	sub	r1, fp, #16
	ldr	r3, [fp, #-28]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r0, r3
	ldr	r1, [fp, #-20]
	add	r1, r1, #3
	ldrb	r1, [r1]	@ zero_extendqisi2
	mul	r3, r1, r3
	ldr	r1, .L1418+12
	smull	r0, r1, r3, r1
	add	r1, r1, r3
	asr	r1, r1, #7
	asr	r3, r3, #31
	sub	r3, r1, r3
	and	r3, r3, #255
	add	r3, r2, r3
	and	r1, r3, #255
	sub	r2, fp, #12
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L1412:
	ldr	r3, [fp, #-28]
	cmp	r3, #2
	ble	.L1413
	ldr	r3, [fp, #-52]
	rsb	r3, r3, #1
	sub	r2, fp, #4
	add	r3, r2, r3
	ldrb	r3, [r3, #-8]	@ zero_extendqisi2
	mov	r2, r3
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	sub	r0, fp, #4
	add	r3, r0, r3
	ldrb	r3, [r3, #-8]	@ zero_extendqisi2
	str	r3, [sp]
	mov	r3, r1
	ldr	r1, .L1418+8
	ldr	r0, [fp, #-48]
	bl	writef
	b	.L1408
.L1411:
	ldr	r3, [fp, #-52]
	rsb	r3, r3, #1
	mov	r2, r3
	ldr	r3, [fp, #-20]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	mov	r2, r3
	ldr	r3, [fp, #-20]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [sp]
	mov	r3, r0
	mov	r2, r1
	ldr	r1, .L1418+8
	ldr	r0, [fp, #-48]
	bl	writef
	nop
.L1408:
	ldr	r3, [fp, #16]
	cmp	r3, #0
	ble	.L1414
	ldr	r3, [fp, #8]
	sub	r3, r3, #1
	ldr	r2, [fp, #-20]
	add	r0, r2, r3
	ldr	r3, [fp, #-48]
	mov	r2, #1
	mov	r1, #1
	bl	fwrite
.L1414:
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L1405:
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-60]
	cmp	r2, r3
	blt	.L1415
	ldr	r1, [fp, #20]
	sub	r0, fp, #40
	ldr	r3, [fp, #-48]
	mov	r2, #1
	bl	fwrite
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-56]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L1404:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bne	.L1416
	nop
	ldr	r3, .L1418
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L1417
	bl	__stack_chk_fail
.L1417:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1419:
	.align	2
.L1418:
	.word	.LC144
	.word	.LC142
	.word	.LC143
	.word	-2139062143
	.size	write_pixels, .-write_pixels
	.section	.rodata
	.align	2
.LC145:
	.ascii	"wb\000"
	.align	2
.LC146:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	outfile, %function
outfile:
	@ args = 24, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #12]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #24]
	str	r3, [fp, #-44]
	ldr	r3, .L1424
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r1, .L1424+4
	ldr	r0, [fp, #-24]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L1421
	add	r3, fp, #28
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-12]
	bl	writefv
	ldr	r3, [fp, #20]
	str	r3, [sp, #16]
	ldr	r3, [fp, #16]
	str	r3, [sp, #12]
	ldr	r3, [fp, #-40]
	str	r3, [sp, #8]
	ldr	r3, [fp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-12]
	bl	write_pixels
	ldr	r0, [fp, #-12]
	bl	fclose
.L1421:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	movne	r3, #1
	moveq	r3, #0
	and	r3, r3, #255
	ldr	r2, .L1424
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L1423
	bl	__stack_chk_fail
.L1423:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1425:
	.align	2
.L1424:
	.word	.LC146
	.word	.LC145
	.size	outfile, .-outfile
	.section	.rodata
	.align	2
.LC147:
	.ascii	"11 4 22 44 44 22 444444\000"
	.text
	.align	2
	.global	stbi_write_bmp
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_write_bmp, %function
stbi_write_bmp:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #120
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-20]
	mov	r2, r3
	lsl	r3, r3, #2
	sub	r3, r2, r3
	and	r3, r3, #3
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r2, r3, r2
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldr	r2, [fp, #-24]
	mul	r3, r2, r3
	add	r3, r3, #54
	mov	r2, #0
	str	r2, [sp, #88]
	mov	r2, #0
	str	r2, [sp, #84]
	mov	r2, #0
	str	r2, [sp, #80]
	mov	r2, #0
	str	r2, [sp, #76]
	mov	r2, #0
	str	r2, [sp, #72]
	mov	r2, #0
	str	r2, [sp, #68]
	mov	r2, #24
	str	r2, [sp, #64]
	mov	r2, #1
	str	r2, [sp, #60]
	ldr	r2, [fp, #-24]
	str	r2, [sp, #56]
	ldr	r2, [fp, #-20]
	str	r2, [sp, #52]
	mov	r2, #40
	str	r2, [sp, #48]
	mov	r2, #54
	str	r2, [sp, #44]
	mov	r2, #0
	str	r2, [sp, #40]
	mov	r2, #0
	str	r2, [sp, #36]
	str	r3, [sp, #32]
	mov	r3, #77
	str	r3, [sp, #28]
	mov	r3, #66
	str	r3, [sp, #24]
	ldr	r3, .L1428
	str	r3, [sp, #20]
	ldr	r3, [fp, #-8]
	str	r3, [sp, #16]
	mov	r3, #0
	str	r3, [sp, #12]
	ldr	r3, [fp, #4]
	str	r3, [sp, #8]
	ldr	r3, [fp, #-28]
	str	r3, [sp, #4]
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	ldr	r3, [fp, #-20]
	mvn	r2, #0
	mvn	r1, #0
	ldr	r0, [fp, #-16]
	bl	outfile
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1429:
	.align	2
.L1428:
	.word	.LC147
	.size	stbi_write_bmp, .-stbi_write_bmp
	.section	.rodata
	.align	2
.LC148:
	.ascii	"111 221 2222 11\000"
	.text
	.align	2
	.global	stbi_write_tga
	.syntax unified
	.arm
	.fpu softvfp
	.type	stbi_write_tga, %function
stbi_write_tga:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #96
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	and	r3, r3, #1
	cmp	r3, #0
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #3
	lsl	r3, r3, #3
	ldr	r2, [fp, #-8]
	lsl	r2, r2, #3
	str	r2, [sp, #68]
	str	r3, [sp, #64]
	ldr	r3, [fp, #-24]
	str	r3, [sp, #60]
	ldr	r3, [fp, #-20]
	str	r3, [sp, #56]
	mov	r3, #0
	str	r3, [sp, #52]
	mov	r3, #0
	str	r3, [sp, #48]
	mov	r3, #0
	str	r3, [sp, #44]
	mov	r3, #0
	str	r3, [sp, #40]
	mov	r3, #0
	str	r3, [sp, #36]
	mov	r3, #2
	str	r3, [sp, #32]
	mov	r3, #0
	str	r3, [sp, #28]
	mov	r3, #0
	str	r3, [sp, #24]
	ldr	r3, .L1432
	str	r3, [sp, #20]
	mov	r3, #0
	str	r3, [sp, #16]
	ldr	r3, [fp, #-8]
	str	r3, [sp, #12]
	ldr	r3, [fp, #4]
	str	r3, [sp, #8]
	ldr	r3, [fp, #-28]
	str	r3, [sp, #4]
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	ldr	r3, [fp, #-20]
	mvn	r2, #0
	mvn	r1, #0
	ldr	r0, [fp, #-16]
	bl	outfile
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1433:
	.align	2
.L1432:
	.word	.LC148
	.size	stbi_write_tga, .-stbi_write_tga
	.section	.rodata
	.align	2
	.type	__PRETTY_FUNCTION__.6885, %object
	.size	__PRETTY_FUNCTION__.6885, 15
__PRETTY_FUNCTION__.6885:
	.ascii	"convert_format\000"
	.align	2
	.type	__PRETTY_FUNCTION__.7065, %object
	.size	__PRETTY_FUNCTION__.7065, 7
__PRETTY_FUNCTION__.7065:
	.ascii	"decode\000"
	.align	2
	.type	__PRETTY_FUNCTION__.7501, %object
	.size	__PRETTY_FUNCTION__.7501, 12
__PRETTY_FUNCTION__.7501:
	.ascii	"bit_reverse\000"
	.align	2
	.type	__PRETTY_FUNCTION__.7515, %object
	.size	__PRETTY_FUNCTION__.7515, 15
__PRETTY_FUNCTION__.7515:
	.ascii	"zbuild_huffman\000"
	.align	2
	.type	__PRETTY_FUNCTION__.7549, %object
	.size	__PRETTY_FUNCTION__.7549, 10
__PRETTY_FUNCTION__.7549:
	.ascii	"fill_bits\000"
	.align	2
	.type	__PRETTY_FUNCTION__.7566, %object
	.size	__PRETTY_FUNCTION__.7566, 16
__PRETTY_FUNCTION__.7566:
	.ascii	"zhuffman_decode\000"
	.data
	.align	2
	.type	length_dezigzag.7595, %object
	.size	length_dezigzag.7595, 19
length_dezigzag.7595:
	.ascii	"\020\021\022\000\010\007\011\006\012\005\013\004\014"
	.ascii	"\003\015\002\016\001\017"
	.section	.rodata
	.align	2
	.type	__PRETTY_FUNCTION__.7609, %object
	.size	__PRETTY_FUNCTION__.7609, 22
__PRETTY_FUNCTION__.7609:
	.ascii	"compute_huffman_codes\000"
	.align	2
	.type	__PRETTY_FUNCTION__.7623, %object
	.size	__PRETTY_FUNCTION__.7623, 25
__PRETTY_FUNCTION__.7623:
	.ascii	"parse_uncompressed_block\000"
	.data
	.align	2
	.type	png_sig.7715, %object
	.size	png_sig.7715, 8
png_sig.7715:
	.ascii	"\211PNG\015\012\032\012"
	.section	.rodata
	.align	2
	.type	__PRETTY_FUNCTION__.7758, %object
	.size	__PRETTY_FUNCTION__.7758, 21
__PRETTY_FUNCTION__.7758:
	.ascii	"create_png_image_raw\000"
	.align	2
	.type	__PRETTY_FUNCTION__.7912, %object
	.size	__PRETTY_FUNCTION__.7912, 21
__PRETTY_FUNCTION__.7912:
	.ascii	"compute_transparency\000"
	.data
	.align	2
	.type	invalid_chunk.7981, %object
	.size	invalid_chunk.7981, 21
invalid_chunk.7981:
	.ascii	"XXXX chunk not known\000"
	.section	.rodata
	.align	2
	.type	__PRETTY_FUNCTION__.8113, %object
	.size	__PRETTY_FUNCTION__.8113, 9
__PRETTY_FUNCTION__.8113:
	.ascii	"bmp_load\000"
	.align	2
	.type	__PRETTY_FUNCTION__.8504, %object
	.size	__PRETTY_FUNCTION__.8504, 8
__PRETTY_FUNCTION__.8504:
	.ascii	"writefv\000"
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
