	.file	"45175.c"
	.intel_syntax noprefix
	.text
	.globl	GEN_GET_FW_VERSION
	.data
	.align 4
	.type	GEN_GET_FW_VERSION, @object
	.size	GEN_GET_FW_VERSION, 4
GEN_GET_FW_VERSION:
	.byte	-1
	.byte	2
	.byte	0
	.byte	0
	.globl	FuseList
	.align 32
	.type	FuseList, @object
	.size	FuseList, 2088
FuseList:
	.string	"FtpmEnabled"
	.zero	20
	.long	1
	.string	"SocCfgLock"
	.zero	21
	.long	1
	.string	"SBValid"
	.zero	24
	.long	1
	.string	"VendorDefId"
	.zero	20
	.long	16
	.string	"OemCred"
	.zero	24
	.long	256
	.string	"SbPolicies"
	.zero	21
	.long	16
	.string	"Enf0"
	.zero	27
	.long	1
	.string	"Enf1"
	.zero	27
	.long	1
	.string	"OemKp"
	.zero	26
	.long	1
	.string	"TxtEnabled"
	.zero	21
	.long	1
	.string	"FDVEnabled"
	.zero	21
	.long	1
	.string	"DbgDisabled"
	.zero	20
	.long	1
	.string	"PTimeStOff"
	.zero	21
	.long	15
	.string	"PTimeStCntr"
	.zero	20
	.long	240
	.string	"PchCosignEn"
	.zero	20
	.long	1
	.string	"CpuCosignEn"
	.zero	20
	.long	1
	.string	"OemRHashEn"
	.zero	21
	.long	1
	.string	"OemHashKey"
	.zero	21
	.long	1
	.string	"OemDAuthEn"
	.zero	21
	.long	1
	.string	"KeySplitEn"
	.zero	21
	.long	1
	.string	"ArbSvnEn"
	.zero	23
	.long	1
	.string	"ArbMSvn"
	.zero	24
	.long	15
	.string	"VlnEn"
	.zero	26
	.long	1
	.string	"SbAcmSvn"
	.zero	23
	.long	15
	.string	"SbKmSvn"
	.zero	24
	.long	15
	.string	"SbBsmmSvn"
	.zero	22
	.long	40
	.string	"PmcMSvn"
	.zero	24
	.long	15
	.string	"IdlmMSvn"
	.zero	23
	.long	15
	.string	"RbeMSvn"
	.zero	24
	.long	32
	.string	"UcodeMSvn"
	.zero	22
	.long	15
	.string	"OemKmSvn"
	.zero	23
	.long	40
	.string	"NwldMSvn"
	.zero	23
	.long	40
	.string	"OsMSvn"
	.zero	25
	.long	40
	.string	"CpuFwKmSvn"
	.zero	21
	.long	15
	.string	"AcmSvnEn"
	.zero	23
	.long	1
	.string	"KmSvnEn"
	.zero	24
	.long	1
	.string	"BsmmSvnEn"
	.zero	22
	.long	1
	.string	"PmcSvnEn"
	.zero	23
	.long	1
	.string	"IdlmSvnEn"
	.zero	22
	.long	1
	.string	"RbeSvnEn"
	.zero	23
	.long	1
	.string	"UcodeSvnEn"
	.zero	21
	.long	1
	.string	"OemKmSvnEn"
	.zero	21
	.long	1
	.string	"NwldSvnEn"
	.zero	22
	.long	1
	.string	"OsSvnEn"
	.zero	24
	.long	1
	.string	"CpuFwSvnEn"
	.zero	21
	.long	1
	.string	"OemKH0_s"
	.zero	23
	.long	1
	.string	"OemRsa0_s"
	.zero	22
	.long	1
	.string	"OemKH0_r"
	.zero	23
	.long	1
	.string	"OemKH0"
	.zero	25
	.long	512
	.string	"OemKH1_s"
	.zero	23
	.long	1
	.string	"OemRsa1_s"
	.zero	22
	.long	1
	.string	"OemKH1_r"
	.zero	23
	.long	1
	.string	"OemKH1"
	.zero	25
	.long	512
	.string	"OemKH2_s"
	.zero	23
	.long	1
	.string	"OemRsa2_s"
	.zero	22
	.long	1
	.string	"OemKH2_r"
	.zero	23
	.long	1
	.string	"OemKH2"
	.zero	25
	.long	512
	.string	"StorageKey"
	.zero	21
	.long	256
	.text
	.type	mei_deinit, @function
mei_deinit:
.LFB6:
	.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	eax, DWORD PTR 28[rax]
	cmp	eax, -1
	je	.L2
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 28[rax]
	mov	edi, eax
	call	close@PLT
.L2:
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 28[rax], -1
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 20[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR 24[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR 16[rax], 0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	mei_deinit, .-mei_deinit
	.section	.rodata
.LC0:
	.string	"/dev/mei0"
	.align 8
.LC1:
	.string	"Error: Cannot establish a handle to the Intel(R) MEI driver. \n"
	.align 8
.LC2:
	.string	"Error: Please run this program with root privilege.\n"
	.align 8
.LC3:
	.string	"Error: IOCTL_MEI_CONNECT_CLIENT receive message. err=%d\n"
.LC4:
	.string	"max_message_length %d\n"
.LC5:
	.string	"protocol_version %d\n"
	.align 8
.LC6:
	.string	"Error: Intel(R) MEI protocol version not supported\n"
	.text
	.type	mei_init, @function
mei_init:
.LFB7:
	.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	eax, ecx
	mov	BYTE PTR -68[rbp], dl
	mov	BYTE PTR -72[rbp], al
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -56[rbp]
	movzx	edx, BYTE PTR -72[rbp]
	mov	BYTE PTR 17[rax], dl
	mov	esi, 2
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	open@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 28[rdx], eax
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 28[rax]
	cmp	eax, -1
	jne	.L4
	call	geteuid@PLT
	test	eax, eax
	jne	.L5
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 62
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	mov	edi, -1
	call	exit@PLT
.L5:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 52
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	mei_deinit
	mov	edi, -1
	call	exit@PLT
.L4:
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR [rcx], rax
	mov	QWORD PTR 8[rcx], rdx
	lea	rax, -32[rbp]
	mov	edx, 16
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	BYTE PTR 16[rax], 1
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -32[rbp], rax
	mov	QWORD PTR -24[rbp], rdx
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 28[rax]
	lea	rdx, -32[rbp]
	mov	esi, 3222292481
	mov	edi, eax
	mov	eax, 0
	call	ioctl@PLT
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 0
	je	.L6
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -44[rbp]
	lea	rsi, .LC3[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L7
.L6:
	lea	rax, -32[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 17[rax]
	test	al, al
	je	.L8
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC4[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L8:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 17[rax]
	test	al, al
	je	.L9
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 4[rax]
	movzx	edx, al
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC5[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L9:
	cmp	BYTE PTR -68[rbp], 0
	je	.L10
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 4[rax]
	cmp	BYTE PTR -68[rbp], al
	je	.L10
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 51
	mov	esi, 1
	lea	rdi, .LC6[rip]
	call	fwrite@PLT
	jmp	.L7
.L10:
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 20[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	movzx	edx, BYTE PTR 4[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	BYTE PTR 24[rax], dl
	mov	eax, 1
	jmp	.L12
.L7:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	mei_deinit
	mov	eax, 0
.L12:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L13
	call	__stack_chk_fail@PLT
.L13:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	mei_init, .-mei_init
	.section	.rodata
.LC7:
	.string	"call read length = %zd\n"
	.align 8
.LC8:
	.string	"Error: read failed with status %zd %s\n"
	.align 8
.LC9:
	.string	"read succeeded with result %zd\n"
	.text
	.type	mei_recv_msg, @function
mei_recv_msg:
.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, 48
	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	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 17[rax]
	test	al, al
	je	.L15
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -40[rbp]
	lea	rsi, .LC7[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L15:
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 28[rax]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jns	.L16
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -8[rbp]
	lea	rsi, .LC8[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	mei_deinit
	jmp	.L17
.L16:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 17[rax]
	test	al, al
	je	.L17
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -8[rbp]
	lea	rsi, .LC9[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L17:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	mei_recv_msg, .-mei_recv_msg
	.section	.rodata
.LC10:
	.string	"call write length = %zd\n"
	.align 8
.LC11:
	.string	"Error: write failed with status %zd %s\n"
.LC12:
	.string	"write success\n"
	.align 8
.LC13:
	.string	"Error: write failed on timeout with status\n"
	.align 8
.LC14:
	.string	"Error: write failed on select with status %zd\n"
	.text
	.type	mei_send_msg, @function
mei_send_msg:
.LFB9:
	.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 -200[rbp], rdi
	mov	QWORD PTR -208[rbp], rsi
	mov	QWORD PTR -216[rbp], rdx
	mov	QWORD PTR -224[rbp], rcx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -224[rbp]
	shr	rax, 3
	movabs	rdx, 2361183241434822607
	mul	rdx
	mov	rax, rdx
	shr	rax, 4
	mov	QWORD PTR -160[rbp], rax
	mov	rcx, QWORD PTR -224[rbp]
	mov	rax, rcx
	shr	rax, 3
	movabs	rdx, 2361183241434822607
	mul	rdx
	mov	rax, rdx
	shr	rax, 4
	imul	rdx, rax, 1000
	mov	rax, rcx
	sub	rax, rdx
	imul	rax, rax, 1000000
	mov	QWORD PTR -152[rbp], rax
	mov	rax, QWORD PTR -200[rbp]
	movzx	eax, BYTE PTR 17[rax]
	test	al, al
	je	.L20
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -216[rbp]
	lea	rsi, .LC10[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L20:
	mov	rdx, QWORD PTR -216[rbp]
	mov	rax, QWORD PTR -200[rbp]
	mov	eax, DWORD PTR 28[rax]
	mov	rcx, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	mov	QWORD PTR -168[rbp], rax
	cmp	QWORD PTR -168[rbp], 0
	jns	.L21
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	neg	eax
	cdqe
	mov	QWORD PTR -176[rbp], rax
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -168[rbp]
	lea	rsi, .LC11[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L22
.L21:
	mov	eax, 0
	mov	ecx, 16
	lea	rdx, -144[rbp]
	mov	rdi, rdx
#APP
# 345 "the_stack_data/45175.c" 1
	cld; rep; stosq
# 0 "" 2
#NO_APP
	mov	eax, edi
	mov	edx, ecx
	mov	DWORD PTR -184[rbp], edx
	mov	DWORD PTR -180[rbp], eax
	mov	rax, QWORD PTR -200[rbp]
	mov	eax, DWORD PTR 28[rax]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	mov	esi, eax
	movsx	rax, esi
	mov	rdi, QWORD PTR -144[rbp+rax*8]
	mov	rax, QWORD PTR -200[rbp]
	mov	eax, DWORD PTR 28[rax]
	cdq
	shr	edx, 26
	add	eax, edx
	and	eax, 63
	sub	eax, edx
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	or	rdi, rax
	mov	rdx, rdi
	movsx	rax, esi
	mov	QWORD PTR -144[rbp+rax*8], rdx
	mov	rax, QWORD PTR -200[rbp]
	mov	eax, DWORD PTR 28[rax]
	lea	edi, 1[rax]
	lea	rdx, -160[rbp]
	lea	rax, -144[rbp]
	mov	r8, rdx
	mov	ecx, 0
	mov	edx, 0
	mov	rsi, rax
	call	select@PLT
	cdqe
	mov	QWORD PTR -176[rbp], rax
	cmp	QWORD PTR -176[rbp], 0
	jle	.L23
	mov	rax, QWORD PTR -200[rbp]
	mov	eax, DWORD PTR 28[rax]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	cdqe
	mov	rsi, QWORD PTR -144[rbp+rax*8]
	mov	rax, QWORD PTR -200[rbp]
	mov	eax, DWORD PTR 28[rax]
	cdq
	shr	edx, 26
	add	eax, edx
	and	eax, 63
	sub	eax, edx
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	and	rax, rsi
	test	rax, rax
	je	.L23
	mov	rax, QWORD PTR -200[rbp]
	movzx	eax, BYTE PTR 17[rax]
	test	al, al
	je	.L25
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 14
	mov	esi, 1
	lea	rdi, .LC12[rip]
	call	fwrite@PLT
	jmp	.L25
.L23:
	cmp	QWORD PTR -176[rbp], 0
	jne	.L26
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 43
	mov	esi, 1
	lea	rdi, .LC13[rip]
	call	fwrite@PLT
	jmp	.L22
.L26:
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -176[rbp]
	lea	rsi, .LC14[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L22
.L25:
	mov	rax, QWORD PTR -168[rbp]
	mov	QWORD PTR -176[rbp], rax
.L22:
	cmp	QWORD PTR -176[rbp], 0
	jns	.L27
	mov	rax, QWORD PTR -200[rbp]
	mov	rdi, rax
	call	mei_deinit
.L27:
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L29
	call	__stack_chk_fail@PLT
.L29:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	mei_send_msg, .-mei_send_msg
	.globl	MEI_MKHI_HIF_FIX
	.section	.rodata
	.align 16
	.type	MEI_MKHI_HIF_FIX, @object
	.size	MEI_MKHI_HIF_FIX, 16
MEI_MKHI_HIF_FIX:
	.ascii	"\2045!U)\232\026I\272\337\017\267\355h*\353"
	.text
	.type	mkhi_host_if_fix_init, @function
mkhi_host_if_fix_init:
.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, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	eax, edx
	mov	BYTE PTR -20[rbp], al
	cmp	QWORD PTR -16[rbp], 0
	je	.L31
	mov	rax, QWORD PTR -16[rbp]
	jmp	.L32
.L31:
	mov	eax, 20000
.L32:
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 32[rdx], rax
	movzx	edx, BYTE PTR -20[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, edx
	mov	edx, 0
	lea	rsi, MEI_MKHI_HIF_FIX[rip]
	mov	rdi, rax
	call	mei_init
	mov	rdx, QWORD PTR -8[rbp]
	mov	BYTE PTR 40[rdx], al
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR 40[rax]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	mkhi_host_if_fix_init, .-mkhi_host_if_fix_init
	.section	.rodata
.LC15:
	.string	"w"
	.align 8
.LC16:
	.string	"/sys/kernel/debug/mei0/allow_fixed_address"
.LC17:
	.string	"Y"
	.align 8
.LC18:
	.string	"MKHI fixed i/f failed to initialise "
.LC19:
	.string	"MKHI fixed i/f initialised "
	.align 8
.LC20:
	.string	"Build Maj Min Hotfix : %x, %x, %x, %x \n"
	.align 8
.LC21:
	.string	"Number of fuse fields in list: %d \n"
.LC22:
	.string	" Reading fuse file:  %s ."
.LC23:
	.string	" Read size: %d byte(s)."
	.align 8
.LC24:
	.string	"Error!  Response result = 0x%x \n"
.LC25:
	.string	"Response data value:  0x"
.LC26:
	.string	"%02x"
	.text
	.globl	main
	.type	main, @function
main:
.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, 448
	mov	DWORD PTR -436[rbp], edi
	mov	QWORD PTR -448[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rsi, .LC15[rip]
	lea	rdi, .LC16[rip]
	call	fopen@PLT
	mov	QWORD PTR -408[rbp], rax
	mov	rax, QWORD PTR -408[rbp]
	mov	rcx, rax
	mov	edx, 1
	mov	esi, 1
	lea	rdi, .LC17[rip]
	call	fwrite@PLT
	cmp	rax, 1
	jne	.L35
	mov	eax, 0
	jmp	.L36
.L35:
	mov	eax, -1
.L36:
	mov	DWORD PTR -416[rbp], eax
	mov	rax, QWORD PTR -408[rbp]
	mov	rdi, rax
	call	fclose@PLT
	lea	rax, -368[rbp]
	mov	edx, 0
	mov	esi, 5000
	mov	rdi, rax
	call	mkhi_host_if_fix_init
	mov	BYTE PTR -421[rbp], al
	movzx	eax, BYTE PTR -421[rbp]
	xor	eax, 1
	test	al, al
	je	.L37
	lea	rdi, .LC18[rip]
	call	puts@PLT
	lea	rax, -368[rbp]
	mov	rdi, rax
	call	mei_deinit
	mov	eax, 0
	jmp	.L38
.L37:
	lea	rdi, .LC19[rip]
	call	puts@PLT
	lea	rax, -368[rbp]
	mov	ecx, 5000
	mov	edx, 4
	lea	rsi, GEN_GET_FW_VERSION[rip]
	mov	rdi, rax
	call	mei_send_msg
	lea	rsi, -400[rbp]
	lea	rax, -368[rbp]
	mov	ecx, 5000
	mov	edx, 20
	mov	rdi, rax
	call	mei_recv_msg
	movzx	eax, WORD PTR -390[rbp]
	movzx	esi, ax
	movzx	eax, WORD PTR -396[rbp]
	movzx	ecx, ax
	movzx	eax, WORD PTR -394[rbp]
	movzx	edx, ax
	movzx	eax, WORD PTR -392[rbp]
	movzx	eax, ax
	mov	r8d, esi
	mov	esi, eax
	lea	rdi, .LC20[rip]
	mov	eax, 0
	call	printf@PLT
	movabs	rax, 8389758808140834351
	mov	QWORD PTR -92[rbp], rax
	mov	DWORD PTR -84[rbp], 3107941
	mov	DWORD PTR -412[rbp], 58
	mov	eax, DWORD PTR -412[rbp]
	mov	esi, eax
	lea	rdi, .LC21[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -420[rbp], 0
	jmp	.L39
.L46:
	mov	BYTE PTR -320[rbp], 10
	movzx	eax, BYTE PTR -319[rbp]
	and	eax, -128
	or	eax, 2
	mov	BYTE PTR -319[rbp], al
	movzx	eax, BYTE PTR -319[rbp]
	and	eax, 127
	mov	BYTE PTR -319[rbp], al
	mov	BYTE PTR -318[rbp], 0
	mov	BYTE PTR -317[rbp], 0
	lea	rdx, -92[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
	mov	eax, DWORD PTR -420[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 2
	lea	rdx, FuseList[rip]
	add	rdx, rax
	lea	rax, -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
	lea	rax, -320[rbp]
	add	rax, 4
	mov	edx, 64
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	lea	rax, -80[rbp]
	lea	rdx, -320[rbp]
	add	rdx, 4
	mov	rsi, rax
	mov	rdi, rdx
	call	strcpy@PLT
	mov	DWORD PTR -252[rbp], 0
	mov	eax, DWORD PTR -420[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 2
	mov	rdx, rax
	lea	rax, FuseList[rip+32]
	mov	eax, DWORD PTR [rdx+rax]
	and	eax, 7
	test	eax, eax
	je	.L40
	mov	eax, DWORD PTR -420[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 2
	mov	rdx, rax
	lea	rax, FuseList[rip+32]
	mov	eax, DWORD PTR [rdx+rax]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	add	eax, 1
	mov	DWORD PTR -248[rbp], eax
	jmp	.L41
.L40:
	mov	eax, DWORD PTR -420[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 2
	mov	rdx, rax
	lea	rax, FuseList[rip+32]
	mov	eax, DWORD PTR [rdx+rax]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	mov	DWORD PTR -248[rbp], eax
.L41:
	mov	BYTE PTR -244[rbp], 0
	lea	rax, -320[rbp]
	add	rax, 4
	mov	rsi, rax
	lea	rdi, .LC22[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -248[rbp]
	mov	esi, eax
	lea	rdi, .LC23[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rsi, -320[rbp]
	lea	rax, -368[rbp]
	mov	ecx, 5000
	mov	edx, 77
	mov	rdi, rax
	call	mei_send_msg
	lea	rsi, -240[rbp]
	lea	rax, -368[rbp]
	mov	ecx, 5000
	mov	edx, 136
	mov	rdi, rax
	call	mei_recv_msg
	movzx	eax, BYTE PTR -237[rbp]
	test	al, al
	je	.L42
	movzx	eax, BYTE PTR -237[rbp]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC24[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L43
.L42:
	lea	rdi, .LC25[rip]
	mov	eax, 0
	call	printf@PLT
	mov	BYTE PTR -422[rbp], 0
	jmp	.L44
.L45:
	movzx	eax, BYTE PTR -422[rbp]
	cdqe
	movzx	eax, BYTE PTR -232[rbp+rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	eax, BYTE PTR -422[rbp]
	add	eax, 1
	mov	BYTE PTR -422[rbp], al
.L44:
	movzx	edx, BYTE PTR -422[rbp]
	mov	eax, DWORD PTR -236[rbp]
	cmp	edx, eax
	jb	.L45
	mov	edi, 10
	call	putchar@PLT
.L43:
	add	DWORD PTR -420[rbp], 1
.L39:
	mov	eax, DWORD PTR -420[rbp]
	cmp	eax, DWORD PTR -412[rbp]
	jl	.L46
	lea	rax, -368[rbp]
	mov	rdi, rax
	call	mei_deinit
	mov	eax, 0
.L38:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L47
	call	__stack_chk_fail@PLT
.L47:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	main, .-main
	.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	"45175.c"
	.text
	.global	GEN_GET_FW_VERSION
	.data
	.align	2
	.type	GEN_GET_FW_VERSION, %object
	.size	GEN_GET_FW_VERSION, 4
GEN_GET_FW_VERSION:
	.byte	-1
	.byte	2
	.byte	0
	.byte	0
	.global	FuseList
	.align	2
	.type	FuseList, %object
	.size	FuseList, 2088
FuseList:
	.ascii	"FtpmEnabled\000"
	.space	20
	.word	1
	.ascii	"SocCfgLock\000"
	.space	21
	.word	1
	.ascii	"SBValid\000"
	.space	24
	.word	1
	.ascii	"VendorDefId\000"
	.space	20
	.word	16
	.ascii	"OemCred\000"
	.space	24
	.word	256
	.ascii	"SbPolicies\000"
	.space	21
	.word	16
	.ascii	"Enf0\000"
	.space	27
	.word	1
	.ascii	"Enf1\000"
	.space	27
	.word	1
	.ascii	"OemKp\000"
	.space	26
	.word	1
	.ascii	"TxtEnabled\000"
	.space	21
	.word	1
	.ascii	"FDVEnabled\000"
	.space	21
	.word	1
	.ascii	"DbgDisabled\000"
	.space	20
	.word	1
	.ascii	"PTimeStOff\000"
	.space	21
	.word	15
	.ascii	"PTimeStCntr\000"
	.space	20
	.word	240
	.ascii	"PchCosignEn\000"
	.space	20
	.word	1
	.ascii	"CpuCosignEn\000"
	.space	20
	.word	1
	.ascii	"OemRHashEn\000"
	.space	21
	.word	1
	.ascii	"OemHashKey\000"
	.space	21
	.word	1
	.ascii	"OemDAuthEn\000"
	.space	21
	.word	1
	.ascii	"KeySplitEn\000"
	.space	21
	.word	1
	.ascii	"ArbSvnEn\000"
	.space	23
	.word	1
	.ascii	"ArbMSvn\000"
	.space	24
	.word	15
	.ascii	"VlnEn\000"
	.space	26
	.word	1
	.ascii	"SbAcmSvn\000"
	.space	23
	.word	15
	.ascii	"SbKmSvn\000"
	.space	24
	.word	15
	.ascii	"SbBsmmSvn\000"
	.space	22
	.word	40
	.ascii	"PmcMSvn\000"
	.space	24
	.word	15
	.ascii	"IdlmMSvn\000"
	.space	23
	.word	15
	.ascii	"RbeMSvn\000"
	.space	24
	.word	32
	.ascii	"UcodeMSvn\000"
	.space	22
	.word	15
	.ascii	"OemKmSvn\000"
	.space	23
	.word	40
	.ascii	"NwldMSvn\000"
	.space	23
	.word	40
	.ascii	"OsMSvn\000"
	.space	25
	.word	40
	.ascii	"CpuFwKmSvn\000"
	.space	21
	.word	15
	.ascii	"AcmSvnEn\000"
	.space	23
	.word	1
	.ascii	"KmSvnEn\000"
	.space	24
	.word	1
	.ascii	"BsmmSvnEn\000"
	.space	22
	.word	1
	.ascii	"PmcSvnEn\000"
	.space	23
	.word	1
	.ascii	"IdlmSvnEn\000"
	.space	22
	.word	1
	.ascii	"RbeSvnEn\000"
	.space	23
	.word	1
	.ascii	"UcodeSvnEn\000"
	.space	21
	.word	1
	.ascii	"OemKmSvnEn\000"
	.space	21
	.word	1
	.ascii	"NwldSvnEn\000"
	.space	22
	.word	1
	.ascii	"OsSvnEn\000"
	.space	24
	.word	1
	.ascii	"CpuFwSvnEn\000"
	.space	21
	.word	1
	.ascii	"OemKH0_s\000"
	.space	23
	.word	1
	.ascii	"OemRsa0_s\000"
	.space	22
	.word	1
	.ascii	"OemKH0_r\000"
	.space	23
	.word	1
	.ascii	"OemKH0\000"
	.space	25
	.word	512
	.ascii	"OemKH1_s\000"
	.space	23
	.word	1
	.ascii	"OemRsa1_s\000"
	.space	22
	.word	1
	.ascii	"OemKH1_r\000"
	.space	23
	.word	1
	.ascii	"OemKH1\000"
	.space	25
	.word	512
	.ascii	"OemKH2_s\000"
	.space	23
	.word	1
	.ascii	"OemRsa2_s\000"
	.space	22
	.word	1
	.ascii	"OemKH2_r\000"
	.space	23
	.word	1
	.ascii	"OemKH2\000"
	.space	25
	.word	512
	.ascii	"StorageKey\000"
	.space	21
	.word	256
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mei_deinit, %function
mei_deinit:
	@ 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, #28]
	cmn	r3, #1
	beq	.L2
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	close
.L2:
	ldr	r3, [fp, #-8]
	mvn	r2, #0
	str	r2, [r3, #28]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #20]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	strb	r2, [r3, #24]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	strb	r2, [r3, #16]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mei_deinit, .-mei_deinit
	.section	.rodata
	.align	2
.LC0:
	.ascii	"/dev/mei0\000"
	.align	2
.LC1:
	.ascii	"Error: Cannot establish a handle to the Intel(R) ME"
	.ascii	"I driver. \012\000"
	.align	2
.LC2:
	.ascii	"Error: Please run this program with root privilege."
	.ascii	"\012\000"
	.align	2
.LC3:
	.ascii	"Error: IOCTL_MEI_CONNECT_CLIENT receive message. er"
	.ascii	"r=%d\012\000"
	.align	2
.LC4:
	.ascii	"max_message_length %d\012\000"
	.align	2
.LC5:
	.ascii	"protocol_version %d\012\000"
	.align	2
.LC6:
	.ascii	"Error: Intel(R) MEI protocol version not supported\012"
	.ascii	"\000"
	.align	2
.LC7:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mei_init, %function
mei_init:
	@ 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]
	mov	r1, r2
	mov	r2, r3
	mov	r3, r1
	strb	r3, [fp, #-45]
	mov	r3, r2
	strb	r3, [fp, #-46]
	ldr	r3, .L14
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-40]
	ldrb	r2, [fp, #-46]
	strb	r2, [r3, #17]
	mov	r1, #2
	ldr	r0, .L14+4
	bl	open
	mov	r2, r0
	ldr	r3, [fp, #-40]
	str	r2, [r3, #28]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #28]
	cmn	r3, #1
	bne	.L4
	bl	geteuid
	mov	r3, r0
	cmp	r3, #0
	bne	.L5
	ldr	r3, .L14+8
	ldr	r3, [r3]
	mov	r2, #62
	mov	r1, #1
	ldr	r0, .L14+12
	bl	fwrite
	mvn	r0, #0
	bl	exit
.L5:
	ldr	r3, .L14+8
	ldr	r3, [r3]
	mov	r2, #52
	mov	r1, #1
	ldr	r0, .L14+16
	bl	fwrite
	ldr	r0, [fp, #-40]
	bl	mei_deinit
	mvn	r0, #0
	bl	exit
.L4:
	ldr	r3, [fp, #-40]
	mov	r2, #16
	ldr	r1, [fp, #-44]
	mov	r0, r3
	bl	memcpy
	sub	r3, fp, #24
	mov	r2, #16
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r3, [fp, #-40]
	mov	r2, #1
	strb	r2, [r3, #16]
	ldr	r2, [fp, #-40]
	sub	r3, fp, #24
	mov	r1, r2
	mov	r2, #16
	mov	r0, r3
	bl	memcpy
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #28]
	sub	r2, fp, #24
	ldr	r1, .L14+20
	mov	r0, r3
	bl	ioctl
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L6
	ldr	r3, .L14+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	ldr	r1, .L14+24
	mov	r0, r3
	bl	fprintf
	b	.L7
.L6:
	sub	r3, fp, #24
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-40]
	ldrb	r3, [r3, #17]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L8
	ldr	r3, .L14+8
	ldr	r0, [r3]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, .L14+28
	bl	fprintf
.L8:
	ldr	r3, [fp, #-40]
	ldrb	r3, [r3, #17]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L9
	ldr	r3, .L14+8
	ldr	r0, [r3]
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3, #4]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r1, .L14+32
	bl	fprintf
.L9:
	ldrb	r3, [fp, #-45]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L10
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3, #4]	@ zero_extendqisi2
	ldrb	r2, [fp, #-45]	@ zero_extendqisi2
	cmp	r2, r3
	beq	.L10
	ldr	r3, .L14+8
	ldr	r3, [r3]
	mov	r2, #51
	mov	r1, #1
	ldr	r0, .L14+36
	bl	fwrite
	b	.L7
.L10:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3]
	ldr	r3, [fp, #-40]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-28]
	ldrb	r2, [r3, #4]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	strb	r2, [r3, #24]
	mov	r3, #1
	b	.L12
.L7:
	ldr	r0, [fp, #-40]
	bl	mei_deinit
	mov	r3, #0
.L12:
	ldr	r2, .L14
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L13
	bl	__stack_chk_fail
.L13:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L15:
	.align	2
.L14:
	.word	.LC7
	.word	.LC0
	.word	stderr
	.word	.LC1
	.word	.LC2
	.word	-1072674815
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.size	mei_init, .-mei_init
	.section	.rodata
	.align	2
.LC8:
	.ascii	"call read length = %zd\012\000"
	.align	2
.LC9:
	.ascii	"Error: read failed with status %zd %s\012\000"
	.align	2
.LC10:
	.ascii	"read succeeded with result %zd\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mei_recv_msg, %function
mei_recv_msg:
	@ 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]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3, #17]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L17
	ldr	r3, .L21
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	ldr	r1, .L21+4
	mov	r0, r3
	bl	fprintf
.L17:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	mov	r0, r3
	bl	read
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bge	.L18
	ldr	r3, .L21
	ldr	r4, [r3]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	ldr	r2, [fp, #-16]
	ldr	r1, .L21+8
	mov	r0, r4
	bl	fprintf
	ldr	r0, [fp, #-24]
	bl	mei_deinit
	b	.L19
.L18:
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3, #17]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L19
	ldr	r3, .L21
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	ldr	r1, .L21+12
	mov	r0, r3
	bl	fprintf
.L19:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L22:
	.align	2
.L21:
	.word	stderr
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.size	mei_recv_msg, .-mei_recv_msg
	.section	.rodata
	.align	2
.LC11:
	.ascii	"call write length = %zd\012\000"
	.align	2
.LC12:
	.ascii	"Error: write failed with status %zd %s\012\000"
	.align	2
.LC13:
	.ascii	"write success\012\000"
	.align	2
.LC14:
	.ascii	"Error: write failed on timeout with status\012\000"
	.align	2
.LC15:
	.ascii	"Error: write failed on select with status %zd\012\000"
	.align	2
.LC16:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mei_send_msg, %function
mei_send_msg:
	@ args = 0, pretend = 0, frame = 176
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #188
	str	r0, [fp, #-176]
	str	r1, [fp, #-180]
	str	r2, [fp, #-184]
	str	r3, [fp, #-188]
	ldr	r3, .L36
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, [fp, #-188]
	ldr	r2, .L36+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #6
	str	r3, [fp, #-152]
	ldr	r1, [fp, #-188]
	ldr	r3, .L36+4
	umull	r2, r3, r1, r3
	lsr	r2, r3, #6
	mov	r3, r2
	lsl	r3, r3, #5
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #3
	sub	r2, r1, r3
	mov	r1, r2
	lsl	r1, r1, #5
	sub	r1, r1, r2
	lsl	r3, r1, #6
	sub	r3, r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r2
	lsl	r3, r3, #6
	str	r3, [fp, #-148]
	ldr	r3, [fp, #-176]
	ldrb	r3, [r3, #17]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L24
	ldr	r3, .L36+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-184]
	ldr	r1, .L36+12
	mov	r0, r3
	bl	fprintf
.L24:
	ldr	r3, [fp, #-176]
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-184]
	ldr	r1, [fp, #-180]
	mov	r0, r3
	bl	write
	str	r0, [fp, #-160]
	ldr	r3, [fp, #-160]
	cmp	r3, #0
	bge	.L25
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	rsb	r3, r3, #0
	str	r3, [fp, #-168]
	ldr	r3, .L36+8
	ldr	r4, [r3]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	ldr	r2, [fp, #-160]
	ldr	r1, .L36+16
	mov	r0, r4
	bl	fprintf
	b	.L26
.L25:
	sub	r3, fp, #144
	str	r3, [fp, #-156]
	mov	r3, #0
	str	r3, [fp, #-164]
	b	.L27
.L28:
	ldr	r3, [fp, #-156]
	ldr	r2, [fp, #-164]
	mov	r1, #0
	str	r1, [r3, r2, lsl #2]
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
.L27:
	ldr	r3, [fp, #-164]
	cmp	r3, #31
	bls	.L28
	ldr	r3, [fp, #-176]
	ldr	r3, [r3, #28]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	mov	r2, r3
	lsl	r3, r2, #2
	sub	r1, fp, #12
	add	r3, r1, r3
	ldr	r1, [r3, #-132]
	ldr	r3, [fp, #-176]
	ldr	r3, [r3, #28]
	rsbs	r0, r3, #0
	and	r3, r3, #31
	and	r0, r0, #31
	rsbpl	r3, r0, #0
	mov	r0, #1
	lsl	r3, r0, r3
	orr	r1, r1, r3
	lsl	r3, r2, #2
	sub	r2, fp, #12
	add	r3, r2, r3
	str	r1, [r3, #-132]
	ldr	r3, [fp, #-176]
	ldr	r3, [r3, #28]
	add	r0, r3, #1
	sub	r1, fp, #144
	sub	r3, fp, #152
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	bl	select
	str	r0, [fp, #-168]
	ldr	r3, [fp, #-168]
	cmp	r3, #0
	ble	.L29
	ldr	r3, [fp, #-176]
	ldr	r3, [r3, #28]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	lsl	r3, r3, #2
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r2, [r3, #-132]
	ldr	r3, [fp, #-176]
	ldr	r3, [r3, #28]
	rsbs	r1, r3, #0
	and	r3, r3, #31
	and	r1, r1, #31
	rsbpl	r3, r1, #0
	mov	r1, #1
	lsl	r3, r1, r3
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L29
	ldr	r3, [fp, #-176]
	ldrb	r3, [r3, #17]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L31
	ldr	r3, .L36+8
	ldr	r3, [r3]
	mov	r2, #14
	mov	r1, #1
	ldr	r0, .L36+20
	bl	fwrite
	b	.L31
.L29:
	ldr	r3, [fp, #-168]
	cmp	r3, #0
	bne	.L32
	ldr	r3, .L36+8
	ldr	r3, [r3]
	mov	r2, #43
	mov	r1, #1
	ldr	r0, .L36+24
	bl	fwrite
	b	.L26
.L32:
	ldr	r3, .L36+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-168]
	ldr	r1, .L36+28
	mov	r0, r3
	bl	fprintf
	b	.L26
.L31:
	ldr	r3, [fp, #-160]
	str	r3, [fp, #-168]
.L26:
	ldr	r3, [fp, #-168]
	cmp	r3, #0
	bge	.L33
	ldr	r0, [fp, #-176]
	bl	mei_deinit
.L33:
	ldr	r3, [fp, #-168]
	ldr	r2, .L36
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L35
	bl	__stack_chk_fail
.L35:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L37:
	.align	2
.L36:
	.word	.LC16
	.word	274877907
	.word	stderr
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.size	mei_send_msg, .-mei_send_msg
	.global	MEI_MKHI_HIF_FIX
	.section	.rodata
	.align	2
	.type	MEI_MKHI_HIF_FIX, %object
	.size	MEI_MKHI_HIF_FIX, 16
MEI_MKHI_HIF_FIX:
	.ascii	"\2045!U)\232\026I\272\337\017\267\355h*\353"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mkhi_host_if_fix_init, %function
mkhi_host_if_fix_init:
	@ 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]
	mov	r3, r2
	strb	r3, [fp, #-13]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L39
	ldr	r3, [fp, #-12]
	b	.L40
.L39:
	ldr	r3, .L42
.L40:
	ldr	r2, [fp, #-8]
	str	r3, [r2, #32]
	ldr	r0, [fp, #-8]
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	mov	r2, #0
	ldr	r1, .L42+4
	bl	mei_init
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-8]
	strb	r2, [r3, #36]
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3, #36]	@ zero_extendqisi2
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L43:
	.align	2
.L42:
	.word	20000
	.word	MEI_MKHI_HIF_FIX
	.size	mkhi_host_if_fix_init, .-mkhi_host_if_fix_init
	.section	.rodata
	.align	2
.LC17:
	.ascii	"w\000"
	.align	2
.LC18:
	.ascii	"/sys/kernel/debug/mei0/allow_fixed_address\000"
	.align	2
.LC19:
	.ascii	"Y\000"
	.align	2
.LC20:
	.ascii	"MKHI fixed i/f failed to initialise \000"
	.align	2
.LC21:
	.ascii	"MKHI fixed i/f initialised \000"
	.align	2
.LC22:
	.ascii	"Build Maj Min Hotfix : %x, %x, %x, %x \012\000"
	.align	2
.LC24:
	.ascii	"Number of fuse fields in list: %d \012\000"
	.align	2
.LC25:
	.ascii	" Reading fuse file:  %s .\000"
	.align	2
.LC26:
	.ascii	" Read size: %d byte(s).\000"
	.align	2
.LC27:
	.ascii	"Error!  Response result = 0x%x \012\000"
	.align	2
.LC28:
	.ascii	"Response data value:  0x\000"
	.align	2
.LC29:
	.ascii	"%02x\000"
	.align	2
.LC23:
	.ascii	"/fpf/intel/\000"
	.align	2
.LC30:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 384
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #392
	str	r0, [fp, #-384]
	str	r1, [fp, #-388]
	ldr	r3, .L58
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r1, .L58+4
	ldr	r0, .L58+8
	bl	fopen
	str	r0, [fp, #-372]
	ldr	r3, [fp, #-372]
	mov	r2, #1
	mov	r1, #1
	ldr	r0, .L58+12
	bl	fwrite
	mov	r3, r0
	cmp	r3, #1
	bne	.L45
	mov	r3, #0
	b	.L46
.L45:
	mvn	r3, #0
.L46:
	str	r3, [fp, #-368]
	ldr	r0, [fp, #-372]
	bl	fclose
	sub	r3, fp, #340
	mov	r2, #0
	ldr	r1, .L58+16
	mov	r0, r3
	bl	mkhi_host_if_fix_init
	mov	r3, r0
	strb	r3, [fp, #-377]
	ldrb	r3, [fp, #-377]
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L47
	ldr	r0, .L58+20
	bl	puts
	sub	r3, fp, #340
	mov	r0, r3
	bl	mei_deinit
	mov	r3, #0
	b	.L48
.L47:
	ldr	r0, .L58+24
	bl	puts
	sub	r0, fp, #340
	ldr	r3, .L58+16
	mov	r2, #4
	ldr	r1, .L58+28
	bl	mei_send_msg
	sub	r1, fp, #360
	sub	r0, fp, #340
	ldr	r3, .L58+16
	mov	r2, #20
	bl	mei_recv_msg
	sub	r3, fp, #4
	sub	r3, r3, #356
	ldrh	r3, [r3, #8]
	mov	r1, r3
	sub	r3, fp, #4
	sub	r3, r3, #356
	ldrh	r3, [r3, #6]
	mov	r2, r3
	sub	r3, fp, #4
	sub	r3, r3, #356
	ldrh	r3, [r3, #4]
	mov	r0, r3
	sub	r3, fp, #4
	sub	r3, r3, #356
	ldrh	r3, [r3, #10]
	str	r3, [sp]
	mov	r3, r0
	ldr	r0, .L58+32
	bl	printf
	ldr	r2, .L58+36
	sub	r3, fp, #84
	ldm	r2, {r0, r1, r2}
	stm	r3, {r0, r1, r2}
	mov	r3, #58
	str	r3, [fp, #-364]
	ldr	r1, [fp, #-364]
	ldr	r0, .L58+40
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-376]
	b	.L49
.L56:
	mov	r3, #10
	strb	r3, [fp, #-300]
	ldrb	r3, [fp, #-299]
	bic	r3, r3, #125
	orr	r3, r3, #2
	strb	r3, [fp, #-299]
	ldrb	r3, [fp, #-299]
	bic	r3, r3, #128
	strb	r3, [fp, #-299]
	mov	r3, #0
	strb	r3, [fp, #-298]
	mov	r3, #0
	strb	r3, [fp, #-297]
	sub	r2, fp, #84
	sub	r3, fp, #72
	mov	r1, r2
	mov	r0, r3
	bl	strcpy
	ldr	r2, [fp, #-376]
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r2
	lsl	r3, r3, #2
	ldr	r2, .L58+44
	add	r2, r3, r2
	sub	r3, fp, #72
	mov	r1, r2
	mov	r0, r3
	bl	strcat
	sub	r3, fp, #300
	add	r3, r3, #4
	mov	r2, #64
	mov	r1, #0
	mov	r0, r3
	bl	memset
	sub	r2, fp, #72
	sub	r3, fp, #300
	add	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	strcpy
	mov	r3, #0
	str	r3, [fp, #-232]
	ldr	r1, .L58+44
	ldr	r2, [fp, #-376]
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	add	r3, r3, #32
	ldr	r3, [r3]
	and	r3, r3, #7
	cmp	r3, #0
	beq	.L50
	ldr	r1, .L58+44
	ldr	r2, [fp, #-376]
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	add	r3, r3, #32
	ldr	r3, [r3]
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	add	r3, r3, #1
	str	r3, [fp, #-228]
	b	.L51
.L50:
	ldr	r1, .L58+44
	ldr	r2, [fp, #-376]
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	add	r3, r3, #32
	ldr	r3, [r3]
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	str	r3, [fp, #-228]
.L51:
	mov	r3, #0
	strb	r3, [fp, #-224]
	sub	r3, fp, #300
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, .L58+48
	bl	printf
	ldr	r3, [fp, #-228]
	mov	r1, r3
	ldr	r0, .L58+52
	bl	printf
	sub	r1, fp, #300
	sub	r0, fp, #340
	ldr	r3, .L58+16
	mov	r2, #77
	bl	mei_send_msg
	sub	r1, fp, #220
	sub	r0, fp, #340
	ldr	r3, .L58+16
	mov	r2, #136
	bl	mei_recv_msg
	ldrb	r3, [fp, #-217]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L52
	ldrb	r3, [fp, #-217]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L58+56
	bl	printf
	b	.L53
.L52:
	ldr	r0, .L58+60
	bl	printf
	mov	r3, #0
	strb	r3, [fp, #-378]
	b	.L54
.L55:
	ldrb	r3, [fp, #-378]	@ zero_extendqisi2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldrb	r3, [r3, #-208]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L58+64
	bl	printf
	ldrb	r3, [fp, #-378]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-378]
.L54:
	ldrb	r2, [fp, #-378]	@ zero_extendqisi2
	ldr	r3, [fp, #-216]
	cmp	r2, r3
	bcc	.L55
	mov	r0, #10
	bl	putchar
.L53:
	ldr	r3, [fp, #-376]
	add	r3, r3, #1
	str	r3, [fp, #-376]
.L49:
	ldr	r2, [fp, #-376]
	ldr	r3, [fp, #-364]
	cmp	r2, r3
	blt	.L56
	sub	r3, fp, #340
	mov	r0, r3
	bl	mei_deinit
	mov	r3, #0
.L48:
	ldr	r2, .L58
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L57
	bl	__stack_chk_fail
.L57:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L59:
	.align	2
.L58:
	.word	.LC30
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	5000
	.word	.LC20
	.word	.LC21
	.word	GEN_GET_FW_VERSION
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	FuseList
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.word	.LC28
	.word	.LC29
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
